31. januarja, 2010

Kratka šola programiranja mikrokontrolerjev

 

Priklop enosmernega motorja na mikrokontroler

Enosmerni motor lahko na mikrokontroler priključimo na več načinov. Prvi način smo pravzaprav že spoznali, ko smo na mikrokontroler priključili FET. S FET-om lahko motor vklapljamo oziroma izklapljamo. Seveda pa pri enosmernih motorjih potrebujemo poleg tega tudi vrtenje v nasprotno smer. Z enim FET-om tega ne moremo narediti. Za krmiljenje motorja v obe smeri potrebujemo 4 FET-e vezane v mostično vezavo. Temu se elegantno izognemo tako, da uporabimo namenska integrirana vezja. Eno takšnih vezij je L272M, ki vsebuje dva močnostna operacijska ojačevalnika, od katerih vsak zmore krmiliti električna bremena tja do 0,7 A, kar je več kot dovolj za majhne elektromotorje. Električna shema se nahaja na sliki 12.

Opis električne sheme

Električna shema je enostavna in se bistveno ne razlikuje od predhodnih. Novo je le integrirano vezje L272M, v katerem se nahajata dva močnostna operacijska ojačevalnika. Vezava L272M je izvedena tako, da z dvema logičnima signaloma definiramo vrtenje motorja v eno oziroma v drugo smer. Možno je motor tudi hitro ustaviti in sicer tako, da izhoda operacijskih ojačevalnikov postavimo na isti napetostni nivo. Poglejmo si tabelo logičnih stanj, s katerimi krmilimo L272M.

Pri Tabeli 1 je potrebno dodati še to, da je vrtenje motorja odvisno od polaritete motorja oziroma, kako vežete priključke motorja na vaše vezje. Kot je razvidno iz Tabele 1, moramo spreminjati stanje na izhodnih vratih mikrokontrolerja tako, da se bo motor vrtel po naših zahtevah. Bascom program bo enostaven, saj bomo samo postavljali izhode mikrokontrolerja na logično 0 ali 1 glede na to, kako želimo da se bo motor vrtel. V kolikor potrebujemo krmiljenje močnejših motorjev, bomo namesto L272M uporabili L298, ki je funkcionalno enak L272M le da zmore krmiliti večje tokove, tja do 3A. Shema vezave L298 je identična tisti za L272M, za natančno shemo pa bo treba pogledati v datoteko s tehničnimi podatki za L298.

Prikaz podatkov na LCD-ju

Prikaz podatkov na LCD-ju je bila vedno zanimiva snov za vse, ki začenjajo s programiranjem mikrokontrolerjev. Večina naprav, ki jih dandanes vidimo ali kupimo ima vgrajene takšne ali drugačne prikaz

Slike PZBA PZBA 11ta - Kratka šola programiranja mikrokontrolerjev

KLIK za povečavo

ovalnike. V tem poglavju bomo obravnavali 2×16 LCD prikazovalnik. Za začetek povejmo nekaj besed o samem LCD modulu. Oznaka 2×16 pomeni, da imamo opravka z dvema vrsticama, vsaka ima po 16 znakov. Ponavadi oznaka 2×16 LCD tudi pomeni, da imamo opravka s t.i. alfanumeričnim prikazovalnikom, ki lahko prikazuje črke, številke in posebne znake, kot npr. matematični znaki, znaki, ki jih srečujemo na tipkovnici in podobno. Nabor znakov, ki jih določeni prikazovalnik lahko prikazuje najdemo v tehničnih podatkih o posameznem prikazovalniku. Na voljo je pa tudi 8 znakov, ki jih lahko oblikujemo sami. Izgled tipičnega prikazovalnika vidimo na sliki 13.

Slike PZBA PZBA 11m - Kratka šola programiranja mikrokontrolerjev

KLIK za povečavo

Slike PZBA PZBA 11n - Kratka šola programiranja mikrokontrolerjev

KLIK za povečavo

