- PWM (pulsbreddemodulering):
- Servomotor og PWM:
- Nødvendige komponenter:
- Kretsdiagram:
- Arbeid og programmering Forklaring:
Raspberry Pi er et ARM-arkitekturbasert kort designet for elektroniske ingeniører og hobbyister. PI er en av de mest pålitelige plattformene for prosjektutvikling der ute nå. Med høyere prosessorhastighet og 1 GB RAM kan PI brukes til mange høyprofilerte prosjekter som bildebehandling og tingenes internett.
For å gjøre noen av høyprofilerte prosjekter, må man forstå de grunnleggende funksjonene til PI. Vi vil dekke alle de grunnleggende funksjonene til Raspberry Pi i disse opplæringene. I hver opplæring vil vi diskutere en av funksjonene til PI. Ved slutten av denne Raspberry Pi Tutorial Series, vil du kunne gjøre høyprofilerte prosjekter alene. Gå gjennom veiledningene nedenfor:
- Komme i gang med Raspberry Pi
- Raspberry Pi-konfigurasjon
- LED Blinky
- Raspberry Pi-knappegrensesnitt
- Raspberry Pi PWM generasjon
- Kontrollerer DC-motor ved hjelp av Raspberry Pi
- Stepper Motor Control med Raspberry Pi
- Interfacing Shift Register med Raspberry Pi
- Raspberry Pi ADC opplæring
I denne opplæringen vil vi kontrollere servomotor med Raspberry Pi. Før vi går til servo, la oss snakke om PWM fordi konseptet med å kontrollere Servomotor kommer fra det.
PWM (pulsbreddemodulering):
Vi har tidligere snakket om PWM mange ganger i: Pulsbreddemodulering 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 som brukes for å få variabel spenning fra en stabil strømforsyning. For bedre forståelse av PWM, vurder kretsen nedenfor,
I figuren ovenfor, hvis bryteren er stengt kontinuerlig over en periode, vil LED-lampen være 'PÅ' i løpet av denne tiden kontinuerlig. Hvis bryteren er lukket i et halvt sekund og åpnet i neste halve sekund, vil LED bare være PÅ i det første halvdelen av et sekund. Nå kalles andelen som lysdioden er PÅ over den totale tiden Duty Cycle, og kan beregnes som følger:
Driftssyklus = Slå på tid / (Slå på tid + slå av tid)
Driftssyklus = (0,5 / (0,5 + 0,5)) = 50%
Så den gjennomsnittlige utgangsspenningen vil være 50% av batterispenningen.
Når vi øker PÅ og AV-hastigheten til et nivå, vil vi se at lysdioden blir dempet i stedet for å være PÅ og AV. Dette er fordi øynene våre ikke kan fange frekvenser høyere enn 25Hz tydelig. Tenk på 100 ms syklus, LED er AV i 30 ms og PÅ i 70 ms. Vi vil ha 70% stabil spenning ved utgangen, så LED lyser kontinuerlig med 70% intensitet.
Duty Ratio går fra 0 til 100. '0' betyr helt AV og '100' er helt PÅ. Denne driftsforholdet er veldig viktig for servomotoren. Servo Motors posisjon bestemmes av dette Duty Ratio. Sjekk dette for PWM-demonstrasjon med LED og Raspberry Pi.
Servomotor og PWM:
En servomotor er en kombinasjon av likestrømsmotor, posisjonskontrollsystem og gir. Servoer har mange applikasjoner i den moderne verden, og med det er de tilgjengelige i forskjellige former og størrelser. Vi bruker SG90 Servo Motor i denne opplæringen, den er en av de mest populære og billigste. SG90 er en 180 graders servo. Så med denne servoen kan vi plassere aksen fra 0-180 grader.
En servomotor har hovedsakelig tre ledninger, den ene er for positiv spenning, den andre er for bakken og den siste er for posisjonsinnstilling. Den røde ledningen er koblet til strøm, brun ledning er koblet til jord og gul ledning (eller HVIT) er koblet til signalet.
I servo har vi et kontrollsystem som tar PWM-signalet fra Signal pin. Den dekoder signalet og får pliktforholdet fra det. Etter det sammenligner det forholdet til de forhåndsdefinerte posisjonsverdiene. Hvis det er forskjell i verdiene, justerer den posisjonen til servoen deretter. Så akseposisjonen til servomotoren er basert på pliktforholdet til PWM-signalet ved signalpinnen.
Frekvensen av PWM (Pulse Width Modulated) signal kan variere avhengig av type servomotor. For SG90 er frekvensen av PWM-signalet 50Hz. For å finne ut hvor hyppig driften for servoen din er, sjekk databladet for den aktuelle modellen. Så når frekvensen er valgt, er den andre viktige tingen PUT-forholdet til PWM-signalet.
Tabellen nedenfor viser Servoposisjon for det aktuelle Duty Ratio. Du kan få en hvilken som helst vinkel imellom ved å velge verdien tilsvarende. Så for 45º servo skal Duty Ratio være '5' eller 5%.
POSISJON |
PLIKTFORHOLD |
0º |
2.5 |
90º |
7.5 |
180º |
12.5 |
Før du kobler servomotor til Raspberry Pi, kan du teste servoen din ved hjelp av denne servomotortesterkretsen. Sjekk også våre Servo-prosjekter nedenfor:
- Servomotorstyring ved hjelp av Arduino
- Servomotorstyring med Arduino Due
- Servomotorgrensesnitt med 8051 mikrokontroller
- Servomotorstyring ved bruk av MATLAB
- Servomotorstyring av Flex-sensor
- Servoposisjonskontroll med vekt (kraftsensor)
Nødvendige komponenter:
Her bruker vi Raspberry Pi 2 Model B med Raspbian Jessie OS. Alle de grunnleggende maskinvare- og programvarekravene er tidligere diskutert, du kan slå opp i Raspberry Pi Introduksjon, annet enn det vi trenger:
- Koble pinner
- 1000uF kondensator
- SG90 Servomotor
- Brettbrett
Kretsdiagram:
A1000µF må være koblet over + 5V strømskinne, ellers kan PI slå seg av tilfeldig mens du styrer servoen.
Arbeid og programmering Forklaring:
Når alt er koblet til i henhold til kretsskjemaet, kan vi slå PI på for å skrive programmet i PYHTON.
Vi vil snakke om få kommandoer som vi skal bruke i PYHTON-programmet, Vi skal importere GPIO-filer fra biblioteket, under funksjonen gjør det mulig for oss å programmere GPIO-pinner på PI. Vi omdøper også "GPIO" til "IO", så når vi vil referere til GPIO-pinner i programmet, bruker vi ordet "IO".
importer RPi.GPIO som IO
Noen ganger, når GPIO-pinnene, som vi prøver å bruke, gjør noen andre funksjoner. I så fall vil vi motta advarsler mens vi kjører programmet. Kommandoen nedenfor forteller PI å ignorere advarslene og fortsette med programmet.
IO.setwarnings (False)
Vi kan henvise GPIO-pinnene til PI, enten med pin-nummer om bord eller etter deres funksjonsnummer. Som 'PIN 29' på tavlen er 'GPIO5'. Så vi forteller her at enten skal vi representere nålen her med '29' eller '5'.
IO.setmode (IO.BCM)
Vi setter PIN39 eller GPIO19 som utgangsnål. Vi får PWM-utgang fra denne pinnen.
IO.setup (19, IO.OUT)
Etter å ha satt utgangspinnen, må vi sette opp pinnen som PWM-utgangspinne, p = IO.PWM (utgangskanal, frekvens av PWM-signal)
Ovennevnte kommando er for å sette opp kanalen og også for å sette opp frekvensen til kanalen ”. 'p' her er en variabel det kan være hva som helst. Vi bruker GPIO19 som PWM “Output channel. “Frekvens av PWM-signal” vil vi velge 50, da SG90 arbeidsfrekvens er 50Hz.
Kommandoen nedenfor brukes til å starte generering av PWM-signal. ' DUTYCYCLE ' er for å stille inn 'Turn On' -forholdet som forklart før, p.start (DUTYCYCLE)
Nedenfor brukes kommandoen som evig sløyfe, med denne kommandoen vil setningene i denne sløyfen utføres kontinuerlig.
Mens 1:
Her gir programmet for styring av servoen ved hjelp av Raspberry Pi et PWM-signal på GPIO19. Duty Ratio av PWM-signalet endres mellom tre verdier i tre sekunder. Så for hvert sekund roterer Servo til en posisjon bestemt av Duty Ratio. Servoen roterer kontinuerlig til 0 °, 90 ° og 180 ° på tre sekunder.