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.
Dass parasitäre Stromversorgung einen aktiven Pullup während der Messung erfordert, daran hast du gedacht?
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!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.