Hallo,
ich stoße bei der Steuerung von 24V Motoren gerade an meine Grenzen und hoffe auf eure Hilfe. Der Code stimmt aus meiner Sicht und ich kann auch kleine Motoren ansteuern.(Code und Aufbau am Ende).
Jedoch kann ich keine Motoren mit 24V ansteuern, obwohl ich ein L293D nutze. Ich verwende als Motoren 3 unterschiedliche und alle funktionieren nicht. 2 Stück brummen, aber anscheinend reicht der Strom nicht damit sie starten...
Als Spannungsquelle habe ich einmal den Arduino über USB am Laptop angeschlossen, dann per USB an USB-Netzteil und zu guter letzt auch ein Panasonic-Netzteil mit DC 15,6V und 7,05A und alles ohne Erfolg außer ein Brummen beim starten über den Button.
Ich habe auch die Geschwindigkeit (Variable "speed") erhöht, ohne Erfolg, außer das es lauter brummt, aber sich nix dreht.
Ich vermute das halt immer nur maximal 1A Strom fließt und die beiden Motoren ja 1,5A benötigen und deswegen nicht anlaufen oder was sagt ihr?
Falls dem so sein sollte, kann ich ja die Spannungsquelle direkt am Motor anschließen, aber wie steuere ich dann den Motor mittels Arduino?
int enablePin = 6;
int in1Pin = 7;
int in2Pin = 8;
int speed = 0; // Speed Motor, bei Programmstart somit aus !
const int ButtonEin = 2; // Pin Button Einschalten
const int ButtonAus = 3; // Pin Button Ausschalten
const int ButtonMotorLinks = 4; // Pin Button Motor dreht sich links
const int ledPin = 13; // die Nummer vom LED Pin welches am Arduino leuchtet
int StatusButtonEin = 0; // variable for reading the pushbutton status
int StatusButtonAus = 0;
int StatusButtonMotorLinks = 0;
void setup()
{
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
pinMode(in1Pin, OUTPUT);
pinMode(in2Pin, OUTPUT);
pinMode(enablePin, OUTPUT);
}
void loop()
{
StatusButtonEin = digitalRead(ButtonEin);
StatusButtonAus = digitalRead(ButtonAus);
StatusButtonMotorLinks = digitalRead(ButtonMotorLinks);
if (StatusButtonEin == HIGH) {
// turn LED on:
digitalWrite(ledPin, HIGH); //Lampe am Arduino geht an und zeigt das der Motor sich dreht
speed=160; //Geschwindigkeit vom Motor
setMotor(speed); // ruft die Funktion zum Motor starten auf
delay(3000); // Laufzeit vom Motor
setMotor(0); // Motor wird gestoppt
digitalWrite(ledPin, LOW);
}
if (StatusButtonAus == HIGH) {
// turn LED on:
digitalWrite(ledPin, LOW);
speed=0;
setMotor(speed);
}
if (StatusButtonMotorLinks == HIGH) {
// turn LED on:
digitalWrite(ledPin, HIGH); //Lampe am Arduino geht an und zeigt das der Motor sich dreht
speed=160; //Geschwindigkeit vom Motor
setMotorLinks(speed); // ruft die Funktion zum Motor starten auf
delay(3000); // Laufzeit vom Motor
setMotor(0); // Motor wird gestoppt
digitalWrite(ledPin, LOW);
}
}
void setMotor(int speed)
{
analogWrite(enablePin, abs(speed));
if(speed>0)
{
//Motor dreht rechts 2 true, 1 false
digitalWrite(in2Pin,true);
digitalWrite(in1Pin,false);
}
}
void setMotorLinks(int speed)
{
analogWrite(enablePin, abs(speed));
if(speed>0)
{Serial.print(" Motor Links");
//Motor dreht rechts 2 true, 1 false
Serial.print(" Motor links");
digitalWrite(in1Pin,true);
digitalWrite(in2Pin,false);
}
}