UPDATE: 3 Schrittmotoren aber nur 6 PWM - Wo denk ich Falsch ?

Moin zusammen ..

Bin relativ neu auf dem Gebiet AVR, wobei ich schon einige Grundkentnisse besitze, aber steh ich jetzt vor nem grossen Problem, bzw. warscheinlich nen Denkfehler ^^

Möchte gern 3 Schrittmotoren ansteuern, steuerbar sollen sowohl Drehrichtung aber auch Geschwindigkeit sein.

Da ich noch nicht wirklich Ahnung von Schrittmotoren habe und noch dabei bin mich in die Materie einzulesen, möchte ich für meine Üb-Schaltung 3 Nema 17 Bipolar nehmen.
das sind ja die mit den 4 Kabeln, 2 pro richtung usw ... das ganze über ne H-Bridge usw ...

aber ich benötige ja dann pro motor 4 PWM Anschlüsse auf dem Arduino UNO ? oder wo hab ich da n denkfehler ?

für meine testschaltung wollte ich mir eigentlich die EasyDriver v4 Motorshields holen ...

meine vermutung ist das ich um das zu realisiern nun doch n Arduino mega brauche, oder kann man das anders realisieren ?

Ihr seid doch alles alte Hasen ^^ gebt mir n hinweis .-D

Danke

Wenn Du die EasyDriver verwendest kommst Du locker mit einem UNO aus, die Motorsteuerung übernimmt ja der EasyDriver (je Motor einer). Im simpelsten Fall benötigst Du nur zwei Pins pro Driver, einen für die Schritte und einen für die Richtung.

danke für die info mafu ..
dann werd ich mich mal erkundigen wie das funktioniert ..

nur wie ist das dann wenn ich mein projekt standalone haben will, also gelötet ohne den uno ... dann muss ich ja die motorsteuerung selber bauen ... das dürfte dann etwas umfangreicher werden ..

das ganze soll so ne cnc geschichte werden ...

rauschgiftengel:
danke für die info mafu ..
dann werd ich mich mal erkundigen wie das funktioniert ..

nur wie ist das dann wenn ich mein projekt standalone haben will, also gelötet ohne den uno ... dann muss ich ja die motorsteuerung selber bauen ... das dürfte dann etwas umfangreicher werden ..

das ganze soll so ne cnc geschichte werden ...

Dann nimmst Du auch die EasyDriver. An die Driver werden Steckerleisten angelötet. Wenn Du eine eigene Platine erstellst, versiehst Du sie einfach mit passenden Buchsenleisten und steckst die EasyDriver drauf. Ich mache es genau so.

Für den Schrittmotorbetrieb brauchst du gar keine PWM, mir scheint, du hast das PWM-Prinzip nicht verstanden. Oder den Schrittmotor. Oder beides. :wink:

http://bildr.org/2011/06/easydriver/

Das ist mal 'ne schöne ausführliche Beschreibung zum EasyDriver. Zwar hängt das Taktsignal an Pin 3, das ist aber nur rein zufällig ein PWM-Ausgang. Letztlich brauchst du mit Treiber nur zwei digitale Ausgänge: den Taktausgang und das Richtungssignal.

Lach, das mit den schrittmotoren hab ich ja soweit verstanden ... aber wie es scheint das mit den PWM´s noch nicht so richtig ..
werd mich da wohl noch n bissle selber bilden müssen :smiley:

aber danke erstmal für den tollen link, ist ne gute erklärung (danke an meinen dienstherrn für den erweiterten englischkurs) :smiley:

na werd das die tage mal testen, wenn die treiber da sind .. und die stepper :slight_smile:

meld mich dann sicher wieder :slight_smile:

Ich versuche es auf die Schnelle zu erklären: Das Taktsignal gibt die Geschwindigkeit vor, d.h. wenn 10 Takte pro Sekunde kommen dreht der Motor langsamer als würden 100 Takte pro Sekunde kommen.
Bei der PWM bleibt die Frequenz, also die Anzahl der steigenden bzw. fallenden Flanken konstant. Einzig das Verhältnis zwischen An- und Aus-Zeit ändert sich. So kann beispielsweise ein An-Aus-Verhältnis 50% zu 50% betragen oder aber auch 90% zu 10%, Die Anzahl der Impulse je Sekunde ändert sich damit nicht.

ach so ist das :roll_eyes:

ich war der ansicht das das pwm quasi der takt ist …

naja wie gesagt, ich les mich da mal weiter ein …

danke für die unterstützung :slight_smile:

Tjo, dafür sind wir ja da... :wink:

