Hallo, habe hier einen DS1820 Code im Forum gefunden. Ich wollte es mit dem gleichen µC probieren, aber funktioniert nicht. Bei anderen Usern geht er aber schon. Kann mir einer bitte helfen!? mfg
Es tut mir leid. Aber wir sind hier an einem Punkt angelangt, an dem dir aus der Ferne niemand mehr helfen kann. Um jetzt noch das Projekt zu retten, müsste wahrscheinlich einer mit Messgeräten bewaffnet zu dir hin und mal direkt an die Platine ran.
Nein es hilft überhaupt nicht wenn du beschreibst was nicht funktioniert. Das würde andere nur verwirren und es wäre kein Ratespiel mehr.
Gast schrieb: > Nein es hilft überhaupt nicht wenn du beschreibst was nicht > funktioniert. Das würde andere nur verwirren und es wäre kein Ratespiel > mehr. Zu seiner Ehrenrettung: Es gibt von ihm schon 2 oder 3 Threads mit genau demselben Problem. Aber es ist die übliche Geschichte: * Hardware ist fehlerfrei * Software ist fehlerfrei * Trotzdem funktionierts nicht.
Ja schon klar, aber vl hat ja jemand einen solchen DS1820 und könnte es bei sich testen, ob es geht, dann könnte ich mal Fehler ausschließen!
Habe jetzt diese 2 Befehle ausgeklammert: //devices=w1_search(0xf0,rom_code); //printf("%-u Gefundene Sensoren\n\r",devices); und durch diesen Befehl ersetzt: devices=w1_read(); ----------------------------------------------------- XTAl = 8000000 ---------------------------------------------------- Im Terminal gibt er mir -999.9C an und am Oszilloskop kann ich dieses, was im Anhang ist messen. Kann mir vl doch jemand helfen jetzt? mfg
Wenn im Terminal -999.9C steht, scheint es ziemlich kalt zu sein. Ist die Heizung vielleicht aus? Jürgen
Und was gibt er aus wenn überhaupt kein Sensor angeschlossen ist? Denk doch mal bischen nach und probier herum.
Peter K. schrieb: > Ja schon klar, aber vl hat ja jemand einen solchen DS1820 und könnte es > bei sich testen, ob es geht, dann könnte ich mal Fehler ausschließen! * Ich hab einen DS1820 * Ich benutze einen Mega16 mit 11.irgendwas Mhz * Ich hab mir aus der Codesammlung die Routinen vom PeDA geholt. * Hab dort die Pinbelegung angepasst * Hab die Ausgabe angepasst * Hab die am µC vorliegende Taktfrequenz (die 11.irgendwas MHz) in das entsprechende #define eingetragen * Habs gebrannt -> Hat nicht funktioniert. * Dann hab ich einen 10k Widerstand von + zur Datenleitung gesteckt -> Dann hats sofort funktioniert. Das ganze war eine Sache auf 10 Minuten, inklusive die Verbindungen am Steckbrett herstellen und andere LCD Routinen einbinden. Ich hab kein CodeVision, und ich kenn auch den Inhalt der Funktionen w1_init, w1_search, ... nicht. Daher kann ich mir die auch nicht für den WinAvr anpassen. > ob es geht, dann könnte ich mal Fehler ausschließen! Da die entscheidenden Routinen, nämlich die w1_.... allesamt von CodeVision sind, und wir mal davon ausgehen, dass die ihren Code testen, ehe sie ihn ausliefern, werden die sicherlich funktionieren.
Na das hilft doch schon weiter. Immer schön weiterprobieren dann wird der Fehler nicht lange versteckt bleiben.
Ich kenn mich mit WinAVR nicht aus, aber kannst du mir vl ein fertiges Projekt hier reinstellen, damit ich es nur mehr rüberspielen muss? Dann kann ich mal testen obs funktioniert
Peter K. schrieb: > Ich kenn mich mit WinAVR nicht aus, aber kannst du mir vl ein fertiges > Projekt hier reinstellen, damit ich es nur mehr rüberspielen muss? Dann > kann ich mal testen obs funktioniert Von dort den Code holen Beitrag "DS1820, DS18B20 in C" Keine Ahnung ob das schon mal wer ausprobiert hat: Da Code für den WinAvr normalerweise weitgehend Standard-C ist (bis auf die ersten #includes), gibt es eine gewisse Chance, dass CodeVision den Code aus dem Stand heraus kompiliert. Ansonsten: AVR Studio installieren (gibts bei Atmel) WinAvr installieren neues C-Projekt anlegen Alle *.c aus dem Projekt hinzufügen compilieren, linken wenn Fehlermeldungen: diese beheben (kann nicht viel sein) wenn keine Fehlermeldungen: brennen
Und entscheide dich endlich mal, wie deine Hardware aussieht Mal ist es ein 90S8515, mal ein Mega8515 Mal hat der 8 Mhz, mal hat er 3.wasweißich Mhz Mal hängt der Sensor am PORTA, dann wieder am PORTB. Und dort an allen möglichen Pins. (Mein persönlicher Rate-Tip: Du hast den DS1820 schon längst geschrottet)
@Karl heinz Buchegger
>Es gibt von ihm schon 2 oder 3 Threads mit genau demselben Problem.
Deine Geduld-alle Achtung!
Karl heinz Buchegger schrieb: > (Mein persönlicher Rate-Tip: Du hast den DS1820 schon längst > geschrottet) Ich muss mich korrigieren. Hab nochmal dein Oszi Bild studiert. Laut Spez beginnt alles mit dem Reset-Puls, der mindestens 480µs lang sein soll. Den Reset Puls sieht man deutlich, allerdings ist der bei dir etwas über 2000µs lang. Wenn eine minimale Pulslänge von 480µs gefordert wird, dann wird man als Library Programmierer 500 oder meinetwegen 600µs nehmen. Aber >2000µs kommt mir dann schon sehr lang vor. Ich kann falsch liegen, aber meine Schlussfolgerung daraus ist immer noch: Deine Taktfreuenz, mit der das Programm rechnet stimmt nicht mit der tatsächlich vorhandenen Taktfrequenz überein. Nach dem Reset Puls ist noch ein kleiner Puls zu sehen. Das könnte der Presence Puls des DS1820 sein. Allerdings zieht der den Bus nicht bis auf 0 runter. Bist du sicher, dass du einen 4k7 Widerstand da drann hast, und nicht etwa 470 Ohm oder 47 Ohm oder noch kleiner. Edit: Oszi Bild falsch interpretiert: Der Puls ist anscheinend 477µs lang. Ist zwar etwas knapp, ich denke aber nicht das das ein Problem darstellt. Auf jeden Fall dürfte die Einstellung der Taktfrequenz stimmen. Wie lang ist den der kleine Puls dahinter? Laut Datenblatt sollte der Abstand zum grossen Puls zwischen 15µs und 60µs liegen und er sollte 60 bis 240µs lang sein
Der sollte etwa 230µs sein, kann leider nur mehr ablesen, aber ist ja zirka die hälfte von dem was ich beim anderen (477µs) gemessen habe.
4,7k stimmen, da ich die extra gekauft habe und habe nochmals gemessen ;)
Der 1820 schafft seinen Presence-Pulse nicht nach LOW zu ziehen. Sichtbar ist er ja auf dem Oszi-Bild. Wahrscheinlich keine Open-Drain-Ausgänge, oder es hängt noch was anderes an der Leitung. Die 4,7K werden schon stimmen, sonst hätte der uC Probleme den Reset-Pulse zu generieren.
Was meinst du damit? der puls geht ja auf 0V ? Wenn nicht, wie kann ich das beheben?
Wie kann ich das Problem lösen? Route_66 schrieb: Wahrscheinlich keineOpen-Drain-Ausgänge, oder es hängt noch was anderes an der Leitung.
Datenblattangaben über die Eigenschaften des verwendeten Portpins mit den Erfordernissen und deiner Verwendung und Initialisierung vergleichen. Dann richtig machen -> fertig!
Also kurz gesagt, ich soll einen anderen Pin nehmen, bei dem es funktioniert...
Route_66 schrieb: > Wahrscheinlich keine > Open-Drain-Ausgänge, oder es hängt noch was anderes an der Leitung. Die > 4,7K werden schon stimmen, sonst hätte der uC Probleme den Reset-Pulse > zu generieren. Auch wieder wahr. Funktionieren die Ausgänge des 90S8515 anders als die eines Mega16?
Es könnte vielleicht auch an dem jetzt werwendeten funktionieren oder aber auch an einem anderen nicht. NACHLESEN !!!! ....und Denken.
Peter K. schrieb: > Also kurz gesagt, ich soll einen anderen Pin nehmen, bei dem es > funktioniert... Vor allen Dingen solltest du aufhören planlos rumzuprobieren. Alles fängt immer mit dem Studium des Datenblattes an. Schon traurig, wenn du ein Problem hast und noch nicht mal ein Oszi Bild richtig interpretieren kannst.
Wie happig ist eigentlich die Länge des Reset Pulses? Im Datenblatt steht nur: länger als 480µs. Gesetzt den Fall, folgender Aufbau (mit neuem Taster, damit er nicht prellt) 5V +-------------------+--------------+ | | +-+ | | | 4k7 | | | | +-+ | | +--------+ | | + | +---------| D | | | - | | DS1820+--------+ +-+ | | | 330 | | | | +-+ | | | \ Taster | \ | | | GND +----------------+--------------+ Vorgehen: Oszi an Ein/Ausgang D des DS1820 5V auf die Schaltung Taster drücken und sofort wieder loslassen Am Oszi sollte man dann doch den Presence Puls des DS1820 sehen können? Schon klar, dass kein Mensch einen Taster so um die 500µs drücken kann. Aber ich hoffe mal, dass es dem DS1820 nichts ausmacht, wenn der Reset Puls mal so um die 1/4 Sekunde lang ist. Ziel der ganzen Sache: Rausfinden ob der DS1820 daran Schuld ist, dass der Presence Puls nicht bis auf 0 runter geht oder ob im µC was nicht stimmt.
Ich habe nun im Datenblatt nachgeschaut, und tja habe auch verschiedene Pins probiert, aber alles das selbe... Kann mir einer sagen, wie ich das mit dem Ausgang schaffe, damit er auf GND gezogen wird.
>Kann mir einer sagen, wie ich das >mit dem Ausgang schaffe, damit er auf GND gezogen wird. Auf dem Oszibild zieht der DS gerade mal 0,5V runter. Da liegt die Vermutung nahe das da kein 4,7k dran ist, sondern etwas viel kleineres. Der AVR bekommt das evtl. auf GND gezogen weil er mehr als 25mA "sinken" kann. Der DS gerade mal 4mA. Auf dem Bild ist auch ein kleiner Peak zu 5V zu sehen wo der AVR Ausgang auf Eingang umschaltet. Danach kommt der DS und kriegt die Leitung nicht auf GND. Irgendwie wird es immer wahrscheinlicher das der DS1820 defekt ist. Oder irgendwie falsch angeschlossen. Gibt es Fotos vom Aufbau?
Hallo, der Widerstand muss ein 4,7k sein habe ihn mehrmals gemessen und gekauft wurde er auch so! Ein Foto kann ich leider nicht schicken, da ich den Sensor nicht bei mir habe, aber die Schaltung habe ich im Kopf, die ja hier schnell erläutern kann. GND---------------------------------------- | -(3)----- DQ---------------------------DQ(3) 18202) | | +(1)----- | 4,7k | 5v---------------- (Parasite Mode)
Die Fehler in deinem Plan seh ich dir nach. So hast du das ganze ganz sicher nicht verschaltet. Da würde dann gar nichts mehr gehen. Photo ist trotzdem wichtig. Es geht nicht darum was du denkst, das du aufgebaut hast, sondern was du tatsächlich aufgebaut hast.
Aber die Schaltung sieht 100% so aus, außerdem kann man ja bei Parasite mode nicht viel falsch machen, wenn man vom DS1820, die 2 äußeren Pins auf Masse legt und zwischen 5V und DQ einen 4,7k wiederstand hängt.
Bei dem STK 200 sind einige Pins über Strombegrenzungs Widerstände geführt , also nicht für Ausgabe geeignet . Laut Bedienungsanleitung sind das .. Pin7,Pin6,Pin5 des Port B (Mosi,Miso,SCK) ! Es gibt auch 2 Steckplätze für 40 Polige Device einmal Digital und einmal Analog - das betrifft dann den Port A. Die LED und die Taster sind an Port B und Port D angeschlossen können aber über entsprechende Jumper deaktiviert werden. Also erstmal Jumper für LED oder Taster ziehen wo dein DS drann ist ! Darauf achten das er nicht an einem Pin hängt der über R's geführt wird , beim Port B. Vielleicht hilft es ja :-)
Ja bei B, und D sind es 2 weiße kurze dicke Kabel, die 2cm weiter zusammengesteckt sind, diese habe ich schon entfernt.
Peter K. schrieb: > Aber die Schaltung sieht 100% so aus, DQ ist ganz sicher nicht Pin 3 :-) > außerdem kann man ja bei Parasite > mode nicht viel falsch machen, wenn man vom DS1820, die 2 äußeren Pins > auf Masse legt und zwischen 5V und DQ einen 4,7k wiederstand hängt. Ach ja. Hast du den Abschnitt im Datenblatt gelesen? Der Hersteller empfiehlt selbst, dass bei einer Temperaturkonversion mit einem MOSFET zusätzlicher Strom auf die DQ Leitung gebracht wird. Für mich war das Grund genug, es erst mal konventionell ohne irgendwelchen Schnickschnack zu probieren: Eine Schaltung braucht Masse, eine Stromversorgung und dann flutschen irgendwo noch Daten rein/raus. Ehe ich irgendwelche Spezialmodi benutze sehe ich immer erst mal zu, dass der einfachst mögliche Fall geht. Und der ist nun mal: der DS1820 kriegt seine eigene Versorgung spendiert.
Bei DQ meine ich (2) Ja die Stromversorung bekommt ja der DS1820 über die DQ-Leitung wenn man ihn parasite mode geschalten hat.
Vorschlag: nimm morgen mal den µC aus dem Sockel. Klemm den DS ab und miss mit dem Ohmmeter die DQ Leitung gegen Vcc. Du müsstest die 4k7 sehen. Wenn da vom STK noch ein Widerstand dabei ist, müsste sich der bemerkbar machen. Auch mal von der DQ Leitung zum Sockel messen ob vielleicht ein Serienwiderstand drinnen ist.
Habe gerade alles mit dem Ohmmeter durchgemessen, zwischen DQ und V++ 4,7k und wenn die DQ leitung auf einem Port ist auch 4,7k.
> und wenn die DQ leitung auf einem Port ist auch 4,7k.
Das sollten 0 Ohm sein (Zwischen dem Ende der DQ Leitung und dem
Sockelpin, auf dem die DQ Leitung am Prozessor rauskommt)
Ja genau, ist bei mir auch so! -> So habe ich die Bauteile beschalten (siehe Anhang)
Wayne hat das geschrieben: Es gibt auch 2 Steckplätze für 40 Polige Device einmal Digital und einmal Analog - das betrifft dann den Port A. -------------------------------------------------- Gesteckt ist der µC auf Digital
Peter K. schrieb:
> Ja genau, ist bei mir auch so!
Versuch noch mal, den DS nicht parasitär zu versorgen.
Also seinen Vcc auf +5V
Wenns dann immer noch nicht geht:
Dann ist wohl der DS hinüber
Habe mir jetzt einen neuen DS1820 gekauft, den müsste ich morgen bekommen. Ich hoffe, dass es dann funktioniert, weil sonst muss der Fehler wo anders liegen, der dann leider immer noch nicht entdeckt wurde...
Es funktioniert endlich mit dem neuen DS :) Eine Frage habe ich noch, der Sensor fängt bei 35C an und rechnet in 0,5 Schritten herunter. Ist das normal oder wird die Temp. sofort angezeigt? Und weiters, kann man die 0,5 Schritte verkürzen?
>Kann mir keiner helfen bzw. die Fragen beantworten?
Stell die Frage erstmal richtig.
Probleme im "parasite power mode"?
Oder hast du VDD an 5V?
VDD ist an Plus, hab den neuen Sensor gleich so verwendet. Wollte fragen, ob es normal ist, dass der Sensor im Terminal mehrmals auf die richtige Temperatur misst, oder ob er den korrekten Wert sofort anzeigt
Meiner macht das nicht. Die erste Ausgabe nach dem Einschalten zeigt bei meinem gleich den richtigen Wert an. OK. Meist geht sie noch um ein halbes Grad rauf. Wird wohl die Eigenerwärmung sein.
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.