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, 02: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, 02: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, 02: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, 02: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, 02: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, 02: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, 02: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, 02: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, 02: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, 02: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ů“