LCD za svoje delovanje potrebuje napajanje in logične signale, s katerimi določamo kateri znak naj se prikaže na prikazovalniku. Večina alfanumeričnih prikazovalnikov ima na voljo 4 ali 8-bitno krmiljenje, napajalna napetost ponavadi znaša 5V. Dodatno je na voljo še priključek za nastavitev kontrasta. Tipično vezavo LCD-ja na mikrokontroler vidimo na sliki 14. Običajno uporabljamo 4-bitno krmiljenje. Razlog leži v tem, da na mikrokontrolerju zasedemo čim manj priključkov. 8-bitno krmiljenje sicer ima prednost, da je hitrejše, vendar v veliki večini primerov tega ne potrebujemo, zato bo 4-bitno krmiljenje popolnoma ustrezno. Na shemi vidimo še priključka za Reset in Enable ter trimer potenciometer, s katerim nastavljamo kontrast prikaza na LCD-ju. Vrednost potenciometra ni kritična in lahko znaša od 5 kOhmov pa do 50 kOhmov. Nekateri LCD moduli imajo vgrajeno tudi osvetlitev ozadja. Za to imajo predvidene posebne priključke kamor priključimo 5V napetost zaporedno z 10 Ohmskim uporom. Na naši shemi vidite, da smo serijsko z 10 Ohmskim uporom priključili FET, preko katerega bomo vklapljali oziroma izklapljali osvetlitev ozadja.

Najlepše v Bascom-AVR programu je, da je enostaven za uporabo. To se najbolj vidi pri izpisu podatkov na LCD-ju. Program za izpis na LCD-ju vidimo na sliki 15. Najprej je potrebno, kot smo že navajeni, definirati mikrokontroler. Nato definiramo vrsto LCD-ja. Vrata, na katera priključimo LCD, definiramo kot izhodna in že lahko začnemo „pisati“ po LCD-ju. Definicija vrat za priklop LCD-ja na sliki 14 bi izgledal takole:

Config Lcdpin = Pin , Db7 = Portd.0 , Db6 = Portd.1 , Db5 = Portd.2 , Db4 = Portd.3 ,  E = Portd.4 , Rs = Portd.5

Osvetlitev pa vklapljamo oziroma izklapljamo s FETom na Portd.6.

Predlagam, da nekje na začetku programa z ukazom CLS (clear screen) pobrišete možni predhodni izpis na LCD-ju. Nadalje je priporočljivo, da kar se da natančno določite, kje naj se izpis nahaja na LCD-ju. To naredimo z več ukazi. Najbolj enostavna sta ukaza Upperline in Lowerline, ki določata vrstico, v kateri naj se izpisujejo znaki. Sintaksa za izpis je samo:

LCD „ tekst“ ;spremenljivka

Kot vidite, je ukaz LCD enostaven, njemu sledi narekovaj zgoraj in nato tekst, ki ga želimo izpisati. V kolikor želimo izpisati vrednost spremenljivke, jo samo navedemo poleg ukaza LCD, kot npr.:

LCD A1.

A1 je v tem primeru spremenljivka, ki se bo izpisala na LCD-ju. Če bi želeli lepši izpis, bi naredili takole:

LCD „Spremenljivka = „ ; A1.

V kolikor izpisujemo več spremenljivk moramo paziti tudi na prazne prostore med njimi, da se ne bi spremenljivki (npr: A1= 20, B1= 12) z ukazom

LCD A1, B1

na LCD-ju prikazali takole:

 2012.

Pravilen ukaz za izpis bi se glasil: LCD "A1= "; A1; "  "; "B1= ";B1 ; "  "

Verjetno boste zadevo hitro osvojili, saj je izpis na LCD-ju res enostaven. Povejmo še, da lahko izpis lociramo zelo natančno. Z ukazom Locate x,y lahko določimo vrstico in mesto izpisa na LCD-ju. Pri tem x pomeni vrstico, y pa mesto, ki se šteje od leve.

Tags: