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 opplæringsserien vil du kunne gjøre høyprofilerte prosjekter alene. Sjekk disse for å komme i gang med Raspberry Pi og Raspberry Pi Configuration.
Vi har diskutert LED Blinky, Button Interfacing og PWM generasjon i tidligere veiledninger. I denne opplæringen vil vi kontrollere hastigheten til en DC-motor ved hjelp av Raspberry Pi og PWM-teknikk. PWM (Pulse Width Modulation) er en metode som brukes for å få variabel spenning ut av konstant strømkilde. Vi har diskutert PWM i forrige opplæring.
Det er 40 GPIO-utgangspinner i Raspberry Pi 2. Men av 40 kan bare 26 GPIO-pinner (GPIO2 til GPIO27) programmeres. Noen av disse pinnene utfører noen spesielle funksjoner. Med spesial GPIO satt til side, har vi 17 GPIO igjen. For å vite mer om GPIO-pinner, gå gjennom: LED blinker med Raspberry Pi
Hver av disse 17 GPIO-pinnene kan levere maksimalt 15 mA. Og summen av strømmer fra alle GPIO-pins kan ikke overstige 50 mA. Så vi kan trekke maksimalt 3 mA i gjennomsnitt fra hver av disse GPIO-pinnene. Så man skal ikke tukle med disse tingene med mindre du vet hva du gjør.
Det er + 5V (Pin 2 & 4) og + 3.3V (Pin 1 & 17) strømuttak på kortet for tilkobling av andre moduler og sensorer. Denne strømskinnen er koblet parallelt med prosessorstrøm. Så å trekke høy strøm fra denne motorskinnen påvirker prosessoren. Det er en sikring på PI-kortet som vil utløse når du bruker høy belastning. Du kan trekke 100mA trygt fra + 3,3V skinnen. Vi snakker om dette her fordi; vi kobler DC-motoren til + 3,3V. Med tanke på effektgrensen kan vi bare koble til motor med lav effekt her, hvis du vil kjøre motor med høy effekt, kan du vurdere å drive den fra en egen strømkilde.
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
- 220Ω eller 1KΩ motstand (3)
- Liten DC-motor
- Knapper (2)
- 2N2222 Transistor
- 1N4007 Diode
- Kondensator - 1000uF
- Brødtavle
Kretsforklaring:
Som sagt tidligere, kan vi ikke trekke mer enn 15mA fra noen GPIO-pinner og DC-motor trekker mer enn 15mA, så PWM generert av Raspberry Pi kan ikke mates direkte til DC-motoren. Så hvis vi kobler motoren direkte til PI for hastighetskontroll, kan kortet bli skadet permanent.
Så vi skal bruke en NPN-transistor (2N2222) som en bryterenhet. Denne transistoren driver her DC-motoren med høy effekt ved å ta PWM-signal fra PI. Her bør man være oppmerksom på at feilkobling av transistoren kan belaste kortet tungt.
Motoren er en induksjon, og mens vi bytter motor, opplever vi induktiv spiking. Denne spikingen vil varme opp transistoren tungt, så vi vil bruke diode (1N4007) for å gi beskyttelse til transistoren mot induktiv spiking.
For å redusere spenningssvingningene, kobler vi en 1000uF kondensator over strømforsyningen som vist i kretsdiagrammet.
Arbeidsforklaring:
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 35' på tavlen er 'GPIO19'. Så vi forteller her enten at vi skal representere nålen her med '35' eller '19'.
IO.setmode (IO.BCM)
Vi setter GPIO19 (eller PIN35) som utgangsnål. Vi får PWM-utgang fra denne pinnen.
IO.setup (19, IO.IN)
Etter å ha stilt pinnen som utgang, 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 PWM-signalet. 'p' her er en variabel det kan være hva som helst. Vi bruker GPIO19 som PWM- utgangskanal . ' frekvens av PWM-signal ' er valgt 100, ettersom vi ikke vil se at LED blinker.
Kommandoen nedenfor brukes til å starte generering av PWM-signal, ' DUTYCYCLE ' er for innstilling av Turn On ratio, 0 betyr at LED vil være PÅ i 0% av tiden, 30 betyr at LED vil være PÅ i 30% av tiden og 100 betyr helt PÅ.
p.start (DUTYCYCLE)
Hvis tilstanden i klammeparentesene er oppfylt, vil utsagnene i løkken utføres en gang. Så hvis GPIO-tappen 26 blir lav, vil utsagnene i IF-sløyfen utføres en gang. Hvis GPIO-tappen 26 ikke blir lav, vil ikke utsagnene i IF-sløyfen bli utført.
if (IO.input (26) == False):
Mens 1: brukes til uendelig sløyfe. Med denne kommandoen vil utsagnene i denne sløyfen utføres kontinuerlig.
Vi har alle kommandoene som trengs for å oppnå fartskontrollen med dette.
Etter at du har skrevet programmet og kjørt det, er alt som er igjen å betjene kontrollen. Vi har to knapper koblet til PI; en for inkrementering av Duty Cycle of PWM signal og en for å dekrementere Duty Cycle of PWM signal. Ved å trykke på den ene knappen øker hastigheten på DC-motoren, og ved å trykke på den andre knappen, reduseres hastigheten på DC-motoren. Med dette har vi oppnådd DC Motor Speed Control av Raspberry Pi.
Sjekk også:
- DC motorhastighetskontroll
- DC Motor Control ved hjelp av Arduino