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
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.
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.
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.
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
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?
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
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.
Vielleicht i2c-tiny-usb? http://www.harbaum.org/till/i2c_tiny_usb/ Funktioniert unter Linux prima. Sollen auch Treiber für Windows dabei sein.
Ist bei dem I2C-Tiny-USB auch ein anderen Temp-Sensor als der DS1621 möglich? Den gibts bei Reichelt leider nicht.
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.
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.