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