AD převod u PIC16F877A

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Zpráva
Autor
Honzista

AD převod u PIC16F877A

#1 Příspěvek od Honzista »

Ahoj, nemáte někdo nějaký program (s popisem) s AD převodem pro PICku?? 8O ? Něco jednoduchého, abych pochopil princip. Datasheet (i v CZ)jsem četl už mnohokráte, prosurfoval net, stáhnul spousty programů, ale pořád mi nejsou jasné nějaké principy :o . Dále radu, jak je nejlepší připojit teplotní čidlo k danému portu a jaké??? Původně jsem myslel na KTY81-120, koukal jsem se i na SMT160-30 ale kromě toho, že mění střídu, jsem víc nepochopil :oops: . Děkuji za pomoc
Uživatelský avatar
istrasil
Příspěvky: 71
Registrován: 30 črc 2005, 00:00
Bydliště: Brno
Kontaktovat uživatele:

#2 Příspěvek od istrasil »

> pořád mi nejsou jasné nějaké principy
které? Jednou větou píšeš, že potřebuješ program s popisem, a druhou, že program i všechny dostupné popisy máš:) ... rád ti poradím, ale musím vědět, co přesně...

Dobré teplotní čidlo na připojení k AD převodníku je třeba LM35, SMT160 samozřejmě budeš připojovat na _digitální_ vstup a počítat střídu. Nejradši používám čidla DS18S20 (DS18B20), ty komunikují po OneWire a jsou dost přesná - ale nemám na ně pro PIC knihovnu, jenom pro AVR a i tu jsem si musel upravovat.
Tatanka_x

#3 Příspěvek od Tatanka_x »

Když už se bavíte o teplotních čidlech -> jaký nejdelší kabel(stíněný) se dá na to použít ?
Uživatelský avatar
Modemo
Příspěvky: 90
Registrován: 13 kvě 2007, 00:00
Bydliště: Brno, Pov. Bystrica

#4 Příspěvek od Modemo »

Tatanka_x píše:Když už se bavíte o teplotních čidlech -> jaký nejdelší kabel(stíněný) se dá na to použít ?

Zalezi od protokolu a rozhrania aky pouzivas, pre priklad, ja mam na COM port cez I2C pripojene teplotne cidlo vonku, dlzka kablika asi 5m a netieneny! Su to len 4 lakovane drotiky skrutene :wink: A funguje. Kamarat na to urobil peknu app, co celkom pekne vyzera....
Návštěvník

#5 Příspěvek od Návštěvník »

Prominte začatečnický dotaz, když použiji čidlo LM35 které má 10mV / stupeň , jaké mám použít referenční napětí pro A/D převodník u PIC.
Honzista

Reakce

#6 Příspěvek od Honzista »

Děkuji za reakci, jedná se mi o to, jaké čislo vlastně použít, aby to fungovalo spolehlivě, protže jsou čidla za 20Kč a jsou za 150Kč, dále mi nejsou jasná referenční napětí, ale to se asi vypouští při požití SMT čidla. Datasheet k tomuto čidlu (SMT) jsem také četl několikráte a asi jsem moc dobře nepochopil činost - vlasně si vůbec nedokáži představit obslužný program. (kdy a jak dlouho snímám CLK z čidla). Na stránkách DOVEDA je myslím termostat s použitím tohoto čidla, ale funkci jsem z toho nevyluštil. Pokud bys měl jen třeba tu obslužnou proceduru a náčrtek schema (pokud to teda není jen výstup z čidla přímo na IOport PICu). Děkuji Honza mejl je: blaha_j@volny.cz


istrasil píše:> pořád mi nejsou jasné nějaké principy
které? Jednou větou píšeš, že potřebuješ program s popisem, a druhou, že program i všechny dostupné popisy máš:) ... rád ti poradím, ale musím vědět, co přesně...

Dobré teplotní čidlo na připojení k AD převodníku je třeba LM35, SMT160 samozřejmě budeš připojovat na _digitální_ vstup a počítat střídu. Nejradši používám čidla DS18S20 (DS18B20), ty komunikují po OneWire a jsou dost přesná - ale nemám na ně pro PIC knihovnu, jenom pro AVR a i tu jsem si musel upravovat.
Uživatelský avatar
istrasil
Příspěvky: 71
Registrován: 30 črc 2005, 00:00
Bydliště: Brno
Kontaktovat uživatele:

#7 Příspěvek od istrasil »

