-
        

Ergebnis 1 bis 10 von 10

Thema: Falsche Temperaturwerte von 1Wire Sensoren

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    19.02.2008
    Ort
    Pohlheim
    Alter
    27
    Beiträge
    240

    Falsche Temperaturwerte von 1Wire Sensoren

    Anzeige

    Hi,

    ich habe eine Verdrahtung, bestehend aus 9x DS18b20. Das Problem: Nach etwa 2 Tagen Dauerbetrieb beginnen die Sensoren falsche werte auszugeben. Die zeigen mir alle 85°C an. Nach einigen Stunden geht es dann wieder kurz und dann auch mal nichtmehr. Wie es gerade will.

    Das ganze läuft mit 2 Drähten. Also die Stromversorgung über Datenleitung und Pullup Widerstand. Bei dem Widerstand hab ich auch schon 4K7 und 3K3 ausprobiert. Macht keinen Unterschied. Als Kabel verwende ich Cat5e S/FTP Verlegekabel. Die Kabellänge beträgt etwa 2,5 Meter. Alle Verbindungen sind verlötet und mit Schrumpfschlauch versehen.

    Ich habe noch eine andere Verdrahtung. Dort beträgt die Kabellänge über 10 Meter mit 15 Sensoren. Das läuft nun seit zwei Tagen ohne Probleme.

    Hier mein Programm:

    Code:
    Temprechnen:
    
    Waitms 50
    
    Disable Interrupts
    
    1wreset
    1wwrite &HCC                                                ' skip rom (an alle)
    1wwrite &H44
    
    Enable Interrupts
    
    Waitms 750
    
    X = 0
    
    Disable Interrupts
    
    Do
    
    X = X + 1
    
    1wreset
    
      If X = 1 Then
       1wverify Dsid12(1)                                       'Sensor wählen
      Elseif X = 2 Then
       1wverify Dsid13(1)                                       'Sensor wählen
      Elseif X = 3 Then
       1wverify Dsid16(1)                                       'Sensor wählen
      Elseif X = 4 Then
       1wverify Dsid18(1)                                       'Sensor wählen
      Elseif X = 5 Then
       1wverify Dsid25(1)                                       'Sensor wählen
      Elseif X = 6 Then
       1wverify Dsid26(1)                                       'Sensor wählen
      Elseif X = 7 Then
       1wverify Dsid27(1)                                       'Sensor wählen
      Elseif X = 8 Then
       1wverify Dsid28(1)                                       'Sensor wählen
      Elseif X = 9 Then
       1wverify Dsid29(1)                                       'Sensor wählen
      End If
    
       1wwrite &HBE                                             'Daten hergeben
       Tempa(1) = 1wread(9)                                     'read bytes into array
    
       If Tempa(9) = Crc8(tempa(1) , 8) Then
        Celsius = 0
        Celsius = Makeint(tempa(1) , Tempa(2))
        Temperatura = Celsius
        Temperatur1(x) = Temperatura / 16
        Temperatur(x) = Fusing(temperatur1(x) , "###.#")
       End If
    
       Waitms 20
    
    Loop Until X = 9
    
    Enable Interrupts
    
    Return
    Hat jemand eine Idee? Das ganze hängt übrigens an einem Atmega8.

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    12.12.2004
    Ort
    Trier
    Beiträge
    38
    Hi Felix H.,

    die Versorgung von 9 Sensoren im parasitären Betrieb über einen passiven PullUp von 3.3kOhm ist sehr ungünstig. Ein einziger Sensor zieht - hauptsächlich während der internen A/D-Wandlung - typisch 1mA bis maximal 1.5mA. Da der Sensor für einen sicheren Betrieb mindestens 3V Versorgungsspannung sehen möchte, ist das eigentlich unter diesen Umständen schon nicht zu schaffen. Obwohl es in der Praxis mit einem einzigen Sensor und 4.7kOhm PullUp i.d.R. problemlos funktioniert.

    Als Abhilfe kannst du mal versuchen den PullUp bis zur Schmerzgrenze der Sensoren zu verkleinern.
    Das sind Rpu= (Vcc-Vio)/IL= (5V-0.4V)/4mA= 1.15kOhm, also 1.2kOhm.

    Falls das nicht reicht, mußt du die Temperaturwandlung für jeden Sensor einzeln starten und dabei natürlich die Wandlungsdauer berücksichtigen.

    Als Kabel verwende ich Cat5e S/FTP Verlegekabel.
    Hier solltest du ein verdrilltes Aderpaar verwenden. Hast du das?

    Ich habe noch eine andere Verdrahtung. Dort beträgt die Kabellänge über 10 Meter mit 15 Sensoren. Das läuft nun seit zwei Tagen ohne Probleme.
    Finde ich sehr erstaunlich, hat dieses Netzwerk vergleichbare Rahmenbedingungen?

    Im Anhang ein Auszug der elektrischen Betriebsparameter des DS18B20 aus dem Dallas-Datenblatt kopiert.

    screwdriver
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken ds18b20_dc_electrical_characteristics.png  
    Die Genialität einer Konstruktion liegt in ihrer Einfachheit. - Sergej P. Koroljow

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    19.02.2008
    Ort
    Pohlheim
    Alter
    27
    Beiträge
    240
    Hi,

    ok das mit dem kleineren Widerstand werde ich versuchen. Sollte der Fehler dann aber nicht sofort auftreten und nich erst nach 2 Tagen?

    ich verwende ein verdrilltes Aderpaar für Masse und Signalleitung.

    Bei dem zweiten Bus gehe ich vom µC in zwei Richtungen. Einmal 10 Meter und am Ende 4 Sensoren und dann nochmal vom µC aus 4 Meter und an deren Ende die übrigen 11 Sensoren. Der Pullup ist hier auch direkt am µC angebracht.

    Gruß
    Felix

    Edit: Kann ich eigentlich auch Parasite Power und "Normale" Stromversorgung auf einem Bus mischen? Wenn ja, wie verhält sich das mit dem Pullup? Bleibt der dann trotzdem drin?

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    1.892
    Kann ich eigentlich auch Parasite Power und "Normale" Stromversorgung auf einem Bus mischen?
    Soweit ich das im Kopf habe wird von Dallas vorgeschlagen einen PNP Transistor in die Datenleitung gegen +5V zu legen um während der Wandlung die Sensoren mit Strom zu versorgen.

    Das war für mich ein Grund auf Parasite Power zu verzichten.

    Ich würd da lieber noch mal einen Draht opfern und eine vernünftige Stromversorgung zu den Sensoren führen - Gerade, wenn es so viele sind.

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    12.12.2004
    Ort
    Trier
    Beiträge
    38
    Zitat Zitat von wkrug
    Soweit ich das im Kopf habe wird von Dallas vorgeschlagen einen PNP Transistor in die Datenleitung gegen +5V zu legen um während der Wandlung die Sensoren mit Strom zu versorgen.

    Das war für mich ein Grund auf Parasite Power zu verzichten.

    Ich würd da lieber noch mal einen Draht opfern und eine vernünftige Stromversorgung zu den Sensoren führen - Gerade, wenn es so viele sind.
    Sehe ich natürlich ganz genau so. Aber den Versuch mit dem stärkeren PullUp wird ich doch noch erstmal probieren, weils weniger aufwändig ist.

    Zitat Zitat von Felix H.
    ...ok das mit dem kleineren Widerstand werde ich versuchen. Sollte der Fehler dann aber nicht sofort auftreten und nich erst nach 2 Tagen?
    Im Prinzip hast du da Recht. Ich habe allerdings die Erfahrung gemacht, dass so sporadisch auftretende Fehler oftmals mit der Versorgungsspannung zusammenhängen - und die kommt bei deinen DS18B20 nunmal über den PullUp.

    Zitat Zitat von Felix H.
    Kann ich eigentlich auch Parasite Power und "Normale" Stromversorgung auf einem Bus mischen? Wenn ja, wie verhält sich das mit dem Pullup? Bleibt der dann trotzdem drin?
    Ja, man kann beide Versorgungsarten mischen. Der PullUp bleibt wie er ist. Für ihn gilt es trotzdem die Spezifikationen (siehe meinen ersten Post) einzuhalten.

    screwdriver
    Die Genialität einer Konstruktion liegt in ihrer Einfachheit. - Sergej P. Koroljow

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    19.02.2008
    Ort
    Pohlheim
    Alter
    27
    Beiträge
    240
    Hi,

    erstmal danke für die Infos. Ich werde das dann mischen denke ich. Eventuell den Pullup auch auf mehrere Widerstände aufteilen und an verschiedene Stellen in der Leitung setzen.

    Gruß

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    12.12.2004
    Ort
    Trier
    Beiträge
    38
    Zitat Zitat von Felix H.
    erstmal danke für die Infos. Ich werde das dann mischen denke ich. Eventuell den Pullup auch auf mehrere Widerstände aufteilen und an verschiedene Stellen in der Leitung setzen.
    Versuch doch erstmal den stärkeren PullUp!
    Den PullUp bitte nur einmal am AVR setzen - du vergrößerst sonst nur die aufgespannte Induktionsfläche für Störeinstrahlung.
    Beim Vermischen der Versorgungsarten ist natürlich bei verwendung eines aktiven PullUp besondere Vorsicht geboten!

    Mahlzeit,

    screwdriver
    Die Genialität einer Konstruktion liegt in ihrer Einfachheit. - Sergej P. Koroljow

  8. #8
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    19.02.2008
    Ort
    Pohlheim
    Alter
    27
    Beiträge
    240
    Hi,

    ich hab jetz erstmal einen kleineren Pullup reingemacht. Wie ich eben feststellte, kommt nun auch der gleiche Fehler bei der zweiten Verdrahtung^^ Wird sich nun zeigen, ob es was bringt.

  9. #9
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.10.2008
    Ort
    Wulferstedt
    Beiträge
    1.042
    Ich hatte dasselbe Problem mit den "85 Grad". Da ich für die Datenübertragung ein ein eigenes Protokoll mit Zwischenspeicherung
    anwenden musste (1wire geht nicht so lang, wie man es sich wünscht),
    bin ich auf Nummer Sicher gegangen und habe den Prüfsummencheck
    mit einbezogen. Die ab und zu auftretenden "85Grad" würden korrekt
    übertragen, da dier Prüfsummencheck korrekt war. Daher kanns an
    der Übertragung nicht liegen, der PullUp ist eh ziemlich unkritisch.
    Der Fehler hat sich dann gegeben, wo ich dem DS18B20 etwas mehr
    Zeit nach der Initialisierung zum Messen gegeben habe. VG Micha

  10. #10
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.10.2008
    Ort
    Wulferstedt
    Beiträge
    1.042
    Das Problem mit den 85 Grad, trat weiterhin häufig auf, wenn der DS18B20
    erstmalig eine Messung macht. Beheben konnte ich das Problem nur, wenn
    der bzw. die Sensoren als Erstes "einen auf die Mütze" kriegen, also erstmal
    eine Messprozedur, ohne diese zu nutzen, machen lassen. VG Micha

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •