- PWM (Modularea lățimii impulsurilor):
- Servomotor și PWM:
- Componente necesare:
- Diagrama circuitului:
- Explicație de lucru și programare:
Raspberry Pi este o placă bazată pe procesor de arhitectură ARM, concepută pentru ingineri electronici și pasionați. PI este una dintre cele mai de încredere platforme de dezvoltare a proiectelor de acum. Cu o viteză mai mare a procesorului și 1 GB RAM, PI poate fi utilizat pentru multe proiecte de profil înalt, cum ar fi procesarea imaginilor și Internetul obiectelor.
Pentru realizarea oricăror proiecte de profil, trebuie să înțelegeți funcțiile de bază ale PI. Vom acoperi toate funcționalitățile de bază ale Raspberry Pi în aceste tutoriale. În fiecare tutorial vom discuta una dintre funcțiile PI. Până la sfârșitul acestei serii de tutoriale Raspberry Pi, veți putea face singuri proiecte de profil înalt. Parcurgeți tutorialele de mai jos:
- Noțiuni introductive despre Raspberry Pi
- Configurare Raspberry Pi
- LED intermitent
- Interfață buton Raspberry Pi
- Generație Raspberry Pi PWM
- Controlul motorului DC folosind Raspberry Pi
- Control motor pas cu pas cu Raspberry Pi
- Interfață Shift Register cu Raspberry Pi
- Tutorial ADC Raspberry Pi
În acest tutorial vom controla Servo Motor cu Raspberry Pi. Înainte de a merge la servo să vorbim despre PWM, deoarece conceptul de control al servomotorului vine de la acesta.
PWM (Modularea lățimii impulsurilor):
Am vorbit anterior despre PWM de multe ori în: Modularea lățimii pulsului cu ATmega32, PWM cu Arduino Uno, PWM cu 555 timer IC și PWM cu Arduino Due. PWM înseamnă „Modularea lățimii impulsurilor”. PWM este o metodă utilizată pentru obținerea tensiunii variabile de la o sursă de alimentare stabilă. Pentru o mai bună înțelegere a PWM, luați în considerare circuitul de mai jos,
În figura de mai sus, dacă întrerupătorul este închis continuu pe o perioadă de timp, LED-ul va fi aprins în acest timp continuu. Dacă comutatorul este închis pentru jumătate de secundă și deschis pentru jumătatea următoarei secunde, atunci LED-ul va fi aprins numai în prima jumătate de secundă. Acum, proporția pentru care LED-ul este aprins în timpul total se numește ciclul de funcționare și poate fi calculată după cum urmează:
Ciclul de funcționare = Timp de pornire / (Timp de pornire + Timp de oprire)
Ciclul de funcționare = (0,5 / (0,5 + 0,5)) = 50%
Deci, tensiunea medie de ieșire va fi de 50% din tensiunea bateriei.
Pe măsură ce creștem viteza de pornire și oprire la un nivel, vom vedea că LED-ul este estompat în loc să fie aprins și oprit. Acest lucru se datorează faptului că ochii noștri nu pot capta clar frecvențe mai mari de 25Hz. Luați în considerare ciclul de 100 ms, LED-ul fiind OFF pentru 30msec și aprins pentru 70msec. Vom avea 70% din tensiune stabilă la ieșire, astfel încât LED-ul va străluci continuu cu 70% din intensitate.
Raportul de funcționare merge de la 0 la 100. „0” înseamnă complet OPRIT și „100” fiind complet ACTIVAT. Acest raport de funcționare este foarte important pentru servomotor. Poziția servomotorului este determinată de acest raport de sarcină. Verificați acest lucru pentru demonstrația PWM cu LED și Raspberry Pi.
Servomotor și PWM:
Un servomotor este o combinație de motor DC, sistem de control al poziției și angrenaje. Servo-urile au multe aplicații în lumea modernă și, cu aceasta, sunt disponibile în diferite forme și dimensiuni. Vom folosi SG90 Servo Motor în acest tutorial, este unul dintre cele mai populare și cele mai ieftine. SG90 este un servo de 180 de grade. Deci, cu acest servo putem poziționa axa de la 0 la 180 de grade.
Un servomotor are în principal trei fire, unul este pentru tensiune pozitivă, altul este pentru masă și ultimul este pentru setarea poziției. Firul roșu este conectat la putere, sârmă Brown este conectat la sol și galben de sârmă (sau alb) este conectat la semnal.
În servo, avem un sistem de control care preia semnalul PWM de la pinul de semnal. Decodează semnalul și obține raportul de funcționare de la acesta. După aceea, compară raportul cu valorile pozițiilor predefinite. Dacă există o diferență în valori, aceasta ajustează poziția servo în consecință. Deci, poziția axei servomotorului se bazează pe raportul de funcționare al semnalului PWM la pinul de semnal.
Frecvența semnalului PWM (Pulse Width Modulated) poate varia în funcție de tipul de servomotor. Pentru SG90 frecvența semnalului PWM este de 50Hz. Pentru a afla frecvența de funcționare a servo-ului dvs., verificați foaia de date pentru acel model particular. Deci, odată ce frecvența este selectată, celălalt lucru important aici este RATIUNEA DE DEBIT a semnalului PWM.
Tabelul de mai jos arată poziția servo pentru acel raport de sarcini. Puteți obține orice unghi între alegând valoarea corespunzătoare. Deci, pentru 45 ° de servo, raportul de sarcină ar trebui să fie de '5' sau 5%.
POZIŢIE |
RAPORTUL DEZVOLTĂRII |
0º |
2.5 |
90º |
7.5 |
180º |
12.5 |
Înainte de interfațarea servomotorului cu Raspberry Pi, puteți testa servo-ul cu ajutorul acestui circuit de testare a servomotorului. Verificați și proiectele Servo de mai jos:
- Servomotor Control folosind Arduino
- Control servomotor cu Arduino Due
- Interfață servomotor cu microcontroler 8051
- Servomotor Control folosind MATLAB
- Control servomotor prin senzor flexibil
- Controlul poziției servo cu greutate (senzor de forță)
Componente necesare:
Aici folosim Raspberry Pi 2 Model B cu Raspbian Jessie OS. Toate cerințele de bază privind hardware-ul și software-ul sunt discutate anterior, le puteți căuta în Introducerea Raspberry Pi, altele decât cele de care avem nevoie:
- Pinii de conectare
- Condensator 1000uF
- Servomotor SG90
- Breadboard
Diagrama circuitului:
A1000µF trebuie conectat pe șina de alimentare + 5V, altfel PI ar putea să se oprească la întâmplare în timp ce controlează servo-ul.
Explicație de lucru și programare:
Odată ce totul este conectat conform schemei circuitului, putem porni PI pentru a scrie programul în PYHTON.
Vom vorbi despre câteva comenzi pe care le vom folosi în programul PYHTON, Vom importa fișierul GPIO din bibliotecă, funcția de mai jos ne permite să programăm pinii GPIO ai PI. De asemenea, redenumim „GPIO” în „IO”, așa că în program ori de câte ori dorim să ne referim la pinii GPIO vom folosi cuvântul „IO”.
import RPi.GPIO ca IO
Uneori, când pinii GPIO, pe care încercăm să îi folosim, ar putea să îndeplinească alte funcții. În acest caz, vom primi avertismente în timpul executării programului. Comanda de mai jos îi spune PI să ignore avertismentele și să continue programul.
IO.setwarnings (Fals)
Putem consulta pinii GPIO ai PI, fie prin numărul pinului la bord, fie prin numărul funcției lor. La fel ca „PIN 29” de pe tablă este „GPIO5”. Deci, spunem aici fie că vom reprezenta pinul aici cu „29” sau „5”.
IO.setmode (IO.BCM)
Setăm PIN39 sau GPIO19 ca pin de ieșire. Vom obține ieșire PWM de la acest pin.
IO.setup (19, IO.OUT)
După setarea pinului de ieșire, trebuie să configurăm pinul ca pin de ieșire PWM, p = IO.PWM (canal de ieșire, frecvența semnalului PWM)
Comanda de mai sus este pentru configurarea canalului și, de asemenea, pentru setarea frecvenței canalului ”. 'p' aici este o variabilă care poate fi orice. Folosim GPIO19 ca „canal de ieșire” PWM. „Frecvența semnalului PWM” vom alege 50, deoarece frecvența de lucru SG90 este de 50Hz.
Comanda de mai jos este utilizată pentru a porni generarea semnalului PWM. „ DUTYCYCLE ” este pentru setarea raportului „Activare” așa cum s-a explicat anterior, p.start (DUTYCYCLE)
Comanda de mai jos este utilizată ca buclă pentru totdeauna, cu această comandă instrucțiunile din această buclă vor fi executate continuu.
În timp ce 1:
Aici programul pentru controlul Servo-ului folosind Raspberry Pi oferă un semnal PWM la GPIO19. Raportul de funcționare al semnalului PWM este modificat între trei valori timp de trei secunde. Deci, pentru fiecare secundă, Servo se rotește într-o poziție determinată de raportul de sarcină. Servo-ul se rotește continuu la 0º, 90º și 180º în trei secunde.