Hallo an meinem ATMEGA644P soll ein DS18S20 angeschlossen werden. Die Board-Spannung beträgt 3V, liegt also an der untersten Grenze des DS1820. Da ich festgestellt habe, dass dass der DS zwar ansprechbar ist, jedoch keine Temperaturmessung mehr vornimmt, will ich ihn mit 5V, die ich auch noch zur Verfügung stehen hab, versorgen. Mein Problem: Wie soll ich den DS mit dem AVR verbinden? Zur Zeit mache ich es direkt, ich weiß aber nicht ob das auf dauer vielleicht schlecht für den AVR ist, da im Datenblatt als max. Eingangsspannung Vcc + 0.5V steht. Viele Grüße Richi
Ich habe einen DS18x20 seit vielen Jahren bei 3,0V im Einsatz. Funzt.
Der Sensor zieht nur runter, nicht hoch, und ist non-parasitär betrieben mit Vih=2,2V zufrieden. Wenn der Pullup-R also an 3V hängt, dann darf der DS mit 5V betrieben werden.
Danke für deinen Hilfe, das habe ich wohl im Datenblatt übersehen. Ein weiteres Problem hätte ich noch: Wenn ich den Convert_T Befel an den DS sende, dann kann man ja laut Datenblatt erkennen, wann fertig gemessen ist. Nur wenn ich ein Bit lese, ist das sofort 1, was fertig symbolisiert. Beim Ausesen der Temperatur kommt immer der Standardwert 85°C. Kann es sein, dass man vor dem Bit-lesen noch was machen muss? Viele Grüße Richi
Richard W. schrieb: > Kann es sein, dass man vor dem Bit-lesen noch was machen muss? Dem DS sagen dass er gemeint ist. Sonst hört der nicht zu. Dass die Leitung 1 ist besagt i.d.R. nichts, denn das ist sie im Ruhezustand immer.
"If the DS18S20 is powered by an external supply, the master can issue read-time slots after the Convert T command and the DS18S20 will respond by transmitting 0 while the temperature conversion is in progress and 1 when the conversion is done." So steht es im Datenblatt. Vor dem Bit-Lesen wird der Convert T Befehl gesendet. Muss ich dann wirklich neu adressieren? Welchen Befehl muss ich dann vor dem Bit-Lesen senden?
Manual: Step 1. Initialization Step 2. ROM Command Step 3. DS18S20 Function Command Zu 2: Wenns nur einer ist, dann SKIP ROM. Insgesamt wird die obige Sequenz zweimal fällig: A: Messen (Function Command CONVERT T) -750ms warten- B: Auslesen (Function Command READ SCRATCHPAD)
> A: Messen (Function Command CONVERT T) > -750ms warten- > B: Auslesen (Function Command READ SCRATCHPAD) Ich will es eben ohne 750ms warten machen, es ist ja der max-Wert. Ich meine was ich nach dem CONVERT T machen muss, damit er mir sagt, ob er fertig ist.
Richard W. schrieb: >> A: Messen (Function Command CONVERT T) >> -750ms warten- >> B: Auslesen (Function Command READ SCRATCHPAD) > > Ich will es eben ohne 750ms warten machen, es ist ja der max-Wert. > > Ich meine was ich nach dem CONVERT T machen muss, damit er mir sagt, ob > er fertig ist. Vergiss das nachfragen. In der Zeit in der du nachfragst ist der IC auch schon fertig. Nach dem CONVERT_T wartest du eine Zeit lang und holst einfach das Ergebnis ab. Kommando READ_SCRATCHPAD. Natürlich musst du den Chip addressieren oder eben einen SKIP-ROM schicken, wenn du nur einen hast.
Karl heinz Buchegger schrieb: > Vergiss das nachfragen. In der Zeit in der du nachfragst ist der IC auch > schon fertig. Öhm, das sind ein paarhundert Millisekunden, nicht Nanosekunden, und der AVR ist ein bischen schneller als die ersten Zuses. Laut Manual kann man bei nicht-parasitärem Betrieb den Sensorstatus pollen (1-Bit Leseoperation). Ist aber eher untypisch und ich würde nicht ausgerechnet damit anfangen.
In der Datei Thermo.c wird auch nur gewartet, zwar nur 100ms (erscheint mir kurz). Mir ist klar dass es mit 750ms warten getan wäre, aber die Methode mit dem Pollen dauert nicht so lang. Mit den 1-Bit-Lesevorgängen haut es bei mir nicht hin. Es kommt ja immer 1 obwohl der DS noch nicht fertig ist.
Richard W. schrieb: > In der Datei Thermo.c wird auch nur gewartet, zwar nur 100ms (erscheint > mir kurz). Das geht, wenn man den DS18B20 verwendet, und ihn auf 9-Bit Genauigkeit runterstellt. > mir nicht hin. Es kommt ja immer 1 obwohl der DS noch nicht fertig ist. Das passiert, wenn du den DS nicht korrekt ansprichst und er dich ignoriert.
A. K. schrieb: > Karl heinz Buchegger schrieb: > >> Vergiss das nachfragen. In der Zeit in der du nachfragst ist der IC auch >> schon fertig. > > Öhm, das sind ein paarhundert Millisekunden, nicht Nanosekunden, und der > AVR ist ein bischen schneller als die ersten Zuses. Du hast recht. Der Grund warum das bei mir nie ein Problem war, besteht darin, dass ich mit der Sequenz while( 1 ) { read start Messung mache irgendwas anderes } arbeite und den Chip sowieso nur alle 2 bis 3 Sekunden abfrage. Schneller brauch ich die Temperatur nicht und der Selbsterwärmung des IC ist es auch zuträglich, wenn er nicht ständig arbeiten muss.
Richard W. schrieb: > In der Datei Thermo.c wird auch nur gewartet, zwar nur 100ms (erscheint > mir kurz). Erhöhe die 100 auf 1000 Die Demo soll zeigen, wie man den IC anspricht und keine fertige Applikation sein.
Ich will weder 100ms warten, noch 1000ms warten. Ich will das Feature des DS nutzen, mit dem man abfragen kann, ob er schon fertig ist!!!
Ich will, ich will, ich will - mit dem Fuss aufstampf ;-). Dann mach es halt so, aber mach es richtig. Da keiner ausser dir weiss was du machst, weiss auch keiner was du falsch machst.
Am richtig machen scheiterts ja auch. Ich habe mich jetzt dazu entschlossen, doch die 750ms zu warten. Ist auch 750mal so leicht. Auf die 100 ms kommts jetzt auch nicht drauf an. Vielen Dank an alle!!! Gruß Richi
Richard W. schrieb: > Am richtig machen scheiterts ja auch. > Ich habe mich jetzt dazu entschlossen, doch die 750ms zu warten. > Ist auch 750mal so leicht. Auf die 100 ms kommts jetzt auch nicht drauf > an. > > Vielen Dank an alle!!! > > > Gruß > Richi [justMyTwoCents] Im übrigen... ich habe nach frustrierenden 2 Tagen proggen, nochmal 1 Tag schaltungsaufwand... und dann ärgern über "ab und zu" falsche Werte (7,5°) nach ca. einem halben Jahr "Nerven lassen" die DS18x20 in die Tonne getreten und bin auf DS75/ML75 umgestiegen.... Eine Leitung mehr opfen für ein gescheites TWI, war mir der ganze Ärger mit den DS18 Dingern einfach nicht wert! ;) [/justMyTwoCents]
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.