Erfahrungen mit DS18B20

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.

    Hinweis kann nach Kenntnisnahme deaktiviert werden!

    • Erfahrungen mit DS18B20

      Hallo, hier nutzen viele den Temperaturfühler. Wie sind Eure Erfahrungen?
      Wie oft melden die Müll ? Und wie lange leben die?
      Ich versuche mich gerade damit an zu freunden. :/ Bascom stellt ja netterweise die nötigen Befehle bereit. Jedoch vertragen die keinerlei Unterbrechungen durch Interrupts. Dazu sind sie (protokollbedingt) sehr langsam. So langsam das die Interrupts zu sperren Probleme mit sich bringt. z.B. kann er nur bedingt (nicht über 19600Baud) zuhören. Für die drei wichtigsten habe ich Routinen die mit kleineren Unterbrechungen der Interrupt arbeiten. Jedoch wird dazu Timer2 verbraucht :

      Source Code

      1. Config 1wire = Portc.5 'erzeugt keine Const :-(
      2. Const _1wport = Portc
      3. Const _1w_pin = 5
      4. #if _xtal >= 3500000
      5. Const _1ww480 = 256.5 - _xtal * 48 / 6393750
      6. Const _1ww420 = 256.5 - _xtal * 42 / 6393750
      7. Const _1ww60 = 256.5 - _xtal * 6 / 6393750
      8. Config Timer2 = Timer , Prescale = 64
      9. #else
      10. Const _1ww480 = 256.5 - _xtal * 48 / 799219
      11. Const _1ww420 = 256.5 - _xtal * 42 / 799219
      12. Const _1ww60 = 256.5 - _xtal * 6 / 799219
      13. Config Timer2 = Timer , Prescale = 8
      14. #endif
      15. Declare Sub M1wwrite(byreg R21 As Byte)
      16. Declare Sub M1wread(byref W() As Byte , Byreg R18 As Byte)
      17. 'Label M_1wreset
      18. Sub M1wwrite() 'R21=Daten, R16=Timerload, R17=Bitzähler
      19. $asm
      20. ldi r17,8 'Bitzähler
      21. cbi _1wport,_1w_pin 'reset 1Wpin
      22. M1wa:
      23. cli 'disable Ints
      24. sbi _1wdir,_1w_pin '1Wpin=Output
      25. ror r21 'Low bit in Carry
      26. @genus(2) 'warte 2µs
      27. brcc +2 'ist Bit High
      28. cbi _1wdir,_1w_pin 'dann 1Wpin=Input (High durch Pullup)
      29. ldi r16,_1ww60 'lade 60µs
      30. Out Tcnt2 , R16 'in Timer2
      31. #if _sim = 1
      32. cbi tifr,6
      33. #else
      34. sbi tifr,6 'Ovr2 Flag löschen
      35. #endif
      36. 'sei 'Enable Ints (3-11µs) testen???
      37. sbis tifr,6 'wieder High?
      38. Rjmp -3
      39. cbi _1wdir,_1w_pin 'dann 1Wpin=Input (High durch Pullup)
      40. @genus(2) 'warte 2µs
      41. sei 'Enable Ints (ca 70µs)
      42. dec r17 'alle Bit fertig
      43. brne M1wa 'nicht dann nächstes
      44. $end Asm
      45. End Sub
      46. Sub M1wread(w() , R18) 'x=arrayadresse, R18=Bytezähler, R21=Daten, R16=Timerload, R17=Bitzähler
      47. $asm
      48. cbi _1wport,_1w_pin
      49. M1ra:
      50. ldi r17,8
      51. M1rb:
      52. cli
      53. sbi _1wdir,_1w_pin
      54. @genus(1)
      55. cbi _1wdir,_1w_pin
      56. @genus(8)
      57. clc
      58. sbic _1wpin,_1w_pin
      59. sec
      60. ror r21
      61. sei
      62. ldi r16,_1ww60 '250
      63. Out Tcnt2 , R16
      64. #if _sim = 1
      65. cbi tifr,6
      66. #else
      67. sbi tifr,6
      68. #endif
      69. sbis tifr,6
      70. Rjmp -3
      71. dec r17
      72. brne M1rb
      73. st x+,r21
      74. dec r18
      75. brne M1ra
      76. $end Asm
      77. End Sub
      78. $asm 'M_1wreset
      79. Const _1wdir = _1wport - 1
      80. Const _1wpin = _1wport - 2
      81. M_1wreset:
      82. cbi _1wport,_1w_pin
      83. cli 'Disable Ints
      84. sbi _1wdir,_1w_pin
      85. ldi r16,_1ww480 'warte 480µs
      86. Out Tcnt2 , R16
      87. sei 'Enable Ints (ca 5µs)
      88. #if _sim = 1
      89. cbi tifr,6
      90. #else
      91. sbi tifr,6
      92. #endif
      93. sbis tifr,6
      94. Rjmp -3
      95. cbi _1wdir,_1w_pin
      96. ldi r16,_1ww60 'warte 60µs
      97. Out Tcnt2 , R16
      98. #if _sim = 1
      99. cbi tifr,6
      100. #else
      101. sbi tifr,6
      102. #endif
      103. sbis tifr,6
      104. Rjmp -3
      105. in r16,_1wpin
      106. bst r16,_1w_pin 'kein Low
      107. bld r6,2 'dann Err
      108. ldi r16,_1ww420 'warte 460µs
      109. Out Tcnt2 , R16
      110. #if _sim = 1
      111. cbi tifr,6
      112. #else
      113. sbi tifr,6
      114. #endif
      115. sbis tifr,6
      116. Rjmp -3
      117. ret
      118. $end Asm
      Display All
      Die Prüfung beim Start, wie viele vorhanden sind und ob neue hinzu kamen, ist noch nicht ganz fertig.

      Wie haltet Ihr das mit den Adressen? Wie wenn einer ersetzt werden muß?

      Ich hab die IDs im Eeprom und frage beim Start ob alle da sind mit 1wsearchfirst/next. Dabei stellt sich raus ob einer fehlt oder ein unbekannter da zu kam.
      Macht Ihr generell eine Crc Prüfung?
      Zur Zeit hole ich nur die ersten beiden Byte rein. Das hatte bisher (ca 1 Stunde) keine Ausreisser obwohl der seid 15min mit einer (für ihn Müll)Datei zugebombt wird ^^
    • Warum meinst Du, so viel Assembler benutzen zu müssen?

      Warum machst Du Dir über die Lebensdauer sorgen? Die hinterfragst Du doch auch nicht beim Mikrocontroller oder einer Leuchtdiode.

      Zum Timing hat Michael ja schon oft genug geschrieben, dass man die Messung anstößt, dann tausend andere Dinge abarbeiten lassen kann und dann den Messwert vom Sensor abholen kann. Man sollte also nicht warten.
      Synchronisation 7 Segment Anz. mit 1Wire Sensor 18B20
    • stefanhamburg wrote:

      Die hinterfragst Du doch auch nicht beim Mikrocontroller oder einer Leuchtdiode.
      Gerade bei der Led ging das Böse nach hinten los. Während sie als Anzeige "ewig" halten , sind (waren?) sie als Leuchtkörper Schrott, der mit Glück ein Jahr durchhält.
      Daher wäre es gut zu wissen ob sie Durchhalten oder "Verschleißteil" (wie der AM2302) sind.

      stefanhamburg wrote:

      Man sollte also nicht warten.
      Die ms während der Übertragung störten, die "Ewigkeit" bis ein Meßwert da ist kann die Main sicher nicht warten. ;)
      Anstossen. Jeder einzeln oder alle gemeinsam?
      Vielleicht alle nach jeder einzelnen Messung? Dehnen die schon laufen würde das nicht stören?
    • Das Datenblatt dieser Temperatursensoren zu lesen und zu verstehen dürfte nicht schwierig sein. In diesem kleinen Gehäuse sitzt eine gute Elektronik, die per wenigen Befehlen angesprochen werden. Die Logik dürfte auch zu verstehen sein. Jedes Kommando beginnt mit 1wreset, womit die Signalleitung für ein exaktes Timing auf Low gezogen wird. Dieses Low ist für die interne Elektronik die Startsequenz, um das nächste Kommando einzulesen und zu verarbeiten. Diese ROM-Kommandos sind in dem Datenblatt ausführlich beschrieben.

      Kommando CC (Hex) leitet die Temperaturmessung ein, die nach Abschluss der Messung im Scratchpad zur weiteren Verfügung abgelegt wird. Somit muss es entsprechende Kommandos geben, um diesen Temperaturwert lesen zu können. Falls es mehrere Sensoren gibt, können die über die jeweils einmalige ROM-ID unterschieden werden, also den betreffenden Sensor zum lesen exakt selektiert werden über seine ROM-ID. Oder wenn man in die entsprechenden Scratchpad- Stellen (2e) eine Kennung programiert hat, über diese Option.

      Ab beauftragung einer Messung liegt dieser Messwert bis zur Abholung im Scratchpad. Eine Messung und Abholung im Sekundentakt ist meistens nicht nötig und zudem nicht sinnvoll.
      Nicht sinnvoll, weil bei sekündlichen Betrieb die interne Elektronik bis zu 1,5 Grad wärmer werden kann. Bedeutet, dann ist die Messgenauigkeit nicht mehr optimal, wegen interner Eigenerwärmung.

      Bezüglich Erfahrung: Ich verwende diese DS18B20 seit über 10 Jahren in Anwendungen in denen es von nur einem bis zu 12 Sensoren an diesem einen Pin betrieben werden.
      In einem Fall habe ich sogar Mischbetrieb mit direkter Spannungsversorgung und dieser Sparversorgung gemixt. Zwei Sensoren werden sogar über Telefonkabel bis zu 35 Meter Länge betrieben.
      Ich hatte bisher mit keinem einzigen Sensor irgendwelche Probleme, sie sind sehr zuverlässig.
      Sie sind betreibbar von 3,0 V bis 5 V. In meinem Mischbetrieb in dem die längste Kabellänge rund 36 Meter beträgt, habe ich ein Poti eingesetzt, das die Versorgungsspannung auf 3,8 V reduziert.
      Damit läuft es seit angegebenen Jahren problemlos.

      Wenn es eine Uhr im System gibt, könnte diese benutzt werden um nur alle 4,23 Minuten den Temperaturwert, bzw je nach zeitlichem Messbedarf abholen. Sekündlich muss es sehr selten sein.
    • bitlogger wrote:

      Ich verwende diese DS18B20 seit über 10 Jahren
      Ohne Ausfälle. Das ist mal ne gute Neuigkeit a_64_3a718cae

      bitlogger wrote:

      das die Versorgungsspannung auf 3,8 V reduziert
      Was passierte denn bei 5V ? a_27_b277ca12

      bitlogger wrote:

      Sekündlich muss es sehr selten sein.
      Liegt an der Anwendung, mir sind die 700ms grenzwertig lange.
      Hier sende ich $CC44 nach jedem Read. So sind alle Werte innerhalb der knappen Sekunde verfügbar. Das reicht in den meißten Fällen. Zumal die Wasserdichten eher träge reagieren ( im Vergleich zu dem im To 92 Gehäuse oder einem Pt1000)

      Post by Ronnie ().

      This post was deleted by stefanhamburg: doppelt ().
    • Es ist doch eindeutig im Datenblatt beschrieben, wenn man den Messwert mit 12 Bit Genauigkeit haben will benötigt Temperatur convert 750 ms. Wer diese Stellen hinter dem Komma nicht benötigt, kann die Genauigkeit auf 9 Bit reduzieren. Dann ist Temperatur convert in 94 mS erledigt. Wenn Dir der Messwert mit einer Stelle hinter dem Komma also z.B. 18,5 bzw 18,0 Grad genügen, dann programiere das Scratchpad mit den Config-Bits auf Betriebsart 9 Bit Genauigkeit und du könntest ab dann alle 0,1 Sekunden messen.
      Lasse dich nicht verwirren, nach dem Komando $44 ist der 1WireBus auf Low, bis der Messwert convertiert ist. Danach geht der 1Wirebuspegel wieder auf Status high, das bedeutet convertierzeit abgelaufen, Messwert verfügbar.

      Da Du ohnehin gerne in Assembler programmierst könntest du dich mit Hilfe des Datenblattes regelrecht austoben! Dieser Lowpegel nach Kommando $44 bedeutet, Device is busy.
      Welche Minzeiten für 1wirereset zu beachten sind und sonstige Pegelzeiten sind super im Datenblatt beschrieben und sehr zuverlässig, für Personen die gerne per Assembler programmieren.

      Das Poti habe ich verwendet, weil gemischter Spannungsbetrieb und gleichzeitig sehr kurze und lange Leitung (bis 36 m) zu unkorrekten Tempwerten führten. Hatte keinen Mosfet für parasite Powerbetrieb verfügbar, sonst hätte ich das angewendet.

      Du darfst dich an diesem tollen und zuverlässigen Device mal so richtig per Assembler austoben, wird dir sicherlich Spaß machen. Ich hatte dazu keine Lust und mir genügen Messwerte alle 254 Sekunden, was bekanntlich als Zahlenwert in ein Byte (for Sekunden-Timer) passt.
      Der Messbereich passt für die meisten Anwendungen, folglich ist dieses Device eine sehr gute Entwicklung.
      Viel Spaß damit.
    • bitlogger wrote:

      nach dem Komando $44 ist der 1WireBus auf Low, bis der Messwert convertiert ist.
      Also hier nicht (fest an Vcc). Die Jungs geben immer Antwort, sogar während der Konvertierung. (dann natürlich den Wert der vorherigen.)
      Sollte es nicht so sein das der Bus (bei parasitärer Versorgung ) für die Konvertierungszeit fest auf High gelegt werden sollte?


      bitlogger wrote:

      Hatte keinen Mosfet
      Gibt es denn Fälle wo der interne (20/40mA) nicht reicht? (Für <=12, nicht 40 Sensoren :D )


      bitlogger wrote:

      Pegelzeiten sind super im Datenblatt beschrieben und sehr zuverlässig
      Kein Kunststück wenn man sich einen 400% Bereich gönnt (60-240µs) :D
      oder 300% 15-60µs a_38_b45e201d



      Ronnie wrote:

      Also bei mir ist einer im Garten vergaben
      Dann arbeitet der Feuchtigkeitsschutz auch. Gut zu wissen
      Ab welcher Temperatur kommt das Wachstum zum erliegen? Stimmen die 12°?
    • Pluto25 wrote:

      Bascom stellt ja netterweise die nötigen Befehle bereit. Jedoch vertragen die keinerlei Unterbrechungen durch Interrupts. Dazu sind sie (protokollbedingt) sehr langsam. So langsam das die Interrupts zu sperren Probleme mit sich bringt. z.B. kann er nur bedingt (nicht über 19600Baud) zuhören.
      Grundsätzlich ist es immer eine schlechte Idee, zeitkritische Protokolle wie 1Wire, die im Direktmode (ohne Interrupt) laufen, und auch dafür vorgesehen sind, durch Interrupts zu unterbrechen. Die Timeslots von 1Wire sind im µs Bereich (15µs bis 460µs), da darf eine Interrupt-Routine nicht trödeln. Sonst führt das schnell zu Fehlern bei der Übertragung. Das hast du ja selber gemerkt.

      Eine Möglichkeit ist, zu einem Zeitpunkt x die Conversation des DS1820 zu starten, und sich während der Wandlung um andere Sachen zu kümmern.
      Die 700ms sind eben Systembedingt, die der Sensor braucht, um die Daten zu wandeln. Soll es schneller gehen, musst du einen anderen Sensor nehmen.
      Aber zurück zum Sensor. Ist die Wandlung gestartet, kann man sich um andere Dinge kümmern.
      Und bei jedem Durchlauf in der Hauptschleife einfach mal den 1W-Data-Pegel prüfen, ob der high ist. Wenn ja, dann kannst du die Daten holen.
      Das sollte auch mit mehreren Sensoren funktionieren an einem Bus. Der langsamste Sensor bestimmt dann eben, wann das Signal wieder High wird.

      Während dem Lesen oder Schreiben des Sensors sollten allerdings keine Interrupts laufen.

      Wenn du da parallel noch den Empfang eines Uarts überwachen willst, haben wir das Problem auch, dass das Timing an 1Wire Bus durcheinander kommt, sobald Daten reinkommen.
      Da hängt es jetzt von der Anwendung ab, ob man das aneinander vorbei bekommt. Hardware-Uart ist hierbei nach meiner Meinung Pflicht. Und ein Empfangsbuffer bietet sich auch an. Trotzdem kann es zu Problemen kommen.

      Daher wenn irgend möglich, diese beiden Dinge abwechselnd machen (1Wire und UART oder andere Interrupts)

      Man kann aber auch mal über den Tellerrand rausschauen und überlegen, ob man den 1Wire Betrieb auch Interrupt gesteuert hinbekommen kann.
      Aufgrund der kurzen Zeiten bei 1Wire müssten die Interrupt-Routinen kurz und schnell, also in Assembler sein. Gleiches gilt auch für den UART, wenn man den gleichzeitig nutzen will. Hierbei kommt einem ein hoher Takt des Controllers zu gute, weil das die ISR-Abarbeitung beschleunigt.

      Im Übrigen könnte man auch den UART langsamer laufen lassen. Und wieso brauchst du 19600 Baud?
      Ich kenne 19200 Baud als typische Baudrate.
    • Was das Managen der Sensoren am Bus angeht, gibt es auch Möglichkeiten.

      Jeden Sensor an einen Controller-Pin legen. Das ist einfach in der Zuordnung des Sensors zu einem Kanal und man kann den Code einfacher halten.
      Denn man muss sich keine ROM-Codes merken.

      Meist ist das aber nicht gewünscht, weil man dann immer für die maximale Anzahl Sensoren die Pins vorhalten muss.

      Und da kommt wieder der 1W-Bus ins Spiel
      Was man braucht ist nicht nur eine Zuordnung der Sensoren mit dem ROM-Code, sondern auch eine Zuordnung für den Benutzer.

      Man will ja einfach die Sensoren anschließen und dann die Zuordnung der Kanäle machen, ohne auf den ROM-Code zu achten (als Benutzer)

      Lösen kann man das z.B. folgendermaßen.
      Man steckt einen Sensor an und weist den Controller an, alle bisherigen Sensoren zu vergessen.
      Dann soll er eine Sensorsuche machen.
      Er merkt sich den ROM-Code und weist dem den Kanal 1 zu (Array).
      Wenn nun noch ein 2. Sensor benötigt wird, wird der jetzt angeschlossen und man sagt dem Controller, er soll nach einem neuen Sensor suchen.
      Findet er einen neuen (Nicht in der ROM-Code Liste vorhanden), bekommt der neue Sensor den nächsten freien Kanal, Nr 2 zugewiesen.
      Das Spielchen kann man so weiter treiben und ist nicht auf eine Sensoren-Anzahl begrenzt und brauch nur ein Pin.

      Diese ROM-Code Liste und die Kanal-zuweisung, wenn sie fertig erstellt ist, kann im EEProm gespeichert werden.
      Solange man die Sensoren nicht umsteckt kann der Kontroller bei einem Reset diese Zuordnung wieder verwendet.

      Hat man eine andere Applikation, braucht wieder ein neues Set an Sensoren, löscht man die interne Sensor- und Kanal-Liste und entfernt alle Sensoren bis auf den, der Kanal 1 repräsentieren soll, und sucht nach neuen Sensoren.

      Also wie oben beschrieben werden dann weitere Sensoren zugeordnet.

      Auf diese weise ist es auch möglich, wenn mal ein Sensor defekt geht, diese Liste dynamisch neu zu erstellen. Aber auch neue Sensoren hinzuzufügen.

      Wer denkt, man kann jetzt einfach die Stecker beschriften, der hat bedingt recht. Dumm nur, wenn ein Sensor ersetzt werden muss, welcher ROM-Code gehört zu dem? Das ist dann alles irgend wie nichts ganzes und nix halbes.

      Eine ordentliche Anwendung hat in der Regel sowieso ein Display und Tasten, da kann man das ja per Menü abvespern und das ganze am jeweiligen Ort anpassen.
    • Mitch64 wrote:

      welcher ROM-Code gehört zu dem?
      Ganz einfach: Der Neue bekommt den Platz von dem der fehlt.
      Aber da die kaum ausfallen, kann ich mir die gesamte Abfragerei sparen :)
      Einmal die Ids ins Eeprom und fertig :D

      Mitch64 wrote:

      Und bei jedem Durchlauf in der Hauptschleife einfach mal den 1W-Data-Pegel prüfen, ob der high ist. Wenn ja, dann kannst du die Daten holen.
      Also das ist hier anders. Die Antworten jederzeit. Allerdings prüf ich keine Pegel sondern fordere gleich die beiden Datenbytes.

      Mitch64 wrote:

      Und wieso brauchst du 19600 Baud?
      Tippfehler, aber die waren nur Rechenbeispiel. Mit den Routinen oben läuft es problemlos mit 115,2 kBaud auf einem Mega8 knapp unter 1Mhz. Die 1Wire nutzen keine Interrupts, blockieren sie jedoch für einige µs. Aber das mit den längeren Ints hab ich nicht versucht, mal sehen was ein 2ms Int ausmacht ;)
    • Pluto25 wrote:

      Ganz einfach: Der Neue bekommt den Platz von dem der fehlt.
      Aber da die kaum ausfallen, kann ich mir die gesamte Abfragerei sparen
      Einmal die Ids ins Eeprom und fertig
      Jeder wie er mag.

      Es war eine Anregung, weil ich genau mal vor diesem Problem stand.

      Heute brauche ich 3 Sensoren, Dann wird alles aufgeräumt.

      Ne woche später bauche ich 12 Sensoren.

      Ach und welcher Sensor war Kanal 1 usw?

      Ich brauchte das flexiebles.
    • Mitch64 wrote:

      Ne woche später bauche ich 12 Sensoren.
      In dem Sinne hatte ich begonnen. Das mit dem einzeln Einlesen ist noch im Code. Zu dem Einsortieren kam ich noch nicht. Das wurde erst unnötig nach der heutigen Erkenntnis dass die kaum Ausfallen.
      Sollte genug Flash und Zeit verfügbar sein ist so ein Parametermenue natürlich eine nette Sache.

      Ich hab ihn nun alle 2ms einen TimerInt mit waitms 1 verpasst. Selbst das stört den 1W Verkehr nicht, aber spürbar den Gesamtablauf :| Bei 19200 immerhin noch 80% Antworten :D
    • Wie habe ich das mit meinen Sensoren gemacht. Ich habe immer ein System zum testen, an dem ein 20X4 Display angeschlossen ist. Daran sind allerlei Sensoren anzuschließen, mithin auch diese 1Wire-Sensoren. Das jeweils benötigte Programmteil lässt sich einspielen. Somit gibt es eines das die ROM-ID liest und anzeigt. Diese notiere ich in einer DS18b20 Liste und füge da entweder eine
      Nummer hinzu, oder ein 2stelliges Kürzel. Kürzel z.B. VL, RL, AT, WZ, FB usw für die Sensoren der Heizung. Um den Sensor kommt ein Aufkleber am Kabelende, auf dem die Nummer oder das Kürzel steht.
      In das Userbyte 1 und Userbyte 2 programmiere ich entweder die Sensornummer, oder das entsprechende Kürzel und übertrage es noch in das Eprom vom Sensor.
      Sensoren die als Reserve in einem Behältnis liegen, sind somit bereits vor einer Verwendung gekennzeichnet.

      Anzusprechen ist ein Sensor somit über die ROM-Match Funktion, oder nach dem auslesen des Temperaturwertes per Userbyte 1 und 2 zuortbar.
    • bitlogger wrote:

      Kürzel und übertrage es noch in das Eprom vom Sensor.
      Eine gute Lösung. So weiß der Sensor wo er montiert wird und kann als Ersatzteil ans Ende der Welt versand werden ohne das im System was geändert werden muß. Das erkennt ja dann wofür der Neue da ist.
      Leider sind sie so nicht lagerfähig, da sie länger leben als ihr Gedächniss.
      "The DS18B20 EEPROM is rated for ... 10 years data retention."
      Ob das auch gilt während sie in Betrieb sind?
      Wie alt sind die ältesten der Reserve? / die in der Heizung?
    • Seit etwa 20 Jahren sind die Teile bei mir verbaut, im Keller 4 Stück, im Pool, im Gartenteich 3 Stück, im Dachboden (Drempel), im Gartenhaus. Es ging noch kein einziger davon kaputt. Das einzig negative war, das ich mal Fälschungen erwischt hatte in einem Shop.
      Ansonsten laufen die auch sehr gut am ESP+DS2480B via WLAN, da können diese seriell angesprochen werden. Im Garten ganz nett, wenn man nicht überall Kabel hat.
      Aus datenschutzrechtlichen Gründen befindet sich die Kontaktdaten auf der Rückseite dieses Beitrages.
    • Die funktionieren nicht wie die Originale: github.com/cpetrich/counterfeit_DS18B20

      Mein letzten Fehlkauf hatte ich mit DS2480B - da hatten mir die Burschen einfache Mosfets untergeschoben…



      Ich habe die Sensoren (Kabel) mit Etiketten beschriftet und habe eine Liste, dann kopiere ich den Kram in den Quelltext bei Bedarf.
      (Ursprünglich habe ich mit C und Assembler angefangen die AVR zu bespielen. Erst dann kam ich durch Zufall zu BASCOM, dabei blieb es dann auch bis heute - Assembler nutze ich nur noch, um Platz/Geschwindigkeit zu schaffen)
      Aus datenschutzrechtlichen Gründen befindet sich die Kontaktdaten auf der Rückseite dieses Beitrages.