Mål: Att kunna styra hastigheten på en likströmsmotor (t.ex. fläkt)
Teori: En likströmsmotor drar mera ström än vad en arduino klarar av. Därför använder vi ett batteri och en transistor för att styra en större ström med hjälp av arduino pin 9.
Koppling: Koppla i batteriet till sist för att minimera risken för kortslutningar. Motståndet till basen är 1k. Kontrollera “flyback” diodens riktning.
Fritzing kopplingsschema
Arduino kod 1
Enkel kod för att sätta motorn på eller av
void setup() { pinMode(9, OUTPUT); // ställ in pin9 som utgång } void loop() { digitalWrite(9, HIGH); // skriv 5V till pin9 delay(3000); // vänta 3 sekunder digitalWrite(9, LOW); // skriv 0V till pin9 delay(3000); // vänta 3 sekunder }
Arduino kod 2
Ställ in motorn på 4 olika hastigheter
void setup() { pinMode(9, OUTPUT); // ställ in pin9 som utgång } void loop() { analogWrite(9, 65); // speed 1 delay(3000); analogWrite(9, 130); // speed 2 delay(3000); analogWrite(9, 195); // speed 3 delay(3000); analogWrite(9, 255); // speed 4 delay(3000); }
Arduino kod 3
Ökar och sänker hastigheten steglöst
void setup() { pinMode(9, OUTPUT); } void loop() { for(int i = 0; i <=255; i++) { analogWrite(9, i); delay(30); } delay(4000); for(int i = 255; i >=0; i--) { analogWrite(9, i); delay(30); } delay(4000); }
Att styra 2 DC-motorer med hjälp av en motor driver.
Jag har använt mig av en HG7881 motor driver för att styra två likströmsmotorer. Både kopplingen och koden är relativt enkel. Bild saknas ännu. Här är koden.
const int M1 = 6; const int M2 = 7; const int N1 = 8; const int N2 = 9; void setup() { Serial.begin(9600); pinMode(M1, OUTPUT); pinMode(M2, OUTPUT); pinMode(N1, OUTPUT); pinMode(N2, OUTPUT); digitalWrite(M1, LOW); digitalWrite(M2, LOW); digitalWrite(N1, LOW); digitalWrite(N2, LOW); } void loop(){ while (Serial.available() == 0); char val = Serial.read(); if(val == '1') { Serial.print("Wheel M free"); Serial.print(" "); Serial.println("Wheel N free"); digitalWrite(M1, LOW); digitalWrite(M2, LOW); digitalWrite(N1, LOW); digitalWrite(N2, LOW); } else if(val == '2') { Serial.print("Wheel M forward"); Serial.print(" "); Serial.println("Wheel N free"); digitalWrite(M1, HIGH); digitalWrite(M2, LOW); digitalWrite(N1, LOW); digitalWrite(N2, LOW); } else if(val == '3') { Serial.print("Wheel M free"); Serial.print(" "); Serial.println("Wheel N forward"); digitalWrite(M1, LOW); digitalWrite(M2, LOW); digitalWrite(N1, HIGH); digitalWrite(N2, LOW); } else if(val == '4') { Serial.print("Wheel M reverse"); Serial.print(" "); Serial.println("Wheel N free"); digitalWrite(M1, LOW); digitalWrite(M2, HIGH); digitalWrite(N1, LOW); digitalWrite(N2, LOW); } else if(val == '5') { Serial.print("Wheel M free"); Serial.print(" "); Serial.println("Wheel N reverse"); digitalWrite(M1, LOW); digitalWrite(M2, LOW); digitalWrite(N1, LOW); digitalWrite(N2, HIGH); } else { Serial.println("INVALID"); } }
sdbsadfb——–