Hallo leute, ich hätte eine Frage zu meinem Arduino motorshield, Habe ein komplizierteres Programm geschrieben in dem es vorkam das bei das Motorschield den DC Motor langsamer fahren lässt, komischerweise hat es dabei immer gebremst... habe also ein neues Projekt erstellt und in der loop einfach folgende Zeilen geschrieben: digitalWrite(9, LOW); //Deaktiviert de Bremse digitalWrite(12, HIGH); // Stellt Richtung auf Vorwärts analogWrite(3, 10); //Dreht den Motor langsam und siehe da, der Motor dreht sich natürlich sehr langsam, aber er bremst auch, wenn er sich nach rechts bewegt leuchtet normal nur die LED am Ausgang A, bei links B... Wenn ich die bremse mit HIGH aktiviere Leuchten beide, also A und B wenn ich ihn jetzt aber wie oben beschrieben sehr langsam drehen lasse Leuchtet A natürlich sehr dunkel...aber B leuchtet auch, er bremst also... Je langsamer desto heller leuchtet Ausgang B, bremst also stärker... Ist das normal? also das er für geringere Geschwindigkeiten die Bremse hinzuzieht oder stimmt hier irgendetwas nicht?
@ LeiderNichtVerfügbar AuchNicht (Firma: Keine) (strgfn) >Habe ein komplizierteres Programm geschrieben in dem es vorkam das bei >das Motorschield den DC Motor langsamer fahren lässt, komischerweise hat >es dabei immer gebremst... ??? Wie meinst du das? Wenn der Motor langsam dreht, dann bremst er nicht. Das kann er nur, wenn er schnell dreht und dann per Ansteuerung langsamer drehen soll. Das geht aber nur mit einem Halb- oder Vollbrückentreiber. >digitalWrite(9, LOW); //Deaktiviert de Bremse Was für eine Bremse? Wo geht das Pin hin? Wie sieht die Endstufe genau aus? >digitalWrite(12, HIGH); // Stellt Richtung auf Vorwärts >analogWrite(3, 10); //Dreht den Motor langsam >und siehe da, der Motor dreht sich natürlich sehr langsam, aber er >bremst auch, >wenn er sich nach rechts bewegt leuchtet normal nur die LED am Ausgang >A, bei links B... >Wenn ich die bremse mit HIGH aktiviere Leuchten beide, also A und B Schaltplan? >wenn ich ihn jetzt aber wie oben beschrieben sehr langsam drehen lasse >Leuchtet A natürlich sehr dunkel...aber B leuchtet auch, er bremst >also... Je langsamer desto heller leuchtet Ausgang B, bremst also >stärker... Du schließt also aus leuchtenden LEDs, der Motor würde bremsen? >Ist das normal? also das er für geringere Geschwindigkeiten die Bremse >hinzuzieht oder stimmt hier irgendetwas nicht? Ja, dein Interpretation der Lage. Ich fürchte, du hast da was falsch verstanden oder es ist falsch in einer Doku beschrieben.
Vielleicht ist es etwas komisch beschrieben ja... Das Arduino Motorshield wird auf das Arduino gesteckt... Schaltpläne gibt es dabei im Internet wobei man nichts selbst verkabeln muss etc. digitalWrite(9, LOW); //Deaktiviert de Bremse an beide Eingänge des Motors wird eine Spannung angelegt, also auf A und B. Die LED's vor A und B geben dabei an (wenn ich mich nicht irre) auf welchem Kanal eine Spannung ausgegeben wird. Leuchtet also A, wird eine spannung auf Kanal A ausgegeben und der Motor dreht sich nach rechts. Die geschieht mit: digitalWrite(12, HIGH); // Stellt Richtung auf Vorwärts analogWrite(3, Wert von 0 - 255); //Dreht den Motor langsam (0 - 255) gibt dabei die Geschwindigkeit bzw PWM an. Stelle ich jetzt den Motor auf Vorwärts und gebe bei analogWrite nur 10 an, leuchtet die LED bei A logischerweise nur dunkel, da geringer DutyCycle. Die LED bei B leuchtet jedoch auch was bedeutet es wird etwas bei B ausgegeben -> ergo er bremst ganz leicht. Bei höheren werten zb 40 leuchtet bei B nichts mehr. So hätte ich das erklärt bzw. verstanden. Meine Frage ist nun: stimmt da etwas nicht oder ist das normal das der B Ausgang auch etwas ausgibt wenn ich den Motor langsamer drehe.
@ LeiderNichtVerfügbar AuchNicht (Firma: Keine) (strgfn) >Das Arduino Motorshield wird auf das Arduino gesteckt... Ach was? >Schaltpläne gibt es dabei im Internet Schön, daß es die DORT gibt. Glaubst du, daß WIR die uns raussuchen, wo doch DU ein Problem hast? Kleiner Tip: Netiquette. >digitalWrite(9, LOW); //Deaktiviert de Bremse Das halte ich für einen Irrtum. Das klingt eher nach den Enable Eingängen. Ein Schaltplan wäre JETZT Gold wert! >an beide Eingänge des Motors wird eine Spannung angelegt, also auf A und >B. Das schon eher. Der Motor wird von einer klassichen H-Brücke angesteuert. >Die LED's vor A und B geben dabei an (wenn ich mich nicht irre) auf >welchem Kanal eine Spannung ausgegeben wird. >Leuchtet also A, wird eine spannung auf Kanal A ausgegeben und der Motor >dreht sich nach rechts. >digitalWrite(12, HIGH); // Stellt Richtung auf Vorwärts >analogWrite(3, Wert von 0 - 255); //Dreht den Motor langsam >(0 - 255) gibt dabei die Geschwindigkeit bzw PWM an. Schon klar. >Stelle ich jetzt den Motor auf Vorwärts und gebe bei analogWrite nur 10 >an, leuchtet die LED bei A logischerweise nur dunkel, da geringer >DutyCycle. Ja. >Die LED bei B leuchtet jedoch auch was bedeutet es wird etwas bei B >ausgegeben -> ergo er bremst ganz leicht. Nö, das halte ich für eine Fehlinterpretation. >Bei höheren werten zb 40 leuchtet bei B nichts mehr. >Meine Frage ist nun: stimmt da etwas nicht oder ist das normal das der B >Ausgang auch etwas ausgibt wenn ich den Motor langsamer drehe. Ich wiederhole mich. Schaltplan her oder es geht nicht weiter.
Sorry, anbei ein Schaltplan des shields: https://www.arduino.cc/en/uploads/Main/arduino_MotorShield_Rev3-schematic.pdf https://www.arduino.cc/en/Main/ArduinoMotorShieldR3 Laut arduino webseite ist der zuständige PIN für die Bremse D9. >an beide Eingänge des Motors wird eine Spannung angelegt, also auf A und >B. >Das schon eher. Der Motor wird von einer klassichen H-Brücke >angesteuert. aber im nächsten satz schreibst du: >Die LED bei B leuchtet jedoch auch was bedeutet es wird etwas bei B >ausgegeben -> ergo er bremst ganz leicht. >Nö, das halte ich für eine Fehlinterpretation. bremst er nun wenn beide Ausgänge auf "HIGH" sind oder nicht? Ich weiß nur das wenn beide Ausgänge auf HIGH sind bewege ich den Motor keinen Milimeter. Und da bei langsamen Vorwärtslauf beide auf High sind wie ich an den LED's erkenne müsste er doch bremsen obwohl ich pin D9 nie auf High setze( und ihm damit sage er soll bremsen)... Hoffe so ist es verständlicher bzw. klarer formuliert. LG
:
Bearbeitet durch User
@ LeiderNichtVerfügbar AuchNicht (Firma: Keine) (strgfn) >Sorry, anbei ein Schaltplan des shields: >https://www.arduino.cc/en/uploads/Main/arduino_Mot... Hm, die üblichen Murksschaltpläne aus der Arduinowelt mit 1001 Labels :-( Ok, ist nicht deine Schuld. >https://www.arduino.cc/en/Main/ArduinoMotorShieldR3 >Laut arduino webseite ist der zuständige PIN für die Bremse D9. Die Schaltung funktioniert so. Jeder Zweig der H-Brücke hat einen Steuereingang am IC1. Das sind IN1 und IN2. DIRA geht direkt an den IC1, DIRA# über IC2. Das ist ein 4fach XNOR, das ist ein gesteuerter Inverter. Sprich, wenn BRAKE_A LOW ist, wird DIRA invertiert an IN2 gegeben. Dann dreht der Motor links oder rechts rum, abhängig von DIRA. Ist BRAKE_A aber HIGH, dann wird DIRA NICHT invertiert an IN2 gegeben, IN1=IN2=DIRA. Damit sind beide Motoranschlüsse auf der gleichen SPANNUNG, 0V oder VMOT. Damit dreht er sich nicht. Er bremst, weil er aktiv durch die H-Brücke kurzgeschlossen wird. Somit passt das alles, auch mit der Beschreibung BRAKE ;-) >bremst er nun wenn beide Ausgänge auf "HIGH" sind oder nicht? Ja, er bremst. >Ich weiß nur das wenn beide Ausgänge auf HIGH sind bewege ich den Motor >keinen Milimeter. Du meinst wenn du ihn per Hand drehen willst? >Und da bei langsamen Vorwärtslauf beide auf High sind wie ich an den >LED's erkenne Ja, dort beginnt dein Irrtum! Dort ist der Shield Murks. Man schließt keine Status-LEDs an Leistungsausgänge an! Denn wenn beide Treiberausgänge OUT1/2 auf HIGH liegen, leuchten die LEDs, aber der Motor ist kurzgeschlossen. > müsste er doch bremsen obwohl ich pin D9 nie auf High >setze( und ihm damit sage er soll bremsen)... Nein, er bremst nicht, die LED-Anzeige ist Unsinn. Die gehört an die Logikeingänge! Den so wie sie angeschlossen sind, zeigen die LEDs die Spannung der einzelnen Leistungsausgänge an. LED1 LED2 Motor OFF OFF bremsen OFF ON links ON OFF rechts ON ON bremsen Das Ganze noch mit PWM garniert. Denn bei der PWM am ENA Pin werden die Motorausgänge kurzzeitig beide HIGH, auch bei normalem Betrieb links/rechts. Das ist es, was du siehst. Beweis. Schalte mal DIR im 1s Takt um, wenn BRAKE=LOW ist und PWM=100%. Dann schalten zwar die LEDs, aber der Motor bremst die ganze Zeit.
1 | digitalWrite(9, HIGH); // Aktiviert die Bremse |
2 | analogWrite(3, 255); // Full speed |
3 | |
4 | while (1) { |
5 | digitalWrite(12, HIGH); // Stellt Richtung auf Vorwärts |
6 | delay(1000); |
7 | digitalWrite(12, LOW); // Stellt Richtung auf Rückwärts |
8 | delay(1000); |
9 | }
|
>Hoffe so ist es verständlicher bzw. klarer formuliert. Ein wenig. Summa sumarum. Der Motor bremst nur dann, wenn BRAKE_A auf LOW ist, egal was die LEDs vorgaukeln.
:
Bearbeitet durch User
Ok, danke das du mich so geduldig ans ziel geführt hast, hoffe ich habe jetzt alles verstanden. LG
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.