I denne vejledning skal vi interface en DC-motor til Arduino UNO og styre dens hastighed ved hjælp af PWM (Pulse Width Modulation) koncept. Denne funktion er aktiveret i UNO for at få variabel spænding over konstant spænding. Metoden til PWM forklares her; overvej et simpelt kredsløb som vist i figur.
Hvis der trykkes på knappen, hvis figuren, vil motoren begynde at rotere, og den vil være i bevægelse, indtil der trykkes på knappen. Denne presning er kontinuerlig og er repræsenteret i den første figurbølge. Hvis der i et tilfælde overvejes at trykke på knappen i 8 ms og åbne i 2 ms over en cyklus på 10 ms, vil motoren i dette tilfælde ikke opleve den komplette 9V batterispænding, da knappen kun trykkes i 8 ms, så RMS-terminalspændingen over motoren vil være omkring 7V. På grund af denne reducerede RMS-spænding vil motoren rotere, men med en reduceret hastighed. Nu er den gennemsnitlige tænding over en periode på 10 ms = Tænd tid / (Tænd tid + Sluk tid), dette kaldes driftscyklus og er på 80% (8 / (8 + 2)).
I andet og tredje tilfælde trykkes knappen endnu kortere tid sammenlignet med første tilfælde. På grund af dette reduceres RMS-terminalspændingen ved motorterminalerne endnu mere. På grund af denne reducerede spænding falder motorhastigheden endda yderligere. Dette fald i hastighed med arbejdscyklus, der kontinuerligt sker indtil et punkt, hvor motorens terminalspænding ikke vil være tilstrækkelig til at dreje motoren.
Så ved dette kan vi konkludere, at PWM kan bruges til at variere motorhastigheden.
Før vi går videre, er vi nødt til at diskutere H-BRIDGE. Nu har dette kredsløb hovedsageligt to funktioner, for det første er at køre en jævnstrømsmotor fra styresignaler med lav effekt, og den anden er at ændre jævnstrømsmotorens rotationsretning.
figur 1
Figur 2
Vi ved alle, at for at en jævnstrømsmotor skal ændre rotationsretningen, er vi nødt til at ændre motorens polaritet. Så for at ændre polariteterne bruger vi H-broen. Nu i figur 1 ovenfor har vi firetaster. Som vist i figur 2 er motoren til at dreje A1 og A2 lukket. På grund af dette strømmer strøm gennem motoren fra højre mod venstre, som vist i 2. del af figur 3. Overvej for nu motoren roterer med uret. Hvis kontakterne A1 og A2 nu åbnes, lukkes B1 og B2. Strømmen gennem motoren strømmer fra venstre mod højre som vist i 1. st del af figur 3. Denne strømningsretning er modsat den første, og så ser vi et modsat potentiale ved motorterminalen til den første, så motoren roterer mod uret. Sådan fungerer en H-BRIDGE. Motorer med lav effekt kan dog drives af en H-BRIDGE IC L293D.
L293D er en H-BRIDGE IC designet til at køre DC-motorer med lav effekt og er vist i figuren. Denne IC består af to h-broer, så den kan køre to jævnstrømsmotorer. Så denne IC kan bruges til at køre robotmotorer fra mikrokontrollerens signaler.
Som tidligere beskrevet har denne IC evne til at ændre DC-motorens rotationsretning. Dette opnås ved at kontrollere spændingsniveauerne ved INPUT1 og INPUT2.
Aktivér Pin |
Indgangsstift 1 |
Indgangsstift 2 |
Motorretning |
Høj |
Lav |
Høj |
Drej til højre |
Høj |
Høj |
Lav |
Drej til venstre |
Høj |
Lav |
Lav |
Hold op |
Høj |
Høj |
Høj |
Hold op |
Så som vist i figuren ovenfor, skal rotation 2A være høj med uret og 1A være lav. Tilsvarende for anti-urets retning skal 1A være høj og 2A være lav.
Som vist i figuren har Arduino UNO 6PWM-kanaler, så vi kan få PWM (variabel spænding) ved en af disse seks ben. I denne vejledning skal vi bruge PIN3 som PWM-output.
Hardware: ARDUINO UNO, strømforsyning (5v), 100uF kondensator, LED, knapper (to stykker), 10KΩ modstand (to stykker).
Software: arduino IDE (Arduino om natten).
Kredsløbsdiagram
Kredsløbet er forbundet i brødbræt i henhold til kredsløbsdiagrammet vist ovenfor. Man skal dog være opmærksom, når LED-terminalerne tilsluttes. Selvom knapperne viser hoppende effekt i dette tilfælde, forårsager det ikke betydelige fejl, så vi behøver ikke bekymre os denne gang.
PWM fra UNO er let, ved normale lejligheder er det ikke let at oprette en ATMEGA-controller til PWM-signal, vi er nødt til at definere mange registre og indstillinger for et nøjagtigt signal, men i ARDUINO behøver vi ikke håndtere alle disse ting.
Som standard er alle headerfiler og registre foruddefineret af ARDUINO IDE, vi skal simpelthen ringe til dem, og det er det, vi har en PWM-udgang ved passende pin.
For at få en PWM-output til en passende pin, skal vi arbejde på tre ting,
|
Først skal vi vælge PWM output pin fra seks ben, derefter skal vi indstille denne pin som output.
Dernæst skal vi aktivere PWM-funktionen i UNO ved at kalde funktionen "analogWrite (pin, værdi)". Her repræsenterer 'pin' pin nummer, hvor vi har brug for PWM output, vi sætter det som '3'. Så ved PIN3 får vi PWM-output.
Værdi er turn ON-arbejdscyklus mellem 0 (altid slukket) og 255 (altid tændt). Vi vil øge og mindske dette nummer ved at trykke på knappen.
UNO har en maksimal opløsning på “8”, man kan ikke gå længere, derfor værdierne fra 0-255. Man kan dog mindske opløsningen af PWM ved hjælp af kommandoen “analogWriteResolution ()”, ved at indtaste en værdi fra 4-8 i parenteserne, kan vi ændre dens værdi fra fire bit PWM til otte bit PWM.
Omskifteren skal ændre omdrejningsretningen for jævnstrømsmotor.