0,00 €

V košarici ni izdelkov.

0,00 €

V košarici ni izdelkov.

More
    DomovRevijaNova številkaPametni sef (2) - opis električne sheme krmilnega vezja

    Pametni sef (2) – opis električne sheme krmilnega vezja

    Avtor: mag. Vladimir Mitrović
    V zadnjem delu smo opisali konstrukcijo pametnega trezorja, komponente njegovega sistema upravljanja in programsko logiko. Zdaj bomo podrobneje preučili električno shemo krmilnega vezja, katerega možnosti presegajo tisto, kar smo uporabili pri trezorju.
    Krmilno vezje
    Pri načrtovanju kompleksnejših vezij, ki jih krmilimo z mikrokontrolerji, se pogosto znajdemo v situaciji, ko nam zmanjka prostih priključkov. Zato je bila pri načrtovanju krmilnega sistema pametnega trezorja posebna pozornost namenjena racionalni uporabi razpoložljivih priključkov.

    Mikrokontroler ATmega328P v 32-priključek ohišju, kot je nameščen na plošči Arduino Nano, ima skupno 22 priključkov, na katere lahko priklopimo elektronske komponente, senzorje in vezja ter upravljamo z njihovim delovanjem, beremo njihova stanja ali z njimi komuniciramo. Od njih:
    • 14 priključkov lahko uporabimo kot digitalne vhode ali izhode,
    • 6 priključkov lahko uporabimo kot analogne vhode, ali tudi kot digitalne vhode ali izhode,
    • 2 priključka lahko uporabimo samo kot analogna vhoda.
    Našteti so njihovi osnovni nameni; večino teh priključkov lahko povežemo z različnimi vezji znotraj mikrokontrolerja (s časovniki, univerzalnim komunikacijskim vezjem, prekinitvenim mehanizmom), kar poveča njihovo uporabno vrednost, žal pa ne poveča števila razpoložljivih priključkov.
    Spomnimo se, za krmiljenje pametnega trezorja smo potrebovali:
    • 12 priključkov za branje stanja 12 tipk tipkovnice,
    • 6 priključkov za priključek alfanumeričnega displeja,
    • 8 priključkov za krmiljenje dveh koračnih motorjev,
    • 3 priključke za priklop večbarvne (RGB) LED-ice,
    • 1 priključek za priklop piskača in
    • 1 priključek za prehod v konfiguracijski način dela.
    Če bi naštete komponente želeli neposredno povezati na priključke mikrokontrolerja, bi potrebovali 31 priključkov… No, to še ni vse! Ko smo postavljali karakteristike krmilnega vezja smo želeli, da ima tudi druge funkcionalnosti, ki jih bomo izkoristili v nekem naslednjem projektu. Zato smo mu dodali možnost krmiljenja:
    • še z eno RGB LED-ico (3 priključki),
    • 2 servo motorja (2 priključka) in
    • 4 enosmerne motorje vezane v H most (8 priključkov).
    Poleg vsega naštetega je bilo zaželeno pustiti še nekaj prostih digitalnih in analognih priključkov, ki bi jih uporabljali po potrebi… Zdi se nemogoče, a za tiste, ki želijo vedno vedeti več, bomo pokazali, kako nam je uspelo izpolniti vse te, na videz nemogoče zahteve!
    Alfanumerični displej in tipkovnica
    Shema na sliki 12 prikazuje osnovni način povezovanja alfanumeričnega displeja (LCD) in tipkovnice z Arduino Nano modulom in njegovim mikrokontrolerjem ATmega328P. Poleg napajalne napetosti, ki jo dobi z modula, LCD za komunikacijo z mikrokontrolerjem potrebuje še 6 linij; če želimo iz programa krmiliti tudi osvetlitev ozadja LCD-ja, bomo potrebovali tudi sedmo linijo. Priključki teh komunikacijskih linij so na shemi označeni z oznakami X1-X7 in se lahko povežejo s katerimi koli digitalnimi izhodi mikrokontrolerja.
    Število potrebnih komunikacijskih linij enostavno zmanjšamo tako, če na zadnjo stran LCD-ja namestimo I2C modul s čipom PCF8574 (slika 13). Izhodi čipa PCF8574 so povezani s priključki LCD, eden od izhodov pa krmili tranzistor, ki vklopi osvetlitev ozadja (slika 14). Modul in prek njega LCD dobivata potrebno napajanje iz plošče Arduino Nano. Še posebej nas zanima način komunikacije čipa PCF8574 z mikrokontrolerjem: protokol I2C se uporablja le z dvema linijama: SDA in SCL. Liniji SDA in SCL priključimo na komunikacijsko vezje preko konektorjev A4 (= SDA) in A5 (= SCL), kot je prikazano na sliki 15.
    Modul I2C za LCD je zelo pogosto uporabljen, ker bistveno zmanjša število potrebnih komunikacijskih vrat, zato smo poskušali uporabiti isti čip za povezavo tipkovnice. Naša tipkovnica ima 12 tipk in če vsako tipko priključimo na svoj konektor za mikrokontroler, bomo porabili 12 konektorjev (X1-X12 na sliki 12 spodaj). Boljša rešitev je razporeditev tipk v matriko po sliki 16: sedaj potrebujemo 7 konektorjev. Tipke se nahajajo na presečiščih linij (R1-R4) in stolpcev (C1-C3): če pritisnemo na primer tipko “4”, se vrstici R2 in C1 povežeta. Razporeditev povezav na komercialni tipkovnici je prikazana na sliki 16 spodaj, zato smo enaki razporeditvi sledili tudi v naši različici.
    Kako smo matrično tipkovnico povezali s PCF8574 čipom je prikazano na sliki 17, medtem ko slika 18 prikazuje, kako se modul postavlja na ozadje tipkovnice. Priključki P1-P3 so izhodni in so povezani s stolpci C1-C3. Programsko bomo enega za drugim od teh priključkov postavljali v stanje logične ničle (= 0 V), in takrat bomo lahko prebrali stanje tipk v temu stolpcu. Priključke P4-P7 smo povezali z vrsticami in jih uporabljamo kot digitalne vhode. Če pritisnemo npr. tipko “4”, bo PCF8574 čip prebral “0” na vhodu P5 med kratkim časovnim intervalom, v katerem je njegov izhod P1 tudi postavljen v stanje “0”.
    Tudi tukaj stanja izhodnih priključkov postavljamo, vendar pa stanja vhodnih priključkov beremo preko I2C komunikacije. Interesantno je, kako se za komunikacijo z LCD-jem in s tipkovnico uporablja isto I2C vodilo. Torej 19 komunikacijskih linij s slike 12 smo zamenjali s samo dvema I2C linijama! Da bi program v mikrokontrolerju lahko razlikoval LCD in tipkovnico je nujno, da imata njuna komunikacijska modula različna naslova. Na slikah 13 in 14 vidimo da so vsi trije naslovni priključki A0-A2 ostali odprti: naslov LCD-ja je 7 (= 111 v binarnem zapisu). Na slikah 17 in 18 je kratko vezan naslovni priključek A0: naslov matrične tipkovnice je 6 (= 110 v binarnem zapisu).
    Koračni motorji
    Koračnih motorjev ne smemo direktno povezati na priključke mikrokontrolerja, ker med delovanjem trošijo znatno večje tokove od dopustnih 40 mA. Zato se za njihovo krmiljenje uporabljajo ustrezna tranzistorska vezja, kot tista v integriranem vezju ULN2803A (slika 19). ULN2803A vsebuje 8 takšnih vezij, in točno toliko jih tudi potrebujemo za priklop 2 koračnih motorjev. Vsako tranzistorsko vezje ima svoj kontrolni vhod, zato bomo za krmiljenje koračnih motorjev prav tako potrebovali 8 digitalnih izhodov mikrokontrolerja (na sliki so označeni z oznakami X1-X8).
    Na sliki 19 desno smo vhode tranzistorskih vezij povezali na izhode integriranega vezja HC595. HC595 je 8-bitni pomični register (eng. shift register) s serijskim vhodom in 8 paralelnimi izhodi. Ko mikrokontroler generira impulz na CLK vhodu, bo pomični register premaknil svojo vsebino za eno mesto v desno, na prvo pozicijo pa bo vpisal podatek, ki se trenutno nahaja na SERIN vhodu. Tako bo mikrokontroler preko serijskega vhoda poslal niz 8 logičnih ničel in enic v kombinaciji v kateri jih želi postaviti na paralelne izhode Q0-Q7. V trenutku, ko je poslal vseh 8 bitov, bo mikrokontroler generiral kratkotrajni impulz na RCLK vhodu: to je znak pomičnemu registru, da sprejme prejete podatke in jih postavi na svoje izhode. Tako smo z uporabo integriranega vezja HC595 potrebno število krmilnih priključkov mikrokontrolerja zmanjšali iz 8 na 3.
    Napetost s katero napajamo koračne motorje +U, znaša 5 V in jo dobimo z napetostnega stabilizatorja LM2940.
    Enosmerni motorji
    Namesto navojev koračnih motorjev bi na priključke STEP1 in STEP2 lahko vezali do 8 “navadnih” enosmernih elektromotorjev (število elektromotorjev je omejeno z njihovo porabo in možnostim vira napajanja). Tako vezane DC motorje lahko vklapljamo in izklapljamo. Z malo spretnega programiranja pa lahko tudi krmilimo njihovo hitrost vrtenja, vendar jim ne moremo enostavno spremeniti smeri vrtenja.
    Na krmilni ploščici je zato predvideno boljše vezje za krmiljenje DC motorja. Krmilno vezje vsebuje štiri L272M čipe (slika 20), na katere izhode lahko vežemo do štiri DC motorje v H vezavi: tako vezanim motorjem lahko krmilimo tudi smer vrtenja. Napajanje motorja (+Umot) se lahko vzame z napetostnega stabilizatorja LM2940 ali direktno z vhodnega priključka Vin, na katerega vežemo mrežni adapter. Tudi tukaj je število DC motorjev omejeno z njihovo porabo in možnostmi napetostnega stabilizatorja in vira napajanja.
    Opomba: koračne in DC motorje krmilimo preko istega HC595 čipa, in jih ni možno uporabiti sočasno! Dovoljene so te kombinacije:
    • samo dva koračna motorja (v tem primeru, ne potrebujemo L272M čipov),
    • en koračni motor in dva DC motorja (v tem primeru potrebujemo samo dva L272M čipa ali
    • samo 4 DC motorje (v tem primeru potrebujemo štiri L272M čipe, vendar ne potrebujemo ULN2803).
    RGB diode
    Čeprav uporabljamo le eno RGB diodo, je krmilna plošča pametnega trezorja zasnovana za dve večbarvni (RGB) svetleči diodi. LED-ice s skupno katodo uporabljamo v klasični vezavi, kot je prikazano na sliki 21 zgoraj, LED-ice s skupno anodo pa povezujemo tako, kot je prikazano na risbi na sredini. V obeh primerih potrebujemo 6 digitalnih izhodov mikrokontrolerja X1-X6 za krmiljenje delovanja diod.
    Vezje, ki smo ga izkoristili na krmilni ploščici je prikazano na sliki 21 spodaj in uporablja en priključek manj. Če želimo uporabimo prvo RGB diodo, bomo priključek PD4 postavili v stanje “0”, in nato bomo s postavljanjem priključkov PD3, PD5 in PD6 v stanje logične enice po želji vklapljali njen rdeč, zelen ali moder segment, ali celo kombinacijo vseh. Barve na drugi RGB diodi bomo postavljali na isti način, samo bo sedaj priključek PD2 moral biti v stanju “0”. Če želimo postaviti različne barve na obe RGB diodi, jih bomo morali izmenično vklapljati 100-krat v sekundi (multipleksiranje).
    S tem smo si malo zakomplicirali program, vendar pa prihranek enega priključka mikrokontrolerja ni ravno nepomembna. Vendar ima vezje na sliki 20 spodaj še eno prednost: čeprav je narisan za RGB diode s skupno katodo, je lahko isto vezje primerno tudi za diode s skupno anodo! V tem primeru bomo diode vklapljali s postavljanjem priključkov PD4 in PD2 v stanje “1”, posamezne barve pa bomo vklapljali s postavljanjem priključkov PD3, PD5 in PD6 v stanje “0”. Tukaj gre za prilagoditev programa, medtem ko način povezovanja in s tem tudi načrta tiskane ploščice ni potrebno menjati. Poudariti je potrebno, da so priključki PD3, PD5 in PD6, s katerimi vklapljamo segmente rdeče, zelene in modre barve, smiselno izbrani. Te priključki se lahko programsko povežejo na izhode timerja in zato je na njih možno generirati širinsko modulirane impulze (PWM) na hardverskem nivoju in tako brez obremenitve programa krmiliti intenziteto posamezne barve.
    Svobodni priključki
    Z opisanimi vezji smo dosegli velik prihranek: za pogon LCD-ja, tipkovnice, koračnih in DC motorjev in še RGB diod smo izkoristili samo 10 digitalnih priključkov mikrokontrolerja! Naslednji trije so potrebni za piskač in dva servo motorja, in še vedno nam je ostalo 9 prostih priključkov (slika 22).
    Servo motorji in piskač so vezani direktno na priključke mikrokontrolerja PB1, PB2 in PB3; namesto prihranka na številu priključkov smo tudi tukaj želeli izkoristiti priključke, na katerih je možno generirati širinsko modulirane impulze na hardverskem nivoju. Tako bomo lahko proizvedli piskanje zadane frekvence in postavljali servo motorje v želeni položaj brez obremenitve programa.
    Priključki A0-A3 (PC0-PC3), A6-A7 (PC6-PC7), D0-D1 (PD0-PD1) in D13 (PB5) so ostali prosti.
    Priključka PD0 in PD1 sta povezana s CH340 ali podobnim komunikacijskim čipom na Arduino Nano ploščici in se uporabljata med programiranja mikrokontrolerja, kar v posameznih uporabah lahko predstavlja problem; zato smo se odločili, da ju ne uporabimo.
    Priključka PC6 in PC7 lahko uporabimo samo kot analogna vhoda, priključke PC0-PC3 lahko po volji uporabimo tako kot analogne vhode in kot digitalne vhode ali izhode.
    Priključek PB5 lahko uporabimo kot digitalni vhod ali izhod. Na Arduino Nano ploščici je na ta priključek vezana LED-ica; če ga konfiguriramo kot izhodni priključek, to ne bo predstavljalo problema. Kadar je pa priključek konfiguriran kot vhodni, se je v praksi pokazalo, da ga pull-up upor mikrokontrolerja ne more dovolj “povleči” in mikrokontroler bo vedno bral stanje “0”. Problem smo rešili z dodatkom zunanjega pull-up upora R6.
    Sliki 23 in 24 prikazujeta kompletno električno shemo in razpored komponent na krmilni ploščici. Bodite pozorni na konektor J13, s katerim določamo vir, iz katerega se napajajo DC motorji:
    • če je kratkostičnik postavljen med zgornjim in srednjim priključkom konektorja, se motorji napajajo direktno s konektorja VIN;
    • če je kratkostičnik postavljen med spodnjim in srednjim priključkom konektorja, se motorji napajajo preko napetostnega stabilizatorja LM2940.
    Stabilizator LM2940 je postavljen na rob ploščice, da bi nanj v primeru potrebe, lahko montirali ustrezno hladilno telo.
    Slika 25 kaže kako različne vrste motorjev in ostale komponente vežemo na krmilno ploščico. Na I2C konektorje lahko paralelno vežemo tudi več kot dva modula. Seveda, samo če se jim naslovi razlikujejo! Priključek BUZ je predviden za zunanji piskač; njega uporabimo v primeru, če nam je v projektu bolj ugodno, da je vir zvoka ločen od ploščice. Če uporabimo aktiven piskač, moramo paziti na oznake “+” in “-”. Upor R5 v manjši meri zmanjšuje intenziteto zvoka aktivnega piskača, kar smo namerno naredili: aktivni piskači so lahko neugodno glasni.
    Fotografija popolno popolnjene krmilne ploščice je prikazana na sliki 26.
    V naslednjem, zadnjem nadaljevanju, bomo zapisali navodila za uporabo trezorja in opis tehnike programiranja, uporabnih za branje matrične tipkovnice preko PCF8574 čipa!