Ich hab jetzt schon eine Ewigkeit damit verbracht diesen Bus zum laufen zu kriegen, aber es wäre eine Wunder wenn auch nur irgendwas mal ohne Probleme funktionieren würde. Ich hab mich jetzt schon durch 3 verschiedene Tutorials gewühlt plus jeden code kopiert und ausprobiert. Aber entweder kommt garnichts oder irgendwas an. Ja sogar wenn der DS18B20 nicht mal im Breadboard ist bekomme ich noch was auf dem LCD angezeigt. Mit dem angefügten code bekomme ich immer +127,9375 angezeigt, der Sourcecode stammt aus einem .pdf was hier im internet herumfliegt. Kann mal jemand so nett sein und mal nachsehen was daran so verpfuscht ist? danke.
Erholzeit zwischen geschriebenen 0-Bits fehlt. Dürfte aber bei 1MHz keine Rolle spielen, weil der Code zwischendrin langsam genug ist.
Wichtig für alle 18x20 -Bastler! Jeder der drei Typen benötigt anderen Code!
Alex W. schrieb: > Wichtig für alle 18x20 -Bastler! Jeder der drei Typen benötigt anderen > Code! Für die Umrechnung. Weshalb man damit anfangen sollte, die beiden Bytes in Hex auszugeben und zu kontrollieren. Umrechnen kann man später, wenn da überhaupt was Sinnvolles kommt. Hier kommen offenkundig nur Einsen, was bedeutet, dass der DS nicht reagiert.
Presence-Bit beim ersten Reset kontrollieren. Wenn da nix kommt, dann hat man schon ganz vorneweg was falsch gemacht.
Hab mal den Code in Proteus simuliert da geht es wunderbar, nur auf mein Steckbrett nicht? Angeschlossen ist er richtig laut Datenblatt, als Pullup verwende ich ein paar Widerstände zusammengeschalten (4,8kOhm) hab keinen 4,7k im Haus. An den 0,1 kOhm wirds ja nicht liegen oder ? Kann man irgendwie Festellen ob die vielleicht schon beim Transport kaputt gegangen sind?
Kontrolliert ob der Controller wirklich mit 1MHz taktet? Mittlerweile mal das Presence-Bit Kontrolliert? Wenn das nicht kommt, dann stimmt die Hardware nicht.
Presence bit scheint nicht zu kommen mit: if(therm_reset()!=1){ lcd_string("ja"); } gibts keine Antwort. Der Controller taktet mit 1Mhz intern, soweit man AVR Studio vertrauen kann?
Mit einem kleinen Lautsprecher mit ca. 470 Ohm in Reihe gegen Masse am 1-Wire-bus kannst du auch hören, ob da irgendetwas wackelt, ansonsten: mach mal ein SCHARFES aber KLEINES Foto von deinem Aufbau.
5465 schrieb: > Der Controller taktet mit 1Mhz intern, soweit man AVR Studio vertrauen > kann? Vorsichtshalber kontrollieren: Pin mit LED mit nominell 1 Hz wackeln lassen. Auf Basis der gleichen Delay-Routinen.
Steht auf dem Chip wirklich 18B20 und benutzt Du WIRKLICh den Code für einen 18B20 und nicht 18S20?
Das ist vorerst nicht relevant. So lange der presence pulse nicht kommt.
5465 schrieb: > Hab mal den Code in Proteus simuliert da geht es wunderbar, nur auf mein > Steckbrett nicht? Mal ohne Steckbrett probieren? Die Dinger sind ja berüchtigt für ihre exorbitant hohen parasitären Kapazitäten und eignen sich eigentlich nur für Gleichspannung … das könnte einem Eindrahtbus schon das Genick brechen.
Dieser Bus kann auch bei einfachster Ansteuerung zig Meter lang werden. Da spielt ein Steckbrett keine wesentliche Rolle.
Hab die Frequenz mal kontrolliert und scheint soweit in Ordnung zu sein. Die Befehle sind auch die Richtigen, wie aus dem Datenblatt des DS18B20. Gekennzeichnet ist er auch als DS18B20 auf der Rückseite. Hab mal ein Bild von meinem Aufbau angehängt.
Meinst du nicht, dass er richtig herum besser funktionieren wird? Allerdings vielleicht nicht mehr dieses Exemplar.
Sehe ich was was du nicht siehst oder wie ? Pin1 ist doch GND, dreh ich ihn um. Ist doch GND mit Vdd vertauscht ??
5465 schrieb: > Sehe ich was was du nicht siehst oder wie ? Auch hier andersrum ;-). Du übersiehst das "BOTTOM VIEW" in der unteren linken Ecke vom Bild. Das ist von der Seite der Pins betrachtet, bei dir also aus Sicht des Steckbretts, von unten gesehen. Tröste dich, du bist nicht der Erste im Forum, der darüber stoplert.
Ja, vollkommen richtig. Hab es für eine Topview gehalten , das wichtigste überließt man immer. Wie peinlich :/ Geht jetzt alles. Vielen Dank für eure Hilfe!
Hallo, ich beacker auch seit einigen tagen ein DS18S20. Leider mit nur mäßigem Erfolg. Der Code von 5465 (Gast) deckt sich mit vielen Tutorial oder Forenbeiträgen hier... und wie bereits festgestellt gab es bei Ihm ein Hardware Problem. Also schließe ich mal aus, dass der von Ihm verwendete Sourecode fehlerhat ist. Daher habe ich diesen Code für mein Projekt bis auf die unten beschriebenen Änderungen 1:1 übernommen. Da ich leider über kein Display verfüge. Gebe ich das Array temperature[0] bzw. temperature[1] auf die paralellen Ports B und D aus. Als MUC ist ein Atmega8L im Einsatz. Den DQ hab ich über 4,7k auf vcc (5V) gezogen. Der DS18S20 ist bei mir in 3 Drahttechnik (GND,DQ,VCC -- bevor jemand fragt Bottem View) angeschlossen. Trotz allem Bekomme ich als Übergabe in die Ports: temperature[0]=0xff, temperature[1]=0xff; mir ist nicht klar warum..... hat jemand von euch einen guten Tipp, bzw. eine Idee wie ich das, ohne Oszi, noch sinnvoll debuggen kann? Danke für Eure Hilfe. Viele Grüße Björn
b_k__BS schrieb: > Trotz allem Bekomme ich als Übergabe in die Ports: > temperature[0]=0xff, > temperature[1]=0xff; Genau das hatte er auch gekriegt. Infolgedessen kannst du nun einfach oben im Thread anfangen und die gleichen Tipps und Ansätze verfolgen.
Hallo A. K., danke für Deine Hilfe... Gehen wir es mal von oben durch: 1.) Alex W. schrieb: > Wichtig für alle 18x20 -Bastler! Jeder der drei Typen benötigt anderen > Code! Ich benutze eine DS18 S 20. Aber: A. K. schrieb: > Für die Umrechnung. Weshalb man damit anfangen sollte, die beiden Bytes > in Hex auszugeben und zu kontrollieren. Umrechnen kann man später, wenn > da überhaupt was Sinnvolles kommt. Hier kommen offenkundig nur Einsen, > was bedeutet, dass der DS nicht reagiert. Also habe ich mir, deinem Rat folgend, die Hexziffern der Beiden übergeben Bytes auf die Ports geführt. ______________________________________________ 2.) A. K. schrieb: > Das ist vorerst nicht relevant. So lange der presence pulse nicht kommt. Ich ziehe das Kontrollsignal i aus der Resetfunktion als Fehlersignal in eine glob. variable. Und lese sie am Ende aus. Da das Fehlersignal gesetzt wird ...bedeutet das, dass ich eine Rückmeldung vom DS18S20 bekomme. Also alles I.O. _______________________________________________ 3.) Timeming lässt sich bei mir ohne Oszi schwer kontrollieren. Ich glaube aber mal, dass der Code den internen Schwingkreis schon richtig konfiguriert. _______________________________________________ 4.) Den Aufbau hab ich jetzt x-mal kontrolliert ich glaube die Stolperfalle mit dem "Bottom view "müsste ich umgangen sein... _______________________________________________ Habe im Anhang eine Skizze des Aufbaus. Wäre klasse, wenn da jemand von euch nochmal drüber fliegt. Danke! Viele Grüße Björn PS: Mir ist völlig klar, dass die dezimale Temperatur nicht passen kann!!! Ich lasse mir nur die Bytes aus dem Temperatur Register übergeben! Und die müssten nach Datenblatt etwas anderes sein als 0xff! (das wären -0,5°C) Was zu dieser Jahreszeit unwahrscheinlich ist.
b_k__BS schrieb: > Ich ziehe das Kontrollsignal i aus der Resetfunktion als Fehlersignal in > eine glob. variable. Und lese sie am Ende aus. Da das Fehlersignal > gesetzt wird ...bedeutet das, dass ich eine Rückmeldung vom DS18S20 > bekomme. Verstehe ich das richtig: Du kriegt ein Fehlersignal welches anzeigt dass kein Sensor reagiert und wunderst dich dass kein Ergebnis rauskommt? Die oben gezeigte Reset-Funktion liefert, wie dort dokumentiert, 0 wenn ein Sensor reagiert und 1 wenn nicht. Wiederspiegelt damit direkt die Situation auf dem Bus.
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.