noch ein Wort.
Die Easydriver verkraften maximal 600mA Motorstrom. Um Microschritte machen zu können braucht es ca die 4 fache Nennspannung des Motors. Das grenzt beträchtlich die Motorauswahl bzw motorleistung ein.
Der Pololu Schrittmotortreiber Motortreiber - Watterott electronic verträgt 2A
Darum ist der Pololu vorzuziehen. Die Ansteuerung ist gleich; immer ein richtungssignal und eine Rechteckspannung für die Schritte.

Viele Grüße Uwe

moin moin alle zusammen …

soo, ich bin jetzt mal n ganzen fetzen weitergekommen…
allerdings tun sich mir jetzt doch wieder einige fragen auf …

erstmal n link : hier ist n foto von meinem testaufbau http://imageshack.us/photo/my-images/841/20111005123554.jpg

und hier das sketch dazu …

#include <Stepper.h>
#define motorSteps 200
#define motorpin1 2
#define motorpin2 3
#define motorpin3 5
#define motorpin4 6
#define motorpin5 8
#define motorpin6 9
Stepper myStepper1(motorSteps, motorpin1,motorpin2);
Stepper myStepper2(motorSteps, motorpin3,motorpin4);
Stepper myStepper3(motorSteps, motorpin5,motorpin6);

void setup() {
myStepper1.setSpeed(300);
myStepper2.setSpeed(300);
myStepper3.setSpeed(300);
Serial.begin(9600);
}
void loop() {
Serial.println(“Stepper 1 vor”);
myStepper1.step(3600);
delay(500);
Serial.println(“Stepper 1 zurueck”);
myStepper1.step(-3600);
delay(500);
Serial.println(“Stepper 2 vor”);
myStepper2.step(3600);
delay(500);
Serial.println(“Stepper 2 zurueck”);
myStepper2.step(-3600);
delay(500); Serial.println(“Stepper 3 vor”);
myStepper3.step(3600);
delay(500);
Serial.println(“Stepper 3 zurueck”);
myStepper3.step(-3600);
delay(500);
}

funktioniert soweit alles richtig fein.

jetzt die frage … ich kann ja bei den motortreibern den strom begrenzen. d.h. die stepper vertragen 0,33A, um das einzustellen muss ich doch eigentlich den motor drehen lassen, und dabei zwischen den 2 kabeln den strom messen ? oder seh ich das falsch … (bei einem schaltschrank hab ich das bisher mit ner stromzange gemacht, daher die frage)

und interessieren würd mich auch noch, die stepper sind 1,8° / 200 steps ääh motoren, d.h. ich brauche 200 schritte pro umdrehung, wenn ich ohne microschritte arbeite …
aber das fährt er nur etwa ne viertelumdrehung …seltsam …

achso, die werte oben im sketch sind einfach nur fiktiv, zum testen.

da ich auch noch nicht genau weiss wie sich das mit der maximalen geschwindigkeit verhält usw …

das (grosse, langfristige) ziel ist eigentlich ne eigene cnc-anlage, (evtl über android tablet) … aber ich möchte gerne dazu lernen und das ganze verstehen, auch für weitere projekte … .
deshalb entfällt für mich das blosse kopieren von code …
allerdings würd mich schon mal interessieren wie ich das im weiteren verlauf realisieren kann, mit dem g-code interpreter (reprap oder so) …

danke schon mal für eure zeit & hilfe

Microschritte erhöhen die Schritte des Motors. Bei 1/8 microschritte und 200 Schritt motor dann brauchst Du 1600 Schritte für eine Umdrehung.
Stromzange: Für Wechslstrom machst Du gar nichts; für Gelichstrom ist zu wenig Auflösung. Je anch Motortreiber wird der Motorstrom moduliert und man kann den Strom nur in einer ganz bestimmten Position messen.

Ein 330mA Motor scheint mir etwas stark unterdimensioniert für eine CNC Fräse.
Grüße Uwe

Man erkennt auf dem Foto, dass die Eingänge MS1 bis MS3 unbeschaltet sind. Diese werden durch einen interne Pull-Down-Widerstand auf Masse gezogen, damit ist der Vollschrittbetrieb also korrekt eingestellt. Entsprechend sollte das Programm also auch funktioneiren, tut es aber noch nicht so, wie es soll...
Hast du mal versucht, die Drehgeschwindigkeit zu verringern? Hast du da das gleiche Resultat?

@uwe

also wie der post über mir richtig bemerkt hat, nutze ich (noch) keine microschritte, also ms1 - ms3 unbeschaltet bzw low.
der schrittmotort ist ein nema 17, dieser hier Schrittmotoren - Watterott electronic
also laut internetrecherchen nutzen den viele, auch die repraps und makerbots usw .. und zig cnc´s ..
wüsste nicht wieso die zu schwach sein sollten ...
allerdings steht das mit den 0,33A auch so auf der website bzw im datenblatt, und der pololu treiber lässt mich ja den strom einstellen ...
das ganze hängt übrigens an einem 12V 1A netzteil (am arduino) ...daher würd ich schon gern den strom begrenzen (am poti des treibers) .. weiss nur nicht wo messen

