Ansteuerung Schrittmotoren

Im Unterforum Projekte im Selbstbau - Beschreibung: Selbstbau von Elektronik und Elektro

Suchen          Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren



Elektronik- und Elektroforum Forum Index   >>   Projekte im Selbstbau        Projekte im Selbstbau : Selbstbau von Elektronik und Elektro

Autor
Ansteuerung Schrittmotoren

    










BID = 1055107

k0riz0n

Stammposter



Beiträge: 266
Zur Homepage von k0riz0n
 

  


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: 7839
Wohnort: Alpenrepublik

 

  

Ist SPI für Dich eine Alternative?
*** Link ***

_________________
0815 - Mit der Lizenz zum Löten!








BID = 1055110

Kleinspannung

Urgestein



Beiträge: 12247
Wohnort: Tal der Ahnungslosen
Zur Homepage von Kleinspannung

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
Zur Homepage von k0riz0n


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: 752
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


PDF anzeigen




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: 7839
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
Zur Homepage von k0riz0n


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: 7839
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!



PDF anzeigen




[ 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: 752
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
Zur Homepage von k0riz0n

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
Zur Homepage von k0riz0n

Der Code ist natürlich nur beispielhaft und nicht vollständig


Zurück zur Seite 1 im Unterforum          Vorheriges Thema Nächstes Thema 


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 26 Beiträge im Durchschnitt pro Tag       heute wurden bisher 4 Beiträge verfasst
© x sparkkelsputz        Besucher : 148477353   Heute : 5624    Gestern : 14044    Online : 282        19.9.2019    13:37
13 Besucher in den letzten 60 Sekunden        alle 4.62 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.202661991119