Obrázek 5: Díky značnému rozšíření sériového portu existuje mnoho součástek, které sériovou komunikaci podporují. Na tomto schématu je ukázáno jednoduché zapojení teplotního čidla k počítači. Přes pin RxD se čte teplota posílaná ve formě stále opakované sekvence bytů.
To mi prijde jako nesmysl, ten obvod je pokud vim 1-Wire zarizeni a to odesila data v uplne jinem formatu nez je UART (RS-232). Nekoukal jsem do datasheetu, ale podle zapojeni bych si tipnul, ze spodni pin je zem, prostredni 1-Wire, ktery ma "pull-up" pres TxD a zenerky (tim se generuje napajeni) a rovnou je mozne pres TxD delat i pulsy dle 1-Wire specifikace, vse se potom cte pres stavovy pin.
Taky o tom obrázku pořád pochybuju. I přes to co jsem napsal níže...
Nezbývá než ten datasheet pořádně prostudovat. Anebo jestli nám to pan Tišnovský osvětlí...
Tak mám zase trochu času pohledět na obrázek a odpovím si sám.
Asi to funguje tak, že DTR je využit jako "řídící signál", pomocí kterého jsou generovány jednak příkazy pro 1wire zařízení a pak "synchronizační bitové pulsy" potřebné pro čtení vrácených dat směrem do PC. Data se přesouvají do datového registru UART přes RX.
Asi těžko to funguje tak jak je psáno pod obrázkem, že čidlo pořád posílá bajty s hodnotou, úměrnou teplotě, přičemž by se nabízelo je jen jednoduče číst. V PC musí být ovladač nebo něco v uživatelském prostoru, co to aktivně řídí.
Datasheet toho čidla jsem prolétl jen zběžně, ale dostat y toho data o teplotě asi není tak triviální jak sugeruje popiska pod obrázkem. Anebo tam je nějaký trik, který mně uniká.
Souhlasim s touto poznamkou. Pouzite cidlo pouziva opravdu 1-wire a piny serioveho portu jsou pouze pouzity jeko bezne I/O + jako napajeni . To take vylucuje opakovane posilani dat ze senzoru (master-slave sbernice). Cidlo pouze reaguje na prikazy z master zarizeni na sbernici v tomto pripade PC. Take jsem se v celku zdesil pohledem na zapojeni. Pripoustim ze seriovy port je vcelku blbuvzdorny. Jeho vstupy/vystupy jsou chraneny rezistory a je odolny vuci zkratu na vedeni, nicmene natvrdo zapojit diodu a "vyzkratovat" piny (urovne +12V= logicka nula, -12V logicka jednicka) je prinejmensim nerozvazne (no rekneme si to na rovinu je to cunarna) a nadherna ukazka toho jak by se veci nemely delat.
Pripojit zenerovu diodu primo na piny je OK.
Maximalni proud pres RS232 rozhrani je omezen a dokonce musi byt omezen primo dle specifikace.
Horsi je to obracene. Rozmezi -3V az 3V je zakazane pasmo pro RS232. Ale vetsina implementaci serioveho portu to neresi a rozhodovaci uroven byva nekde kolem 2-3V
Toho vyuziva toto zarizeni a proto jsou s tim nekde problemy.
Presne toto zapojeni nekde funguje jinde ne, prave proto ze vyuziva typicke nikoli zarucene parametry (osobne vyzkouseno http://teplomer.kaznejov.cz )
A mimochodem teplotni cidlo nic samo o sobe neposila, je to ciste master/slave komunikace.
To ze neco funguje byt sporadicky jeste automaticky neznamena, ze je to dobre udelane. Pripojit piny primo na zenerovu diodu dobre neni pokud to same uvidi nejaky bastlir a v dobre vire to udela na paralelnim portu, tak o nej prijde. Proto jsem presvedcen ze toto by se v takovem clanku ukazovat nemelo(pripadne to patricne okomentovat slovy na jinem portu tohle nezkousejte). To vede i k tomu, ze se muze ovjevit na TXD 12V a na DTR -12V.
A jsou tam jiz diody v otevrenem smeru, coz povazuji za vetsi zlo jak tu zenerovu diodu (i kdyz asi to je to jedine co brani zniceni cidla v takovem pripade). Pokud uz ma nekdo potrebu pripojit jedno teplotni cidlo k PC volil bych gameport a jeden termistor.