@sth77

also ich hab gerade mal
myStepper1.setSpeed(300);

auf

myStepper1.setSpeed(50);

und die steps auf 200 gestellt, da dreht er aber auch nur etwa 90°

und richtig angeschlossen müssten sie ja sein, sonst würd gar nix funktionieren ...

bn langsam echt etwas ratlos ...

also ich hab was interessantes gefunden ..

hab die geschwindigkeit (rpm) auf 20 gestellt, damit ich die schritte mal sehen kann,
und dazu mal die schritte auf 800 ... und bei 800 steps sieht es in etwa so aus als macht er genau eine umdrehung ..

klingt seltsam, is aber so :smiley:

nur muss es dafür ja eine erklärung geben ... nur raten is mir etwas zu ungenau ...

also ich hab keine ... ihr vielleicht ?

rauschgiftengel:
@uwe

also wie der post über mir richtig bemerkt hat, nutze ich (noch) keine microschritte, also ms1 - ms3 unbeschaltet bzw low.
der schrittmotort ist ein nema 17, dieser hier Schrittmotoren - Watterott electronic
also laut internetrecherchen nutzen den viele, auch die repraps und makerbots usw .. und zig cnc´s ..
wüsste nicht wieso die zu schwach sein sollten ...
allerdings steht das mit den 0,33A auch so auf der website bzw im datenblatt, und der pololu treiber lässt mich ja den strom einstellen ...
das ganze hängt übrigens an einem 12V 1A netzteil (am arduino) ...daher würd ich schon gern den strom begrenzen (am poti des treibers) .. weiss nur nicht wo messen

Ich rate Dir von diesem Motor ab da für Microschrite eine hohe Spannungsversorgung erforderlich ist ( mindestens 3, besser 4x Nennspannung). Das sind bei Diesem Motor 36 bis 48V. Diese Spannung hält aber der Motordriver nicht aus. Deshalb ist es sinnvoller einen Motor zu wählen mit Nennspannung um 5-6V und dementsprechend höheren Motorstrom. Die erhöhte Spannungsversorgung ist notwendig, damit der Motorstrom vom Driver begrenzt werden kann und nicht vom Wicklingswiderstand oder Wicklungsinduktivität begrenzt wird.

Viele Grüße Uwe

hmm, ja okay, dann klingt vernünftig,
werde jedoch für erste tests usw wohl diese stepper nutzen, sofern ich herausfinden kann warum er bei 800 steps eine umdrehung macht, obwohl es n 200er ist ...

aber der einwand ist gut, werd dann mal sehen ob ich stepper finde, die die gleichen maße haben wie die meinigen, und dann nach bau der anlage und tests diese einfach austauschen.

ne idee warum das mit den steps nicht passt ?

Den Pololu Schrittmotortreiber gibt es in 2 Versionen mit 2 verschiedenen TreiberICs:

A4983:
The resolution (step size) selector inputs (MS1, MS2, MS3) enable selection from the five step resolutions according to the table below. MS2 and MS3 have internal 100k? pull-down resistors, but MS1 does not, so it must be connected externally.

A4988
The resolution (step size) selector inputs (MS1, MS2, MS3) enable selection from the five step resolutions according to the table below. MS1 and MS3 have internal 100k? pull-down resistors and MS2 has an internal 50k? pull-down resistor, so leaving these three microstep selection pins disconnected results in full-step mode

MS1 MS2 MS3 Microstep Resolution
Low Low Low Full step
High Low Low Half step
Low High Low Quarter step
High High Low Eighth step
High High High Sixteenth step

Daraus ergibt sich, daß wenn Du einen mit dem A4983 hast und MS1 nicht beschaltest könnte es sein daß Du Half-Step Mode hast und darausfolgend für eine Umdrehung die dopelte schrittzahl brauchst. Als Test dazu brachst Du MS1 nur mit einem Widerstand auf Masse zu legen.

Viele Grüße Uwe

danke uwe für den ausführlichen post,

hab grad eben nochmal im müll gekramt und die packung rausgesucht, also es scheint definitiv der a4988 zu sein …
weil diese tabelle mit den ms1 usw hatte ich auch schon auf watterott (da hab ichs bestellt)
werds morgen trotzdem mal probieren … ms1 mit widerstand auf masse zu legen …

was für n widerstand schlägst du vor ?

ich hab nur 220, 1.1k, 10k, 100k, 1m und 5,1m da

oder halt notfalls n poti zum einstellen ^^

Wenn Du so fragst: 10kOhm. Beschalte alle MSx-Eingänge auf Masse.
Viele Grüße Uwe