PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : DS18S20 läuft nicht... ?



Ratman2000
10.08.2008, 00:02
Hallo,

ich hab mir jetzt entlich mal einen AtMega32 + 20 x 4 LCD aufgebaut und rennt soweit auch wirklich prima...

Gestern hab ich mir dann zum Basteln mal einen DS 1820 ( DS18S20? )

bei Conrad geholt und dachte mir, dass es ja ganz einfach sei, den zu benutzen...

Kurzer Blick ins Datenblatt... Gesehen das es Bottom View ist und demnach verkabelt...

GND an GND, Daten Leitung (mittlerer Pin) an Port C 0 (nein ich brauche I2C nicht :P) und +5v an den letzten Pin... Nun noch einen 4K7 Wiederstand zwischen +5v und der Daten Leitung und nu kann es losgehen.... Dachte ich^^

Im Bascom hab ich denke ich alles eingetragen was nötig ist (hoffe ich)
allerdings meldet mir 1wire immer, dass ich keinen Sensor angeschlossen habe... Ich hoffe ihr könnt mir helfen und mich auf den richtigen Weg schubsen ;)

Ahso, ich verwende ein 16 Mhz Quarz falls das von Bedeutung sein sollte (funzt und Fuse Bit ist gesetzt)

Hier noch mein Test Code:


$regfile = "m32def.dat"
$crystal = 16000000

Enable Interrupts

Config Lcdbus = 4
Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , Db7 = Portd.3 , E = Portd.5 , Rs = Portd.4

Config Lcd = 20 * 4

Config 1wire = Portc.0

Dim Anzal_tempsensoren As Byte

Wait 1

Initlcd

Cursor Off Noblink

Locate 1 , 1
Lcd "* Temparatur *"

Anzal_tempsensoren = 1wirecount()

Locate 2 , 1
Lcd "* Sensoren: " ; Anzal_tempsensoren ; " *"

End

Hab ich da evtl was vergessen oder falsch gemacht?

Vielen Dank für eure Hilfestellungen!!!

MFG

Ratman2000

Ratman2000
10.08.2008, 18:04
Hallo,

hat keiner eine Idee?

Ich verzweifel hie :P

MFG

Ratman2000

for_ro
10.08.2008, 21:27
Hi,
probier doch mal
Dim Anzahl_tempsensoren As Word

So steht es jedenfalls in der Doku mit dem Hinweis, es muss Word oder Integer sein.

Gruß

Rolf

Ratman2000
11.08.2008, 00:22
Hallo,

ich habe mal aus byte = integer gemacht, aber der Wert bleibt leider trotzdem bei 0.

Hat vieleicht sonst noch jemand eine Idee?? Muss ich für 1wire evtl vorher noch irgent etwas einstellen / einrichten?

Ich hab Bascom nur installiert und nichts eingestellt ausser meinen Source Code... (Und das Quarz Fuse Bit)

MFG

Ratman2000

for_ro
11.08.2008, 07:27
JTAG disabled? Liegt auch auf PortC.
Oder probier mal anderen Pin.

Gruß

Rolf

Ratman2000
12.08.2008, 00:46
Hallo,

JTAG hab ich per Fuse Bit disabled... Ich habs an Port A 0 auch schon probiert...

Habe dann den Port C gewählt, weil ich daran meine ersten experimente gemacht hatte wie z.b. ne LED zum blinken zu bringen usw... Das übliche halt :P

Das hat alles wunderbar funktioniert!

Nur der Sensor will nicht... Komischer weise!!!

MFG

Ratman2000

goof1980
12.08.2008, 12:36
hast du schonmal versucht den auszulesen? also temperaturmessung starten, auslesen und anzeigen? vielleicht geht der ja gar nicht? ^^

elektrikser
12.08.2008, 16:07
Hallo,
Ist der DS1820 wirklich richtig angeschlossen?
Wenn die Schrift lesbar ist (vom DS) und die Anschlussbeine nach
unten zeigen, ist das rechte Bein +5V,mittleres Bein Daten und linkes Bein
0V.

MfG Stefan

for_ro
12.08.2008, 19:48
Hallo Ratman2000,
ich habe gerade mal dein Programm (das von ganz oben) auf meine Hardware angepasst (anderer Controller, anderer Anschluss, anderes LCD) und es funktioniert auf Anhieb.
Da muss wohl doch etwas an deiner Hardware nicht stimmen.

Gruß

Rolf

Ratman2000
12.08.2008, 23:45
Hallo,

merkwürdig...

Ein verpolen kann ich ausschliessen...

Ich habe mir eine Stabilisierte 5 v Spannungsversorgung auf die Platine gebastelt und um zu sehen ob alles i.o. ist habe ich eine LED dazu gelötet. Also eine LED die den Betrieb der Schaltung anzeigt.

Für den Sensor habe ich nun mal 3 Sockel Pins aufgelötet und wie folgt gepolt:

Pin 1: +5v
Pin 2: AtMega Port C.0 + 4K7 Wiederstand auf Pin 1
Pin 3: GND

So... Wenn ich nun den Sensoren verpolt aufstecke geht von meiner Spannungsversorgung die LED nicht an weil es ja ein Kurzschluss sein müsste... (Sonsor wird dann auch Heiss) (Hab ich natürlich nur mit einem von beiden getestet)

Wenn ich das auslesen direkt versuche, bekomme ich Err == 1 sobald ich 1wreset ausführe...

Sprich irgent etwas ist da nicht ok.... Nur was???

Wie gesagt, verpolt kann es eigentlich nicht sein... Laut Datenblatt ist auch alles korrekt angeschlossen...

Nur funzen tut es nicht... Muss ich vieleicht irgent etwas speziell Softwaremässig einstellen?

Danke für eure Hilfe!!!

MFG

Ratman2000