
IoT prakticky - programovanie Raspberry Pi v Pythone 3: PWM výstup a ovládanie servomotorov
Mini seriál je zameraný na obsluhu hardvéru pripojeného na dosku Raspberry PI. V tejto časti na praktických príkladoch ukážeme PWM výstup, čiže generovanie impulzovo šírkovej modulácie na GPIO výstupoch. Pomocou PWM sa ovládajú aj servomotory v modelárstve a robotike.
Príklady sú v vo videu
Prídavný hardvér, prípadne rozširujúce moduly sa pripájajú cez 40-pinový GPIO (General Purpose Input/Output) konektor. Obsahuje 26 vstupno – výstupných portov, pričom niektoré z nich sa dajú prekonfigurovať tak aby fungovali ako špeciálne porty (SPI, I2C, UART RS232...). Na konektore sú vyvedené aj napájacie napätia 3,3 a 5 V. Vývojová doska Raspberry PI má jedno obmedzenie. Nemá analógové vstupy a výstupy. Analógový výstup je možné v niektorých aplikáciách simulovať digitálnym výstupom na ktorom sa generuje PWM signál. PWM znamená Pulse Width Modulation, čiže impulzovo šírková modulácia, ktorá umožňuje meniť výstupné napätie na pine nie analógovo, ale prostredníctvom premenlivej šírky pulzov.
![]() |
![]() |
Vľavo nižší a vpravo vyšší výkon daný šírkou impulzov v úrovni logická 1
Na výstupe sú impulzy s amplitúdou 5V s premenlivým pomerom medzi časom zapnutia a vypnutia. Ak na PWM výstup pripojíte LED diódu, maximálny jas sa dosiahne ak je na výstupe trvalo hodnota HIGH. Ak má byť hodnota napätia polovičná, pomer impulzov zapnuté/vypnuté je 50: 50. Ak potrebujete štvrtinový jas, pomer zapnuté/vypnute je 25:75 Pri tomto princípe regulácie, ktorá sa mimochodom využíva aj na reguláciu jasu podsvietenia lacnejších monitorov LED diódy nesvietia kontinuálne, ale blikajú mnohokrát za sekundu a čím je doba ich zopnutia kratšia, tým je nižšia intenzita podsvietenia.
V príklade ukážeme reguláciu jasu LED diódy pripojenej cez obmedzovací rezistor na pin GPIO2
Pripomíname , že kód stačí napísať, alebo skopírovať do editora Mu, ktorý nájdete v používateľskom rozhraní operačného systému Raspbian v hlavnom menu, v položke Programovanie a následne spustiť.
Skúste zapojiť dve LED diódy a nastavovať rôznu úroveň jasu a môžete taktiež experimentovať az zo zmenou frekvencie. Môžete skúsiť s doskou s LED diódami pohybovať, aby ste videli či LED svietia kontinuálne, alebo blikajú
Upozorňujeme, že nie každý pin portu sa dá použiť kedykoľvek a na čokoľvek. Napríklad porty GPIO2 a GPIO3 môžete na všeobecné účely použiť iba v prípade aj nie je aktivovaná komunikácia na I2C zbernici. Prečo sme ich teda použili v cvičnom príklade? Aby sme vás upozornili na túto vlastnosť. Na obrázku sú zeleným vyznačené porty, ktoré môžete využiť kedykoľvek a žltým porty, ktoré sa dajú využiť len za určitých okolností. Pri implicitnom nastavení je komunikácia cez I2C zakázaná.
Ukážeme aj obsluhu serva, ktoré často využívajú modelári a konštruktéri robotov.
![]() |
![]() |
Servá sú k dispozícii v rôznych veľkostiach, väčšie sú schopné dodať pomerne vysoký krútiaci moment
Servo je k riadiacej jednotke pripojené pomocou troch vodičov. Na červenom vodiči je kladné napájacie napätie, na čiernom (niekedy hnedom) vodiči je zem a na oranžový vodič sa privádzajú signály. Ovláda sa pomocou PWM. Frekvencia impulzov privádzaných na oranžový vodič je 50 Hz, čo je čas trvania periódy 20 ms. Uhol natočenia sa ovláda šírkou impulzu. U modelárskeho serva SG90 je šírka pulzu 0.5 až 2.5 ms a tejto hodnote zodpovedá uhol natočenia 0°až 180. Príkazom ChangeDutyCycle(hodnota) sa nastavuje pomer šírky impulzov v rozsahu 0 – 100, čiže v percentách Napríklad dĺžka 1,5 ms je 7,5% z 20 ms a nastaví uhol uhol 90 °. Oranžový vodič je vo vnútri serva pripojený na riadiacu elektroniku, nemá veľký prúdový odber, takže ho môžete pripojiť priamo na port.
Aby ste mohli zadávať hodnotu uhla natočenia v stupňoch môžete použiť vzorec
Sirka_Impulzu = uhol/18 + 2
Ostatné časti seriálu:
Programovanie Raspberry Pi v Pythone 1: Konfigurácia https://www.pcrevue.sk/a/IoT-prakticky---programovanie-Raspberry-Pi-v-Pythone---1-cast--konfiguracia
Programovanie Raspberry Pi v Pythone 2: Vstupy a výstupyhttps://www.pcrevue.sk/a/IoT-prakticky---programovanie-Raspberry-Pi-v-Pythone---2-cast--vstupy-a-vystupy
Programovanie Raspberry Pi v Pythone 3: PWM výstup a ovládanie servomotorov https://www.pcrevue.sk/a/IoT-prakticky---programovanie-Raspberry-Pi-v-Pythone-3--PWM-vystup-a-ovladanie-servomotorov
Zobrazit Galériu