Forum: Mikrocontroller und Digitale Elektronik AVR mit 3V, DS18S20 mit 5V


von Richard W. (richi)


Lesenswert?

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

von (prx) A. K. (prx)


Lesenswert?

Ich habe einen DS18x20 seit vielen Jahren bei 3,0V im Einsatz. Funzt.

von (prx) A. K. (prx)


Lesenswert?

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.

von Richard W. (richi)


Lesenswert?

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

von (prx) A. K. (prx)


Lesenswert?

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.

von Richard W. (richi)


Lesenswert?

"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?

von (prx) A. K. (prx)


Lesenswert?

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)

von Richard W. (richi)


Lesenswert?

> 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.

von Karl H. (kbuchegg)


Lesenswert?

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.

von Karl H. (kbuchegg)


Angehängte Dateien:

Lesenswert?

Ist zwar für einen normalen DS1820, d.h. die Auswertung musst du unter 
Umständen anpassen.

von (prx) A. K. (prx)


Lesenswert?

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.

von Richard W. (richi)


Lesenswert?

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.

von (prx) A. K. (prx)


Lesenswert?

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.

von Karl H. (kbuchegg)


Lesenswert?

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.

von Karl H. (kbuchegg)


Lesenswert?

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.

von Richard W. (richi)


Lesenswert?

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!!!

von (prx) A. K. (prx)


Lesenswert?

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.

von Richard W. (richi)


Lesenswert?

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

von Rene K. (draconix)


Lesenswert?

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
Noch kein Account? Hier anmelden.