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
În acest tutorial, vom controla viteza unui motor pas cu pas folosind Raspberry Pi. În Motorul pas cu pas, așa cum spune și numele, rotația arborelui este în formă de pas. Există diferite tipuri de motor pas cu pas; aici vom folosi cel mai popular motor Unipolar Stepper Motor. Spre deosebire de motorul de curent continuu, putem roti motorul pas cu pas la orice unghi special dându-i instrucțiuni adecvate.
Pentru a roti acest motor pas cu pas în patru etape, vom livra impulsuri de putere utilizând circuitul driverului motorului pas cu pas. Circuitul driverului ia declanșatoare logice de la PI. Dacă controlăm declanșatoarele logice, controlăm impulsurile de putere și, prin urmare, viteza motorului pas cu pas.
Există 40 de pini de ieșire GPIO în Raspberry Pi 2. Dar din 40, pot fi programate doar 26 de pini GPIO (GPIO2 până la GPIO27). Unele dintre aceste pini îndeplinesc unele funcții speciale. Cu GPIO special pus deoparte, mai avem doar 17 GPIO. Fiecare dintre acești 17 pini GPIO poate furniza un curent maxim de 15mA. Iar suma curenților de la toți pinii GPIO nu poate depăși 50mA. Pentru a afla mai multe despre pinii GPIO, accesați: LED-ul clipește cu Raspberry Pi
Există pinuri de ieșire de putere + 5V (Pin 2 și 4) și + 3,3V (Pin 1 și 17) pe placa pentru conectarea altor module și senzori. Aceste șine electrice nu pot fi utilizate pentru a acționa motorul pas cu pas, deoarece avem nevoie de mai multă putere pentru a-l roti. Deci, trebuie să livrăm puterea motorului pas cu pas de la o altă sursă de energie. Motorul meu pas cu pas are o tensiune nominală de 9V, așa că folosesc o baterie de 9v ca a doua sursă de alimentare. Căutați numărul modelului motorului dvs. pas cu pas pentru a afla tensiunea nominală. În funcție de rating, alegeți sursa secundară în mod corespunzător.
După cum sa menționat mai devreme, avem nevoie de un circuit driver pentru a acționa motorul pas cu pas. De asemenea, vom proiecta aici un circuit de driver de tranzistor simplu.
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
- Rezistor 220Ω sau 1KΩ (3)
- Motor pas cu pas
- Butoane (2)
- 2N2222 Tranzistor (4)
- 1N4007 Diodă (4)
- Condensator - 1000uF
- Pâine
Explicația circuitului:
Motorul pas cu pas folosește 200 de pași pentru a finaliza rotația de 360 de grade, înseamnă că se rotește cu 1,8 grade pe pas. În timp ce conducem un motor cu patru etape, trebuie să acordăm patru impulsuri pentru a finaliza un singur ciclu logic. Fiecare pas al acestui motor completează 1,8 grade de rotație, deci pentru a finaliza un ciclu avem nevoie de 200 de impulsuri. Deci 200/4 = 50 cicluri logice necesare pentru a finaliza o singură rotație. Verificați acest lucru pentru a afla mai multe despre Steppers Motors și modurile sale de conducere.
Vom conduce fiecare dintre aceste patru bobine cu un tranzistor NPN (2N2222), acest tranzistor NPN preia impulsul logic de la PI și conduce bobina corespunzătoare. Patru tranzistori iau patru logici de la PI pentru a conduce patru etape ale motorului pas cu pas.
Circuitul driverului tranzistorului este o configurare dificilă; aici ar trebui să fim atenți la faptul că conectarea greșită a tranzistorului ar putea încărca placa puternic și să o deterioreze. Verificați acest lucru pentru a înțelege corect circuitul driverului motorului pas cu pas.
Motorul este o inducție și, astfel, în timp ce comutăm motorul, experimentăm creșterea inductivă. Acest spiking va încălzi puternic tranzistorul, așa că vom folosi dioda (1N4007) pentru a oferi protecție tranzistorului împotriva spikingului inductiv.
Pentru a reduce fluctuațiile de tensiune, vom conecta un condensator 1000uF pe sursa de alimentare, așa cum se arată în schema de circuite.
Explicație de lucru:
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 35” de pe tablă este „GPIO19”. Deci, spunem aici fie că vom reprezenta pinul aici cu „35”, fie cu „19”.
IO.setmode (IO.BCM)
Setăm patru pini GPIO ca ieșire pentru acționarea a patru bobine ale motorului pas cu pas.
IO.setup (5, IO.OUT) IO.setup (17, IO.OUT) IO.setup (27, IO.OUT) IO.setup (22, IO.OUT)
Setăm GPIO26 și GPIO19 ca pini de intrare. Vom detecta apăsarea butonului de acești pini.
IO.setup (19, IO.IN) IO.setup (26, IO.IN)
În cazul în care condiția din paranteze este adevărată, instrucțiunile din buclă vor fi executate o singură dată. Deci, dacă pinul GPIO 26 scade, atunci instrucțiunile din bucla IF vor fi executate o singură dată. Dacă pinul GPIO 26 nu scade, atunci instrucțiunile din bucla IF nu vor fi executate.
if (IO.input (26) == False):
Această comandă execută bucla de 100 de ori, x fiind incrementat de la 0 la 99.
pentru x în intervalul (100):
În timp ce 1: este utilizat pentru bucla infinită. Cu această comandă, instrucțiunile din această buclă vor fi executate continuu.
Avem toate comenzile necesare pentru a realiza controlul vitezei motorului pas cu pas cu aceasta.
După ce am scris programul și l-am executat, nu mai rămâne decât să acționăm controlul. Avem două butoane conectate la PI. Unul pentru incrementează întârzierea dintre cele patru impulsuri și altul pentru scade întârzierea dintre cele patru impulsuri. Întârzierea în sine vorbește despre viteză; dacă întârzierea este mai mare, motorul ia frâne între fiecare pas și astfel rotația este lentă. Dacă întârzierea este aproape de zero, atunci motorul se rotește la viteza maximă.
Aici ar trebui să ne amintim că, ar trebui să existe o anumită întârziere între impulsuri. După ce a dat un impuls, motorul pas cu pas necesită câteva milisecunde de timp pentru a ajunge la stadiul final. Dacă nu există nicio întârziere între impulsuri, motorul pas cu pas nu se va mișca deloc. În mod normal, întârzierea de 50 ms este bună între impulsuri. Pentru informații mai precise, consultați fișa tehnică.
Deci, cu două butoane putem controla întârzierea, care la rândul său controlează viteza motorului pas cu pas.