- PWM (pulsbreddsmodulering):
- Servomotor och PWM:
- Komponenter som krävs:
- Kretsschema:
- Arbets- och programmeringsförklaring:
Raspberry Pi är ett ARM-arkitekturbaserat kort designat för elektroniska ingenjörer och hobbyister. PI är en av de mest betrodda projektutvecklingsplattformarna där ute nu. Med högre processorhastighet och 1 GB RAM kan PI användas för många högprofilerade projekt som bildbehandling och Internet of Things.
För att göra något av högprofilerade projekt måste man förstå de grundläggande funktionerna i PI. Vi kommer att täcka alla grundläggande funktioner i Raspberry Pi i dessa handledning. I varje handledning kommer vi att diskutera en av funktionerna i PI. I slutet av denna Raspberry Pi-handledningsserie kommer du att kunna göra högprofilerade projekt själv. Gå igenom handledningarna nedan:
- Komma igång med Raspberry Pi
- Raspberry Pi-konfiguration
- LED blinkande
- Raspberry Pi-knappgränssnitt
- Raspberry Pi PWM-generation
- Styr DC-motor med Raspberry Pi
- Stegmotorstyrning med Raspberry Pi
- Interfacing Shift Register med Raspberry Pi
- Raspberry Pi ADC-handledning
I den här guiden kommer vi att styra servomotor med Raspberry Pi. Innan vi går till servo ska vi prata om PWM eftersom begreppet att styra Servomotor kommer från det.
PWM (pulsbreddsmodulering):
Vi har tidigare pratat om PWM många gånger i: Pulsbreddsmodulering med ATmega32, PWM med Arduino Uno, PWM med 555 timer IC och PWM med Arduino Due. PWM står för 'Pulse Width Modulation'. PWM är en metod som används för att få variabel spänning från en stabil strömförsörjning. För bättre förståelse av PWM, överväg kretsen nedan,
I figuren ovan, om strömbrytaren stängs kontinuerligt under en tidsperiod, kommer lysdioden att vara "PÅ" under denna tid kontinuerligt. Om omkopplaren är stängd i halv sekund och öppnas i nästa halv sekund, kommer lysdioden att lysa först under den första halva sekunden. Nu kallas andelen för vilken lysdioden lyser under den totala tiden Duty Cycle och kan beräknas enligt följande:
Driftscykel = Slå PÅ-tid / (Slå PÅ-tid + Stäng av tid)
Driftscykel = (0,5 / (0,5 + 0,5)) = 50%
Så den genomsnittliga utspänningen kommer att vara 50% av batterispänningen.
När vi ökar PÅ och AV-hastigheten till en nivå ser vi att lysdioden är nedtonad istället för att vara PÅ och AV. Detta beror på att våra ögon inte kan fånga frekvenser högre än 25Hz tydligt. Tänk på 100 ms cykel, lysdioden är AV i 30 ms och PÅ i 70 ms. Vi kommer att ha 70% stabil spänning vid utgången, så LED lyser kontinuerligt med 70% intensitet.
Duty Ratio går från 0 till 100. '0' betyder helt AV och '100' är helt PÅ. Detta arbetsförhållande är mycket viktigt för servomotorn. Servomotorns position bestäms av detta arbetsförhållande. Kontrollera detta för PWM-demonstration med LED och Raspberry Pi.
Servomotor och PWM:
En servomotor är en kombination av likströmsmotor, positionskontrollsystem och växlar. Servos har många applikationer i den moderna världen och med det finns de i olika former och storlekar. Vi kommer att använda SG90 Servo Motor i denna handledning, den är en av de populäraste och billigaste. SG90 är en 180 graders servo. Så med denna servo kan vi placera axeln från 0-180 grader.
En servomotor har huvudsakligen tre ledningar, en är för positiv spänning, en annan är för jord och den sista är för lägesinställning. Den röda ledningen är ansluten till ström, den brun ledningen är ansluten till jord och den gula ledningen (eller VIT) är ansluten till signalen.
I servo har vi ett styrsystem som tar PWM-signalen från Signalstift. Den avkodar signalen och får arbetsförhållandet från den. Därefter jämförs förhållandet med de fördefinierade positionsvärdena. Om det finns en skillnad i värdena justerar den servopositionen i enlighet med detta. Så servomotorns axelposition baseras på PWM-signalens arbetsförhållande vid signalstiftet.
Frekvensen för PWM-signalen (Pulse Width Modulated) kan variera beroende på typ av servomotor. För SG90 är PWM-signalens frekvens 50Hz. För att ta reda på frekvensen för din servo, kolla databladet för just den modellen. Så när frekvensen väljs är det andra viktiga här PUTM-signalen.
Tabellen nedan visar servopositionen för det specifika arbetsförhållandet. Du kan få valfri vinkel däremellan genom att välja värdet i enlighet därmed. Så för 45º servo bör Duty Ratio vara '5' eller 5%.
PLACERA |
PLIKTFÖRHÅLLANDE |
0º |
2.5 |
90º |
7.5 |
180º |
12.5 |
Innan du kopplar ihop servomotorn till Raspberry Pi kan du testa din servo med hjälp av denna Servomotor-testkrets. Kontrollera även våra Servo-projekt nedan:
- Servomotorstyrning med Arduino
- Servomotorstyrning med Arduino Due
- Servomotorgränssnitt med 8051 mikrokontroller
- Servomotorstyrning med MATLAB
- Servomotorstyrning med flexsensor
- Servopositionskontroll med vikt (kraftsensor)
Komponenter som krävs:
Här använder vi Raspberry Pi 2 Model B med Raspbian Jessie OS. Alla grundläggande hårdvaru- och mjukvarukrav har tidigare diskuterats, du kan slå upp det i Raspberry Pi Introduktion, annat än vad vi behöver:
- Anslutningsstift
- 1000uF kondensator
- SG90 Servomotor
- Bakbord
Kretsschema:
A1000 µF måste anslutas över + 5V-strömskenan, annars kan PI stängas av slumpmässigt medan du styr servon.
Arbets- och programmeringsförklaring:
När allt är anslutet enligt kretsschemat, kan vi sätta PÅ PI för att skriva programmet i PYHTON.
Vi kommer att prata om några kommandon som vi ska använda i PYHTON-programmet, Vi ska importera GPIO-filer från biblioteket, nedanstående funktion gör att vi kan programmera GPIO-stift av PI. Vi döper också om "GPIO" till "IO", så i programmet när vi vill hänvisa till GPIO-stift kommer vi att använda ordet "IO".
importera RPi.GPIO som IO
Ibland, när GPIO-stiften, som vi försöker använda, kan göra några andra funktioner. I så fall får vi varningar när vi kör programmet. Kommandot nedan ber PI att ignorera varningarna och fortsätta med programmet.
IO.setwarnings (False)
Vi kan hänvisa GPIO-stift på PI, antingen med stiftnummer ombord eller med deras funktionsnummer. Precis som 'PIN 29' på tavlan är 'GPIO5'. Så vi säger här antingen att vi kommer att representera nålen här med '29' eller '5'.
IO.setmode (IO.BCM)
Vi ställer in PIN39 eller GPIO19 som utgångsstift. Vi kommer att få PWM-utdata från denna stift.
IO.setup (19, IO.OUT)
Efter att ha ställt in utgångsstiftet måste vi ställa in stiftet som PWM-utgångsstift, p = IO.PWM (utgångskanal, PWM-signalfrekvens)
Ovanstående kommando är för att ställa in kanalen och även för att ställa in kanalens frekvens ”. 'p' här är en variabel det kan vara vad som helst. Vi använder GPIO19 som PWM “Output channel. ”Frekvens av PWM-signal” väljer vi 50, eftersom SG90-arbetsfrekvensen är 50Hz.
Kommandot nedan används för att starta PWM-signalgenerering. ' DUTYCYCLE ' är för att ställa in förhållandet 'Turn On' som förklarats tidigare, p.start (DUTYCYCLE)
Nedan kommandot används som alltid loop, med detta kommando kommer uttalandena inuti denna loop att köras kontinuerligt.
Medan 1:
Här ger programmet för styrning av servon med Raspberry Pi en PWM-signal på GPIO19. PWM-signalens arbetsförhållande ändras mellan tre värden i tre sekunder. Så för varje sekund roterar Servo till en position bestämd av Duty Ratio. Servon roterar kontinuerligt till 0º, 90º och 180º på tre sekunder.