mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik DS1820 läuft weg


Autor: Pete K. (pete77)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe einen  Mega644, der u.a. ein Beinchen benutzt, um 1-wire 
Temperatursensoren auszulesen.

Das Auslesen klappt soweit (mit Unterstützung der Routinen von Martin 
Thomas), die Werte werden alle 30 Sekunden ausgelesen und danach eine 
weitere Conversion gestartet, diese dann 30 Sekunden später wieder 
ausgelesen. Pullup 4k7 ist vorhanden.

Nun zeigt mir beim Start der Sensor noch den richtigen Wert an, steigt 
dann aber über ein paar Minuten auf ca.34 Grad an.

Ich habe es mit mehreren Sensoren probiert, alle zeigen das gleiche 
Verhalten.

Hier die ISR:
ISR( TIMER1_COMPA_vect )  // Aufruf jede Sekunde
{
  
  if (!has_changed) 
  { has_changed=1;
    
  } 

  messStart++;

  LED_TESTPORT ^= (1<<LED_ERRPIN);
}
und die Hauptschleife:
// *** Messungen starten ***
  if (messStart>=30) 
  {       
  
    // ************** DS1820 auslesen ************** 
    for ( i=0; i<dsSensors; i++ ) 
    {
      if ( DS18X20_read_meas( &gSensorIDs[i][0], &subzero,
            &cel, &cel_frac_bits) == DS18X20_OK ) 
      {
        if (subzero)
          sprintf(buffer, "FC:%X;%X;-%2i.%i", gSensorIDs[i][0], gSensorIDs[i][1], cel, cel_frac_bits);  // gSensorIDs[i][1]= 1. Byte der Seriennummer         
        else
          sprintf(buffer, "FC:%X;%X;%2i.%i",  gSensorIDs[i][0], gSensorIDs[i][1], cel, cel_frac_bits);
        //  uart_puts(buffer);
        strcpy(buffer_lcd[i],buffer);
      }
        else uart_puts_P("CRC Error (lost connection?)");                                          
    }
    // und neue Conversion starten
    for (i=0;i<dsSensors;i++)
    {  
      DS18X20_start_meas( DS18X20_POWER_EXTERN, &gSensorIDs[i][0]);
    }

    messStart=0;
  }

Hat jemand so ein Verhalten schon einmal gesehen?

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zeile 42.

(ohne Source keine Hilfe möglich).


Peter

Autor: Alex D. (allu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Temperaturanstieg, ja. Hatte zuviel Leben auf dem 1-Wire-Bus. Auch wenn 
der DS1820 nicht gemeint war, hat er sich mit erhitzt. Außerdem braucht 
das Teil 2-Wire oder 1-Wire mit einer kunstvollen 
Versorgungsumschaltung.

Gruß  allu

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Sensor erwärmt sich nicht, wenn man keine Wandlungen macht.
Da können auf dem Bus noch 1000 andere Devices rumwuseln.

Während der Wandlung zieht er 1mA, das sind dann 5mW Heizleistung.
Macht man die Wandlungen schnell hintereinander sieht man einige zehntel 
Grad Erwärmung an Luft.
Macht man die Wandlung nur alle 10s, ist die Erwärmung kleiner als die 
Auflösung, d.h. <0,0625° beim DS18B20.


Wenn der Sensor heiß meldet, einfach mal anfassen, ob er wirklich heiß 
wird.
Wenn er sich erwärmt, ist vielleicht die Software falsch (Zeile 42).


Peter

Autor: Marvin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, das Verhalten habe ich schoneinmal gesehen. Ein Kumpel hatte einen 
mit gut 7.5V betrieben und sich dann gewundert, wieso der Sensor so warm 
geworden ist. :)

Gruesse

Marvin

Autor: Alex D. (allu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter Dannegger schrieb:
> Der Sensor erwärmt sich nicht, wenn man keine Wandlungen macht.
> Da können auf dem Bus noch 1000 andere Devices rumwuseln.

Jeder Sensor muss seine eigene Adresse suchen, egal oder er gemeint ist 
oder nicht. Und obwohl ich keine 1000 sondern nur pro Sekunde 2 mal nach 
mehreren möglichen 1-Wire-Schlüsseln gesucht habe ... Rest steht oben 
...

Gruß  allu

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alex D. schrieb:
> Jeder Sensor muss seine eigene Adresse suchen, egal oder er gemeint ist
> oder nicht.

Dabei kann er aber nicht 1mA ziehen, sondern höchstens nur einige µA.
Denn das geht auch ohne VCC, d.h. er versorgt sich allein über den 
Pullup.

Es kann allerdings sein, daß in fehlerhafter Software der Pin hart auf 
high gezogen wird, während er Low sendet. Dann fließt ein ordentlicher 
Strom und der Chip erwärmt sich stark.
Daher meine Vermutung auf einen SW-Fehler.


Peter

Autor: Pete K. (pete77)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Anbei der Source-Code, allerdings habe ich ein paar Sachen weggelassen, 
die noch andere Sensoren auswerten (alle nicht am 1-wire Bus).

@Marvin: Es liegen gemessene 5V (ok, 4,98V) am Sensor an :-)

Autor: Wolfgang-G (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei Verwendung des DS18B20PAR hatte ich den Effekt, dass bei Betrieb mit 
3,3V die Messung bis 50/60°C problemlos lief. Bei höheren Temperaturen 
wurde wirres Zeug vom Fühler gesendet. Bei einer Spannung von ca. 4V 
waren die Messwerte dann i.O.(hat sich offensichtlich erl.)
>Jeder Sensor muss seine eigene Adresse suchen, egal oder er gemeint ist
>oder nicht.
Geht es auch anders? Ich hatte mal die Fühler (DS18B20) jeweils einzeln 
angehängt und die 64-Bit Seriennummer ausgelesen.
Nun wollte ich, da ich die Nummer von den Fühlern kannte, nach Eingabe 
der jeweiligen Seriennummer den Fühler auslesen, aber ohne Erfolg.
Bin ich mit meiner Verfahrensweise auf dem Holzweg?
MfG

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wolfgang-G schrieb:

> Bin ich mit meiner Verfahrensweise auf dem Holzweg?

Nein.

Autor: Pete K. (pete77)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe den ATMega mal ausgetauscht, aber daran lag es nicht.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.