ich habe ein Problem ich möchte gerne mein Motor langsamer laufen lassen ich benutze den Treiber hier Elegoo L298N!
Ich benutze ein Gleichstrommotor
Könnt ihr mir bitte sagen warum ich den Motor nicht langsame stellen kann
int In1 = 7;
int In2 = 8;
int ENA = 4;
int SPEED = 210;
void setup() {
// put your setup code here, to run once:
pinMode(In1,OUTPUT);
pinMode(In2,OUTPUT);
pinMode(ENA,OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(In1,LOW);
digitalWrite(In1,HIGH);
analogWrite(ENA,SPEED);
}
Einen DC Motor kann man nicht steuern, seine Drehzahl hängt von der Versorgungsspannung und Last ab.
Du brauchst also einen (PID...) Regler, und einen Encoder zum Messen der Drehzahl. Wenn Du nach Beiträgen zu "Encoder" oder "Drehzahl" suchst, wirst Du jede Menge Fragen und Antworten zur Drehzahlregelung von Motoren finden.
DrDiettrich:
Einen DC Motor kann man nicht steuern, seine Drehzahl hängt von der Versorgungsspannung und Last ab.
Du brauchst also einen (PID...) Regler, und einen Encoder zum Messen der Drehzahl. Wenn Du nach Beiträgen zu "Encoder" oder "Drehzahl" suchst, wirst Du jede Menge Fragen und Antworten zur Drehzahlregelung von Motoren finden.
Hallo,
sorry aber warum soll man einen DC Motor nicht über die Spannung auch ohne Regler verstellen können. Klar die Drehzahl sinkt mit der Last etwas ab. Grundsäzlich geht es abe auch ohne Regler. Die E-Flugmodelle haben doch keinen Drehzahlregler mit Encoder Rückführung.
Man kann die Geschwindigkeit eines DC-Motors über einen PWM (mit ~ markierte Pins) Pin des Arduino steuern. Steck den ENA auf einen der Pins 3,5,6,9,10 oder 11 an, dann wird es funkionieren.
// Ich hab die int zu byte geändert. byte geht allerdings nur bis zu 255, verbraucht dabei aber nur 1 Byte
byte In1 = 7;
byte In2 = 8;
byte ENA = 3; // con 4 auf Pin 3~ geändert.
byte SPEED = 210; // Die PWM Zahl ist OK
void setup() {
// put your setup code here, to run once:
pinMode(In1,OUTPUT);
pinMode(In2,OUTPUT);
pinMode(ENA,OUTPUT);
}
void loop() {
digitalWrite(In1,LOW);
digitalWrite(In1,HIGH);
analogWrite(ENA, SPEED);
}
Grüße,
Donny
PS: Ich würde die Variablen nicht ausschließlich Groß schreiben, das sollte für #define reserviert sein. Auch wenn Du das vielleicht jetzt noch nicht brauchst... Die Zeit wird kommen.
Nachtrag: Für eine richtige Steuerung braucht man natürlich einen Encoder, allerdings kann man mittels PWM die Drehzahl steuern. Natürlich fährt ein Auto am Teppich immer langsamer als am Asphalt und ohne Encoder kann man kein Programm zur Geschwindigkeitsbestimmung schreiben.