| Autor |
|
Ansteuerung Schrittmotoren |
|
|
|
|
BID = 1055107
k0riz0n Stammposter
   
Beiträge: 266
|
|
Hallo,
ich komme mit meiner Problemstellung nicht weiter und hoffe ihr könnt mir Tipps geben.
Ich möchte mehrere Schrittmotoren (sagen wir mal 20 Stück) getrennt ansteuern sodass diese auch unterschiedliche Positionen anfahren können.
-ein Schrittmotor mit Steuerplatine direkt am z.B. Arduino fällt aufgrund der geringen Anzahl PWM Pins flach (der Arduino Mega hätt 15 PWM Pins)
und die Ansteuerung im Code ist auch nicht komfortabel
-ich dachte an eine Steuerplatine mit I2C Interface, diese wäre auch im Code gut anzusteuern, jedoch gibt es das wohl nicht
Muss ich die Schrittmotoren/Steuerplatinen wirklich an mehrere z.B. Arduinos und über einen Master-Arduino die Steuerung aufbauen?
Für Servos gibts es Treiberplatinen mit 16 Kanälen und Ansteuerung über I2C, gibt es sowas nicht für Schrottmotoren?
Danke für eure Mühe.
_________________
Infoportal Regensburg | http://www.korizon.de | Meine Projekte auf bastelimperium.de |
|
BID = 1055109
nabruxas Monitorspezialist
    
Beiträge: 9512 Wohnort: Alpenrepublik
|
|
Ist SPI für Dich eine Alternative?
*** Link ***
_________________
0815 - Mit der Lizenz zum Löten! |
|
BID = 1055110
Kleinspannung Urgestein
     
Beiträge: 13375 Wohnort: Tal der Ahnungslosen
|
Die Schrittmotortreiber wie der A4988 haben doch einen Enable- Eingang.
Also müßte es doch gehen,wenn man die Pins für Step und Direction alle parallel schaltet,und über den Enable im Programm auswählt,welcher Kollege nun grad dran ist.
Oder bin ich da auf dem Holzweg?
_________________
Manche Männer bemühen sich lebenslang, das Wesen einer Frau zu verstehen. Andere befassen sich mit weniger schwierigen Dingen z.B. der Relativitätstheorie.
(Albert Einstein)
|
BID = 1055112
k0riz0n Stammposter
   
Beiträge: 266
|
Zitat :
nabruxas hat am 26 Aug 2019 22:23 geschrieben :
|
Ist SPI für Dich eine Alternative? |
Bei der Schnittstelle bin ich flexibel.
Die Verlinkte Steuerplatine ist nur recht kostenintensiv wenn ich pro Motor ein Stück brauche. Ich such mal in diese Richtung weiter.
Zitat :
|
Kleinspannung
...Step und Direction alle parallel schaltet und über den Enable im Programm auswählt..
|
Daran habe ich auch gedacht aber das macht dann die Ansteuerung im Code schwierig wenn die Motoren in unterschiedliche Richtungen und Positionen anfahren sollen.
Oder denke ich da zu kompliziert?
_________________
Infoportal Regensburg | http://www.korizon.de | Meine Projekte auf bastelimperium.de
|
BID = 1055115
unlock Schriftsteller
     Beiträge: 902 Wohnort: Mosbach
|
Zitat :
k0riz0n hat am 27 Aug 2019 05:54 geschrieben :
|
Zitat :
|
Kleinspannung
...Step und Direction alle parallel schaltet und über den Enable im Programm auswählt..
| Daran habe ich auch gedacht aber das macht dann die Ansteuerung im Code schwierig wenn die Motoren in unterschiedliche Richtungen und Positionen anfahren sollen.
Oder denke ich da zu kompliziert?
|
Hallo,
so kompliziert dürfte das nicht sein,denn Du schickst die Daten ja erst nach CE rüber.Möglicherweise sollte man aber einen Blick ins DaBla des Kontrollers werfen,damit das Timing passt.
Was bei so einer Planung und auslegung nicht vergessen werden darf, ist die Frage nach der Geschwindigkeit, also wie schnell das Konstrukt sich letztendlich bewegen soll. Hier hat die Ansteuerung mit parallelem "Datenbus" erhebliche Nachteile.
_________________
One Flash and you're Ash !
|
BID = 1055116
freder Gerade angekommen
Beiträge: 16 Wohnort: berlin
|
Hier mal das Datenblatt zu einer Treiberplatine mit I2C, einem Schrittmotorausgang oder zwei PWM Ausgänge.
ca. 13€
bis zu 16 Stück an einem I2C Bus
Zitat :
| | -ein Schrittmotor mit Steuerplatine direkt am z.B. Arduino fällt aufgrund der geringen Anzahl PWM Pins flach (der Arduino Mega hätt 15 PWM Pins) |
Und eigentlich hat PWM nichts mit Schrittmotoren zu tun...
Es gibt auch gute fertige Lösungen für 3D Drucker, vielleicht mal da schauen
|
BID = 1055117
nabruxas Monitorspezialist
    
Beiträge: 9512 Wohnort: Alpenrepublik
|
oder das Teil?
*** Link ***
Du musst das Ding ja nicht fertig kaufen. Die paar Bauteile sind schnell auf eine PCB gestrickt.
_________________
0815 - Mit der Lizenz zum Löten!
|
BID = 1055119
k0riz0n Stammposter
   
