Forum: Mikrocontroller und Digitale Elektronik DS18S20 über RS232->USB-Adapter


von Mark H. (dbmaxpayne)


Lesenswert?

Hi,

ich bin durch Zufall über den DS18S20 gestolpert und möchte diesen jetzt 
in meinem CarPC zur Messung der Außentemperatur verwenden.
Meine originale Anzeige hierfür ist einem 6.5" TFT gewichen^^
Ich verwende zwar auch CAN, aber ohne Informationen über die richtigen 
PIDs finde ich das eh nicht heraus.

Da ich am CarPC nun keine serielle Schnittstelle zur Verfügung habe,
stellt sich mir die Frage, ob das ganze nach folgender Schaltung:

http://lena.franken.de/hardware/temperaturmessung.html

auch über einen RS232->USB Adapter machbar ist.

Diese Adapter stellen ja dann einen virtuellen ComPort zur Verfügung, 
den man mit DigiTemp auslesen könnte oder?

Hier steht jedoch etwas von Problemen an der Schaltung von Lena Franken
inkl. Lösungsansatz.

http://public.rz.fh-wolfenbuettel.de/~hamannm/general/digitempd.html

Allerdings werden hierfür ja 12V Pegelspannung benötigt.

Wieviel Volt liefern denn solche RS232->USB Adapter? 5V oder 12V?

Danke und Gruß Mark

von Christian R. (supachris)


Lesenswert?

Da das 1-Wire Protokoll sehr zeitkritisch ist, kann man das nicht 
einfach durch einen USB-Serial-Wandler emulieren. Denn die Dinger haben 
ewige Latenzzeiten und sind ausschließlich für richtige Datenübertragung 
geeignet. Es gibt unzählige andere Möglichkeiten zum Beispiel ein LM75 
mit einem IOWarrior24 als USB-I2C Interface oder eben so ein 1-Wire 
Sensor mit einem echten USB-1-Wire Interface von Maxim/Dallas.

von Mark H. (dbmaxpayne)


Lesenswert?

Hi und danke für Deine Antwort.
Der IOWarrior ist mir dann aber doch zu teuer.

Spielen die Latenzzeiten denn eine Rolle?
Selbst wenn das Auslesen mehrere Sekunden dauert wäre mir das egal.

Falls das mit einem RS232->USB Wandler gehen sollte würde das ganze ja 
auch nur knapp 10€ kosten.

von Christian R. (supachris)


Lesenswert?

Beim 1-Wire Protokoll ist die Zeit entscheidend, du musst innerhalb 
einiger µs die Daten vom Chip lesen. Gänzlich ungeeignet für 
USB-Wandler. Diese USB Wandler arbeiten im ms-Bereich, gerne auch mal 
einige 100ms zwischen den Befehlen. Was etwas billiger geht ist ein FTDI 
USB-Serial-Wandler, und dann ein SPI oder I2C Temp-Chip dran. Aber ohne 
Programmierkenntnisse wird das auch nix. Und für unter 10€ wirds 
schwierig per USB.

von Frank K. (fchk)


Lesenswert?

Mark H. schrieb:

> ich bin durch Zufall über den DS18S20 gestolpert und möchte diesen jetzt
> in meinem CarPC zur Messung der Außentemperatur verwenden.

> Da ich am CarPC nun keine serielle Schnittstelle zur Verfügung habe,
> stellt sich mir die Frage, ob das ganze nach folgender Schaltung:
>
> http://lena.franken.de/hardware/temperaturmessung.html
>
> auch über einen RS232->USB Adapter machbar ist.

Nein. Das Timing ist µ-Sekunden genau einzuhalten, und das geht so 
nicht. Du kannst einen PIC18F2550 nehmen, darauf den den Microchip 
USB-Stack laufen lassen und innerhalb des Prozessors das 1-wire 
Protokoll implementieren. Das wird funktionieren, aber dafür brauchst Du 
Programmiererfahrung.

fchk

von Εrnst B. (ernst)


Lesenswert?

Frank K. schrieb:
> Du kannst einen PIC18F2550 nehmen, darauf den den Microchip
> USB-Stack laufen lassen und innerhalb des Prozessors das 1-wire
> Protokoll implementieren. Das wird funktionieren, aber dafür brauchst Du
> Programmiererfahrung.

Oder er nimmt einfach das Elektor-Projekt (Pic18F2550 + DS18B20)

http://www.elektor.de/jahrgang/2008/juni/thermo-snake.497315.lynkx

Aber: Gibts da die Firmware einzeln, oder muss man da einen 
vorprogrammierten PIC für günstige €16.50 kaufen?

von Mark H. (dbmaxpayne)


Lesenswert?

Hi,

Programmierkenntnisse im µC-Bereich habe ich leider nicht.

Das Elektor Projekt habe ich eben auch gefunden.
Das hört sich ja ganz gut an und ist für unter 10€ zu realisieren.

Die Firmware und den Bauplan kann man dort herunterladen.

Allerdings müsste ich dann noch selbst eine passende Anwendung 
schreiben, oder die beigefügte Anwendungs benutzen.
Die gefällt mir aber nicht wirklich und dazu liegt auch kein SourceCode 
vor.
Fragt sich nur wie man auf HID-Geräte zugreift... xD

