Stap 4: Maak het motorcircuit DC
http://ITP.NYU.edu/physcomp/Labs/DCMotorControl
U moet Volg deze eenvoudige aanwijzingen voor het maken van de gelijkstroommotor met controleerbare richting met behulp van een H-brug geïntegreerde schakeling. De richting wijzigingen worden aangebracht via een switch die is aangesloten op de digitale ingang van de Arduino.
Aanvankelijk gebruikte ik een externe voeding voor mijn Voedingsspanning DC motoren. Dit stond me aan de macht van de Diecimila via USB en ook de mogelijkheid tot het uploaden van mijn Arduino-programma de Arduino microcontroller.
Ik besloot om het toevoegen van een controle van de snelheid aan het motorcircuit door een eenvoudige potentiometer circuit dat maakt gebruik van de Arduino + 5V output en zijn grond. Ik stuur de spanning van de potentiometer circuit in de analoge ingang 0 op het bord van de Arduino.
Tot slot, ik heb geüpload de volgende code (gebaseerd op de website van de code met toegevoegde potentiometer control) aan de Arduino zodat ik de snelheid en de richting van de motor controleren kan:
int switchPin = 2; switch input
int motor1Pin = 3; H-brug been 1
int motor2Pin = 4; H-brug been 2
int speedPin = 9; H-brug inschakelen pin
int ledPin = 13; LED
int potPin = 0; Analoge invoer pin die de potentiometer is aangesloten op
int potValue = 0; waarde van de pot leest
VOID Setup {}
Zet de schakelaar als input:
pinMode (switchPin, INPUT);
Serial.begin(9600);
Stel alle andere pins u als uitgangen:
pinMode (motor1Pin, OUTPUT);
pinMode (motor2Pin, OUTPUT);
pinMode (ledPin, OUTPUT);
speedPin hoge zo ingesteld dat motor kunt inschakelen:
digitalWrite (speedPin, hoge);
de LED 3 keer knipperen. Dit zou slechts een keer gebeuren.
Als u het LED knipperen driemaal ziet, betekent dit dat de module
gereset zelf. waarschijnlijk omdat de motor een brownout veroorzaakt
of een korte.
knipperen (ledPin, 3, 100);
}
void loop {}
Als de schakeloptie hoog is, zal één richting motor schakelen:
Serial.println(potValue); afdrukken van de waarde van de pot terug naar het deelvenster Foutopsporing
Als (digitalRead(switchPin) == HIGH) {}
digitalWrite (motor1Pin, laag); ingesteld van 1 been van de lage H-brug
digitalWrite (motor2Pin, hoge); instellen van poot 2 van de H-brug hoge
potValue = analogRead(potPin); luiden naar de waarde van de pot
analogWrite (speedPin, potValue/4); PWM de speedPin met de waarde van de pot (gedeeld door 4 om te passen in een byte)
}
Als de schakelaar laag is, zal de motor in de andere richting draaien:
else {}
digitalWrite (motor1Pin, hoge); ingesteld van 1 been van de H-brug hoge
digitalWrite (motor2Pin, laag); etappe 2 van de H-brug laag instellen
potValue = analogRead(potPin); luiden naar de waarde van de pot
analogWrite (speedPin, potValue/4); PWM de speedPin met de waarde van de pot (gedeeld door 4 om te passen in een byte)
delay(10); wacht 10 milliseconden voordat de next-lus
}
}
/*
een LED knippert
*/
VOID knipperen (int whatPin, int howManyTimes, int milliSecs) {}
int i = 0;
voor (ik = 0; ik < howManyTimes; i ++) {}
digitalWrite (whatPin, hoge);
delay(milliSecs/2);
digitalWrite (whatPin, laag);
delay(milliSecs/2);
}
}