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
qwertz schrieb:> 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.
Der Pullup am 1-Wire sollte nicht bloss 100 Ohm betragen. Und der AVR
sollte die Leitung nicht aktiv hochziehen, sondern das dem Pullup
überlassen.
Der Widerstand ist wie überall beschrieben 4,7k groß.
Der uC schaltet niemals auf High, sondern soll den Pin auf GND ziehen,
was leider nicht klappt wenn der DS18B20 verbaut ist.
Moment... ich sehs erst jetzt: Der AVR kriegt den Pin nicht runter
gezogen? Das ist selten, denn ein AVR zieht bei 5V an die 100mA durch
den Pin durch, d.h. das ist ein blitzsauberer Kurzschluss. Teil verreckt
oder verkehrt herum.
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?
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...
> 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
qwertz schrieb:> Wenn ich den Widerstand messe: alles gegen alles - unendlich
Pullup stehen lassen, Sensor rausziehen - kann der uC die Leitung
auf 0 ziehen ?
Wenn nein, Pullup wegschmeissen.
Wenn ja, Sensor reinstecken, kann der uC die Leitung auf 0 ziehen ?
Wenn nein, nicht lange rumrätseln, Sensor wegschmeissen, einen
neuen besorgen.
> 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!
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
voidstart_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
bitw1_reset(void)
2
{
3
4
biterr;
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
returnerr;
19
}
Und in dieser Funktion wird ja sozusagen erkannt, dass kein Sensor, bzw
ein defekter, angeschlossen ist.
qwertz schrieb:> D.h. ich müsste statt 5V an Vcc GND anlegen?
Ja. Spart eine Leitung. Ausserdem darf man dann beim DS im TO-Gehäuse
unten und oben verwechseln..
Und richtig: Beim Reset spielt das noch keine Rolle. Erst beim Start
einer Messung.
Möglicher Grund für den Defekt?
Hab nämlich an Vcc 5 V anliegen und wenn das Programm beim ersten mal
bis "parasite power on" kam... ?!
Oder juckt das den IC nicht?
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.
Eine eigene Frage?
Dieser Thread ist über 12 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.