Beiträge: 266
|
Zitat :
unlock hat am 27 Aug 2019 11:16 geschrieben :
|
...denn Du schickst die Daten ja erst nach CE rüber...
|
Wofür steht CE?
Zitat :
|
freder
Hier mal das Datenblatt
..Und eigentlich hat PWM nichts mit Schrittmotoren zu tun... |
Leider öffnet sich bei mir kein PDF. Kannst du mir die Bezeichnung der Treiberplatine bzw. einen Link zur Produktseite posten?
Da hast du natürlich recht, PWM hatte ich wohl noch von den Servomotoren im Kopf. Diese hatte ich auch mal in der Betrachtung aber da reicht mir der Drehwinkel nicht.
@nabruxas
Danke, schau ich mir mal an
_________________
Infoportal Regensburg | http://www.korizon.de | Meine Projekte auf bastelimperium.de
|
BID = 1055121
nabruxas Monitorspezialist
    
Beiträge: 9512 Wohnort: Alpenrepublik
|
CE = Chip Enable
Anbei das File das sich bei Dir nicht öffnen lässt.
Der L298 ist aber ein uralter Knochen....
_________________
0815 - Mit der Lizenz zum Löten!
[ Diese Nachricht wurde geändert von: nabruxas am 27 Aug 2019 17:44 ]
|
BID = 1055122
freder Gerade angekommen
Beiträge: 16 Wohnort: berlin
|
Lade die Datei erst runter und öffne sie dann
|
BID = 1055127
perl Ehrenmitglied
       
Beiträge: 11110,1 Wohnort: Rheinbach
|
Zitat :
| | Da hast du natürlich recht, PWM hatte ich wohl noch von den Servomotoren im Kopf. |
..oder vom Microstepping.
Macht man ja heute häufig, wenn Schritte zu grob sind, oder um mechanische Schwingungen oder Lärm zu unterbinden.
Zitat :
| Daran habe ich auch gedacht aber das macht dann die Ansteuerung im Code schwierig wenn die Motoren in unterschiedliche Richtungen und Positionen anfahren sollen.
Oder denke ich da zu kompliziert? |
Vermutlich.
Ich kenne deine Programmierfähigkeiten nicht, aber ich glaube, dass du die Rechengeschwindigkeit aktueller Microcontroller unterschätzt.
[ Diese Nachricht wurde geändert von: perl am 27 Aug 2019 22:13 ]
|
BID = 1055162
unlock Schriftsteller
     Beiträge: 902 Wohnort: Mosbach
|
Zitat :
unlock hat am 27 Aug 2019 11:16 geschrieben :
|
...denn Du schickst die Daten ja erst nach CE rüber...
|
Man möge mir Angesichts Geistiger Umnachtung für diese Aussage verzeihen,denn es sollten natürlich erst alle Parameter definiert werden bevor ChipEnable abgeschossen wird
Die Geschwindigkeit,mit der der Prozessor alles ansteuert hängt natürlich nicht allein von der Taktfrequenz ab,sondern vielmehr von dem,mit was er beschäftigt wird,und somit auch von den erforderlichen Rechenoperationen in einem Programm
_________________
One Flash and you're Ash !
|
BID = 1055239
k0riz0n Stammposter
   
Beiträge: 266
|
Also... Folgender Aufbau.
-4 Stück MCP23017 I2C Port Expander 3 Pins pro Treiberplatine
-20 Stück A4988 Treiberplatinen + Schrittmotoren
Die Ansteuerung erfolgt dann im loop im Einzelschritt nacheinander für jeden Motor:
| Code : |
Adafruit_MCP23017 mcp1; // Create MCP 1
Adafruit_MCP23017 mcp2; // Create MCP 2
..... bis mcp4
int stepCounter;
int steps = 2000;
void setup()
{
mcp1.begin(0); // Start MCP 1 on Hardware address 0x20
mcp2.begin(1); // Start MCP 2 on Hardware address 0x21
... bis mcp4
mcp1.pinMode(0, OUTPUT); // Define GPB0 on MCP1 as Output
... für alle MCP23017 und alle Pins
// 0 Motor1 Enable
// 1 Motor1 Step
// 2 Motor1 Richtung
// 3 Motor2 Enable
// 4 Motor2 Step
// 5 Motor2 Richtung
mcp1.digitalWrite(0, LOW);
mcp1.digitalWrite(3, LOW);
... für alle Enable Pins
}
void loop()
{
mcp1.digitalWrite(2, LOW); //Richtung Motor1
mcp1.digitalWrite(5, LOW); //Richtung Motor2
.. für alle Motoren
for(stepCounter = 0; stepCounter < steps; stepCounter++)
{
mcp1.digitalWrite(1, HIGH); //Step Motor1
mcp1.digitalWrite(4, HIGH); //Step Motor2
delayMicroseconds(500);
mcp1.digitalWrite(1, LOW); //Step Motor1
mcp1.digitalWrite(4, LOW); //Step Motor2
delayMicroseconds(500);
}
delay(1000);
} |
|
_________________
Infoportal Regensburg | http://www.korizon.de | Meine Projekte auf bastelimperium.de
|
BID = 1055241
k0riz0n Stammposter
   
Beiträge: 266
|
Der Code ist natürlich nur beispielhaft und nicht vollständig
|