Hvordan kontrollere hastigheten på en DC Motor med Arduino

April 9  by Eliza

Trenger du mer kontroll over DC motor? Du kan bruke MotorControl skisse for Arduino å sette noen innspill til en DC-motor som gir deg full kontroll over motoren på fly.

Den MotorControl skisse

Å få kontroll over hastigheten på motoren din når du trenger det, må du legge til et potensiometer til din krets.

Du må ha:

  • En Arduino Uno
  • En brødfjel
  • En transistor
  • En likestrømsmotor
  • En diode
  • En 10k ohm variabel motstand
  • En 2,2K ohm motstand
  • Jump ledninger

Finn en plass på brødfjel å plassere potensiometer. Den sentrale pin av potensiometeret er forbundet tilbake til tappen 9 ved hjelp av et hopp wire, og de gjenværende to tapper er forbundet til 5V på en side og GND på den andre.

Hvordan kontrollere hastigheten på en DC Motor med Arduino

5V og GND kan være på hver side, men bytter dem vil invertere verdien som potensiometeret sender til Arduino. Selv potensiometeret bruker samme strøm og jord som motoren, merk at de er separate kretser som både kommuniserer via Arduino.

Hvordan kontrollere hastigheten på en DC Motor med Arduino


Etter at du har bygget kretsen, åpne en ny Arduino skisse og lagre det med et annet passende navn, for eksempel myMotorControl. Deretter skriver du inn følgende kode.

int potPin = A0;
int motorPin = 9;
int = 0 potValue;
int = 0 motorValue;
void setup () {
Serial.begin (9600);
}
void loop () {
potValue = analogRead (potPin);
motorValue = kartet (potValue, 0, 1023, 0, 255);
analogWrite (motorPin, motorValue);
Serial.print ("potensiometer =");
Serial.print (potValue);
Serial.print ("\ t motor =");
Serial.println (motorValue);
forsinkelse (2);
}

Etter youâ € ™ ve skrevet skissen, lagre det og klikke på Compile-knappen for å markere eventuelle syntaksfeil. .

Hvis skissen kompilerer riktig, klikker du Last opp for å laste opp skisse til styret. Når det er gjort laster opp, bør du være i stand til å kontrollere motor ved hjelp av potensiometeret. Dreie potensiometeret i en retning bevirker at motorens hastighet opp; snu det den andre veien fører det til å avta.

Den MotorControl Sketch sammenbrudd

Denne skissen er en variant av den AnalogInOutSerial skisse og fungerer på akkurat samme måte med noen navneendringer for bedre å indikere hva du kontroll og overvåkning på kretsen.

Som alltid, erklærer du de ulike variablene som brukes i skissen. Du bruker potPin å tildele potensiometeret pin og motorPin å sende et signal til motoren. Den potValue variabelen brukes til å lagre den rå verdien av potensiometeret og motorValue variable lagrer konverterte verdien du ønsker å sende signaler til transistoren for å bytte motor.

int potPin = A0;
int motorPin = 9;
int = 0 potValue;
int = 0 motorValue;

Hvordan finjustere MotorControl skisse

Du kan finne at det er et minimum hastighet etter som motoren vil bare nynne. Det gjør det fordi det ikke? € ™ t har nok makt til å spinne. Ved å overvåke verdiene som sendes til motoren med MotorControl skisse, kan du finne den motorâ € ™ s minimumsverdi for å snu og optimalisere motorValue for å slå av motoren innenfor sitt sanne rekkevidde.

For å finne omfanget av motorValue, gjør du følgende:

  1. Med MotorControl skisse opp, klikker serie monitor-knappen øverst til høyre på Arduino vinduet.

    Serie monitor vinduet vil vise deg potensiometeret verdi etterfulgt av utgangsverdi som sendes til motoren, på denne måten:

    potensiometer = 1023 motor = 255

    Disse verdiene vises i en lang liste og oppdatering som du slår potensiometeret. Hvis du dona € ™ t se listen rulle ned, sørg for at den Bla automatisk alternativet er valgt.

  2. Starter med potensiometer leser en verdi på 0, snu potensiometeret meget langsomt til humming stopper og motoren begynner å spinne.
  3. Noter verdien som vises på dette punktet.
  4. Bruke en if setning for å fortelle motoren til å endre hastigheten bare hvis verdien er større enn minimumshastighet for å spinne motor, som følger:

    . (A) Finn den delen av koden som skriver motorValue til motoren:

    analogWrite (motorPin, motorValue);

    . (B) Bytt den med følgende kode:

    if (motorValue> yourValue) {
    analogWrite (motorPin, motorValue);
    } Else {
    digitalWrite (motorPin, LOW);
    }

  5. Nå erstatte yourValue med nummeret som du har gjort et notat av.

    Hvis verdien motorValue er større enn det, hastigheter av motoren opp. Hvis den er lavere enn det, blir tappen skrevet så lavt at det er fullt ut. Du kan også skrive analogWrite (motorPin, 0) for å oppnå det samme. Små optimaliseringer som dette kan bidra til prosjektet fungerer optimalt, med ingen bortkastet bevegelse eller verdier.