Forum: Mikrocontroller und Digitale Elektronik ds1820 - parasite power - temp unter -10° geht nicht?


von Martin (Gast)


Lesenswert?

Hallo allerseits!

Trotz der vielen anderen ds1820-threads hier habe ich anscheinend ein 
anderes problem :( aber erst mal der reihe nach!

danke an der stelle auch gleich für die tutorials und das wiki, hat mir 
in den ersten avr-schritten seit weitergeholfen!

Danke auch an Peter D. für den Code, hat mir zum beginn sehr geholfen, 
nachdem ich aber teils schwierigkeiten beim verstehen habe kam dann doch 
das datenblatt und es wurde die selbstgeschriebene lib-1wire.asm.

anfangsprobleme wie statt read_rom skip-rom zu schicken, nur 1 bit 
empfangen vom ds1820 und den timer überall zu suchen statt einfach das 
richtige command abzusetzen sind auch umschifft.

jetzt läuft mal ein kleiner test-code der die temp via th/tl bytes 
ausgibt und dann noch eine routine welche über die counter-register 
einen feiner abgestuften wert ausgibt.

rom-search kommt demnächst mal wenn zeit ist, der ablauf ist aber 
eigentlich recht einfach und mit einer id-verwaltung im scratchpad ist 
das überhaupt perfekt!

vorerst also 1 ds1820 an einem pin, parasite power, knapp 1m draht 
verdrillt, den sensor mit der heissklebepistole in "plastik" gegossen - 
ja, nicht perfekt - aber zum herumspielen ist er mal isoliert und 
wasserdicht.

soweit passt die temperatur auch, nur wenn ich den sensor in den 
tiefkühlschrank verlege wirds "komisch".
d.h. statt der knapp -18grad sinkt der angezeigte wert mal recht langsam 
bis knapp -9/-10 grad und springt anfangs sporadisch auf 85 (-> 
defaultwert wenn convert_temp nicht geklappt hat), geht der wert weiter 
runter richtung -18 wird nichts mehr angezeigt außer 85 grad.

crcs hab ich noch nicht implementiert, nur mal per hand nachgerechnet, 
die stimmen, ihc nehme an das passt also.

für mich sieht das so aus als ob der strom bei der niedrigen temperatur 
nicht mehr reicht. ein kleinerer pullup (2k2) hat nichts gebracht 
(vorher 4k7), auch ein hochsetzen der zeit für parasite-power von 750ms 
auf 1-2sec hat nichts gebracht, dachte er braucht vielleicht länger?

oder kann es sein das ich den sensor leicht beleidigt habe mit der 
heissklebepistole - wobei der lötkolben ja eigentlich etwas heisser 
ist...

hat einer von euch eine idee woran das liegen kann...?

forensuche & google haben mir soweit mal nichts gebracht.. :(

Danke für eure Ideen!
mfG, Martin.

von Andreas K. (a-k)


Lesenswert?

Dass parasitäre Stromversorgung einen aktiven Pullup während der Messung 
erfordert, daran hast du gedacht?

von Martin (Gast)


Lesenswert?

Jaja, hab 4k7 dran, hab dann bei -10grad auch schon mit 2k2 probiert und 
den pin am avr ziehe ich für 750ms auf high - testweise auch für 1-2sec, 
das hat aber auch nicht geholfen bei -10grad...

ohne pullup geht gar nichts weil ja die kommunikation schon nicht 
möglich ist - die ausgänge werden ja nur aktiv auf low gezogen, das high 
kommt ja durch den pullup. -> der allein reicht freilich nicht für 
parasite-power, daher avr-pin aktiv auf 1 setzen nach senden des 
convert-temp befehls.

und sonst geht ja auch alles, ich lese den ds1820 scratchpad ja sogar 
fehlerfrei aus. nur er liefert eben ab grob -10 grad einen wert von 85 
grad -> default wert.

was ich noch nicht probiert habe ist umzulöten und rein für den test mal 
nicht parsite sondern direkt zu versorgen, das werd ich morgen mal 
machen!

von Martin (Gast)


Lesenswert?

Hmmm. Also mit 3Adern und externer Versorgung des ds1820 funktioniert es 
auch im Tiefkühler - zeigt allerdings nach 30min noch immer "nur" -13 
statt -18 grad an.
Nachdem die tür aber schon seit 30min zu ist wundert mich das auch 
irgendwie.

Aber das Problem das er keine Werte zurückbekommt, also convert_temp 
nicht ausgeführt wird, das ist beseitigt.

Nur was bedeuted das? -> bei jedem Temperaturfühler, vor allem im 
Außenbereich, 3 Adern verlegen oder auf Werte unter -10 Grad verzichten? 
:(

Werde da noch ein wenig testen, folgende Ideen hab ich mittlerweile 
wieder, was meint Ihr dazu - schwachsinn oder gut zu testen?

-> 1k pullup, bzw. einen 2. Pin am avr belegen und wie im datenblatt mit 
transistor einen richtigen "strong" pull-up basteln? müsste ja 1x für 
alle 1-wire busse genügen, d.h. wäre ja "nur" 1 pin. (dann muss ich 
natürlich sicherstellen das wärend der strong-pullup phase auf den 
anderen bussen nichts übertragen wird, sonst quasi kurzschluss...)

-> "pre-parasite power" was wenn ich vor der init/skip-rom/convert-temp 
sequenz schon für 1-2sek den parasite-power aktiviere? dann könnte der 
ds1820 bereits vorher seinen puffer zu 100% gefüllt haben...?

-> länger parasite power liefern und bis zum read_scratchpad noch ein 
wenig mehr pause machen falls der ganze temp-wandlungsprozess länger 
dauert? wie temperaturabhängig ist die dauer von convert-temp 
eigentlich? (aka bei 155° 10µs, bei -55° 5min?)

und im nächsten schritt sollte ich mir wohl mal crc ansehen und wie ich 
die im avr mit wenig resourcenbedarf nachrechne. wenn ich das richtig 
verstanden habe schieb ich die bits durch ein register und je 
schiebe-schritt muss ich an den passenden stellen xor'en, oder? naja, 
das werd ich auch noch rausfinden.

und ein eigenartiger nebeneffekt: beim 1. sensor rechnen meine routinen 
betreff höherer messwertauflösung im vergleich zu templow/temphigh 
richtig, beim 2. sensor mit extern-power nicht?? irgendwo hängt das hier 
noch.

Wenn ich zu einer lösung gekommen bin werde ich die hier posten, 
vielleicht hat jemand von euch noch ideen dazu, bzw. kann auch mal 
probieren den tiefkühler mit 2/3-draht variante zu testen?

Danke!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.