DS18B20 Reset Pulse nicht GND ?

Gast #3805656
Lesenswert?

Hallo,

ich nutze einen ATmega168 und möchte mittels DS18B20+ Temperaturen 
erfassen.
Als Software nutze ich die von peter dannegger 
[Beitrag "DS1820, DS18B20 in C"].

Folgendes Problem liegt bei mir vor:
Ist der DS18B20+ eingebaut, kann der µC beim Reset Pulse von 480µs die 
Leitung nicht auf GND ziehen, sondern auf nur ca. 4,8 V. Löte ich das 
Teil aus, wird PD0 wie gewünscht auf GND gezogen.

Ist dieses Verhalten normal oder liegt ein Fehler vor?
Ist der DS18B20+ kaputt?

Folglich wird bei mir kein Sensor gefunden: "No Sensor found" .


Grüße
Gast #3806059
Lesenswert?

Hm. Der Widerstand ist korrekt und ohne den Sensor klappt's. Da müsste 
also der Sensor den Kurzschluss verursachen und Vcc an DQ anliegen.

Komisch nur das der Controller trotzdem weiter arbeitet und nicht 
verreckt ist.

Was für einen Widerstand müsste ich am Sensor zwischen Vcc und DQ 
messen?
Moderator (Firma: Titel) Persönliche Seite #3806069
Lesenswert?

qwertz schrieb:
> Komisch nur das der Controller trotzdem weiter arbeitet und nicht
> verreckt ist.
Ach, an einem einzigen Pin kannst du lange einen Kurzschluss anlegen. 
Der Bahnwiderstand des Ausgangstransistors (30..50 Ohm) verhindert 
Schlimmeres: der uC wird zwar warm, geht aber nicht kaputt. Ab zwei 
kurzgeschlossenen Pins wirds dann interessant...
Gast #3806643
Lesenswert?

> Hast du davon denn nur einen einzigen? Probier halt nen zweiten.
leider ja - nur einen :(

> Wahrscheinlich nur verpolt.
Mehrmals kontrolliert. Alles richtig.

Wenn ich den Widerstand messe: alles gegen alles - unendlich
Gast #3806754
Lesenswert?

>  Wenn ja, Sensor reinstecken, kann der uC die Leitung auf 0 ziehen ?
>  Wenn nein, nicht lange rumrätseln, Sensor wegschmeissen, einen
>  neuen besorgen.

Das ist der Fall. Ich besorg einen neuen.

Danke für all die Hilfe!
Gast #3806801
Lesenswert?

Wie ist das eigentlich im parasite power mode?

"Optional VDD. VDD must be grounded for operation in
parasite power mode."

D.h. ich müsste statt 5V an Vcc GND anlegen?

Im Quelltext von peter dannegger [Beitrag "DS1820, DS18B20 in C"] heißt 
es:
1
void start_meas( void )
2
{
3
  if( W1_IN & 1<< W1_PIN )
4
  {
5
    w1_command( CONVERT_T, NULL );
6
    W1_OUT |= 1<< W1_PIN;
7
    W1_DDR |= 1<< W1_PIN;      // parasite power on
8
  }
9
  else
10
  {
11
    //uputsnl( "Short Circuit !" );
12
  }
13
}

Allerdings wird in der Funktion w1_command() gleich zu Beginn w1_reset() 
ausgeführt:
1
bit w1_reset(void)
2
{
3

4
   bit err;
5
  
6
  W1_OUT &= ~(1<<W1_PIN);        // PD0 auf low
7
  W1_DDR |= 1<<W1_PIN;          // PD0 auf Ausgang
8
  
9
  DELAY( DELAY_US( 480 ));        // 480 µs warten
10
  cli();                // interrupts sperren
11
  W1_DDR &= ~(1<<W1_PIN);        // PD0 auf Eingang
12
  DELAY( DELAY_US( 66 ));        // 66 µs warten
13
  err = W1_IN & (1<<W1_PIN);      // no presence detect
14
  sei();                // interrupts freigeben
15
  DELAY( DELAY_US( 480 - 66 ));
16
  if( (W1_IN & (1<<W1_PIN)) == 0 )    // short circuit
17
    err = 1;
18
  return err;
19
}

Und in dieser Funktion wird ja sozusagen erkannt, dass kein Sensor, bzw 
ein defekter, angeschlossen ist.
#3806858
Lesenswert?

qwertz schrieb:
> Woran erkennt man, dass die Software beide Anschlusstechniken frisst?

Durchlesen. Auf die von Peter Danegger trifft es zu.

Ausserdem wird dir eine für den parasitären Modus geschriebene und 
funktionierende Software deinen mit 5V Anschluss versehenen Sensor nicht 
abschiessen. Umgekehrt auch nicht, nur funktioniert es dann nicht.

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