Krmiljenje servo motorčka, krmiljenje zapornice

Servo motor:

Servo motorji so samostojne električne naprave, ki premikajo in obračajo dele strojev s precizno natančnostjo. Najdemo jih skoraj povsod, od igrač do avtomobilov. Poleg vezic za napajanje je srce servo motorja majhen enosmerni motor, kateri se vrti pri visokih obratih. Ker ima zelo malo navora, ima zraven zobniški prenos, ki visoke obrate z malim navorom pretvori v počasne obrate z velikim navorom. Motor vsebuje še elektronsko vezje na tiskani ploščici, kjer se nahaja senzor. Ta prepozna za koliko se je zavrtela gred motorja. Gred motorja se lahko premika v obsegu 180°, od -90°do +90°. Pozicija gredi motorja je odvisna od dolžine impulza na priključku za signal, frekvenca teh impulzov pa je okoli 50 Hz. Položaj gredi torej določamo s PWM impulzi, ki trajajo od cca. 0,7 ms do 2 ms. Dolžina impulzov PWM signala od 0,7 ms do 1 ms zavrtijo gred servo motorja v smeri urinega kazalca, dolžine od 1,7 ms do 2 ms pa gred zavrtijo proti smeri urinega kazalca. Pri standardnem servo motorju dolžina impulzov PWM signala 1,5 ms zavrtijo gred v položaj sredine.

Slika 1: Zasuk servo motorja v odvisnosti od dolžine PWM inpulzov

V Blok diagram vključimo funkcijski blok Set Number of Servos, s katerim določimo število servo motorčkov, ki jih želimo krmiliti. Prvi servo motorček je servo 0. Nato s funkcijskim blokom Configure Servo za vsak servo motorček posebej določimo pin na razvojni plošči Arduino Uno, kamor bomo servo motorček priključili. V zanki While, ki se neprestano ponavlja, s kontrolo, priključeno na funkcijski blok Servo Write Angle, določamo kot zasuka posameznega servo motorčka.

Slika 2: Krmiljenje dveh servo motorčkov, Blok diagram

Slika 4: Krmiljenje dveh servo motorčkov, Čelna plošča

Izdelajmo sedaj program za krmiljenje zapornice. Ko je tipka, priključena na pin 10 Arduino Uno sklenjena, zapornico - servo motorček (pin 8) premaknemo v spodnji položaj (kot zasuka 70°). Med tem LED dioda, ki je priključena na pin 13 Arduino Uno utripa s frekvenco 2 Hz. Ko tipko sprostimo, se zapornica vrne v izhodiščni položaj (kot zasuka 0°) in takrat LED dioda preneha z utripanjem.

Slika 5: Krmiljenje zapornice, struktura Case True, Blok diagram

Slika 6: Krmiljenje zapornice, struktura Case False, Blok diagram

V strukturi Case se izvaja blok True, ko je tipka sklenjena. Takrat servo motorček premeknemo na pozicijo kota 70°. Da LED dioda vsakih 250 ms spremeni svoje stanje (preklopi) smo uporabili sekvenco Flat. Vsakih 250 ms se na digitalni pin 13 zapiše nasprotno logično stanje od prejšnjega. To dosežemo s pomikalnim registrom (Shift Register) in vključenim negatorjem Not).

Ko tipko sprostimo, se v strukturi Case izvede blok False. Servo motorček premaknemo na pozicijo 0°, LED diodo pa izklopimo (slika 6).

V odvisnosti od tega, kateri blok strukture Case se izvaja, True ali False, se spremini napis Zapornica spodaj oz. Zapornica zgoraj. Na Čelni plošči smo izbrali indikator String (Controls > Modern > String & Path > String Indicator) in mu na vhodnem terminalu kreirali konstanto, kamor smo zapisali ustrezni napis. Indikatorju String smo kreirali lokalno spremenljivko (Local Variable) in jo namestili v drugi blok strukture Case ter ji kreirali konstanto, kamor smo zapisali ustrezni napis.

Slika 6: Krmiljenje zapornice, Čelna plošča