Mit Arduino Duemillenueve 2 24V Motoren ansteuern

Hi an alle
Habe mir o.g. Controllerkarte gekauft.
Ich möchte damit 2 Motoren mit 24 V ansteuern.
Externe 24V Stromquelle vorhanden, auch eine Dual H-Bridge
Die Motoren sollen links/rechts und in verschiedene Geschwindigkeiten
laufen.
Wie muss ich die H-Brücke an den Arduino anschliessen?
Brauche ich da irgendwelche Widerstände dazwischen?
Und welches kabel wohin?
PWM auf PWM is klar
aber welche noch?

Danke schonmal für die Anworten.

Da du beim googlen offensichtlich Probleme hattest:

Das Ding heisst "Duemilanove"...

http://itp.nyu.edu/physcomp/Labs/DCMotorControl

@apogee
menix spricht spanisch :sunglasses: :wink:
Grüße Uwe

Hallo Menix

Habe mir o.g. Controllerkarte gekauft.

Wo oben? ich finde den Hinweis nicht.

Grüße Uwe

Edith:
"Controllerkarte" meinst Du den Arduino 2009?

Welche "Dual H-Bridge" hast Du?

Grüße Uwe

in der Tat ich bin ins spanische abgerutscht ;D

Also ich habe diesen Motortreiber

http://www.watterott.com/de/Dual-Motor-Steuerung-9A-VNH3SP30-MD03A

Habe schon ein paar Erfahrungen mit dem Vellemann K8055 gemacht.
Da musste man Widerstände dazwischenschalten
und PWM, Digital Out und Ground anschliessen.

Hab kein Schaltbild des Treibers gefunden aber dafür diese Platinenbeschriftung:

Auf der rechten Seite sind die Abschüsse für die beiden Motoren out1A und out1B bzw out2A und out2B und die Spannungsversorgung für die Motoren.
Auf der linken Seite ist die Ansteuerung:
Pololu - Dual VNH3SP30 Motor Driver Carrier MD03A hab ein Schaltbild gefunden!!! :slight_smile:
Du hast die 3er Version des Treiber-ICs ohne Stromkontrolle (VNH3SP30).
Die Platine hat schon Widerstände zum Schutz an den Eingängen und um Eingänge vorzupolarisieren..
Schau mal auf Seite 7 von http://www.pololu.com/file/0J51/vnh3sp30.pdf

Auf der Steuerseite:
GND: Masse
5Vin: 5V vom Arduino für die Logik des Treibers.
Vin: ist nochmal die Motorspannungversorgung; direckt mit den Anschlüssen rechts verbunden. wegen der Leiterquerschnitte ist es besser die Motorspannungvesorgung an den Kontakten rechts einzuspeisen.
1Diag/EN: schalten die Brücke ein oder aus. Diese Anschlüsse sind mit Widerständen auf HIGH gesetzt und intern verbunden. Falls Du den Treiber nicht ausschalten willst/mußt, kannst Du diese Anschlüsse auch frei lassen. Wenn Du sie auf LOW gibst, dann sind alle Transistoren der Brücke nicht leitend und der Motor läuft ohne Bremse. Funktion ähnlich dem 1PWM ist aber nicht zur Geschwindigkeitsregelung gedacht sondern um das Treiber-IC auszuschalten.
1InA und 1InB: Schalten den Ausgang jeder Halbbrücke auf Masse oder Vin. Damit Steuerst Du die Drehrichtung des Motors und die Bremse.
1InA 1InB:
1 1 Motor gebremst beide Ausgänge auf Vin
1 0 Motor dreht im Uhrzeigersinn
0 1 Motor dreht im Gegenuhrzeigersinn
0 0 Motor gebremst, beide Ausgänge auf Masse

1PWM Steuert die Motorgeschwindigkeit. Du gibst ein PWM Signal vom Arduino um die Geschwindigkeit zu steuern. Ein LOW-Pegal schaltet die Ausgangs-Transistoren ab, ein HIGH-Pegel auf die mit InA und InB definierten Werte.

1CS ist beim VNH3SP3 nicht vorhanden; beim VNH2SP3 (den Du nicht hast) ist es der Ausgang der Motor-Strommessung.

Alle Eingänge mit einer 2 statt der 1 vorne gelten für das 2. TreiberIC auf der Platine.

Viele Grüße Uwe

