Vážení zákazníci, dovolujeme si Vás upozorni, že na uo ukázku knihy se vzahují auorská práva, zv. copyrigh. To znamená, že ukázka má slouži výhradnì pro osobní poøebu poenciálního kupujícího (aby èenáø vidìl, jakým zpùsobem je iul zpracován a mohl se aké podle ohoo, jako jednoho z paramerù, rozhodnou, zda iul koupí èi ne). Z oho vyplývá, že není dovoleno uo ukázku jakýmkoliv zpùsobem dále šíøi, veøejnì èi neveøejnì napø. umis ováním na daová média, na jiné inerneové sránky (ani prosøednicvím odkazù) apod. redakce nakladaelsví BE echnická lieraura redakce@ben.cz
5. AALOGOVÝ KOMPAÁTO A JEHO POUŽITÍ 5 Analogový komparáor a jeho použií Zabudovaný analogový komparáor umožňuje porovnáva hodnoy dvou vsupních napěí. Lze jej použí například pro realizaci regulačních úloh nebo měření fyzikálních veličin. 5. Popis analogového komparáoru Schéma zapojení analogového komparáoru je uvedeno na obr. 5.. Komparáor porovnává napěí vývodů neinverujícího vsupu () a inverujícího vsupu ( ). U eferenční zdroj, V AI AI ABG= ABG= AME= ADE= AD vlasní analogový komparáor Výběr přerušení AIE přerušení analogového komparáoru AIS AIS AI výsup muliplexeru A/D převodníku AME= & ADE= U U AO Obr. 5. Schéma zapojení analogového komparáoru Je-li U U, je výsup komparáoru v log.. Je-li U > U, je výsup komparáoru v log.. Výsup komparáoru je předsavován biem AO z regisru AS. einverující vsup je označen jako AI a odpovídá vývodu PB, inverující vsup je označen jako AI a odpovídá vývodu PB3, viz obr... Výsup komparáoru lze, kromě čení jeho log. hodnoy pomocí biu AO, použí pro generování zvlášního přerušení. Teno výsup lze aké použí k záchyu savu číače/časovače v jeho záchyném regisru. Spoušecí událos odpovídá náběžné nebo sesupné hraně výsupu komparáoru, spoušění je možné i při změně log. hodnoy výsupu komparáoru. egisr ADSB Funkci komparáoru ovlivňuje bi AME z regisru ADSB. Bi 7 6 5 4 3 AME ADTS ADTS ADTS Čení/zápis /W /W /W /W Výchozí hodnoa Obr. 5. egisr ADSB AME povolení muliplexeru pro analogový komparáor. Je-li AME = a současně je vypnu A/D převodník (bi ADE z regisru ADSA je vynulován), je na inverující vsup komparáoru napojen výsup muliplexeru A/D převodníku. Je-li AME = je inverující vsup komparáoru připojen na vývod AI. Viz kapiolu 6. egisr AS Analogový komparáor je řízen regisrem AS. Teno regisr obsahuje jak řídicí biy, ak i savové příznaky analogového komparáoru. 5-
APLIKAE MIKOKOTOLÉŮ ATMEGA644 Bi 7 6 5 4 3 AD ABG AO AI AIE AI AIS AIS Čení/zápis /W /W /W /W /W /W Výchozí hodnoa? Obr. 5.3 egisr AS AD odsavení analogového komparáoru. Je-li AD =, je odpojeno napájení pro analogový komparáor (viz obr. 5.). To výrazně sníží spořebu mikrokonroléru především v režimech spánku. Je-li AD =, je napájení analogového komparáoru připojeno. Pokud má dojí ke změně savu biu AD, je vhodné vynulova bi AIE. Jinak může dojí ke vzniku nežádoucího (falešného) přerušení. ABG připojení zdroje referenčního napěí. Pro ABG =, je na neinverující vsup analogového komparáoru připojen zabudovaný zdroj referenčního napěí. Pro ABG =, je neinverující vsup analogového komparáoru napojen na vývod AI. AO výsup analogového komparáoru. Teno bi je synchronizován a přímo napojen na výsup analogového komparáoru (viz obr. 5.). Synchronizace způsobuje zpoždění až hodinové cykly. AI příznak přerušení analogového komparáoru. AI je nasaven, když výsup analogového komparáoru způsobí spoušěcí událos definovanou biy AIS, AIS (viz ab. 5.). Je-li AIE = a současně I =, je povoleno přerušení od analogového komparáoru. Příznak AI se hardwarově vynuluje vykonáním příslušné ruiny obsluhy přerušení. Příznak AI lze nulova i programově zápisem do AI. AIE povolení přerušení analogového komparáoru. Teno bi povoluje (AIE = ) nebo zakazuje (AIE = ) přerušení analogového komparáoru. AI povolení záchyu analogovým komparáorem. Je-li AI =, je spoušěcí vsup záchyného regisru číače/časovače připojen na výsup analogového komparáoru (viz obr. 5.5). Je-li AI =, spoušěcí vsup záchyného regisru číače/časovače napojen na vnější vývod IP. Z obr. 5.5 je zřejmé, že signál z výsupu komparáoru (AO) prochází přes polačovač šumu podobně, jako signál z vnějšího vývodu IP. Pro generaci přerušení, keré se má akivova záchyem pomocí analogového komparáoru, je nuno nasavi bi IIE v regisru TIMSK. AIS, AIS výběr přerušení analogového komparáoru. Tyo biy určují, kerá událos analogového komparáoru spouší jeho přerušení (viz ab. 5.). Pokud má dojí ke změně biů AIS, AIS, je vhodné vynulova bi AIE. Jinak může dojí ke vzniku nežádoucího (falešného) přerušení. Tab 5. Význam biů AME, ADE, MU až MU AME ADE MU MU MU Inverující vsup analogového komparáoru AI AI AD AD AD AD3 AD4 AD5 AD6 AD7 5-
5. AALOGOVÝ KOMPAÁTO A JEHO POUŽITÍ Tab 5. Význam biů AIS, AIS AIS AIS ežim přerušení přerušení při změně savu výsupu AO (oggle) vyhrazeno přerušení při sesupné hraně výsupu AO přerušení při náběžné hraně výsupu AO egisr DID: AID až AID (odsavení digiálních vsupů) nasavením příslušného biu odsavíme digiální vsupní buffer odpovídajícího vývodu analogového komparáoru. Tím se sníží spořeba digiálního bufferu, proože eno nereaguje na pomalu se měnící na analogový signál. Bi 7 6 5 4 3 AID AID Čení/zápis /W /W Výchozí hodnoa Obr. 5.4 egisr DID analogový komparáor IP AO MU Polačovač šumu Deekor hrany AI I IES zápis IF TT I žádos o přerušení Obr. 5.5 Zapojení spoušěcího vsupu záchyného regisru číače/časovače 5. Prakické použií analogového komparáoru Analogový komparáor lze použí pro realizaci měření řady elekrických veličin (nebo obecně fyzikálních veličin, keré se na elekrickou veličinu převedou). Měření odporu nebo kapaciy mezipřevodem na časový inerval Měření kapaciy nebo odporu mezipřevodem na časový inerval [6] je možné pomocí zapojení dle obr. 5.6. U AO vybíjení K T u u U u u Obr. 5.6 Ideové schéma zapojení pro měření kapaciy nebo odporu komparáorem Obr. 5.7 Časové průběhy napěí v obvodu Pomocí signálu vybíjení nejdříve sepneme ranzisor T, kerý vybije kondenzáor (ideálně bude mí nulové napěí). ásledně vybíjení ukončíme a necháme kondenzáor nabíje přes rezisor. apěí kondenzáoru (což je zároveň 5-3
APLIKAE MIKOKOTOLÉŮ ATMEGA644 napěí neinverujícího vsupu komparáoru) lze vyjádři (viz obr. 5.7): = u () U e (5-) Program sleduje výsup komparáoru AO. a začáku nabíjení je eno signál v log., neboť plaí u < u (napěí z odporového děliče, bude určiě vyšší než V). Jelikož se napěí kondenzáoru sále zvyšuje, nasane po uplynuí doby sav, kdy plaí u > u. Tehdy bude výsup komparáoru AO v log.. Změříme-li dobu rvání log. na výsupu komparáoru od začáku nabíjení, určíme dobu nabíjení. Teno časový inerval je přímoúměrný součinu kapaciy kondenzáoru a odporu rezisoru. Teno součin se označuje jako zv. časová konsana: τ =. Dosazením a úpravou vzahu (5-) získáme vzah pro určení času, pro kerý dosáhne napěí kondenzáoru sejné hodnoy, jakou má dělič: U = U e τ e τ = Zlogarimováním a drobnou úpravou vyjádříme: = τ ln (5-) Ze vzahu (5-) je edy parné, že doba nabíjení je přímoúměrná časové konsaně τ a navíc ji ovlivňuje poměr odporů rezisorů,. Obvod dle obr. 5.6 edy umožňuje měři kapaciu nebo odpor. Pokud chceme měři odpor, použijeme kondenzáor známé kapaciy. Při měření kapaciy použijeme rezisor známé hodnoy odporu. Měření napěí mezipřevodem na časový inerval Při měření napěí mezipřevodem na časový inerval lze vyjí ze vzahu (5-). Je zřejmá závislos mezi napěím a časem nabíjení. Problém lze však spaři ve skuečnosi, že ao závislos není lineární. Možnosí, jak eno problém vyřeši, je nabíje kondenzáor nikoli před rezisor, ale ze zdroje proudu. Vyjdeme-li ze základního vzahu mezi napěím a proudem kondenzáoru a dosadíme-li za proud konsanu (lze vyknou před inegrál), dosaneme: u() = u() i(ττ dτ edy: u () = u() I dτ u nakonec: I () = u() (5-3) Drobnou úpravou obvodu dle obr. 5.6 dosaneme výsledné zapojení dle obr. 5.8. 5-4
5. AALOGOVÝ KOMPAÁTO A JEHO POUŽITÍ U D I 3 K AO U u u u D u u T vybíjení u Obr. 5.8 Ideové schéma zapojení pro měření napěí komparáorem Obr. 5.9 Časové průběhy napěí v obvodu V zapojení dle obr. 5.8 je kondenzáor nabíjen ze zdroje konsanního proudu realizovaného inegrovaným zdrojem proudu LM334 (I ) a rezisorem 3 (nasavuje velikos proudu) a ak napěí kondenzáoru narůsá s časem lineárně. Diody D a D chrání inverující vsup komparáoru před záporným nebo zvýšeným kladným vsupním napěím, a slouží jako odporový dělič pro nasavení měřicího rozsahu převodníku (dále omezují vsupní napěí pod hodnou U, proože zdroj proudu LM334 pořebuje určiou minimální napěťovou rezervu). Pomocí signálu vybíjení sepneme ranzisor T, kerý vybije kondenzáor (ideálně bude mí nulové napěí). ásledně vybíjení ukončíme a necháme kondenzáor nabíje přes zdroj proudu I. apěí kondenzáoru (což je zároveň napěí neinverujícího vsupu komparáoru) bude narůsa s časem lineárně (viz obr. 5.9). Sledujeme výsup AO. a začáku nabíjení je eno signál v log., neboť plaí u < u (pokud bude měřené napěí nenulové). Jelikož se napěí kondenzáoru sále zvyšuje, nasane po uplynuí doby sav, kdy plaí u > u. Tehdy bude výsup komparáoru AO v log.. Změříme-li dobu rvání log. na výsupu komparáoru od začáku nabíjení, určíme dobu nabíjení. Dosazením a úpravou vzahu (5-3) získáme vzah pro určení času, pro kerý dosáhne napěí kondenzáoru sejné hodnoy, jakou má dělič: u I = = u I (5-4) Ze vzahu (5-4) je edy parné, že doba nabíjení je přímoúměrná vsupnímu napěí u. Dobu nabíjení navíc ovlivňuje poměr odporů rezisorů,, kapacia kondenzáoru a nepřímoúměrně závisí na velikosi nabíjecího proudu I. 5.3 Přípravek MA měření odporu převodem na časový inerval Přípravek MA umožňuje měření odporu převodem na časový inerval, je určen pro připojení na por B. Odporový dělič : přivádí referenční napěí na vsup PB3 (AI) edy na inverující vsup analogového komparáoru. Měřený rezisor nabíjí kondenzáor 5-5
APLIKAE MIKOKOTOLÉŮ ATMEGA644 známé hodnoy ( O je ochranný rezisor), napěí kondenzáoru je přivedeno na vsup PB (AI) edy na neinverující vsup analogového komparáoru. Tranzisor slouží pro vybií kondenzáoru a je řízen biem PB. U O = Ω = 7 kω D 3 D D GD V = kω = nf = 47 kω Obr. 5. Schéma zapojení přípravku MA Podklady pro výrobu přípravku MA nalezneme v příloze v kapiole A.. 5.4 POG_ použií záchyného regisru a analog. komparáoru Přípravek MA lze použí pro demonsraci použií analogového komparáoru i záchyného regisru číače/časovače. Zadání POG_: Vyvoře program, kerý měří elekrický odpor pomocí komparáoru a jednoky Inpu apure. Přípravek MA připoje na por B. Přípravek MLD připojíe na por D. Po vyvoření projeku do něj vložíme dříve vyvořené soubory MLDF.H a MLDF. z příkladu POG_6. V konfiguračním dialogu projeku nasavíme kmioče MHz. Pro přehlednější zápis zavedeme makra: VYBIJEI (odpovídá sepnuí vybíjecího ranzisoru připojeného na bi ) a ABIJEI (odpovídá rozpojení vybíjecího ranzisoru). Dále zavedeme konsany pro konfiguraci číače/časovače. Pro měření uvažujeme odpory cca do kω, výpočem lze odvodi, že je řeba zvoli děličku /8 (pro vyšší rychlos číání dochází v průběhu měření k přeečení): F_P (předdělička /8), T_STAT (volba předděličky a záchy na náběžnou hranu; komparáor se po nabií kondenzáoru na sejnou hodnou, jakou má výsup odporového děliče, překlopí z log. do log. ), T_STOP (zasavení číače). Údaj zachycený v regisru I odpovídá poču načíaných impulzů. Kmioče impulzů je dán hodinovým kmiočem mikrokonroléru a zvolenou děličkou. Tedy odpovídající časový inerval lze urči jako: = poce_impulzu T P (5-5) Kde je časový inerval, T je perioda hodinového signálu mikrokonroléru (5 ns) a P je zvolená předdělička (64). 5-6
5. AALOGOVÝ KOMPAÁTO A JEHO POUŽITÍ Ze vzahu (5-) lze urči hodnou τ a posléze i odpor měřeného rezisoru: τ = ln = ln O (5-6) Odpory rezisorů a byly voleny ak, aby byl vzah co nejjednodušší. Po čásečném dosazení dosaneme: poce_impulzu T P = O = & ln poce_impulzu T,8 Po zavedení přepočení konsany K, lze vzah zapsa v jednodušší formě: P (5-7) T P K =, = K poce_impulzu (5-8),8 Konsanu K definujeme v programu rovněž, pouze bylo zjišěno, že na použiém přípravku byla kapacia kondenzáor poněkud vyšší, zhruba nf. Inicializace spočívá v inicializaci přípravku MLD, povolení výsupní funkce vývodu PB (eno bi ovládá vybíjecí ranzisor), odsavení digiální funkce analogových vsupů AI a AI (pro snížení spořeby) a povolení záchyu savu číače/časovače přes výsup analogového komparáoru. Průběh měření je pro lepší předsavu popsán i formou obr. 5.. impulzy časovače ovládání vybíjecího ranzisoru f /8 PB vybíjení ms u, u napěí na vsupech komparáoru U u u výsup komparáoru AO okamžik záchyu TT číač zasaven obsah číače obsah záchyného regisru I předchozí měření nový výsledek Obr. 5. Časové průběhy signálů při měření ejdříve je vynulován číač (číač je pochopielně v éo chvíli zasaven). ásleduje vybíjení kondenzáoru (sepnuím vybíjecího ranzisoru), na vybíjení je počíán čas ms. Poé se vybíjecí ranzisor rozpojí, akže se kondenzáor začne nabíje. Vynulujeme příznaky záchyu a přeečení číače/časovače (je o rozumné provés až 5-7
APLIKAE MIKOKOTOLÉŮ ATMEGA644 po vybíjecí fázi, neboť výsup komparáoru může vyváře zákmiy, keré spusí falešný záchy) a spusíme číání. Programová smyčka nyní čeká na záchy nebo přeečení číače/časovače. Sleduje edy příznaky IF a TOV. Pokud se jeden z nich nasaví, je měření ukončeno. Číač je zasaven. asavení příznaku TOV znamená přeečení (měřený rezisor měl příliš velkou hodnou odporu, nabíjení rvalo dlouho a číač přeekl). asavení příznaku IF znamená úspěšný záchy hodnoy při překlopení výsupu komparáoru do log.. V případě, že číač během měření nepřeekl, zobrazí se naměřená hodnoa po přepoču konsanou K. Výsledek se ješě vydělí isícem pro převod na kilo Ohmy. Vyhýbáme se zbyečnému výpisu naměřené hodnoy v plovoucí řádové čárce. Sekvence \xf4 slouží pro zobrazení symbolu Ω, kerý je k dispozici v abulce znaků LD displeje (viz ab. 5.). POG_.: #include <avr/io.h> #include <avr/pgmspace.h> #include <avr/inerrup.h> #include <uil/delay.h> #include <sdio.h> #include "MLDfn.h" //makra pro vybijeni a nabijeni kondenzaoru: #define VYBIJEI POTB=POTB (<<POTB) #define ABIJEI POTB=POTB&(~(<<POTB)) //konsany pro konfiguraci ciace/casovace : #define F_P b //volba preddelicky #define T_STAT F_P (<<IES) #define T_STOP //konsana pro prepoce namereneho pocu cyklu na odpor: #define K (8*5e-9/(e-9*.8)) in main(void) { unsigned c; inimld(); //pro ulozeni pocu nacianych cyklu //inicializace LD DDB=(<<); //PB je vysup DID=(<<AID) (<<AID); //vypnui dig. fce anal. vsupu AS=(<<AI); //povoleni zachyu pres analogovy komparaor while() { TT=; //nulovani ciace VYBIJEI; //sar vybijeni _delay_ms(); //prodleva ABIJEI; //zacaek nabijeni 5-8
5. AALOGOVÝ KOMPAÁTO A JEHO POUŽITÍ TIF=(<<TOV) (<<IF); //nul. priz. preeceni a zachyu TB=T_STAT; //preddelicka, zachy pri nabezne hrane //ceka na zachy nebo preeceni: while(!((tif&(<<if)) (TIF&(<<TOV)))); TB=T_STOP; //zasaveni c=i; //ceni posu hodinovych cyklu } } prikazmld(ld_home); //presun kurzoru if(tif&(<<tov)) //es preeceni prinf_p(pst("preeklo")); else //uspesne mereni: prinf_p(pst("=%3u k\xf4"),(unsigned)(c*k/)); 5-9