- PWM (Pulse Width Modulation):
- Servomotor a PWM:
- Požadované komponenty:
- Kruhový diagram:
- Vysvětlení práce a programování:
Raspberry Pi je deska založená na procesoru architektury ARM určená pro elektronické inženýry a fandy. PI je jednou z nejdůvěryhodnějších platforem pro vývoj projektů. Díky vyšší rychlosti procesoru a 1 GB RAM lze PI použít pro mnoho významných projektů, jako je zpracování obrazu a internet věcí.
Při provádění některého z vysoce profilovaných projektů je třeba porozumět základním funkcím PI. V těchto cvičeních se budeme věnovat všem základním funkcím Raspberry Pi. V každém tutoriálu probereme jednu z funkcí PI. Na konci této série kurzů Raspberry Pi budete moci sami dělat vysoce postavené projekty. Projděte si níže výukové programy:
- Začínáme s Raspberry Pi
- Konfigurace Raspberry Pi
- LED Blinky
- Rozhraní tlačítka Raspberry Pi
- Generace PWM Raspberry Pi
- Ovládání stejnosměrného motoru pomocí Raspberry Pi
- Ovládání krokového motoru s Raspberry Pi
- Rozhraní Shift Register s Raspberry Pi
- Výukový program ADC pro Raspberry Pi
V tomto tutoriálu budeme ovládat servomotor s Raspberry Pi. Než půjdeme na servo, promluvme si o PWM, protože koncept ovládání servomotoru vychází z toho.
PWM (Pulse Width Modulation):
Dříve jsme o PWM hovořili mnohokrát v: Pulse width Modulation s ATmega32, PWM s Arduino Uno, PWM s 555 časovačem IC a PWM s Arduino Due. PWM znamená „Pulse Width Modulation“. PWM je metoda používaná pro získávání proměnného napětí ze stabilního napájecího zdroje. Pro lepší pochopení PWM zvažte obvod níže,
Na obrázku výše, pokud je spínač trvale sepnut po určitou dobu, bude LED během této doby trvale svítit. Pokud je spínač sepnut na půl sekundy a rozepnut na další půl sekundy, pak bude LED svítit pouze v první půl sekundě. Nyní se poměr, pro který LED svítí po celou dobu, nazývá pracovní cyklus a lze jej vypočítat takto:
Pracovní cyklus = čas zapnutí / (čas zapnutí + čas vypnutí)
Pracovní cyklus = (0,5 / (0,5 + 0,5)) = 50%
Průměrné výstupní napětí bude tedy 50% napětí baterie.
Když zvýšíme rychlost ZAPNUTÍ a VYPNUTÍ na úroveň, uvidíme, že LED bude ztlumená, místo aby byla ZAPNUTÁ a VYPNUTÁ. Je to proto, že naše oči nemohou jasně zachytit frekvence vyšší než 25 Hz. Zvažte cyklus 100 ms, LED nesvítí 30 ms a svítí 70 ms. Na výstupu budeme mít 70% stabilního napětí, takže LED bude nepřetržitě svítit se 70% intenzity.
Pracovní poměr se pohybuje od 0 do 100. „0“ znamená zcela VYPNUTO a „100“ je zcela ZAPNUTO. Tento poměr výkonu je pro servomotor velmi důležitý. Polohu servomotoru určuje tento poměr výkonu. Zaškrtněte toto pro demonstraci PWM s LED a Raspberry Pi.
Servomotor a PWM:
Servomotor je kombinací stejnosměrného motoru, systému řízení polohy a převodů. Serva mají v moderním světě mnoho aplikací a díky tomu jsou k dispozici v různých tvarech a velikostech. V tomto tutoriálu budeme používat servomotor SG90, je to jeden z populárních a nejlevnějších. SG90 je 180 stupňové servo. S tímto servem tedy můžeme polohovat osu od 0 do 180 stupňů.
Servomotor má hlavně tři vodiče, jeden je pro kladné napětí, druhý pro uzemnění a poslední pro nastavení polohy. Červený vodič je připojen k napájení, hnědý vodič je spojen se zemí a žlutý drát (nebo bílé) je připojen k signálu.
V servu máme řídicí systém, který bere signál PWM ze signálního kolíku. Dekóduje signál a získá z něj poměr výkonu. Poté porovná poměr s předdefinovanými hodnotami pozic. Pokud je rozdíl v hodnotách, upraví to odpovídajícím způsobem polohu serva. Poloha osy servomotoru je tedy založena na pracovním poměru signálu PWM na kolíku Signal.
Frekvence signálu PWM (Pulse Width Modulated) se může lišit podle typu servomotoru. U SG90 je frekvence signálu PWM 50 Hz. Chcete-li zjistit frekvenci provozu vašeho serva, podívejte se do datového listu pro konkrétní model. Jakmile je tedy zvolena frekvence, další důležitou věcí je DUTY RATIO signálu PWM.
V následující tabulce je uvedena poloha serva pro konkrétní poměr výkonu. Při odpovídajícím výběru hodnoty můžete mezi nimi získat jakýkoli úhel. U 45 ° serva by tedy měl být poměr plnění „5“ nebo 5%.
POZICE |
POVINNOST |
0º |
2.5 |
90 ° |
7.5 |
180 ° |
12.5 |
Před připojením servomotoru k Raspberry Pi můžete své servo otestovat pomocí tohoto testovacího obvodu servomotoru. Zkontrolujte také naše níže uvedené Servo projekty:
- Ovládání servomotoru pomocí Arduina
- Ovládání servomotoru s Arduino Due
- Propojování servomotorů s mikrokontrolérem 8051
- Řízení servomotoru pomocí MATLABu
- Ovládání servomotoru pomocí snímače Flex
- Řízení polohy serva s hmotností (snímač síly)
Požadované komponenty:
Zde používáme Raspberry Pi 2 Model B s Raspbian Jessie OS. Všechny základní požadavky na hardware a software jsou dříve diskutovány, můžete si je vyhledat v úvodu k Raspberry Pi, kromě toho, co potřebujeme:
- Spojovací kolíky
- 1000uF kondenzátor
- Servomotor SG90
- Nepájivá deska
Kruhový diagram:
A1000µF musí být připojen přes napájecí lištu + 5V, jinak by se PI mohl při ovládání serva náhodně vypnout.
Vysvětlení práce a programování:
Jakmile je vše připojeno podle schématu zapojení, můžeme zapnout PI pro zápis programu do PYHTONU.
Budeme mluvit o několika příkazech, které budeme používat v programu PYHTON, Chystáme se importovat soubor GPIO z knihovny, níže uvedená funkce nám umožňuje programovat GPIO piny PI. Přejmenováváme také „GPIO“ na „IO“, takže v programu, kdykoli budeme chtít odkazovat na piny GPIO, použijeme slovo „IO“.
importovat RPi.GPIO jako IO
Někdy, když piny GPIO, které se snažíme použít, mohou dělat nějaké další funkce. V takovém případě obdržíme varování při provádění programu. Níže uvedený příkaz říká PI, aby ignoroval varování a pokračoval v programu.
IO.setwarnings (False)
Můžeme označit GPIO piny PI, buď číslem kolíku na desce, nebo jejich číslem funkce. Jako „PIN 29“ na desce je „GPIO5“. Řekneme tedy, že zde buď budeme reprezentovat špendlík číslem '29' nebo '5'.
IO.setmode (IO.BCM)
Jako výstupní pin nastavujeme PIN39 nebo GPIO19. Z tohoto pinu získáme PWM výstup.
IO.setup (19, IO.OUT)
Po nastavení výstupního kolíku musíme nastavit kolík jako PWM výstupní kolík, p = IO.PWM (výstupní kanál, frekvence signálu PWM)
Výše uvedený příkaz slouží k nastavení kanálu a také k nastavení frekvence kanálu “. 'p' zde je proměnná, může to být cokoli. Jako výstupní kanál PWM používáme GPIO19. „Frekvence signálu PWM“ zvolíme 50, protože pracovní frekvence SG90 je 50 Hz.
Níže uvedený příkaz se používá ke spuštění generování signálu PWM. „ DUTYCYCLE “ slouží k nastavení poměru „ zapnutí “, jak bylo vysvětleno dříve, p.start (DUTYCYCLE)
Níže uvedený příkaz se používá jako navždy smyčka, s tímto příkazem budou příkazy uvnitř této smyčky prováděny nepřetržitě.
Zatímco 1:
Zde program pro ovládání serv pomocí Raspberry Pi poskytuje signál PWM na GPIO19. Pracovní poměr signálu PWM se mění mezi třemi hodnotami po dobu tří sekund. Takže každou sekundu se servo otáčí do polohy určené poměrem plnění. Servo se nepřetržitě otáčí na 0 °, 90 ° a 180 ° za tři sekundy.