ich habe ein Problem mit der ansteuerung eines DC-Motors.
ich konnte den fehler so eingrenzen dass ich weiss bei welcher codezeile die ich einfüge das Problem auftritt aber finde keine erklärung wieso.
kann mir jemand helfen
In dem Code sollen die Motoren vorwärtz und nach 2 sekunden wieder rückwärtz fahren
Sobald ich die Codezeile
myservo(10);
einfüge drehen sich beide motoren nach vorwärtz aber rückewärtz dreht nur ein motor.
Ich habe die spannung von dem Ausgang gemessen und kann keine spannung messen. bei dem anderen Motor ist ne spannung vorhanden.
#include <Servo.h>
int M1_IN2 = 3; //Motor Rechte Seite
int M1_IN1 = 5; //Motor Rechte Seite
int M2_IN2 = 6; //Motor Linke Seite
int M2_IN1 = 9; //Motor Linke Seite
Servo myservo;
void setup() {
// put your setup code here, to run once:
pinMode(M2_IN1, OUTPUT);
pinMode(M2_IN2, OUTPUT);
pinMode(M1_IN1, OUTPUT);
pinMode(M1_IN2, OUTPUT);
//myservo.attach(10); <<<--- hier kommt dann das Problem
checkForward();
}
void loop() {
// put your main code here, to run repeatedly:
}
void checForward(){
//Vorwärtz
analogWrite(M1_IN1, 50);
digitalWrite(M1_IN2, LOW);
digitalWrite(M2_IN1, LOW);
analogWrite(M2_IN2, 50);
delay(2000);
//Rückwärtz
digitalWrite(M1_IN1, LOW);
analogWrite(M1_IN2, 50);
analogWrite(M2_IN1, 50);
digitalWrite(M2_IN2, LOW);
}
Ich habe mir Code und Schaltplan nur sehr kurz und oberflächlich angesehen. Was mir auffiel: Du benutzt Digital-Pin 9, der bei Verwendung eines Servos jedoch keine PWM-Signale erzeugen kann. Evtl. hilft mein Geschreibsel hier (scroll runter bis zum attach()-Befehl).
Das PWM Signal wird mit Hilfe von Timern erzeugt. Je ein Timer ist für 2 PWM Pins zuständig. Die Servo Bibliothek benutzt auch einen Timer und blockiert deswegen 2 PWM Ausgänge.
https://www.arduino.cc/en/Reference/Servo:
The Servo library supports up to 12 motors on most Arduino boards and 48 on the Arduino Mega. On boards other than the Mega, use of the library disables analogWrite() (PWM) functionality on pins 9 and 10, whether or not there is a Servo on those pins. On the Mega, up to 12 servos can be used without interfering with PWM functionality; use of 12 to 23 motors will disable PWM on pins 11 and 12.
Du verhedderst Dich bei den Pins. Wenn Du den Pins sinnvolle Namen gibst, z.B. M1_PWM und M1_DIR, dann fällt Dir das gleich auf. Für die Drehrichtung kannst Du beliebige Pins nehmen, die brauchen kein PWM.
Ich kann auch nicht sehen, wie Du die Richtung umschaltest. Müßte da nicht einmal stehen digitalWrite(...,LOW) und nachher digitalWrite(..., HIGH)?
hallo leute
danke für eure schnelle antworten ihr habt mir echt geholfen sonst wäre ich noch durchgedreht :-). da wäre ich nie draufgekommen....
genau das war das problem dass pin 9 und 10 deaktiviert waren habe jetzt die motoren anderst angeschlossen so dass ich den servo auf pin 9 angeschlossen habe und es funktioniert... danke danke ich hoffe ich kann mal wieder was fragen wenn ich weitere probleme habe