[Megoldva] DS18S20 hőszenzor használata

Fórumok

Sziasztok,

a leírás szerint el lett készítve a soros dugóba ágyazott parazita tápellátással bíró szenzor.
Windows alatt megy, linux alatt 5 különböző gépben sem sikerült szóra bírni (hasonló verzióval és paraméterekkel).
(régi, újabb, alaplapi, serial2usb - soros portokkal mind lett próbálva)

# digitemp -i -s/dev/ttyS0 -c /tmp/digitemp.conf
DigiTemp v3.5.0 Copyright 1996-2007 by Brian C. Lane
GNU Public License v2.0 - http://www.digitemp.com
Turning off all DS2409 Couplers

Searching the 1-Wire LAN

ennyi történik. mi lehet a gondja?

A megoldás a "passive" táplálás elfelejtése volt. állítólag DTR(on) RTS(off) megoldotta volna a problémát - de ehhez kevés voltam. Az aktív tápos meghajtó megépítése után tökéletes minden.

Hozzászólások

Előveszed a tároló oszcilloszkópot, s megnézed, mi történik pontosan.

tr [:lower:] [:upper:] <<<locsemege
LOCSEMEGE

Hobbysták körében? Szerintem munkahelyen megy elsősorban így, de mindegy. Nem mindegy, hogy mi az oprendszer? A hibát meg akarod keresni, megméred, homlokodra csapsz, majd kijavítod a forráskódot. Én így szoktam, de úgy látszik, egyesek szerint rosszul. :-/

tr [:lower:] [:upper:] <<<locsemege
LOCSEMEGE

Válaszodból arra következtetek, hogy félreérted a szituációt.
Ő nem fejleszt és nem ír kódot. Előre gyártott programokat használ amit többek között ehhez a DIY digi hőmérő megoldáshoz használnak.
Windowson OK, linuxon nem. Lehetne a gyártó forráskódjában turkálni, de felesleges, hisz másnak linuxon is megy.

Nem kell elotte beallitani stty-vel a soros port parametereit (baud, paritas, stopbitek, flow control)?

Mellényúltam, nem +1 akart lenni!

Szóval ez a chip úgy emlékszem, nem RS232-n komminikál, így szerintem valamelyik handshake vonalat rángatják a kívánt időzítésnek megfelelően. Tehát gyanítom, semmi köze a baudrate-hez, paritáshoz, stop bitek számához.

tr [:lower:] [:upper:] <<<locsemege
LOCSEMEGE

Jogos, viszont továbbra is úgy gondolom, nem RS232 szerint kommunikál a chip. Igaz, simán lehet, hogy az időzítéseket úgy állítják elő, hogy adott baudrate-tel kiküldenek egy mintát, pl. 0xf0-át, s így állítanak elő egy impulzust. Ebben az esetben viszont valóban fontos a baudrate értéke.

tr [:lower:] [:upper:] <<<locsemege
LOCSEMEGE

Ilyen cuccot en pc-vel eddig meg nem hasznaltam, de (jo regen...) neztem a "gyari" illesztest / mintaprogramokat. Ott pontosan ez ment, ti. a portra az UART-tal megfelelo BYTE-okat kuldozgettek, es azt olvastak vissza. 1-1 BYTE kikuldese/visszaolvasasa adta az 1Wire busz 1-1 bitjet. Ugyes, de eleg meredek hack... :) (De a rosszul emlekezes / tevedes jogat fenntartom, fixme!)

Szerk: Megnezve az elozo linket, nem csak a DTR meg az RxD kell, hanem termeszetesen a TxD is. Bar eleg kusza az az abra, szo se rola.

Van valami különleges okod arra, hogy a 3.5.0-s változatot használod, holott a project honlapján 3.6.0-s az utolsó? README-t olvastál? Különben izgalmas, amikor a 2.2-es kernelről, mint újról beszélnek. Meg látom, vannak Fedora 9-re fordított binárisok. Az se ma volt...

tr [:lower:] [:upper:] <<<locsemege
LOCSEMEGE

hello
a digitemp.conf -ot legyartja?

