Peter_Holzer
15.02.2007, 22:22
Hallo an Alle!
Ich habe vor mit einem DS18S20 und einem PIC16F628A eine Temperaturabhängige Steuerung zu entwickeln. Ich hab mir dazu beim Conrad eine DS18S20 ausgesucht. Das Programm dazu möchte ich in Assembler verfassen. Der DQ Pin wird mit einem 4k7 Widerstand gegen +5V gezogen. Leider ist jetzt die ganze Sache mit dem Temperatur messen aufwändiger als ich sie mir vorgestellt hatte. Aber das ist ja immer so! :-)
I hätte dazu jetzt ein paar Fragen, und zwar:
Erstens:
Ich hab mich heute intensiv mit dem Datenblatt auseinandergesetzt und bin zu folgendem Entschluss gekommen: Als erstes muss der PIC einen 480µs langen Resetimpuls (0V) schicken, danach ist die DQ Leitung wieder auf +5V. Anschließend antwortet der DS18S20 mit einem 60-240µs andauernden Precense Puls (0V). Danach ist die DQ Leitung wieder auf +5V und der DS18S20 ist aktiv. Anschließend muss man den Befehl READ-ROM [33h] zu dem DS18S20 schicken. Jeder Impuls muss min. 60µs andauern. Danach sendet der DS18S20 einen 64-Bit Code in welchem der 8-Bit Family Code, der 48-Bit Seriennummer und die 8 CRC-Bits stecken. Jetzt ist der DS18S20 bereit für Funktion Kommandos.
Jetzt schicke ich den Befehl CONVERT T [44h] zu dem DS18S20. Jeder Impuls muss wieder 60µs anliegen. Anschließend wertet der DS18S20 die Temp. aus und speichert sie im Scratchpad (Byte 0 u. 1). Das kann bis zu 750ms dauern. Anschließend muss der PIC den Befehl READ-SCRATCHPAD [BEh] zum DS18S20 schicken. Jetzt sendet der DS18S20 die Daten Binär, beginnend mit dem LSB bis zum MSB, zum PIC. Jeder Impuls liegt wieder 60µs an und zwischen den Impulsen ist eine Pause von 1µs zur Entprellung. Danach muss man sie auf dem PIC speichern und man hatt die aktuelle Temp. im Byte 0 u. 1 des Scratchpads stehen. Danach kann man sie weiterverarbeiten.
Meine Frage jetzt:
STIMMT DAS SO WIE ICH DAS VERSTANDEN HABE?
Zweitens:
Wie schicke ich mit einem PIC zum Beispiel den CONVERT T [44h] Befehl? Muss ich nur den Binärcode [01000100] zum DS18S20 schicken, wobei jedes Bit wieder 60µs anliegen soll und zwischen den Bits 1µs Pause sein soll? Oder wie genau funktioniert das?
Ich Danke euch schon jetzt für eure Mühe und Hilfe!
MFG Peter Holzer
Ich habe vor mit einem DS18S20 und einem PIC16F628A eine Temperaturabhängige Steuerung zu entwickeln. Ich hab mir dazu beim Conrad eine DS18S20 ausgesucht. Das Programm dazu möchte ich in Assembler verfassen. Der DQ Pin wird mit einem 4k7 Widerstand gegen +5V gezogen. Leider ist jetzt die ganze Sache mit dem Temperatur messen aufwändiger als ich sie mir vorgestellt hatte. Aber das ist ja immer so! :-)
I hätte dazu jetzt ein paar Fragen, und zwar:
Erstens:
Ich hab mich heute intensiv mit dem Datenblatt auseinandergesetzt und bin zu folgendem Entschluss gekommen: Als erstes muss der PIC einen 480µs langen Resetimpuls (0V) schicken, danach ist die DQ Leitung wieder auf +5V. Anschließend antwortet der DS18S20 mit einem 60-240µs andauernden Precense Puls (0V). Danach ist die DQ Leitung wieder auf +5V und der DS18S20 ist aktiv. Anschließend muss man den Befehl READ-ROM [33h] zu dem DS18S20 schicken. Jeder Impuls muss min. 60µs andauern. Danach sendet der DS18S20 einen 64-Bit Code in welchem der 8-Bit Family Code, der 48-Bit Seriennummer und die 8 CRC-Bits stecken. Jetzt ist der DS18S20 bereit für Funktion Kommandos.
Jetzt schicke ich den Befehl CONVERT T [44h] zu dem DS18S20. Jeder Impuls muss wieder 60µs anliegen. Anschließend wertet der DS18S20 die Temp. aus und speichert sie im Scratchpad (Byte 0 u. 1). Das kann bis zu 750ms dauern. Anschließend muss der PIC den Befehl READ-SCRATCHPAD [BEh] zum DS18S20 schicken. Jetzt sendet der DS18S20 die Daten Binär, beginnend mit dem LSB bis zum MSB, zum PIC. Jeder Impuls liegt wieder 60µs an und zwischen den Impulsen ist eine Pause von 1µs zur Entprellung. Danach muss man sie auf dem PIC speichern und man hatt die aktuelle Temp. im Byte 0 u. 1 des Scratchpads stehen. Danach kann man sie weiterverarbeiten.
Meine Frage jetzt:
STIMMT DAS SO WIE ICH DAS VERSTANDEN HABE?
Zweitens:
Wie schicke ich mit einem PIC zum Beispiel den CONVERT T [44h] Befehl? Muss ich nur den Binärcode [01000100] zum DS18S20 schicken, wobei jedes Bit wieder 60µs anliegen soll und zwischen den Bits 1µs Pause sein soll? Oder wie genau funktioniert das?
Ich Danke euch schon jetzt für eure Mühe und Hilfe!
MFG Peter Holzer