www.mikrocontroller.net

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


Important announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Mark H. (dbmaxpayne)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht 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/gene...

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

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

Danke und Gruß Mark

Autor: Christian R. (supachris)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht 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.

Autor: Mark H. (dbmaxpayne)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht 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.

Autor: Christian R. (supachris)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht 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.

Autor: Frank K. (fchk)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht 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

Autor: Εrnst B✶ (ernst)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht 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-sn...

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

Autor: Mark H. (dbmaxpayne)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht 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

Autor: Christian R. (supachris)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht 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.

Autor: ** (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht 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.

Autor: Mark H. (dbmaxpayne)
Datum:

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

Autor: Mark H. (dbmaxpayne)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht 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.

Autor: Christian R. (supachris)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht 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.

Autor: Peter Dannegger (peda)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht 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

Autor: Mark H. (dbmaxpayne)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Hallo Peter,

hast Du dazu mehr Informationen?

Gruß Mark

Autor: Peter Dannegger (peda)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert

Autor: D. K. (lemur)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht 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:
root@erde:~# lsusb
Bus 001 Device 013: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port

...

root@erde:~/scripte# stty -F /dev/ttyUSB0 -a
speed 115200 baud; rows 0; columns 0; line = 0;
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;
flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 hupcl -cstopb cread clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany -imaxbel -iutf8
-opost -olcuc -ocrnl -onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
-isig -icanon -iexten -echo -echoe -echok -echonl -noflsh -xcase -tostop -echoprt -echoctl -echoke

...

root@erde:~/scripte# digitemp_DS9097 -version
digitemp_DS9097: invalid option -- 'e'
DigiTemp v3.5.0 Copyright 1996-2007 by Brian C. Lane
GNU Public License v2.0 - http://www.digitemp.com
Compiled for DS9097

...

root@erde:~/scripte# digitemp_DS9097 -t 0 -q -r1750 -c /etc/digitemp.rc -o %.3C
21.750
root@erde:~/scripte# digitemp_DS9097 -t 1 -q -r1750 -c /etc/digitemp.rc -o %.3C
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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel




Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder GIF-Format hochladen.
Siehe Bildformate
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken erkennst du die Nutzungsbedingungen an.

webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net