Pulsno širinska modulacija
Sve vježbe iz ove teme mogu se napraviti pomoću mbed application board-a. Na mbed-u se u svrhu pulsno-širinske modulacije (PWM) koriste pinovi p21
do p26
i klasa PwmOut
. Na mbed application board-u pinovi p21
i p22
su spojeni na konektore servo motora, pinovi p23
, p24
i p25
su spojeni na RGB LED-icu, a p26
je spojen na piezzo zvučnik.
Generiranje PWM signala¶
Korištenjem mbed-a kreirajte PWM signal frekvencije 1 kHz i faktora upravljanja (duty cycle) 50%. Snimite signal osciloskopom i provjerite da li je uspješno generiran.
Moguće rješenje dano je u sljedećem programskom kôdu:
Import programMAB_PWM_Oscilloscope_1
A simple 1 kHz PWM signal generator with 50% duty cycle.
Uzorak oscilograma prikazan je na sljedećoj slici:
Modificirajte program tako da se faktor upravljanja (duty cycle) može namještati pomoću potenciometra Pot1
ili utipkavanjem putem terminala. U modificiranom programu eksplicitno koristite funkcije write()
i pulsewidth()
, odnosno varijacije pulsewidth_ms()
i pulsewidth_us()
, tako da se upoznate sa svim funkcijama klase PwmOut
.
Rješenje s potenciometrom dano je u sljedećem programskom kôdu:
Import programMAB_PWM_Oscilloscope_2
A simple 1 kHz PWM signal generator with adjustable duty cycle over potentiometer.
Pokrenite program i promatrajte kako se mijenja faktor upravljanja promjenom zakreta potenciometra ili utipkavanjem vrijednosti s terminala.
Upravljanje svjetlinom LED-ice pomoću PWM izlaza¶
Napravite program koji upravlja svjetlinom ugrađene diode LED1
pomoću PWM izlaza. Svjetlinu podešavajte korištenjem potenciometra Pot2
.
Moguće rješenje dano je u sljedećem programskom kôdu:
Import programMAB_PWM_LED1
A simple program that controls the LED1 brightness by using potentiometer.
Upravljanje bojom RGB LED-ice pomoću PWM izlaza¶
RGB LED dioda u osnovi se sastoji od tri odvojene LED diode (crvene, zelene i plave). Miješanjem te tri boje moguće je generirati sve ostale boje iz vidljivog spektra. Ako pogledate shemu na stranici 2, dijelovi B1 i B2, primijetit ćete da su na mbed application board-u sve tri LED-ice unutar kućišta RGB LED-ice u spoju zajedničke anode. Zbog toga bi izlaze trebalo konfigurirati kao open drain! Budući da ovo nije moguće s klasom PwmOut
, napajanje LED-ica mora biti 3,3 V (što jest!) da bi sve funkcioniralo bez problema. U osnovi se ova konfiguracija može promatrati kao open drain, pa će logika stoga biti inverzna. Primjerice, uz faktor upravljanja 100% LED-ica je isključena, a uz 0% svijetli maksimalnim intenzitetom.
Napišite program koji postavlja crvenu boju pomoću Pot1
, zelenu boju pomoću Pot2
, a plavu pritiskom na centralnu tipku joystick-a (p14).
Moguće rješenje dano je u sljedećem programskom kôdu:
Import programMAB_PWM_RGB_LED
A simple program to control the color of RGB LED.
PWM izlaz na zvučnik¶
Napišite program koji će na zvučnik puštati uspavanku Ciciban. Takt pjesme (beat) mora se moći namjestiti potenciometrom Pot1
, a ljestvica pomoću potenciometra Pot2
.
Moguće rješenje dano je u sljedećem programskom kôdu, uz napomenu da je program pogodan i za jednostavno slaganje drugih pjesama. Budite kreativni, ali nemojte pretjerivati u labosu :)
Import programMAB_PWM_Speaker
A program for playing Ciciban song. All notes are included, so any song can be easily added if you know its notes.
Koristeći dani predložak, napisan je program koji na zvučnik pušta temu "Imperial March" iz filma Star Wars. U ovom programu, maknuta je mogućnost upravljanja ljestvicom nota.
Import programStar_Wars_The_Imperial_March
Star_Wars_The_Imperial_March Piezo Buzzer Song
Frekvencije pojedinih nota moguće je pronaći na ovom linku.
Upravljanje pozicijom servo motora¶
Napišite program koji će upravljati kutnom pozicijom servo motora SG90 Micro Servo. Proučite podatkovni list motora i pažljivo spojite motor na laboratorijski izvor napona od 5 V. U programu se pozicija motora mora namještati preko potenciometra na način da se koriste puni rasponi potenciometra i kutne pozicije servo motora (linearno skaliranje).
Kao što je navedeno na početku vježbe, na mbed application board-u pinovi p21
i p22
su spojeni na konektore servo motora. Pri spajanju motora potrebno je obratiti pažnju na Vcc
i GND
(u podatkovnom listu servo motora označene su Vcc
i GND
linije), tj. orijentaciju konektora.
Zatim je potrebno spojiti mbed application board na izvor napajanja pomoću danih kablova. Napajanje application board-a potrebno je spojiti na konektor DC In
koji se nalazi direktno ispod USB konektora pomoću kojeg je vaš mbed spojen s računalom.
Na radnim mjestima nalaze se izvori napajanja (Voltcraft VLP-1602 PRO i VLP-1303 PRO), potrebno je na A izlazu izvora (OUTPUT A) podesiti napon napajanja 6 V. Uz napon potrebno je podesiti i iznos struje tako da okrenete potenciometar iznad kojeg piše AMPERE na 50% od maksimalnog mogućeg raspona.
Program za upravljanje kutnom pozicijom servo motora napišite koristeći funkcije write()
, pulsewidth()
, pulsewidth_ms()
ili pulsewidth_us()
.
Čestitke!
Završili ste sve vježbe iz teme Pulsno-širinska modulacija.
Povratak na naslovnu stranicu TVZ Mechatronics Team-a.