PWM signal, krmiljenje servo motorčka, Web kamera

PWM (pulse width modulation) signal je v bistvu sestavljen iz pravokotnih impulzov izbrane frekvence. Razmerje širine impulza proti periodi imenujemo duty cikel in je izraženo v odstotkih.

Slika 1: PWM signal in povprečna vrednost napetosti PWM signala.

Modul myRIO ima na svojih konektorjih več PWM izhodov:

- Konektor A: DIO8 / PWM0 (pin 27), DIO9 / PWM1 (pin 29).

- Konektor B: DIO8 / PWM0 (pin 27), DIO9 / PWM1 (pin 29), DIO10 / PWM2 (pin 31).

- Konektor C: DIO3 / PWM0 (pin 14), DIO7 / PWM1 (pin 18).

Vsi digitalni izhodi na vseh treh konektorjih (A, B in C) modula myRIO imajo izhodno napetost 3,3 V

S spreminjanjem duty cycle pri izbrani frekvenci (npr. f=50 Hz) spreminjamo povprečno napetost na PWM izhodnem pinu.

Izdelajmo program za krmiljenje LED diode s PWM signalom. LED diodo bomo priključili na konektor B, pin 27 (DIO8 / PWM0). Zaporedno z LED diodo bomo povezali upor vrednosti 220 Ω.

Slika 2: PWM krmiljenje LED diode, Blok diagram.

Slika 3: PWM krmiljenje LED diode, Čelna plošča.

Da lahko spremljamo PWM signal na grafu (Waveform Graph), uporabimo virtualni instrument Simulate Signal, ki ga najdemo na paleti Functions > Express > Input > Simulate Signal. V njegovem priročnem meniju izberemo:

S pomočjo PWM signala lahko krmilimo servo motorček. Srce servo motorčka je majhen enosmerni motorček, ki 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ček 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 motorčka v smeri urinega kazalca, dolžine od 1,7 ms do 2 ms pa gred zavrtijo proti smeri urinega kazalca. Pri standardnem servo motorčku dolžina impulzov PWM signala 1,5 ms zavrtijo gred v položaj sredine.

Slika 4: Zasuk servo motorčka v odvisnosti od dolžine impulza PWM signala.

Koda algoritma virtualnega instrumenta za krmiljenje servo motorčka je prikazana na sliki 5. Začetne nastavitve v levem okvirju strukture Flat predstavljajo izbiro kanala na modulu myRIO. Izbran je pin 27 na konektorju B (DIO8 / PWM0).

Slika 5: Krmiljenje servo motorčka, Blok diagram.

PWM signal generiramo v zanki While, ki je nameščena v sredinskem okvirju strukture Flat. Frekvenco in duty cycle nastavljamo na vhodnih terminalih virtualnega instrumenta Set Duty Cycle and Frequency.vi. Terminal Duty Cycle lahko ima vrednost med 0 in 1, frekvenco v Hz na terminalu Frequency pa lahko izbiramo v območju od 40 Hz do 40 kHz.

Izberimo primer, ko nastavimo pozicijo servo motorčka na 0 pri frekvenci 50 Hz:

pozicija servo = 0

f = 50 Hz

Ko s pritiskom na gumb Stop ustavimo izvajanje zanke While, z virtualnim instrumentom Close.vi onemogočimo generiranje PWM signala na izbranem kanalu, frekvenca in duty cycle pa se resetirata na vrednost 0.

V desnem okvirju strukture Flat resetiramo modul myRIO.

Slika 6: Krmiljenje servo motorčka, Čelna plošča.

Za napetostno napajanje servo motorčka (+5 V) uporabimo zunanji vir napetosti (usmernik ali baterije). Masa zunanjega vira napetosti mora biti povezana z maso modula myRIO (GND, pin 6). Krmilni priključek servo motorčka pa priključimo na pin 27 konektorja B.

Slika 7: Priključki konektorja B modula myRIO (vir: National Instruments).

Priključimo še Web kamero.

Slika 8: Priključitev Web kamere na USB priključek modula myRIO.

Dopolnimo kodo algoritma za krmiljenje servo motorčka:

Slika 9: Krmiljenje servo motorčka in Web kamera, Blok diagram.

Slika 10: Krmiljenje servo motorčka in Web kamera, Čelna plošča.

 Funkcija za konfiguriranje in zajemanje slike. Na terminalu Session In kreiramo konstanto in ji določimo vrednost ustrezne kamere (cam0). Funkcijo najdemo: Functions > Vision and Motion > NI-IMAQdx > IMAQdx Configure Grab.vi

Funkcija za zajemanje novih slik iz ustrezne kamere. Če se tip slike ne ujema z video formatom kamere, ta funkcija spremeni vrsto slike v ustrezno obliko. Funkcijo najdemo: Functions > Vision and Motion > NI-IMAQdx > IMAQdx Grab2.vi

Funkcija ustvari začasno lokacijo pomnilnika za slike. Funkcijo najdemo: Functions > Vision and Motion > Vision Utilities > Image Management > IMAQ Create

Okvir za zajemanje slike kreiramo na Čelni plošči. Najdemo ga: Controls > Vision > Image Display (Classic). V Blok diagramu ga povežemo s terminalom Image Out funkcije IMAQdx Grab2.vi.