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 tutorial-serien vil du være i stand til at lave projekter med høj profil alene. Tjek disse for at komme i gang med Raspberry Pi og Raspberry Pi Configuration.
Vi har diskuteret LED Blinky, Button Interfacing og PWM generation i tidligere tutorials. I denne vejledning styrer vi hastigheden på en DC-motor ved hjælp af Raspberry Pi og PWM-teknik. PWM (Pulse Width Modulation) er en metode, der bruges til at få variabel spænding ud af konstant strømkilde. Vi har diskuteret om PWM i den foregående vejledning.
Der er 40 GPIO output pins i Raspberry Pi 2. Men ud af 40 kan kun 26 GPIO-ben (GPIO2 til GPIO27) programmeres. Nogle af disse ben udfører nogle specielle funktioner. Med særlig GPIO afsat har vi 17 GPIO tilbage. Hvis du vil vide mere om GPIO-ben, skal du gå igennem: LED blinker med Raspberry Pi
Hver af disse 17 GPIO-pin kan maksimalt levere 15mA. Og summen af strømme fra alle GPIO-pins kan ikke overstige 50 mA. Så vi kan maksimalt trække 3 mA i gennemsnit fra hver af disse GPIO-ben. Så man bør ikke manipulere med disse ting, medmindre man ved hvad man laver.
Der er + 5V (Pin 2 & 4) og + 3.3V (Pin 1 & 17) power output pins på kortet til tilslutning af andre moduler og sensorer. Denne strømskinne er forbundet parallelt med processorkraft. Så at trække høj strøm fra denne motorskinne påvirker processoren. Der er en sikring på PI-kortet, som vil udløse, når du anvender høj belastning. Du kan trække 100mA sikkert fra + 3,3V skinnen. Vi taler om dette her fordi; vi forbinder jævnstrømsmotoren til + 3.3V. Med tanke på effektgrænsen kan vi kun forbinde motor med lav effekt her, hvis du vil køre motor med høj effekt, skal du overveje at tænde den fra en separat strømkilde.
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
- 220Ω eller 1KΩ modstand (3)
- Lille jævnstrømsmotor
- Knapper (2)
- 2N2222 Transistor
- 1N4007 Diode
- Kondensator- 1000uF
- Brødbræt
Forklaring af kredsløb:
Som tidligere nævnt kan vi ikke trække mere end 15mA fra nogen GPIO-ben, og DC-motor trækker mere end 15mA, så PWM genereret af Raspberry Pi kan ikke føres direkte til DC-motoren. Så hvis vi forbinder motoren direkte til PI for hastighedskontrol, kan kortet blive beskadiget permanent.
Så vi skal bruge en NPN-transistor (2N2222) som en switch-enhed. Denne transistor driver her DC-motoren med høj effekt ved at tage PWM-signal fra PI. Her skal man være opmærksom på, at forkert tilslutning af transistoren kan belaste tavlen tungt.
Motoren er en induktion, og så mens vi skifter motor, oplever vi induktiv spiking. Denne spiking vil opvarme transistoren kraftigt, så vi bruger diode (1N4007) til at yde beskyttelse til transistoren mod induktiv spiking.
For at reducere spændingsudsvingene tilslutter vi en 1000uF kondensator over strømforsyningen som vist i kredsløbsdiagrammet.
Arbejdsforklaring:
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 35' på tavlen er 'GPIO19'. Så vi fortæller her, at enten skal vi repræsentere stiften her med '35' eller '19'.
IO.setmode (IO.BCM)
Vi indstiller GPIO19 (eller PIN35) som output pin. Vi får PWM-output fra denne pin.
IO.setup (19, IO.IN)
Efter at have indstillet stiften som output skal vi indstille stiften som PWM-udgangsstif
p = IO.PWM (outputkanal, frekvens af PWM-signal)
Ovenstående kommando er til opsætning af kanalen og også til opsætning af PWM-signalets frekvens. 'p' her er en variabel, det kan være hvad som helst. Vi bruger GPIO19 som PWM- outputkanal . ' frekvens af PWM-signal ' er valgt 100, da vi ikke vil se, at LED blinker.
Nedenstående kommando bruges til at starte PWM-signalgenerering, ' DUTYCYCLE ' er til indstilling af tændingsforholdet , 0 betyder LED vil være TÆNDT i 0% af tiden, 30 betyder LED vil være TÆNDT i 30% af tiden og 100 betyder helt TIL.
p.start (DUTYCYCLE)
Hvis betingelsen i selerne er sand, vil udsagnene i sløjfen blive udført en gang. Så hvis GPIO-pin 26 går lavt, udføres udsagnene inde i IF-sløjfen en gang. Hvis GPIO-pin 26 ikke går lavt, udføres udsagnene inden i IF-sløjfen ikke.
hvis (IO.input (26) == Falsk):
Mens 1: bruges til uendelig løkke. Med denne kommando udføres udsagnene inde i denne sløjfe kontinuerligt.
Vi har alle de kommandoer, der er nødvendige for at opnå hastighedskontrol med dette.
Efter at have skrevet programmet og udført det, er alt, hvad der er tilbage, at betjene kontrollen. Vi har to knapper tilsluttet PI; en til at inkrementere PWM-signalets driftscyklus og en til at mindske PWM-signalets driftscyklus. Ved at trykke på den ene knap øges hastigheden på DC-motoren, og ved at trykke på den anden knap falder DC-motorens hastighed. Med dette har vi opnået DC Motor Speed Control af Raspberry Pi.
Kontroller også:
- DC-motorhastighedskontrol
- DC Motor Control ved hjælp af Arduino