Vielen Dank für die ausführliche Anleitung.
Das betrifft jetzt aber nur die H-Brücke mit den Anschlüssen.
Welche Kabel muss ich jetzt vom Arduino Board auf die H-Brücke schalten?
Ist es bei den PWM Ausgängen egal welchen ich nehme?
Ground ist auch klar
5v out vom Board zur H-Brücke auch
Mit welchem Ausgang des Boards steuere ich die Drehrichtung?
irgend ein digitaler Ausgang?

Frohes und Gesundes neues Jahr wünsche ich noch allen.

Ich hab das mal jetzzt so angeschlossen.
Nur um mal 1 Motor dazu zu bewegen sich zu bewegen, aber es tut sich nix.
Hab das Example Programm Stepper Motor mit Speedkontrolle benutzt.
Vieleicht hab ich das aber nur falsch angeschlossen.

Arduino Ground --> Motortreiber Ground
" " PWM 1 --> " " PWM
" " PWM 9 --> " " IN a

Positive Versorgungsspannung für den Motor angeschlossen?

Ja

Vielleicht stimmt aber auch nur der Programmcode nicht.
Kann man das irgendwie messen wo was rauskommen muss am Board?

Könntest du deinen derzeitigen Code bitte posten, dass man einen Überblick erhält?

Ja
Es ist ein Code aus dem beiliegenden Examples zur Speedcontrolle eines Motors, allerdings weiss ich nicht wie das is wenn ein Motortreiber dazwischengeschaltet ist.
Hier der COde

*/

#include <Stepper.h>

const int stepsPerRevolution = 200; // change this to fit the number of steps per revolution
// for your motor

// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, 8,9,10,11);

int stepCount = 0; // number of steps the motor has taken

void setup() {
// initialize the serial port:
Serial.begin(9600);
}

void loop() {
// read the sensor value:
int sensorReading = analogRead(A0);
// map it to a range from 0 to 100:
int motorSpeed = map(sensorReading, 0, 1023, 0, 100);
// set the motor speed:
if (motorSpeed > 0) {
myStepper.setSpeed(motorSpeed);
// step 1/100 of a revolution:
myStepper.step(stepsPerRevolution/100);
}
}

Ich muss dazu sagen das ich totaler Anfänger bin.

Auf der Steuerseite:
GND: Masse
5Vin: 5V vom Arduino für die Logik des Treibers.
Vin: ist nochmal die Motorspannungversorgung; direckt mit den Anschlüssen rechts verbunden. wegen der Leiterquerschnitte ist es besser die Motorspannungvesorgung an den Kontakten rechts einzuspeisen.
1Diag/EN: schalten die Brücke ein oder aus. Diese Anschlüsse sind mit Widerständen auf HIGH gesetzt und intern verbunden. Falls Du den Treiber nicht ausschalten willst/mußt, kannst Du diese Anschlüsse auch frei lassen. Wenn Du sie auf LOW gibst, dann sind alle Transistoren der Brücke nicht leitend und der Motor läuft ohne Bremse. Funktion ähnlich dem 1PWM ist aber nicht zur Geschwindigkeitsregelung gedacht sondern um das Treiber-IC auszuschalten.

1InA und 1InB: Schalten den Ausgang jeder Halbbrücke auf Masse oder Vin. Damit Steuerst Du die Drehrichtung des Motors und die Bremse.
1InA 1InB:
1 1 Motor gebremst beide Ausgänge auf Vin
1 0 Motor dreht im Uhrzeigersinn
0 1 Motor dreht im Gegenuhrzeigersinn
0 0 Motor gebremst, beide Ausgänge auf Masse

1PWM Steuert die Motorgeschwindigkeit. Du gibst ein PWM Signal vom Arduino um die Geschwindigkeit zu steuern. Ein LOW-Pegal schaltet die Ausgangs-Transistoren ab, ein HIGH-Pegel auf die mit InA und InB definierten Werte.

Glaubte es schon erklärt zu haben; aber nochmal:
Arduino - Motordriver Pololu Steruerseite (Auf Bild rechts)
5V - 5V
GND - GND
---- - 1Diag/EN kann nicht beschaltet bleiben;

Ausgang digital - 1InA Für die Drehrichtung und Bremse
Ausgang digital - 1InB

Ausgang PWM - 1PWM Geschwindigkeit.

Spannungsversorgung Motor an GND und Vin Rechts.

Wieso steuerst du den DC motor als Schrittmotor; das funktioniert nicht.

