Hallo, ich krieg hier ne Krise. Ich versuche einen Temperatursensor (DS18b20) auszulesen. Ich krieg aber nur Müll angezeigt. (150°C zuviel) Ich habe die Routine einfach aus meinem Programm vom Mega8 kopiert. Da hats funktioniert. Nun bin ich auf die Idee gekommen, dass die Fusebits eventuell nicht stimmen und somit auch das Timing nicht. Im Datenblatt werde ich leider nicht schlau. Eingestellt ist im Moment 1111. Ich habe zwei Quarze dran. Einmal einen Uhrenquarz und dann einen 14,7456Mhz Quarz. Ist die Einstellung dann richtig??? Gruß Klaus
Vielleicht sollte ich auch noch Fragen, was es noch für Möglichkeiten gibt, dass 150°C zuviel angezeigt werden??? Kann man den Quarz irgendwie kontrollieren???
Ja, na klar der Code: Config 1wire = Porta.0 Dim Sc(9) As Byte Dim T As Integer Dim T1 As Integer Dim T6 As Single Dim T4 As String * 10 Dim Temp As Byte Do Wait 1 1wreset 1wwrite &HCC 1wwrite &H44 Waitms 300 1wreset 'reset 1wwrite &HCC 'read ROM command 1wwrite &HBE 'read ROM command Sc(1) = 1wread(9) If Sc(9) = Crc8(sc(1) , 8) Then Temp = Sc(1) And 1 If Temp = 1 Then Decr Sc(1) T = Makeint(sc(1) , Sc(2)) T = T * 50 T = T - 25 T1 = Sc(8) - Sc(7) T1 = T1 * 100 T1 = T1 / Sc(8) T = T + T1 T = T / 10 T6 = T / 10 T4 = Fusing(t6 , "#.#")
Ja, in Bascom. Aber wie gesagt, beim Mega 8 funktioniert es ja auch. Ich vermute ein anderes Problem. Nur welches!
Hast du evtl. das gleiche Problem wie hier: http://www.roboternetz.de/phpBB2/viewtopic.php?t=29401 Ist auch ein DS18B20 mit 150° zuviel.
Vergrößer mal die Wartezeit "waitms...", der Sensor brauch >750ms für eine Messung bei voller Auflösung - und du hast ja scheinbar (Ich weigere mich, mich mit Basic zu befassen und werde deshalb nicht nachschauen, was die 1wire Funktionen machen, wäre also ein Tipp für dich ;) ) den Sensor nicht anders Konfiguriert.
@Joerg: Vorsicht, von Basic bekommt man Ausschlag. @Klaus: Du benutzt hier offensichtlich Code, der für den DS1820 bzw. DS18S20 gedacht ist. Der kann nur 9bit und muss für die 1/16° Auflösung so rechnen. Dein DS18B20 gibt dir das Ergebnis direkt in 12-bit aus, du musst nur noch durch 16 dividieren, dann bist du da.
>"Vorsicht, von Basic bekommt man Ausschlag."
@"Gast" von BASIC wahrscheinlich nicht aber offensichtlich vom
BASCOM-Manual, wenn es anders wäre würde ja irgendjemand, der in Bascom
programmiert(bzw. damit anfängt) da mal reinschauen ..
(WARNUNG: dieser Post enthält eine riesen Portion Sarkasmus, Personen
die damit nicht umgehen können, sollten besser garnicht antworten ;-) )
Das Manual ist bei manchen Befehlen nicht gerade aussagekräftig. Man kann dann nur versuchen, aus Code von anderen Nutzern Schlüsse zu ziehen. Richtig gut hingegen ist das Microcontroller Lehrbuch von Roland Walter. Das ist eine lohnende Investition. (Dieser Beitrag enthält keinen Sarkasmus) ;-) MfG Paul
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.