Hallo Douser,
habe das Programm mal auf einem Pollinboard ausprobiert.
Geändert nur die LCD_Ansteuerung und den Takt auf 16Mhz.
Klappt prima mit meinem DS1820.
fg vistauser
Hallo Leute,
Hab schon in ganzen Forum geschaut aber leider hat bis jetzt noch keiner so was geschrieben!
Habe an einem ATmega8-16 einen DS18B20 1-Wire Temperatursensor angeschloss, leider bekomme ich aber nicht den richtigen Wert von dem Sensor. Wenn ich den Sensor länger in der Hand halte zeit er mehr als 100 Grad an. Kann es sein, dass sich der Sensor selber aufheitzt, denn heute früh wurde die Reumtemperatur angezeit und nach ein paar Secunden ist sie wieder auf mehr als das doppelte angestiegen.
Den verwendeten Code habe ich aus der Elektor Zeitschrift:
Ich Verwende ein externes Crystal und die Fusebits hab ich auch richtig eingestellt!Code:$regfile = "m8def.dat" $baud = 19200 $hwstack = 32 $swstack = 32 $framesize = 32 $crystal = 8000000 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 Config Lcd = 16 * 2 Cls 'Config Portd.5 = Output 'LED 1 'Portd.5 = 1 'Led1 Alias Portd.5 'Config Portd.6 = Output 'LED 2 'Portd.6 = 1 'Led2 Alias Portd.6 'Config Portd.7 = Output 'LED 3 'Portd.7 = 1 'Led3 Alias Portd.7 'Config Portd.2 = Output 'Motor1, Pin 1 und 2 am Motorboard 'Portd.2 = 0 'Config Pinb.0 = Input 'Taster 1 'Portb.0 = 1 'Taster1 Alias Pinb.0 'Config Pinb.1 = Input 'Taster 2 'Portb.1 = 1 'Taster2 Alias Pinb.1 'Config Pinb.2 = Input 'Taster 3 'Portb.2 = 1 'Taster3 Alias Pinb.2 Config 1wire = Portd.2 Dim Rom(8) As Byte Dim Temp1 As Single Dim Temp2 As Single Dim Tempdif As Single Dim Id1(8) As Byte Dim Id2(8) As Byte Dim I As Integer Id1(1) = 1wsearchfirst() Id2(1) = 1wsearchnext() I = 1wirecount() Lcd I For I = 1 To 8 Locate 1 , 1 Lcd Hex(id1(i)); Next For I = 1 To 8 Locate 2 , 1 Lcd Hex(id2(i)); Next Wait 1 Do 1wreset 1wwrite &HCC 1wwrite &H44 Ddrd.2 = 1 Waitms 800 Ddrd.2 = 0 1wreset 1wwrite &H55 For I = 1 To 8 1wwrite Id1(i) Next I 1wwrite &HBE Rom(1) = 1wread(1) Temp1 = Rom(1) / 2 Locate 1 , 4 Lcd "T1: " ; Temp1 1wreset 1wwrite &H55 For I = 1 To 8 1wwrite Id2(i) Next I 1wwrite &HBE Rom(1) = 1wread(1) Temp2 = Rom(1) / 2 Locate 2 , 4 Lcd "T2: " ; Temp2 Loop End
Hat von euch jemand eine Idee woran das liegen kann?
Gruss Douser
Hallo Douser,
habe das Programm mal auf einem Pollinboard ausprobiert.
Geändert nur die LCD_Ansteuerung und den Takt auf 16Mhz.
Klappt prima mit meinem DS1820.
fg vistauser
Dann gibts ja nur noch zwei möglichkeiten, Taktung oder der Sensor!
In der Elektor werden die DS18S20 verwendet, hab schon ins Datenblatt gesehen aber da steht auch nicht wirklich was drinnen.
Welchen Port hast du verwendet?
Gruß Douser
Dann gibts ja nur noch zwei möglichkeiten, Taktung oder der Sensor!
In der Elektor werden die DS18S20 verwendet, hab schon ins Datenblatt gesehen aber da steht auch nicht wirklich was drinnen.
Welchen Port hast du verwendet?
Gruß Douser
Hallo Douser,
ich habe Port D2 für den DS1820 verwendet.
Hast du vom Datenpin auch einen Pullup-Widerstand gegen +5V
verwendet (hier habe ich 3,9K genommen da nur einer dran ist)?
Zerstört habe ich bisher noch keinen dieser Sensoren. Die sind äußerst robust.
Viel Erfolg
vistauser
Ich habe einen 4,65k Widerstand drann, im Datenblatt heist es ja, dass man 4,7k verwenden soll.
(den hab ich leider nicht, 1,5k + 1,5k + 1k + 680 = 4,65k dank Abweichung) in den nächsten Tagen soll der 4k7 kommen dann versuch ich es mit dem noch mal
Hallo zusammen,
ich habe das gleiche Problem.
Wenn ich das richtig versanden habe ist der 4,7KOhm Widerstand zwingend notwendig?
Gruß
SteKoLos
www.ldap2doc.de -geniale MS Wordvorlagen Schnittstelle zum MS Active Directory-
Ja, den Widerstand braucht man sonst geht nichts. Baue mal ne CRC-Prüfung mit in dein Programm ein um Übertragungsstörungen auszuschliesen.
Signatur??? kann ich mir nicht leisten!!!
Hallo
Nicht vergessen das D18S20 nicht gleich DS1820 ist. Die S variante hat 12 bit und das andere 9 bit Auflölung, siehe Datenblatt
Gruss
Sato
Wo hast du denn diese Info her?Zitat von sato
Laut Maxim:
Specification Differences: The primary specification difference between the two parts is the temperature conversion time: DS1820 = 500ms (max) and DS18S20 = 750ms (max).
Du meinst sicherlich den Unterschied zum DS18B20, den man im 12bit Modus betreiben kann. 12bit Auflösung kann man beim DS1820 und DS18S20 nur über die Zusatzregister COUNT_REMAIN und COUNT_PER_°C bekommen.
Lesezeichen