Hi
Wie sieht denn deine Schaltung aus?
Kannste nen Bild machen?
Oder wirklich am besten die Schaltung posten!
MfG
Martin
hallo
habe diese soft im netz gefunden. Damit soll man die temp. eines ds1820 auslesen können. Leider funkt das bei mir nicht. Auf dem display kommt nur Temp: und 0.0C. Habe auch mit einem mega8 getestet genau das selbe.
Vieleicht weiss jemand was ich falsch mache und kann mir helfen.
'*******************************************
'* Compiler : Bascom *
'* Hardware : AVR-Ctrl *
'* Temp.Sens : DS1820 *
'* Chip type : MEGA128 *
'* Clock frequency : 16,000000 MHz *
'* http://www.mikrocontroller.com *
'*******************************************
'$include "ac_lcd.inc"
$regfile = "m128def.dat"
$crystal = 16000000
Config 1wire = Portc.0 'use this pin
Dim Ar(2) As Byte , A As Byte , I As Byte , Temperatur As Integer
Dim Halb As Byte
Cls
Lcd "Temp:"
Do
Waitms 300
1wreset 'reset the device
1wwrite &HCC 'read ROM command
1wwrite &H44
Waitms 200 'read ROM command
1wreset 'reset the device
1wwrite &HCC 'read ROM command
1wwrite &HBE 'read ROM command
For I = 1 To 2
Ar(i) = 1wread() 'place into array
Next
Locate 2 , 1
Temperatur = Ar(1)
If Ar(2) > 0 Then Temperatur = 0 Else Shift Temperatur , Right
Lcd Temperatur ; ".";
Halb = Ar(1) And 1
If Halb = 1 Then Lcd "5" Else Lcd "0"
Lcd " C"
Loop
End
Mfg. team
Hi
Wie sieht denn deine Schaltung aus?
Kannste nen Bild machen?
Oder wirklich am besten die Schaltung posten!
MfG
Martin
Das Prog ist für den MEGA128 gemacht. Wenn du das auf einem anderen Controller testen willst, musst du die regfile ändern.$regfile = "m128def.dat"
EDIT:
Ich denke, du musst in der "ac_lcd.inc"-Datei auch die Taktfrequenz entsprechend anpassen.
"Der Mensch wächst am Widerstand" (Werner Kieser)
So, ich hab mir grad mal das Datenblaat runtergeladen und mir ist folgendes aufgefallen:
Waitms 300
1wreset 'reset the device
1wwrite &HCC 'read ROM command <- FALSCHER BEFEHL!
1wwrite &H44
Waitms 200 'read ROM command
1wreset 'reset the device
1wwrite &HCC 'read ROM command <- FALSCHER BEFEHL!
1wwrite &HBE 'read ROM command
Versuchs mal mit 1wwrite &H33. Ich weiß nicht, obs funktioniert, aber einen Versuch wärs wert.
"Der Mensch wächst am Widerstand" (Werner Kieser)
hallo
danke für die antworten fehler gefunden. Es gehört ein wiederstand vom ausgang des ds1820 auf plus.
Mfg. theam
hallo
wieder einmal. Da es nun doch noch sommer geworden ist und ich im urlaub zuhause bin und natürlich viiiiel zeit habe, möchte ich mich wieder mit Atmel und Bascom beschäftigen.
Da ich es ja entlich geschaft habe mit ds1820 die temp. auf einem lcd displ. anzuzeigen währe die nächste aufgabe wie gehts mit mehreren Sensoren und was mir noch wichtiger ist wie kann ich negative temperaturen anzeigen. Habe ja schon das datenblatt angeschaut aber zu einen erfolg bin ich noch nicht gekommen.
Währe schön wenn mir wer helfen könnte.
Mfg. team
Hallo,
Das steht eigentlich beides im Datenblatt........
1. Wenn du mehrere Sensoren hast hängst du sie alle an den einen Pin des µc. Dann musst du noch ins Prog schreiben:
2. Wenn du wissen willst, ob deine Temperatur Negativ ist, musst du erst 8 Bit lesen. Wenn diese 8 Bits alle 1 oder alle 0 sind weisst du erstmal, dass es sich bei den Bits nicht um Zahlen, sondern ums Vorzeichen handelt. Beispiel: 11111111 = neg. Temp.; 00000000 = pos. Temp.Code:maxsensors = 1wirecount() Ar(1) = 1wsearchfirst() For i = 2 to maxsensors Ar(i) = 1wsearchnext() Next i
Ich hoffe das hilft dir!
Martin
Hi Erstmal,
ich hab das mit der Temperaturmessung mit DS1820 hinbekommen, wie normal angegeben 0,5°C Genauigkeit.
Nun hab ich im Netz verschiedentlich gelesen, das der auch 0,1°C kann!
Nur wie das steht natürlich nie dabei. Hat da jemand evtl. nen tip für mich?
Linus Torvalds, Entwickler von LinuxIch will Microsoft wirklich nicht zerstören. Das wird nur ein gänzlich unbeabsichtigter Nebeneffekt sein.
Hallo zusammen!
Auch ich habe den Mega8 mit dem DS18S20 zum Laufen gebracht. Jetzt möchte die Temperaturanzeige nur "so nebenbei" haben.
Wichtiger sind andere Programmfunktionen, die schnell abgearbeitet werden sollen. Wenn ich den DS18S20 per Interrupt auf einen Timer lege, hält das Hauptprogramm ja solange an, wie die Interruptroutine (also das Auslesen des Sensors) läuft. Und das sind ja schon aufgrund der beiden Wartezeiten insgesamt 500mS!
Baue ich die Sensorabfrage in das Hauptprogramm ein, warte ich ja auch mind. 500ms. Wie kann ich den DS18S20 "unabhängiger" auslesen, sodaß mein Hauptprogramm nicht gestört wird? (Da war doch mal was mit Freilauftimern, oder???)
Übrigens reicht es völlig, wenn die Temperaturanzeige alle 1-2 Sekunden aktualisiert wird.
Hat jemand eine Idee für BASCOM?
Vielen Dank!
Lesezeichen