No, obsluznou proceduru nemam a ani jsem to SMT cidlo nikdy nemel v ruce, ale:
1) samozrejme ze vystup pripojis natrdo na dig. port PICu
2) na tom portu proste meris stridu. To se da udelat nekolika zpusoby, pokud ti zalezi na rychlosti, musis merit zvlast kazdou periodu - tj. hlidat sestupnou a vzestupnou hranu (idealni bude, kdyz to zapojis na pin, ktery ti muze aktivovat preruseni) a napr. na kazde hrane precist a na vzestupne hrane vynulovat casovac. Podil ulozenych hodnot casovace pri sestupne/pri vzestupne hrane udava stridu. Jestli to nemusi byt rychle ani prilis presne, staci v pravidelnych intervalech vzorkovat, jestli je na vystupu cidla jednicka a kdyz je, do nejake promenne pricist 1. Hodnota promenne/pocet vzorkovani = strida.

Rozdil mezi cidly za 20 Kc a za 150 Kc je v presnosti a v komunikacnim protokolu. Treba ja jsem od prirody liny a protoze se mne nejlip dela s DS18x20 cidlama, tak je kupuju, i kdyz stoji 60 nebo 80 Kc. Ale jsou celkem presny, maji rozliseni skoro na setiny stupne a da se jich navesit spousta na jeden pin procesoru. Je ale jasny, ze treba na spousteni vetraku u chladice nebo podobne nenarocny ukol pouziju termistor za petku.

Ad reference - co mas za referenci je v podstate jedno, musi te zajimat a) stabilita (zase zalezi na tom, jakou presnost pozadujes) a b) merene napeti musi byt mensi nez referencni (pokud je zaporne referencni nula a je to bezny aproximacni prevodnik, jaky byva v MCU; nektere jine prevhodniky berou treba referencni napeti za polovinu rozsahu apod. - nutno vzdy kouknout do datasheetu). Idealni je, kdyz se referencni napeti rovna nejvyssimu napeti, ktere muzes dostat na vstupech, ale ve spouste pripadu naprosto staci, kdyz to upnes na napajeci napeti, kde mas nijak skvele stabilnich a presnych, ale presto relativne slusnych 5 V.

Napis, k cemu to bude! Bez tehle informace holt dal neporadim, nema smysl tady vypisovat neco, co nepouzijes.
Uživatelský avatar
Chenzee
Příspěvky: 464
Registrován: 26 čer 2007, 00:00
Bydliště: Vysočina

Dalé

#8 Příspěvek od Chenzee »

... konečně se mi podařilo se zaregistrovat :lol: , takže sice pod jiným jménem, ale stále jsem to já... 8-)

Měření teploty chci použít pro vytvoření ŘJ na solární systém. Tzn. přesnost měření není nijak kritická, snímání stačí cca po 2 sek. a samozřejmě čidel potřebuji připojit více. Znovu jsem bádal v Datasheetu k SMT čidlu a již jsem dokonce pochopil i ten vzorec :oops: ale nevím, k čemu se tam vztahují ty procenta tj. co je 0 a 100procent :( Zda 0 je 1Khz a 100 jsou 4Khz nebo jak to je??? Já vím, že někdo nyní namítne to známé, proč něco dělat za draho, když se to dá levně koupit. Důvod je jasný - někdo staví roboty, někdo blikátka a já zase regulaci. Prozatím děkuji za ochotu a pomoc.
Uživatelský avatar
istrasil
Příspěvky: 71
Registrován: 30 črc 2005, 00:00
Bydliště: Brno
Kontaktovat uživatele:

Re: Dalé

#9 Příspěvek od istrasil »

Chenzee píše:Zda 0 je 1Khz a 100 jsou 4Khz nebo jak to je???


pytla, ted datasheet se musi nejenom prohlizet, ale i cist:)
Jde o DUTY CYCLE, cesky střídu, tj. pomer doby signalu v log. 1 k celkove dobre periody. Ze ta vystupni frekvence neni stala je v podstate jedno.
Uživatelský avatar
tatous
Příspěvky: 122
Registrován: 06 zář 2004, 00:00
Bydliště: Střední Čechy

#10 Příspěvek od tatous »

pokud uvažuješ o SMT, zkus se podívat na http://www.hamradio.cz/aprs/digined/dig ... /index.htm
Uživatelský avatar
Chenzee
Příspěvky: 464
Registrován: 26 čer 2007, 00:00
Bydliště: Vysočina

