Forum: Mikrocontroller und Digitale Elektronik DS1820 & DS2401


von Peter W. (Gast)


Lesenswert?

Hi, ich hoffe mir kann jemand bei meinem Problem helfen.

Ich habe ein Programm geschrieben und schaffe es nicht aus dem DS1820
etwas ordentliche herauszubekommen.
Seltsamerweise kann ich den DS2401 (Seriennummer) mit meinem Programm
komplett auslesen.

(das Programm soll nur den ROM CODE auslesen, der beinhaltet bei beiden
den Family Code, die 48 Bit Serien Nr. und einen 8 Bit CRC Wert)

Nun zu meiner Frage ?

Kann man sich sicher sein wenn man einen DS2401 auslesen kann, das mein
Programm dann auch problemlos einen DS1820 auslesen kann
Die Timings des DS1820 und des DS2401 sind so wie ich es in den
Datenblättern gelesen habe gleich, oder sieht das jemand anders.

Zur Schaltung:
- der DS1820 oder DS2401 ist mit einen ATmega128L verbunden
- ich betreibe die beiden im „parasite powerd mode“
- ich habe keinen Pull- Up Widerstand, da ich den internen vom
ATmega128L nutze
- der DS1820 / DS2401 wird alleine am Bus betrieben

Vielen Dank im Voraus
Peter W.

von Elektrikser (Gast)


Lesenswert?

Hallo,
verwendest du den DS1920 im Parasitär-Modus?
Wenn ja, ist der VCC-Pin und der GND-Pin miteinander verbunden?
Du solltest einen Pull-up-Widerstand doch mal verwenden (4,7k zu +). Im
Parasitärmodus ist er auf jeden Fall notwendig. Und ich kann mich an
meine ersten Versuche im normalen Modus erinnern. Da kriegte ich ihn
auch erst mit externen Pull-up zum laufen...

Gruß Elektrikser

von Peter W. (Gast)


Lesenswert?

Ich werde noch ganz verrückt mit den DS1820.

Ich habe zwar hinbekommen das er etwas funktioniert dies klappt aber
nur wenn:

-ich den Sensor entweder im „parasite“ oder im „externel supply“ mode
benutze
-und den Internen Pull Up Widerstand vom Atmega128L benutze

Das heißt ich schalte den Port mit
„Output Low“ (Sink) - -> DDRXn =1 und PORTXn = 0
„Pull Up“ - ->DDRXn = 0 und PORTXn = 1
hin und her

Das Problem dabei ist das die Temperatur etwas zu hoch ist (bei
Zimmertemperatur / CRC Cecksumme stimmt) und wenn ich den Sensor mit
Kälte Spray abkühle (Minusgrade) die Temperaturwerte überhaupt nicht
mehr stimmen (CRC Cecksumme und ausgelesene Werte sind falsch).



Auch die Variante mit dem externen Pull Up Widerstand habe ich schon
ausprobiert.
Dabei benutze ich nicht den internen Pull Up Widerstand des ATmega128L
sondern schalte den Port nach Tri-state.

Das heißt ich schalte den Port mit
„Output Low“ (Sink) - -> DDRXn =1 und PORTXn = 0
‘Tri-State” (Hi-z) - ->DDRXn = 0 und PORTXn = 0
hin und her

doch bei dieser Variante funktioniert nur das Reseten, ich bekomme
dabei auch vom Sensor den „Presence Puls“ zurück
meine ausgelesenen Werte sind aber alle nur 0xFF.

Dies kommt mir so vor als ob der DS1820 die Leitung nicht richtig auf
Low ziehen kann oder sie viel zu langsam auf Low herunterzieht.

Habe auch schon versucht verschiedene Werte von Pull Up Widerstanden
einzusetzen (4,7K ; 2,2k ; 1,5k) doch das Ergebnis bleibt gleich.
Wenn ich bei dieser Variante den Pull –Up Widerstand ganz herausnehme
merke ich dass, das Resten fehl schlägt und die Leitung auf Low
bleibt.

Komisch ist an der Sache ist das die Variante mit dem internen Pull-Up
fast funktioniert, und bei Beschaltung mit einen externen Widerstand
fast überhaupt nix geht

Kennt jemand diese Probleme und wie kann man sie beheben.
Hat jemand schon den DS1820 an einen ATmega128 gehängt und wie sieht
das dazugehörige Programm (in C) aus.
Kann es Timing Probleme bei der Programmierung geben wenn man einen
ext. Pull Up Widerstand verwendet. Wie sieht eure Schaltung aus ??
Fragen über Fragen, ich hoffe ihr könnt sie beantworten.

von GEORG (Gast)


Lesenswert?

HALLO PETER W. ICH HABE EIN DS2401 UND KANN DEN LEIDER NICHT AUSLESEN
HABE GELESEN DAS DU EINE MÖGLICHKEIT HAST . KANNST DU MIR EINEN TIPP
GEBEN WIE KANN ICH ES AUSLESEN

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.