Forum: Mikrocontroller und Digitale Elektronik Ds1820 gibt mir immer gleichen Wert aus


von Marian G. (houwdy)


Angehängte Dateien:

Lesenswert?

Hallo.
ich stehe vor einem Problem und tüftle jetzt schon ewig herum und kapier 
den Fehler nicht.

ich habe an einem ATMEGA8 am PortD.2 einen DS1820 angeschlossen mit 
welchem ich die Temparatur messen und auf einem Display ausgeben will. 
Das Programm habe ich teilweise übernommen und angepasst.
Nun bekomme ich bei fehlendem Sensor 127,9 Grad ausgegeben mit dem ich 
mich
ja noch anfreunden kann. Schliese ich den Sensor an gibt er mir 10.6 
Grad aus egal wie warm es ist.

Eine Verbindung zum Sensor besteht, ich habe nämlich den Resetpuls und 
den AntwortPuls sowie das Timing des Buses am Oszi nachgemessen und bin 
da ziemlich genau in den Datenblattangaben.

ich würde euch bitten mal über das Programm zu schauen vl fällt euch 
etwas auf.

Vielen herzlichen Dank im Vorraus

Marian

von Frank F. (frank_f49)


Lesenswert?

Ist hoffentlich  kein Virus  drin.

von Marian G. (houwdy)


Lesenswert?

soll ichs euch lieber direkt einbinden? sind aber einige files. ich für 
meinen Teil hab nen virenscanner der up to date ist. also glaube ich 
nicht das die datei versäucht ist.

noch hinzufügen möchte ich der Prozessor läuft mit 1Mhz interner Takt
und der Sensor versorgt sich parasitär

von Joachim B. (jar)


Lesenswert?

pullup dran? wie groß?

bin aber nicht sicher ob das mit 1MHz läuft, habe immer zwischen 8 und 
20 MHz am MC

von Marian G. (houwdy)


Lesenswert?

Der pullup hat 4k7 ich werd mal probieren mit dem internen Takt 
hinauszugehen

von Joachim B. (jar)


Lesenswert?

Marian Guggenberger schrieb:
> Der pullup hat 4k7

je nach Kabelstrecke muss man auf bis zu 1,8k runter!

von Marian G. (houwdy)


Lesenswert?

Aber kabelstrecke ist bei mir nur 20cm

von Tom74 (Gast)


Lesenswert?

fast gedacht!
Der Compiler gibt bei Deinem Programm Warnungen aus. Eine davon ist, das 
es in Problem mit F_CPU gibt.
F_CPU muss definiert sein, bevor die delay.h eingebunden wird.

Probier mal:

#define F_CPU 1000000L
#include <util/delay.h>

von (prx) A. K. (prx)


Lesenswert?

Tom74 schrieb:
> F_CPU muss definiert sein, bevor die delay.h eingebunden wird.

Falsches Timing hätte er aber merken müssen:

Marian Guggenberger schrieb:
> ich habe nämlich den Resetpuls und
> den AntwortPuls sowie das Timing des Buses am Oszi nachgemessen und bin
> da ziemlich genau in den Datenblattangaben.

von Tom74 (Gast)


Lesenswert?

Oder laß mal #define F_CPU ganz weg, weil Du es in Deinen 
ProjektEinstellungen schon definiert hast.

von Pete K. (pete77)


Lesenswert?

Hardwareaufbau nach Datenblatt? Wie sieht es mit Abblockkondensatoren 
aus?
Stromversorgung ok?

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Marian Guggenberger schrieb:
> ich würde euch bitten mal über das Programm zu schauen vl fällt euch
> etwas auf.

 Low Time von 1us auf mindestens 5us, besser 10us verlängern.

 Siehe auch:
 Beitrag "Re: Timing Probleme 1-Wire"

von Marian G. (houwdy)


Lesenswert?

Hallo :)

Danke für die schnelle Hilfe.
Das Problem ist gelöst :)

Ich habe nur einen Pullup und keinen wie im Datenblatt beschriebenen 
Strong Pullup berwendet. Jetzt ist ihm bei übermittlung der Daten der 
Strom ausgegangen.  Ich hab nun die Versorgung am Sensor angeschlossen 
und die Software läuft.

von Route_66 H. (route_66)


Lesenswert?

Marian Guggenberger schrieb:
> Ich habe nur einen Pullup und keinen wie im Datenblatt beschriebenen
> Strong Pullup berwendet. Jetzt ist ihm bei übermittlung der Daten der
> Strom ausgegangen.

Der Sensor benötigt den Strong-Pullup nicht für die Datenübertragung, 
sondern nur während der eigentlichen Temperaturmessung. Für diese Zeit 
wird der 1-Wire-Pin des µC sinnvollerweise als Ausgang ung auf High 
geschaltet. Der AVR liefert dann also den höheren Strom über seinen Pin.

von (prx) A. K. (prx)


Lesenswert?

Wobei im parasitären Modus das Ende der Messung nicht durch Abfrage des 
Sensors implementiert werden kann, wie das hier geschieht. Statt dessen 
muss eine feste Messzeit abgewartet werden (750ms).

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.