Schreib Dir ein Program:
1InA 1InB : einer H der andere L oder umgekehrt für Drehrichtung;
PWM Signal an 1PWM dann müßte der Motor drehen.
Grüeß Uwe

Ok Vielen Dank . Der Motor bewegt sich.
Wenn ich nur 1 digital Ausgang anlege an In a anlege
wenn ich noch einen digitalen Ausgang an In b lege, dreht der Motor sofort links/rechts ganz schnell. Also schaltet sofort wieder die Drehrichtung um.
Wie müsste ich das Programm abändern, damit er mal so läuft und dann mal andersrum.
Auch kann ich den Motor nicht stoppen, läuft immer weiter. Nach Boardreset auch, dauert etwas ,dann fängt er wieder an.
Vielleicht kannst du mir mit dem Code noch etwas auf die Sprünge Helfen.

Hier nochmal der Code

Stepper Motor Control - speed control

This program drives a unipolar or bipolar stepper motor.
The motor is attached to digital pins 8 - 11 of the Arduino.
A potentiometer is connected to analog input 0.

The motor will rotate in a clockwise direction. The higher the potentiometer value,
the faster the motor speed. Because setSpeed() sets the delay between steps,
you may notice the motor is less responsive to changes in the sensor value at
low speeds.

Created 30 Nov. 2009
Modified 28 Oct 2010
by Tom Igoe

*/

#include <Stepper.h>

const int stepsPerRevolution = 200; // change this to fit the number of steps per revolution
// for your motor

// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, 8,9,10,11);

int stepCount = 0; // number of steps the motor has taken

void setup() {
// initialize the serial port:
Serial.begin(9600);
}

void loop() {
// read the sensor value:
int sensorReading = analogRead(A0);
// map it to a range from 0 to 100:
int motorSpeed = map(sensorReading, 0, 1023, 0, 100);
// set the motor speed:
if (motorSpeed > 0) {
myStepper.setSpeed(motorSpeed);
// step 1/100 of a revolution:
myStepper.step(stepsPerRevolution/100);
}
}

Obwohl das für Schrittmotor ist funktioniert wenigtsens etwas.

Achja so einen Potientiometer habe ich auch nicht angeschlossen.

Deine Programmierung sieht aber ein Poti vor, wenn du kein Poti verbaust, kann die Schaltung also nicht so funktionieren, wie sie soll...

Entschuldige die provokante Frage: Liest Du was ich schreibe?

Also:
1InA und 1InB: Schalten den Ausgang jeder Halbbrücke auf Masse oder Vin. Damit Steuerst Du die Drehrichtung des Motors und die Bremse.
1InA 1InB:
HIGH HIGH Motor gebremst beide Ausgänge auf Vin
HIGH LOW Motor dreht im Uhrzeigersinn
LOW HIGH Motor dreht im Gegenuhrzeigersinn
LOW LOW Motor gebremst, beide Ausgänge auf Masse
Mit 1PWM steuerst Du die Geschwindigkeit Du kannst auch ein HIGH geben, dann läuft der Motor max Geschwindigkeit. wenn LOW steht er still.

Benuze nicht das Beispiel; schreib selber einen sketch!!!!

Grüße Uwe

Das Problem ist das ich keine Ahnung habe wie man so einen Code schreibt.
Darum habe ich erstmal so einen Beispielcode genommen.
Sozusagen als Ausgangscode.
Beim K8055 is halt so ne grafische Oberfläche mit Schieberreglern drauf.
Da konnte man das wunderbar testen.

Also dann fang am Anfang an.
Es hat keinen Sinn ein Beispiel zu nehmen und etwas zu ändern und zu hoffen das es geht.
Lies Dir mal das Tutorial http://arduino.cc/en/Tutorial/HomePage durch oder kauf Dir ein Buch über Arduino.
Du mußt die Basis lernen bevor Du etwas programmieren kannst.
Grüße Uwe

Das war mir seit

Welche Kabel muss ich jetzt vom Arduino Board auf die H-Brücke schalten?
Ist es bei den PWM Ausgängen egal welchen ich nehme?
Ground ist auch klar
5v out vom Board zur H-Brücke auch
Mit welchem Ausgang des Boards steuere ich die Drehrichtung?
irgend ein digitaler Ausgang?

klar.

Sorry, aber irgendwie kann man so echt nicht helfen.

@apogee
Da stand ich vieleicht länger auf der Leitung :wink:
Grüße Uwe