Chenzee

#11 Příspěvek od Chenzee »

Moc díky, na těch stránkách je i CZ datasheet k tomu čidlu a hned se to čte lépe :lol: :lol: .


tatous píše:pokud uvažuješ o SMT, zkus se podívat na http://www.hamradio.cz/aprs/digined/dig ... /index.htm
Uživatelský avatar
Chenzee
Příspěvky: 464
Registrován: 26 čer 2007, 00:00
Bydliště: Vysočina

#12 Příspěvek od Chenzee »

istrasil píše:Treba ja jsem od prirody liny a protoze se mne nejlip dela s DS18x20 cidlama, tak je kupuju.


Pročítal jsem datasheet k čidlům DS18x20 (moje AJ je v plenkách :cry: ) a četl jsem o jedinečném 64-bitovém kodu každého čidla (kvůli adresaci na 1WIRE BUS). Bohužel jsem se už nikde nedočetl, kde ten kód zjistím? Třeba jsem jen špatně přeložil nějaké slovní spojení (jako třeba předtím DUTY CYCLE). Myslím, že pokud je jen jedno čidlo na jednom BUSu, tak to není potřeba, ale přesto by mě to zajímalo pro případné další aplikace :D . Mohl bys mi prosím poradit??? Jinak ten datasheet je napsanej velice polopaticky, takže i začátečník, jako jsem já, dokáže funkci součástky vč. časování pěkně pochopit. :lol: :lol:
istrasil.

#13 Příspěvek od istrasil. »

Existuje funkce pro vyhledani vsech zarizeni pripojenych na onewire - SEARCH ROM. Tim si zjistis postupne adresy vsech cidel, nekde si je ulozis do RAM a pak komunikujes pomoci tehle adresy primo s tim cidlem.
Uživatelský avatar
Chenzee
Příspěvky: 464
Registrován: 26 čer 2007, 00:00
Bydliště: Vysočina

#14 Příspěvek od Chenzee »

istrasil. píše:Existuje funkce pro vyhledani vsech zarizeni pripojenych na onewire - SEARCH ROM. Tim si zjistis postupne adresy vsech cidel, nekde si je ulozis do RAM a pak komunikujes pomoci tehle adresy primo s tim cidlem.


Tomu bych rozuměl, ale jak potom poznám, že čidlo s tímto kodem je na vstupu do zařízení, s tímto kódem je na výstupu a s tímto kódem je třeba u čerpadla??? 8O Umístění čidel je přeci důležité pro funkci systému, to je to, co mi na té celé věci není jasné (nejprve jsem si myslel, že třeba při koupi čidla to bude na nějakém letáku, ale při zamyšlení jsem došel k závěru, že je to taky blbost, protože při výměně čidla by se musel udělat zásah do programu :o :idea: ). Ještě jedna ot. V datasheetu píší, že čidlo se připojuje k PINu s otevřeným kolektorem nebo 3stavovému PINu. S ot.kolektorem je ale pouze 1 PIN na PIC16F877A (RA4), je nějaká cesta, jak tyto čidla připojit i na obyč. I/O porty??? Díky :?:
Uživatelský avatar
istrasil
Příspěvky: 71
Registrován: 30 črc 2005, 00:00
Bydliště: Brno
Kontaktovat uživatele:

#15 Příspěvek od istrasil »

Čau,
no, to nepoznáš - musí si to hlídat firmware, třeba si ukládáš do EEPROM čísla čidel původně nalezená Search ROM spolu s jejich funkcí a když najdeš nové, tak se zeptáš uživatele co s ním.
Žádný leták k čidlu nedostaneš, naposledy jsem viděl papírky u germaniových tranzistorů Tesla, kde byly záruční podmínky:))

Tak a teď k tomu pinu s otevřeným kolektorem. Ten jeden pin u PICu, který umí jen otevřený kolektor, je spíš archaismus od prvních typů a je zajímavý pouze tím, že přežije zvnějšku napětí 8,5 V.
Ostatní piny PIC jsou totiž třístavové (vlastně čtyřstavové), umí: úroveň H, úroveň L, vysokou impedanci (vstup) a vstup s pull-up rezistorem. A když ti stačí jenom vysoká impedance a úroveň L, tak vidíš, že můžeš OneWire emulovat na všech pinech jenom s vnějším pull-up rezistorem.
Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“