Schrittmotor vibriert nur

Hallo, das ist genau das Board was du, agmue, gefunden hast. Dein Tipp hat allerdings leider nicht funktioniert: "Stepper myStepper(stepsPerRevolution, 4,5,6,7); " - dann kommt nur ein lautes piepen.

Ich habe zwar ein anderes Bord, darauf befindet sich aber auch der L298. Am Anfang vibrierte er bei mir auch bis ich die Versorgungsspannung erhöt habe, mit Minimum Spannung lief der Motor auch ohne Last nicht. Wie genau und mit wieviel Volt versorgst du das Shield denn?

mit 12 Volt. Soll ich es mal mit mehr versuchen?

Martha113: mit 12 Volt. Soll ich es mal mit mehr versuchen?

Nein auf keinen Fall das ist mehr als genug. Ich hatte es glaub ich mit 6V versucht, da vibrierte er nur.

Mal ne komische Frage, piepst der Motor oder das Bord wenn du laut Combie anschließt?

was meinst du mit Combie anschließen?

Martha113: was meinst du mit Combie anschließen?

Entschuldige, ich meinte wie agmue es schrieb!

ja, dann piepst das Board. Und es vibriert auch nichts mehr

Mit der PWM kann es vielleicht sein: "The speed control is achieved through conventional PWM which can be obtained from Arduino's PWM output Pin 5 and 6. The enable/disable function of the motor control is signalled by Arduino Digital Pin 4 and 7. The Motor shield can be powered directly from Arduino or from external power source. It is strongly encouraged to use external power supply to power the motor shield." steht hier und sieht ähnlich aus http://continentalee.com.sg/dual-h-bridge-stepper-motor-driver-controller-shield-l298n

Was muss ich denn da beachten?

The speed control is achieved through conventional PWM which can be obtained from Arduino's PWM output Pin 5 and 6.

Eine missverständliche Information. Mit Speed ist nicht Drehzahl gemeint.

Sondern eher, wie schnell ein Schritt gemacht wird.

Der L298 braucht kein PWM.

Du hast das Datenblatt zum L298. Und ein Multimeter (richtig?).

Also steht dem messen, wo welcher Anschluss hin geht nichts im Wege.

Der L298 hat 4 Eingänge. Die Geschwindigkeit wie die geschaltet werden bestimmt die Geschwindigkeit des Motors.

Wie schon gesagt musst du die Motor Library korrekt initialisieren. Also da auch die 4 Pins angeben die zwischen IC und Arduino verbunden sind.

Die PWM Geschichte ist glaube ich für DC Motoren. Da kann man dann über den Enable Eingang die Geschwindigkeit steuern. Stepper sind was anderes.

Hallo, ich weiß, wie herum der Strom fließt, Schrittmotoren sind aber neu für mich. Bitte berücksichtige dies hinsichtlich meiner Aussagen oder Vorschläge.

Bei meiner Suche im Internet fand ich immer wieder die Aussage: "This DFRobot L298 DC motor driver shield uses LG’ high power H-bridge driver Chip L298P, which is able to drive DC motor, two-phase or four phase stepper motor with a maximum 2A current." Wie zwei DC-Motoren angeschlossen werden, ist ausführlich beschrieben, beim Schrittmotoranschluß wird es aber dünne. PWM wird für die DC-Motoren verwendet (Doku).

Bei einem ähnlich aussehendem Shield habe ich eine Bibliothek mit Beispielen (StepperMotorDemo.ino) gefunden:

/******Pins definitions*************/
#define MOTORSHIELD_IN1 8
#define MOTORSHIELD_IN2 11
#define MOTORSHIELD_IN3 12
#define MOTORSHIELD_IN4 13
#define CTRLPIN_A 9
#define CTRLPIN_B 10

Wäre ich in Deiner Situation, würde ich mir einen Blinksketch ändern, der genau einen Pin ein/aus schaltet. Dann mit Multimeter oder LED mit Vorwiderstand schauen, an welchen Pin des ICs dieses Signal weitergeleitet wird. Die Pins In1 bis In4 und EnA und EnB entsprechen dann denen im Code (s. o.).

Dann würde ich "Stepper myStepper(stepsPerRevolution, MOTORSHIELD_IN1,MOTORSHIELD_IN2,MOTORSHIELD_IN3,MOTORSHIELD_IN4); " versuchen, wobei CTRLPIN_ wohl auf HIGH müßte.

Bitte vergiß meinen ersten Satz nicht, gutes Gelingen!

Hier ist ein Datenblatt von einem Shield: http://droboticsonline.com/ebaydownloads/L298_Motor_Shield_Manual.pdf

im PWM Mode werden folgende Signale benötigt:

4: Motor 2 Direction control 5: Motor 2 PWM control 6: Motor 1 PWM control 7: Motor 1 Direction control

Der Sketch benutzt die vier Pins jedoch zum direkten bestromen der Spulen. Passt wohl, der stepper sketch polt bei manchen schritten die Spulen um...

In dem Datenblatt ist ein Beispielcode drinn, ein Versuch wäre es Wert...

Cidos: im PWM Mode werden folgende Signale benötigt:

