Komplett Motor guide för Robotics (6 / 12 steg)
Steg 6: Arduino DC motorstyrning
Som ni redan vet måste DC-motor inte ansluta direkt till arduino pin eftersom det kan bränna din arduino. Så måste du ansluta en transistor mellan arduino och motor. Låt oss först styra en liten likströmsmotor med enda transistor. Använda enda transistor du vet endast hastighet kan vara kontroll. PWM används för att styra hastigheten på en DC-motor. Ansluta din krets som bild-1. Arduino PWM stift måste vara ansluten till transistorn bas stift.
/*
Enda transistor DC motorstyrning
*/
int motorPin = 3;
int hastighet = 100;
void setup()
{
pinMode (motorPin, produktionen);
}
void loop()
{
analogWrite() funktion används för att generera PWM-signal.
Speed definiera intermittensen av PWM.
om hastigheten = 0 betyder månadskapaciteten är 0 och motorn är avstängd
det maximala värdet av hastigheten kan vara 255, då motorn körs med högsta hastighet
analogWrite (motorPin, hastighet);
Delay(1000); vänta 1 SEK
analogWrite (motorPin, 175);
Delay(1000);
analogWrite (motorPin, 255); maximal hastighet
Delay(1000);
}
Nu, Anslut motorn med H-Bridge IC (jag använde L293 här). Följa Fig-3 & Fig-4. Vi kan styra både hastighet och riktning nu. Stift 9 används som PWM stift och en växel läggs till kontrollera hastigheten.
CONST int switchPin = 2; Switch input
CONST int motor1Pin = 3; H-bridge Ben 1 (stift 2, 1A)
CONST int motor2Pin = 4; H-bridge ben 2 (stift 7, 2A)
CONST int enablePin = 9; H-bridge aktivera pin
I setup(), ange alla stift för H-bron som utgångar,
och PIN-koden för växeln som indata. Uppsättningen aktivera pin hög
så H-bron kan aktivera motorn.
void setup() {
huvudströmbrytare som indata:
pinMode (switchPin, ingång);
ställa in alla andra stiften du använder som utgångar:
pinMode (motor1Pin, produktionen);
pinMode (motor2Pin, produktionen);
pinMode (enablePin, produktionen);
pinMode (ledPin, produktionen);
Ange enablePin hög så att motorn kan aktivera:
digitalWrite (enablePin, hög);
}
I de huvudsakliga loop() läsa växeln. Om det är hög,
slå det motoriska sättet genom att ta en H-bridge pin hög och den andra låg.
Om växeln är låg, vända riktning genom att vända påstår av
två H-bridge stiften.
void loop() {
om växeln hög, att motor gå på en riktning:
om (digitalRead(switchPin) == hög) {
digitalWrite (motor1Pin, låg); ställa in etapp 1 av H-bryggan låg
digitalWrite (motor2Pin, hög); ställa in etapp 2 av H-bron hög
}
om växeln är låg, blir motorn i den andra riktningen:
annat {
digitalWrite (motor1Pin, hög); ställa in etapp 1 av H-bron hög
digitalWrite (motor2Pin, låg); ställa in etapp 2 av H-bryggan låg
}
}
L293 är en dubbel H bro IC. Så, kan du styra två motor av enda IC. Ansluta två motor till IC som som figur 5 och använda följande kod. Göra ändringar enligt dina krav.
/*
* skapad av Md. Khairul Alam
* Kontroll 2 DC-motorer med arduino
* 2015
*/
int motor1Pin1 = 3; stift 2 på L293D IC
int motor1Pin2 = 4; stift 7 på L293D IC
int motor1EnablePin = 6; stift 1 på L293D IC
int motor2Pin1 = 8; stift 10 på L293D IC
int motor2Pin2 = 9; stift 15 på L293D IC
int motor2EnablePin = 11; stift 9 på L293D IC
int hastighet = 100;
void setup() {
ställer in stiften som resultat:
pinMode (motor1Pin1, produktionen);
pinMode (motor1Pin2, produktionen);
pinMode (motor1EnablePin, produktionen);
pinMode (motor2Pin1, produktionen);
pinMode (motor2Pin2, produktionen);
pinMode (motor2EnablePin, produktionen);
anger enable1Pin och enable2Pin höga så att motorn kan aktivera:
digitalWrite (Motor1EnablePin, hög);
digitalWrite (Motor2EnablePin, hög);
initiera seriell kommunikation på 9600 bitar per sekund:
Serial.BEGIN(9600);
}
void loop() {
Skriv in koden här
}
void forword() {/ / kör två motor i riktning framåt
digitalWrite (motor1Pin1, hög);
digitalWrite (motor1Pin2, låg);
digitalWrite (motor2Pin1, låg);
digitalWrite (motor2Pin2, hög);
analogWrite (motor1EnablePin, hastighet);
analogWrite (motor2EnablePin, hastighet);
Serial.println ("gå framåt!");
}
void backword() {/ / kör två motor i omvänd riktning
digitalWrite (motor1Pin1, låg);
digitalWrite (motor1Pin2, hög);
digitalWrite (motor2Pin1, hög);
digitalWrite (motor2Pin2, låg);
analogWrite (motor1EnablePin, hastighet);
analogWrite (motor2EnablePin, hastighet);
Serial.println ("gå bakåt!");
}
void turnRight() {/ / motor 1 off, motor 2 framåt
digitalWrite (motor1Pin1, låg);
digitalWrite (motor1Pin2, låg);
digitalWrite (motor2Pin1, låg);
digitalWrite (motor2Pin2, hög);
analogWrite (motor1EnablePin, hastighet);
analogWrite (motor2EnablePin, hastighet);
Serial.println ("sväng höger");
}
void turnLeft() {/ / motor 2 off, motor 1 framåt
digitalWrite (motor1Pin1, hög);
digitalWrite (motor1Pin2, låg);
digitalWrite (motor2Pin1, låg);
digitalWrite (motor2Pin2, låg);
analogWrite (motor1EnablePin, hastighet);
analogWrite (motor2EnablePin, hastighet);
Serial.println ("sväng vänster");
}
void Stop() {två motor off
digitalWrite (motor1Pin1, låg);
digitalWrite (motor1Pin2, låg);
digitalWrite (motor2Pin1, låg);
digitalWrite (motor2Pin2, låg);
analogWrite (motor1EnablePin, hastighet);
analogWrite (motor2EnablePin, hastighet);
Serial.println("stop");
}
.