Különben egy kicsit gányolásnak érzem a módszert. Egy mikrokontrollerrel kellett volna illeszteni a hőmérőket, s a kontrollerrel kellene kommunikálnia a PC-nek pl. soros porton vagy USB-n.

tr [:lower:] [:upper:] <<<locsemege
LOCSEMEGE

-1

Nekem kb. 7 éve ilyennel megy a fűtésvezérlésem gond nélkül. A demo program átszabásával készült vezérlőprogram azóta percenként olvas le négy DS18S20-ast.

Kiegészítés: Az RS232 <-> 1-wire illesztést egy DS9077U végzi, olcsóbb és lényegesen egyszerűbb, mint egy arduino, vagy más mikrokontroller.

Üdv !

Több mit 1 éve használom CentOS alatt. Semmi hiba, mindig megbízható.
Ezen doksi alapján építettem. http://pihost.us/~stacato/digitemp/

[root@doboz CRONTAB]# rpm -qa |grep digi
digitemp-3.6.0-4.el5

Így kérdezem le: (Külső, kazán bejövő, kazán kimenő)

[root@doboz CRONTAB]# digitemp_DS9097 -i -a -s /dev/ttyS0
DigiTemp v3.5.0 Copyright 1996-2007 by Brian C. Lane
GNU Public License v2.0 - http://www.digitemp.com
Turning off all DS2409 Couplers
...
Searching the 1-Wire LAN
10E72F9D01080061 : DS1820/DS18S20/DS1920 Temperature Sensor
28F1C08B0200007B : DS18B20 Temperature Sensor
284B7A8B02000041 : DS18B20 Temperature Sensor
ROM #0 : 10E72F9D01080061
ROM #1 : 28F1C08B0200007B
ROM #2 : 284B7A8B02000041
Wrote .digitemprc
Feb 14 19:58:53 Sensor 0 C: -2.81 F: 26.94
Feb 14 19:58:54 Sensor 1 C: 22.50 F: 72.50
Feb 14 19:58:55 Sensor 2 C: 73.69 F: 164.64

digitemp.conf nincs a gépen. (hátha infó)

Alaplapi soros port.

[root@doboz ~]# cat /proc/version
Linux version 2.6.18-274.17.1.el5.centos.plus (mockbuild@builder10.centos.org) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-51)) #1 SMP Wed Jan 11 10:58:19 EST 2012

De igazából megy ArchLinux-on is (ez van a gépemen).
Többször volt már kernel frissítés és semmi probléma.

Ehhez kapcsolódóan mi lehet az a low-cost megoldás, amivel a $subj.-beli megoldással gyűjthetném a mérési adatokat ?
Nem vagyok egy elektronikai guru (kapcsolási rajz és alkatrészjegyzék alapján ezt azért össze tudom rakni), tehát céleszköz építése nem jön szóba.
Kézenfekvő lenne valami mini pc, CF-el meg linux+digitemp.
Cél nyilván, h minél kisebb legyen az energiafogyasztása legyen illetve mondjuk távolról is rá tudjak nézni (rrd+apache)
Köszönöm előre is.

javaslom x86 alapú embedded gépeket (pl PcEngines WRAP, Alix, Epia etc) ezek jellemzőek 30W alatt/körül fogyasztanak _vinyóval_. így nem kell foglalkoznod cross-compile-al sem.

Ha utóbbi nem zavar, akkor lehet OpenWrt-t futtató valami.Pl Routerboard-ba dugható usb és vagy microSD
Én első körben Via Epia-vinyó párost használok, ha minden megy, akkor Wrap+CF lesz belőle valószínűleg.

Próbáld ki digitemp.conf nélkül! digitemp -i -a -s /dev/ttyS0 vagy próbáld a digitemp_DS9097 -el.
Mi volt az eredeti leírás amit említettél?

Szerintem nézd meg a tty_ioctl() függvényt!

tr [:lower:] [:upper:] <<<locsemege
LOCSEMEGE

Ezt is figyelmedbe ajánlom.

tr [:lower:] [:upper:] <<<locsemege
LOCSEMEGE