- PWM (modulacija širine impulza):
- Servo motor in PWM:
- Potrebne komponente:
- Shema vezja:
- Pojasnilo o delu in programiranju:
Raspberry Pi je plošča na osnovi procesorja ARM, zasnovana za elektronske inženirje in ljubitelje. PI je zdaj ena najbolj zaupanja vrednih platform za razvoj projektov. Z večjo hitrostjo procesorja in 1 GB RAM-a se PI lahko uporablja za številne odmevne projekte, kot sta obdelava slik in Internet stvari.
Za izvajanje katerega koli od pomembnih projektov je treba razumeti osnovne funkcije PI. V teh vadnicah bomo obravnavali vse osnovne funkcije Raspberry Pi. V vsaki vaji bomo obravnavali eno od funkcij PI. Do konca te vadnice Raspberry Pi boste lahko sami izvajali odmevne projekte. Pojdite skozi spodnje vaje:
- Uvod v Raspberry Pi
- Konfiguracija Raspberry Pi
- LED utripa
- Vmesnik gumba Raspberry Pi
- Generacija Raspberry Pi PWM
- Nadzor enosmernega motorja z uporabo Raspberry Pi
- Nadzor koračnega motorja z Raspberry Pi
- Povezava Shift registra z Raspberry Pi
- Vadnica za ADC Raspberry Pi
V tej vadnici bomo nadzirali servo motor z Raspberry Pi. Preden gremo na servo, se pogovorimo o PWM, ker iz njega izhaja koncept nadzora servo motorja.
PWM (modulacija širine impulza):
O PWM smo že velikokrat govorili v: Modulacija širine impulza z ATmega32, PWM z Arduino Uno, PWM s 555 IC timerjem in PWM z Arduino Due. PWM pomeni „modulacija širine impulza“. PWM je metoda, ki se uporablja za pridobivanje spremenljive napetosti iz stabilnega napajanja. Za boljše razumevanje PWM upoštevajte spodnje vezje,
Na zgornji sliki, če je stikalo v določenem časovnem obdobju neprekinjeno zaprto, bo LED v tem času neprekinjeno svetila. Če je stikalo za polovico sekunde zaprto in odprto za naslednjo pol sekunde, bo lučka svetila le v prvi polovici sekunde. Zdaj se razmerje, za katerega LED sveti v celotnem času, imenuje delovni cikel in se lahko izračuna na naslednji način:
Delovni cikel = čas vklopa / (čas vklopa + čas izklopa)
Delovni cikel = (0,5 / (0,5 + 0,5)) = 50%
Torej bo povprečna izhodna napetost 50% napetosti akumulatorja.
Ko povečamo hitrost vklopa in izklopa na raven, bomo videli, da bo LED-dioda zatemnjena, namesto da bi bila vklopljena in izklopljena. To je zato, ker naše oči ne morejo jasno ujeti frekvenc, višjih od 25 Hz. Razmislite o 100-milimetrskem ciklu, LED mora ugasniti 30 sekund in vklopiti 70 sekund. Na izhodu bomo imeli 70% stabilne napetosti, zato bo LED neprekinjeno svetil s 70% intenzivnosti.
Delovno razmerje se giblje od 0 do 100. '0' pomeni popolnoma IZKLOPLJENO in '100' popolnoma vklopljeno. To razmerje dolžnosti je zelo pomembno za servo motor. Položaj servo motorja določa to razmerje dolžnosti. Preverite to za demonstracijo PWM z LED in Raspberry Pi.
Servo motor in PWM:
Servo motor je kombinacija enosmernega motorja, sistema za nadzor položaja in zobnikov. Servoji imajo v sodobnem svetu številne aplikacije in s tem so na voljo v različnih oblikah in velikostih. V tej vadnici bomo uporabili servo motor SG90, ki je eden izmed najbolj priljubljenih in najcenejših. SG90 je 180-stopinjski servo. Tako lahko s tem servo osi postavimo os od 0-180 stopinj.
Servo motor ima večinoma tri žice, eno je za pozitivno napetost, drugo za ozemljitev in zadnjo za nastavitev položaja. Rdeča žica je priključena na oblast, rjava žica je povezan z zemljo in rumeno žico (ali beli), ki je povezan s signalom.
In servo, imamo krmilni sistem, ki zajema signal PWM iz signalnega zatiča. Dekodira signal in od njega dobi delovni koeficient. Nato primerja razmerje z vnaprej določenimi vrednostmi položajev. Če pride do razlike v vrednostih, ustrezno prilagodi položaj servo-servo-kolesa. Položaj osi servo motorja torej temelji na delovnem razmerju signala PWM na signalnem zatiču.
Frekvenca PWM (Pulse Width Modulated) signala se lahko razlikuje glede na vrsto servo motorja. Za SG90 je frekvenca PWM signala 50Hz. Če želite ugotoviti pogostost delovanja vašega servo-sistema, preverite podatkovni list za ta model. Ko je frekvenca izbrana, je tukaj druga pomembna stvar DOLŽNI RAZMER signal PWM.
Spodnja tabela prikazuje položaj servo pogona za to določeno razmerje dolžnosti. Z ustreznim izbiranjem vrednosti lahko dobite poljuben kot vmes. Torej mora biti razmerje dajatev za 45 ° servo '5' ali 5%.
POLOŽAJ |
RAZMERJE DOLŽINE |
0º |
2.5 |
90º |
7.5 |
180º |
12.5 |
Preden povežete servo motor z Raspberry Pi, lahko svoj servo preizkusite s pomočjo tega vezja servo motorja. Preverite tudi spodnje Servo projekte:
- Krmiljenje servo motorja z uporabo Arduina
- Krmiljenje servo motorja z Arduino Due
- Vmesnik servo motorja z mikrokrmilnikom 8051
- Krmiljenje servo motorja z uporabo MATLAB-a
- Krmiljenje servo motorja s pomočjo Flex senzorja
- Servo nadzor položaja s težo (senzor sile)
Potrebne komponente:
Tu uporabljamo model Raspberry Pi 2 Model B z OS Raspbian Jessie. Vse osnovne zahteve glede strojne in programske opreme so že obravnavane, poglejte jih v uvodu Raspberry Pi, razen tistega, ki ga potrebujemo:
- Povezovalni zatiči
- 1000uF kondenzator
- Servo motor SG90
- Breadboard
Shema vezja:
A1000µF mora biti priključen na napajalno tirnico + 5V, sicer se lahko PI med krmiljenjem servo naključno izklopi.
Pojasnilo o delu in programiranju:
Ko je vse povezano po shemi vezja, lahko vklopimo PI in napišemo program v PYHTON.
Govorili bomo o nekaj ukazih, ki jih bomo uporabili v programu PYHTON, Datoteko GPIO bomo uvozili iz knjižnice, spodnja funkcija nam omogoča programiranje GPIO nožic PI. Prav tako preimenujemo »GPIO« v »IO«, zato bomo v programu, kadar se želimo sklicevati na zatiče GPIO, uporabili besedo »IO«.
uvozi RPi.GPIO kot IO
Včasih, ko zatiči GPIO, ki jih poskušamo uporabiti, morda opravljajo nekatere druge funkcije. V tem primeru bomo med izvajanjem programa prejeli opozorila. Spodaj ukaz PI-ju sporoči, naj prezre opozorila in nadaljuje s programom.
IO.setwarnings (False)
Zatiče GPIO PI lahko označimo bodisi s številko zatiča na krovu bodisi s številko njihove funkcije. Tako kot »PIN 29« na plošči je »GPIO5«. Torej tukaj povemo, ali bomo tu zastopali pin z '29' ali '5'.
IO.setmode (IO.BCM)
Kot izhodni zatič nastavljamo PIN39 ali GPIO19. Iz tega zatiča bomo dobili izhod PWM.
IO.setup (19, IO.OUT)
Po nastavitvi izhodnega zatiča ga moramo nastaviti kot izhodni zatič PWM, p = IO.PWM (izhodni kanal, frekvenca PWM signala)
Zgornji ukaz je namenjen nastavitvi kanala in tudi nastavitvi frekvence kanala. " 'p' tukaj je spremenljivka, lahko je karkoli. Za izhodni kanal PWM uporabljamo GPIO19. »Frekvenca PWM signala« bomo izbrali 50, saj je delovna frekvenca SG90 50 Hz.
Spodnji ukaz se uporablja za zagon generacije signala PWM. ' DUTYCYCLE ' je za nastavitev razmerja 'Turn On', kot je bilo že razloženo, p.start (DUTYCYCLE)
Spodaj se ukaz uporablja kot zanka za vedno, s tem ukazom se bodo stavki znotraj te zanke izvajali neprekinjeno.
Medtem ko 1:
Tukaj program za nadzor servo sistema z uporabo Raspberry Pi zagotavlja signal PWM na GPIO19. Delovno razmerje signala PWM se tri sekunde spreminja med tremi vrednostmi. Servo se torej vsako sekundo zavrti v položaj, določen z razmerjem dolžnosti. Servo se v treh sekundah neprekinjeno vrti na 0º, 90º in 180º.