- PWM (modulacija širine impulsa):
- Servo motor i PWM:
- Potrebne komponente:
- Kružni dijagram:
- Objašnjenje rada i programiranja:
Raspberry Pi je ploča zasnovana na ARM arhitekturi zasnovana za elektroničke inženjere i hobiste. PI je jedna od trenutno najpouzdanijih platformi za razvoj projekata. S većom brzinom procesora i 1 GB RAM-a, PI se može koristiti za mnoge projekte visokog profila poput obrade slika i Interneta stvari.
Za izvođenje bilo kojeg od projekata visokog profila treba razumjeti osnovne funkcije PI-a. U ovim ćemo uputstvima pokriti sve osnovne funkcionalnosti Raspberry Pi-a. U svakom ćemo tutorialu raspravljati o jednoj od funkcija PI-a. Do kraja ove udžbeničke serije Raspberry Pi moći ćete sami raditi projekte visokog profila. Prođite kroz vodiče u nastavku:
- Početak rada s Raspberry Pi
- Konfiguracija Raspberry Pi
- LED žmigavac
- Sučelje gumba Raspberry Pi
- PWM generacija Raspberry Pi
- Upravljanje istosmjernim motorom pomoću Raspberry Pi
- Upravljanje koračnim motorom s Raspberry Pi
- Povezivanje Shift registra s Raspberry Pi
- Vodič za ADC za Raspberry Pi
U ovom uputstvu ćemo upravljati servo motorom s Raspberry Pi. Prije odlaska na servo, razgovarajmo o PWM-u jer koncept upravljanja servo motorom dolazi iz njega.
PWM (modulacija širine impulsa):
Prethodno smo mnogo puta govorili o PWM-u u: Modulacija širine impulsa s ATmega32, PWM s Arduino Uno, PWM s 555 IC timer-om i PWM s Arduino Due. PWM je skraćenica od "Modulacija širine impulsa". PWM je metoda koja se koristi za dobivanje promjenjivog napona iz stabilnog napajanja. Da biste bolje razumjeli PWM, razmotrite donji sklop,

Na gornjoj slici, ako je prekidač neprekidno zatvoren tijekom određenog vremenskog razdoblja, LED će tijekom tog vremena neprekidno biti "UKLJUČEN". Ako je prekidač zatvoren pola sekunde i otvoren sljedećih pola sekunde, tada će LED svijetliti samo u prvoj polovici sekunde. Sada se omjer za koji LED svijetli tijekom ukupnog vremena naziva radni ciklus i može se izračunati na sljedeći način:
Radni ciklus = Vrijeme UKLJUČIVANJA / (Vrijeme UKLJUČIVANJA + Vrijeme isključivanja)
Radni ciklus = (0,5 / (0,5 + 0,5)) = 50%
Tako će prosječni izlazni napon biti 50% napona baterije.
Kako povećavamo brzinu UKLJUČIVANJA i ISKLJUČIVANJA na razinu, vidjet ćemo da se LED dioda prigušuje umjesto da se UKLJUČUJE i ISKLJUČUJE. To je zato što naše oči ne mogu jasno uhvatiti frekvencije veće od 25Hz. Razmislite o ciklusu od 100 ms, LED se isključuje za 30 ms, a ON za 70 ms. Na izlazu ćemo imati 70% stabilnog napona, tako da će LED neprekidno svijetliti sa 70% intenziteta.
Omjer dužine ide od 0 do 100. '0' znači potpuno ISKLJUČENO, a '100' potpuno UKLJUČENO. Ovaj omjer dužine je vrlo važan za servo motor. Položaj servo motora određuje se ovim omjerom dužine. Provjerite ovo za demonstraciju PWM-a sa LED i Raspberry Pi.
Servo motor i PWM:
Servo motor je kombinacija istosmjernog motora, sustava za kontrolu položaja i stupnjeva prijenosa. Servo uređaji imaju mnogo primjena u modernom svijetu, a uz to su dostupni u različitim oblicima i veličinama. U ovom ćemo uputstvu koristiti SG90 Servo Motor, jedan je od popularnih i najjeftinijih. SG90 je servo od 180 stupnjeva. Dakle, s ovim servom možemo smjestiti os od 0-180 stupnjeva.
Servo motor uglavnom ima tri žice, jedna je za pozitivni napon, druga je za masu, a zadnja za podešavanje položaja. Crvena žica je spojena na vlast, Smeđa žica je spojena na masu i Yellow žice (ili bijela) je spojen na signal.


