DS1820 läuft weg

OP #1573164
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:
1
ISR( TIMER1_COMPA_vect )  // Aufruf jede Sekunde
2
{
3
  
4
  if (!has_changed) 
5
  { has_changed=1;
6
    
7
  } 
8

9
  messStart++;
10

11
  LED_TESTPORT ^= (1<<LED_ERRPIN);
12
}
und die Hauptschleife:
1
// *** Messungen starten ***
2
  if (messStart>=30) 
3
  {       
4
  
5
    // ************** DS1820 auslesen ************** 
6
    for ( i=0; i<dsSensors; i++ ) 
7
    {
8
      if ( DS18X20_read_meas( &gSensorIDs[i][0], &subzero,
9
            &cel, &cel_frac_bits) == DS18X20_OK ) 
10
      {
11
        if (subzero)
12
          sprintf(buffer, "FC:%X;%X;-%2i.%i", gSensorIDs[i][0], gSensorIDs[i][1], cel, cel_frac_bits);  // gSensorIDs[i][1]= 1. Byte der Seriennummer         
13
        else
14
          sprintf(buffer, "FC:%X;%X;%2i.%i",  gSensorIDs[i][0], gSensorIDs[i][1], cel, cel_frac_bits);
15
        //  uart_puts(buffer);
16
        strcpy(buffer_lcd[i],buffer);
17
      }
18
        else uart_puts_P("CRC Error (lost connection?)");                                          
19
    }
20
    // und neue Conversion starten
21
    for (i=0;i<dsSensors;i++)
22
    {  
23
      DS18X20_start_meas( DS18X20_POWER_EXTERN, &gSensorIDs[i][0]);
24
    }
25

26
    messStart=0;
27
  }

Hat jemand so ein Verhalten schon einmal gesehen?
#1573346
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
#1573428
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
#1573616
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
Gast #1573772
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren