- PWM (pulsbreddemodulation):
- Servomotor og PWM:
- Nødvendige komponenter:
- Kredsløbsdiagram:
- Arbejds- og programmeringsforklaring:
Raspberry Pi er et ARM-arkitekturbaseret kort designet til elektroniske ingeniører og hobbyister. PI er en af de mest pålidelige projektudviklingsplatforme derude nu. Med højere processorhastighed og 1 GB RAM kan PI bruges til mange højt profilerede projekter som billedbehandling og Internet of Things.
For at udføre nogle af højt profilerede projekter skal man forstå de grundlæggende funktioner i PI. Vi vil dække alle de grundlæggende funktioner i Raspberry Pi i disse vejledninger. I hver tutorial vil vi diskutere en af funktionerne i PI. Ved afslutningen af denne Raspberry Pi Tutorial Series vil du være i stand til at lave projekter med høj profil alene. Gå igennem nedenstående vejledninger:
- Kom godt i gang med Raspberry Pi
- Raspberry Pi-konfiguration
- LED Blinkende
- Raspberry Pi-knapgrænseflade
- Raspberry Pi PWM generation
- Styring af jævnstrømsmotor ved hjælp af Raspberry Pi
- Stepper Motor Control med Raspberry Pi
- Interfacing Shift Register med Raspberry Pi
- Raspberry Pi ADC vejledning
I denne vejledning styrer vi Servomotor med Raspberry Pi. Før vi går til servo, lad os tale om PWM, fordi konceptet med at kontrollere servomotor kommer fra det.
PWM (pulsbreddemodulation):
Vi har tidligere talt om PWM mange gange i: Pulsbreddemodulation med ATmega32, PWM med Arduino Uno, PWM med 555 timer IC og PWM med Arduino Due. PWM står for 'Pulse Width Modulation'. PWM er en metode, der bruges til at få variabel spænding fra en stabil strømforsyning. For bedre forståelse af PWM skal du overveje kredsløbet nedenfor,
I ovenstående figur, hvis kontakten lukkes kontinuerligt over en periode, vil LED'en være 'ON' i denne periode kontinuerligt. Hvis kontakten er lukket i et halvt sekund og åbnet i det næste halve sekund, lyser LED kun i det første halve sekund. Nu kaldes den andel, som LED'en er tændt over den samlede tid, Duty Cycle og kan beregnes som følger:
Arbejdscyklus = Tænd tid / (Tænd tid + Sluk tid)
Arbejdscyklus = (0,5 / (0,5 + 0,5)) = 50%
Så den gennemsnitlige udgangsspænding vil være 50% af batterispændingen.
Når vi øger ON og OFF-hastigheden til et niveau, vil vi se, at LED'en dæmpes i stedet for at være ON og OFF. Dette skyldes, at vores øjne ikke kan fange frekvenser højere end 25Hz tydeligt. Overvej 100 ms cyklus, LED er slukket i 30 ms og ON i 70 ms. Vi har 70% stabil spænding ved udgangen, så LED lyser konstant med 70% intensitet.
Duty Ratio går fra 0 til 100. '0' betyder helt OFF og '100' er helt ON. Denne toldforhold er meget vigtig for servomotoren. Servomotors position bestemmes af denne toldforhold. Tjek dette for PWM-demonstration med LED og Raspberry Pi.
Servomotor og PWM:
En servomotor er en kombination af jævnstrømsmotor, positionskontrolsystem og gear. Servoer har mange applikationer i den moderne verden, og med det fås de i forskellige former og størrelser. Vi bruger SG90 Servo Motor i denne vejledning, det er en af de populære og billigste. SG90 er en 180 graders servo. Så med denne servo kan vi placere aksen fra 0-180 grader.
En servomotor har hovedsageligt tre ledninger, den ene er for positiv spænding, den anden er for jord og den sidste er for positionsindstilling. Den røde ledning er tilsluttet strøm, brun ledning er forbundet til jord, og gul ledning (eller HVID) er forbundet til signalet.
I servo har vi et kontrolsystem, der tager PWM-signalet fra Signal pin. Det afkoder signalet og får pligtforholdet fra det. Derefter sammenligner det forholdet med de foruddefinerede positionsværdier. Hvis der er en forskel i værdierne, justerer den servopositionen i overensstemmelse hermed. Så akselmotoren for servomotoren er baseret på PWM-signalets arbejdsforhold ved signalstiften.
Frekvensen af PWM-signal (Pulse Width Modulated) kan variere afhængigt af servomotorens type. For SG90 er PWM-signalets frekvens 50Hz. For at finde ud af hyppigheden af din servo skal du kontrollere databladet for den pågældende model. Så når frekvensen er valgt, er den anden vigtige ting her Pligningsforholdet for PWM-signalet.
Tabellen nedenfor viser servopositionen for det pågældende toldforhold. Du kan få en hvilken som helst vinkel imellem ved at vælge værdien i overensstemmelse hermed. Så for 45º servo skal toldforholdet være '5' eller 5%.
POSITION |
Pligtforhold |
0º |
2.5 |
90º |
7.5 |
180º |
12.5 |
Inden interfacering af servomotor til Raspberry Pi kan du teste din servo ved hjælp af dette Servo Motor Tester Circuit. Se også nedenstående servoprojekter:
- Servomotorstyring ved hjælp af Arduino
- Servomotorstyring med Arduino Due
- Servomotorgrænseflade med 8051 mikrokontroller
- Servomotorstyring ved hjælp af MATLAB
- Servomotorstyring med Flex-sensor
- Servopositionskontrol med vægt (Force Sensor)
Nødvendige komponenter:
Her bruger vi Raspberry Pi 2 Model B med Raspbian Jessie OS. Alle de grundlæggende hardware- og softwarekrav er tidligere diskuteret, du kan slå det op i Raspberry Pi Introduktion, bortset fra hvad vi har brug for:
- Tilslutningsstifter
- 1000uF kondensator
- SG90 Servomotor
- Brødbræt
Kredsløbsdiagram:
A1000µF skal tilsluttes over + 5V-strømskinnen, ellers lukker PI muligvis tilfældigt, mens du styrer servoen.
Arbejds- og programmeringsforklaring:
Når alt er tilsluttet i henhold til kredsløbsdiagrammet, kan vi tænde PI for at skrive programmet i PYHTON.
Vi vil tale om få kommandoer, som vi skal bruge i PYHTON-programmet, Vi skal importere GPIO-filer fra biblioteket, nedenstående funktion giver os mulighed for at programmere GPIO-ben på PI. Vi omdøber også "GPIO" til "IO", så når vi vil henvise til GPIO-ben i programmet, bruger vi ordet 'IO'.
importer RPi.GPIO som IO
Nogle gange, når GPIO-stifterne, som vi prøver at bruge, udfører måske nogle andre funktioner. I så fald modtager vi advarsler, mens vi udfører programmet. Kommandoen nedenfor fortæller PI at ignorere advarslerne og fortsætte med programmet.
IO.setwarnings (Falsk)
Vi kan henvise GPIO-benene på PI, enten ved pin-nummer om bord eller ved deres funktionsnummer. Ligesom 'PIN 29' på tavlen er 'GPIO5'. Så vi fortæller her, enten skal vi repræsentere stiften her med '29' eller '5'.
IO.setmode (IO.BCM)
Vi indstiller PIN39 eller GPIO19 som outputnål. Vi får PWM-output fra denne pin.
IO.setup (19, IO.OUT)
Efter at have indstillet output pin, er vi nødt til at indstille pin som PWM output pin, p = IO.PWM (outputkanal, frekvens af PWM-signal)
Ovenstående kommando er til opsætning af kanalen og også til opsætning af kanalens frekvens ”. 'p' her er en variabel, det kan være hvad som helst. Vi bruger GPIO19 som PWM “Output channel. “Frekvens af PWM-signal” vælger vi 50, da SG90-arbejdsfrekvensen er 50Hz.
Nedenstående kommando bruges til at starte PWM-signalgenerering. ' DUTYCYCLE ' er til indstilling af 'Turn On' -forholdet som forklaret før, p.start (DUTYCYCLE)
Nedenstående kommando bruges som evigt løkke, med denne kommando udføres udsagnene inde i denne løb kontinuerligt.
Mens 1:
Her giver programmet til styring af servo ved hjælp af Raspberry Pi et PWM-signal på GPIO19. PWM-signalets arbejdsforhold ændres mellem tre værdier i tre sekunder. Så for hvert sekund roterer Servo til en position bestemt af Duty Ratio. Servoen roterer kontinuerligt til 0º, 90º og 180º på tre sekunder.