4: Motor 2 Direction control 5: Motor 2 PWM control 6: Motor 1 PWM control 7: Motor 1 Direction control

Das ist für 2 DC Motoren! Hier geht es um einen Schrittmotor

Hallo, das Problem ist, dass ich mich etwas weiter von einer größeren Stadt befinde und bis Montag alles zu hat. FÜr die Spulen habe ich das Multmieter im Shop verwendet. Daher habe ich hier keins griffbereit. Ich glaube, dass Uwes Vermutung bezüglich des Verdachts, dass nur eine Wicklung des Motors funktioniert richtig ist. Also habe ich versucht immer zu verändern: Stepper myStepper(stepsPerRevolution, 10,11); 10,11 funktioniert hierbei ein wenig, er fängt sich an ruckelig zu drehen - vor und zurück. Danach bin ich die anderen Paarungen durchgegangen: Stepper myStepper(stepsPerRevolution, 1,2); Stepper myStepper(stepsPerRevolution, 2,3); - aber da hat sich nichts getan.

Plan B: Hast Du eine LED und einen Vorwiderstand (220R bis 1k)? Plan C: Der UNO hat an Pin 13 eine LED: digital.Write(13,digitalRead(A3));

Ich glaube das Shield ist primär für die Ansteuerung 2 DC Motore ausgelegt.

L298 ttp://www.st.com/web/en/resource/technical/document/datasheet/CD00000240.pdf

Ich sehe auf dem Motorbord 2 74HC1G04 was ein Inverter ist. http://www.nxp.com/documents/data_sheet/74HC_HCT1G04.pdf

Ich glaube je 2 Eingänge einer H-Brücke des L298 werden gleichzeitig angesteuert. Einer direkt und der andere invertiert über den Inverter 74HC1G04. Das 2. Ansteuersignal für eine H-Brücke des L298 ist der inhibit Eingang der die H-Brücke ausschaltet. Zusammen ergibt das für einen DC-Motor ein Richtungs und ein PWM-Geschwindigkeitssignal.

Für einen Schrittmotor mußt Du die beiden Geschwindigkeitssignale permanent auf H schalten und die beiden Richtungsignale Reihe nach

A B
0 0
0 1
1 1
1 0

So müßtest Du eine Full Wave Ansteuerung erhalten.

Zu den Schrittfolgen http://www.st.com/web/en/resource/technical/document/datasheet/CD00000063.pdf ab Seite 5 hier NORMAL DRIVE MODE genannt.
WAVE DRIVE MODE und HALF STEP MODE erreichst Du indem Du eine H-Brücke mittels Geschwindigkeitssignal ausschaltest.

Der gezeigte Motor vertägt nur 5V
Du kannst als max 7V als Motorspannung verwenden. (weil ca 2-3V an den Leistungstransistoren des L298 abfallen).

Schöne Grüße aus Norwegen
Uwe

(morgen gehts wieder heim)

uwefed: (morgen gehts wieder heim)

Gute Reise!

Vielen Dank für die vielen lieben Hinweise. Ich frage mal ganz unverschämt. Kann mir jemand dabei helfen? Ich habe das noch nie gemacht und kenne mich da eher rudimentär aus, weil ich bisher immer die einfachen Adafruit Motortreiber genommen habe. Ich weiß ehrlich gesagt nicht, wie ich das anstellen soll.

Ich versuche mal ein wenig mein Glück und probiere, ob ich es irgendwie hinbekomme. Noch einen schönen letzten Tag in Norwegen.

Bei folgenden Sketch, den ich im Internet gefunden habe dreht sich der Motor endlich und vibriert nicht nur.
Hierzu eine letzte Frage. Der Motor dreht sich permanent links und rechts. Wie kann ich hier Pausen einfügen und angeben, wie viele Schritte sich der Motor jeweils vor oder zurück bewegen soll.

Ganz lieben Dank euch allen für die bisherige Hilfe!

#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 the motor shield
Stepper myStepper(stepsPerRevolution,12,13);     

// give the motor control pins names:
const int pwmA = 10;
const int pwmB = 11;
const int brakeA = 9;
const int brakeB = 8;

int previous = 0;

void setup() {
Serial.begin(9600);
// set the PWM and brake pins so that the direction pins  // can be used to control the motor:
pinMode(pwmA, OUTPUT);
pinMode(pwmB, OUTPUT);
pinMode(brakeA, OUTPUT);
pinMode(brakeB, OUTPUT);
digitalWrite(pwmA, HIGH);
digitalWrite(pwmB, HIGH);
digitalWrite(brakeA, LOW);
digitalWrite(brakeB, LOW); 
// initialize the serial port:
Serial.begin(9600);
// set the motor speed (for multiple steps only):
myStepper.setSpeed(100);
}


void loop() { 
 // get the sensor value
 int val = analogRead(0);

 // move a number of steps equal to the change in the
 // sensor reading
 myStepper.step(val - previous);

 // remember the previous value of the sensor
 previous = val;  
}

Hast Du an A0 ein Poti angeschlossen? Eigentlich sollte der Motor den Bewegungen des Potis folgen, dann stehen bleiben.