Gruß Mark

von Christian R. (supachris)


Lesenswert?

Mark H. schrieb:
> Fragt sich nur wie man auf HID-Geräte zugreift...

Das ist noch die einfachste aller USB Klassen, denn Windows stellt dafür 
Treiber und Funktionen in der Windows API bereit. Ist sehr gut 
dokumentiert und recht einfach. Programmieren muss man trotzdem können.

von ** (Gast)


Lesenswert?

Vielleicht i2c-tiny-usb?
http://www.harbaum.org/till/i2c_tiny_usb/

Funktioniert unter Linux prima. Sollen auch Treiber für Windows dabei 
sein.

von Mark H. (dbmaxpayne)


Lesenswert?

Ist bei dem I2C-Tiny-USB auch ein anderen Temp-Sensor als der DS1621 
möglich?
Den gibts bei Reichelt leider nicht.

von Mark H. (dbmaxpayne)


Lesenswert?

Irgendwie ist mir aber der DS18S20 als Single-Wire System doch lieber.

Da könne ich auch direkt eine Innenraumtemperatur realisieren.

Ich glaube ich werde mal das Elektor-Projekt angehen.
Mal schauen ob ich das HID-Auslesen geproggt bekomme.

von Christian R. (supachris)


Lesenswert?

Könntest natürlich auch die Maxim 1-Wire Bridges nehmen:
DS2480B für RS232 auf 1-Wire: 
http://www.maxim-ic.com/datasheet/index.mvp/id/2923
oder
DS9490 (Chip) für USB auf 1-Wire: 
http://www.maxim-ic.com/datasheet/index.mvp/id/3834

Der USB Chip ist über das OneWireSDK anzusprechen, geht recht einfach. 
Der RS232 Chip sollte auch an USB-RS232 Wandlern laufen, weil er die 
zeitkritischen Sachen im Chip macht.

Übrigens brauchst du bei 1-Wire trotzdem 2 Leitungen, nämlich Signal und 
Masse.

von Peter D. (peda)


Lesenswert?

Christian R. schrieb:
> Da das 1-Wire Protokoll sehr zeitkritisch ist, kann man das nicht
> einfach durch einen USB-Serial-Wandler emulieren.

Nö, das geht schon, im Web gibts einige Beispiele.
Man muß einfach nur immer die Baudrate entsprechend setzen, ob man ein 
Reset oder ein Bit senden will.


Peter

von Mark H. (dbmaxpayne)


Lesenswert?

Hallo Peter,

hast Du dazu mehr Informationen?

Gruß Mark

von Peter D. (peda)


Lesenswert?


von D. K. (lemur)


Lesenswert?

Peter Dannegger schrieb:
> Nö, das geht schon, im Web gibts einige Beispiele.


Kann ich nur bestätigen, seit Jahren in dieser Form im Einsatz, 
allerdings auf einem Linux System. Früher auf einer AVM Fritzbox, seit 
ca. 2 Jahren auf einem Debian 2.6.32-5

Die Schaltung ist die von lena.franken.de s.o.
(PC -> USB/RS232 -> Schaltung -> 1-Wire)

Bzgl. der Baudraten ist mir bislang nix aufgefallen, was Probleme 
verursachen könnte, funktionierte bei mir "out-of-the-box", aber falls 
es hilft:
1
root@erde:~# lsusb
2
Bus 001 Device 013: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
3
4
...
5
6
root@erde:~/scripte# stty -F /dev/ttyUSB0 -a
7
speed 115200 baud; rows 0; columns 0; line = 0;
8
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V;
9
flush = ^O; min = 1; time = 0;
10
-parenb -parodd cs8 hupcl -cstopb cread clocal -crtscts
11
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany -imaxbel -iutf8
12
-opost -olcuc -ocrnl -onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
13
-isig -icanon -iexten -echo -echoe -echok -echonl -noflsh -xcase -tostop -echoprt -echoctl -echoke
14
15
...
16
17
root@erde:~/scripte# digitemp_DS9097 -version
18
digitemp_DS9097: invalid option -- 'e'
19
DigiTemp v3.5.0 Copyright 1996-2007 by Brian C. Lane
20
GNU Public License v2.0 - http://www.digitemp.com
21
Compiled for DS9097
22
23
...
24
25
root@erde:~/scripte# digitemp_DS9097 -t 0 -q -r1750 -c /etc/digitemp.rc -o %.3C
26
21.750
27
root@erde:~/scripte# digitemp_DS9097 -t 1 -q -r1750 -c /etc/digitemp.rc -o %.3C
28
5.062

Vielleicht hilft das ja jemandem, auch wenn der Thread schon ein paar 
Tage älter ist.

Grüße
Lemur

PS:
Wenn jemand fertigen Code für einen Tiny hat der den 1-Wire ausliest, 
und diesen auf einer virtuellen Schnittstelle via USB bereit stellt, 
ohne auf dem PC eigenständige Software zu compilieren, möge mir diesen 
bitte zukommen lassen, also quasi (PC -> AVR Tiny -> 1-wire), und 
Abfrage der Werte durch ein Steuerzeichen, o.ä.
Danke

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
Noch kein Account? Hier anmelden.