U servo-u imamo sustav upravljanja koji uzima PWM signal sa signalnog pina. Dekodira signal i od njega dobiva omjer radne snage. Nakon toga uspoređuje omjer s unaprijed definiranim vrijednostima položaja. Ako postoji razlika u vrijednostima, on u skladu s tim podešava položaj serva. Dakle, položaj osi servo motora temelji se na omjeru radne snage PWM signala na signalnom pinu.
Frekvencija PWM (Pulse Width Modulated) signala može se razlikovati ovisno o vrsti servo motora. Za SG90 frekvencija PWM signala je 50Hz. Da biste saznali učestalost rada vašeg servo-uređaja, provjerite tablicu podataka za taj model. Dakle, kad se odabere frekvencija, druga važna stvar ovdje je DUŽNI ODNOS PWM signala.
Tablica u nastavku prikazuje položaj servo upravljača za taj određeni omjer dužine. Odabirom vrijednosti u skladu s tim možete dobiti bilo koji kut između. Dakle, za 45 ° servoa omjer radne snage trebao bi biti '5' ili 5%.
|
POLOŽAJ |
ODNOS DUŽNOSTI |
|
0º |
2.5 |
|
90º |
7.5 |
|
180º |
12.5 |
Prije povezivanja servo motora s Raspberry Pi, možete testirati svoj servo uz pomoć ovog kruga ispitivača servo motora. Također pogledajte naše Servo projekte u nastavku:
- Upravljanje servo motorom pomoću Arduina
- Upravljanje servo motorom s Arduino Due
- Povezivanje servo motora s mikrokontrolerom 8051
- Upravljanje servo motorom pomoću MATLAB-a
- Upravljanje servo motorom pomoću Flex senzora
- Kontrola položaja servo upravljača s težinom (senzor sile)
Potrebne komponente:
Ovdje koristimo Raspberry Pi 2 Model B s Raspbian Jessie OS. Svi osnovni hardverski i softverski zahtjevi su prethodno raspravljeni, možete ih potražiti u Uvodu o Raspberry Pi, osim onoga što nam treba:
- Spojne igle
- Kondenzator od 1000uF
- Servo motor SG90
- Breadboard
Kružni dijagram:

A1000µF mora biti povezan preko + 5V naponske tračnice, inače bi se PI mogao nasumično isključiti dok kontrolira servo.
Objašnjenje rada i programiranja:
Nakon što se sve spoji prema shemi spojeva, možemo UKLJUČITI PI za pisanje programa u PYHTON.
Razgovarat ćemo o nekoliko naredbi koje ćemo koristiti u programu PYHTON, Uvest ćemo GPIO datoteku iz knjižnice, donja funkcija omogućuje nam programiranje GPIO pinova PI. Također smo preimenovali "GPIO" u "IO", pa ćemo u programu kad god se želimo pozvati na GPIO pinove upotrijebiti riječ "IO".
uvezi RPi.GPIO kao IO
Ponekad, kada GPIO pinovi, koje pokušavamo koristiti, možda rade neke druge funkcije. U tom ćemo slučaju primiti upozorenja tijekom izvršavanja programa. Ispod naredba govori PI-u da zanemari upozorenja i nastavi s programom.
IO.setwarnings (False)
GPIO pinove PI možemo uputiti bilo brojem pina na ploči ili brojem njihove funkcije. Poput 'PIN 29' na ploči je 'GPIO5'. Dakle, ovdje kažemo ili ćemo ovdje predstavljati pin s '29' ili '5'.
IO.setmode (IO.BCM)
Kao izlazni pin postavljamo PIN39 ili GPIO19. Iz ovog ćemo pina dobiti PWM izlaz.
IO.setup (19, IO.OUT)
Nakon postavljanja izlaznog pina, trebamo ga postaviti kao PWM izlazni pin, p = IO.PWM (izlazni kanal, frekvencija PWM signala)
Gornja naredba je za postavljanje kanala i za podešavanje frekvencije kanala ”. 'p' ovdje je varijabla koja može biti bilo što. Koristimo GPIO19 kao PWM „izlazni kanal. "Frekvencija PWM signala" odabrat ćemo 50, jer radna frekvencija SG90 iznosi 50Hz.
Ispod se koristi naredba za pokretanje generiranja PWM signala. " DUTYCYCLE " služi za postavljanje omjera "Uključi" kako je prethodno objašnjeno, p.start (DUTYCYCLE)
Ispod se koristi naredba zauvijek, s ovom naredbom će se izrazi unutar ove petlje kontinuirano izvršavati.
Dok je 1:
Ovdje program za upravljanje servom pomoću Raspberry Pi pruža PWM signal na GPIO19. Omjer radne snage PWM signala mijenja se između tri vrijednosti tijekom tri sekunde. Tako se svake sekunde Servo okreće u položaj određen omjerom dužine. Servo se kontinuirano okreće na 0º, 90º i 180º u tri sekunde.
