Analogni del je sestavljen iz dveh ojačevalnikov. U1A predstavlja napetostni sledilnik in ima nalogo, da s svojo visoko vhodno upornostjo ne obremeni izhoda iz RC filtra (R1, C2) temveč, da iz njega pobira samo napetost. Izhod iz napetostnega sledilnika peljemo na vhod ojačevalnika U2B. Izhodna napetost tega ojačevalnika je odvisna od vhodne napetosti in stopnje ojačenja. Stopnja ojačenja je določena z razmerjem upornosti upora R3 in potenciometra RT1.
Izhod iz ojačevalnika je priklopljen na močnostni tranzistor Q1 (BD237), ki je vezan kot napetostni sledilnik. Na emitorju tranzistorja se nahaja tudi izhod iz usmernika, z druge strani pa to napetost preko trimerja RT1 peljemo na neinvertirajoči vhod operacijskega ojačevalnika (povratna povezava). Trimer RT2 je namenjen uglaševanju napetosti na AD vhodu procesorja za merjenje napetosti usmernika. S trimerjem RT3 izvedemo fino umerjanje toka na izhodu usmernika. Zener diode ZD1 in ZD2 morajo zaščititi vhod mikrokontrolerja pred preveliko vhodno napetostjo, preden umerimo usmernik.
Digitalni del je zgrajen okrog mikrokontrolerja ATMega8. Njegova naloga je, da ustvarja PWM signal, meri napetost in tok napajalnika, vrednosti prikaže na prikazovalniku (LCD 2 x 16 znakov) in po potrebi, v slučaju preobremenitve, izklopi usmernik ter generira slušni signal na piskaču. Nanj so priklopljene tudi tri tipke za krmiljenje usmernika, preko le teh pa določimo želeno napetost in dopustni tok, nastavimo vrednost tokovne zaščite in čas zapoznitve delovanja tokovne zaščite.
Programska oprema
Program za usmernik je pisan v Bascomu AVR in zaseda 75 % Flash pomnilnika mikrokontrolerja. Takt mikrokontrolerja je določen z zunanjim kristalom 12 MHz. Za vse tiste, ki so začetniki v Bascomu, moram povedati, da so novi mikrokontrolerji tovarniško nastavljeni na notranji oscilator 1 MHz in je s programiranjem tako imenovanih FUSE BIT-ov potrebno določiti zunanji oscilator. Na začetku programa definiramo uporabljene spremenljivke in konfiguriramo Timer, LCD, vhode/izhode mikrokontrolerja in AD pretvorbo.
Config Portb = Output
Portb = 255
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Prescale = 1
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.2 , Rs = Portd.1
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Stop Adc
Config Lcd = 16 * 2
Config Pinc.2 = Input
Config Pinc.3 = Input
Config Pinc.4 = Input
Portc.2 = 1
Portc.3 = 1
Portc.4 = 1
Portb.2 = 0 'PIEZO PISKAC
Na začetku programa moramo določiti tudi začetne vrednosti izhodne napetosti, maksimalnega toka in čas zapoznitve za proženje tokovne zaščite. Te vrednosti so shranjene v EEPROM mikrokontrolerja in jih moramo pri programiranju sprogramirati v mikrokontroler (uporabite EEP datoteko).
N = Ne
Imax = Imaxe
Tizak = Tize
Spremenljivka N nam predstavlja vrednost PWM signala, Imax je maksimalen dovoljen tok na izhodu usmernika in Tizak določa čas zapoznitve za tokovno zaščito. Opazili boste, da sem kot prvo spremenljivko uporabil spremenljivko Ln As Eram Single. To mi je ostalo v navadi, ker so prvi AVR procesorji imeli napako in so znali ob napačnem resetu na prvo lokacijo EEPROM-a vpisati kar koli. Škodovalo ne bo, ker imamo dovolj prostora v EEPROM-u. Takoj potem PWM začne ustvarjati impulze z določenim razmerjem signal/pavza.
V nadaljevanju programa preberemo trenutne vrednosti napetosti in toka ter nastavljene vrednosti zapoznitve tokovne zaščite in nastavljeno vrednost maksimalnega toka ter jih prikažemo na LCD-ju. Program nadaljujemo v glavni programski zanki. Ker izpis na LCD vzame kar nekaj časa mikrokontrolerju, sem se odločil, da preverjam, ali se nova vrednost meritve razlikuje od stare, in v tem primeru jo izpisujem na LCD.