Guten Abend, ich möchte gerne über den Winter einen kleinen Roboterarm entwerfen und am 3D-Drucker Drucken. Dieser soll 6 Achsen haben also müsste ich über den Esp 32 6 Schrittmotoren ansteuern. Theoretisch brauche ich dafür dann 24 GPIO Pins und diese müsste der ESP 32 S2 Mini ja haben oder sehe ich das falsch? 😅 Vielen Dank schonmal für die Antworten.
:
Bearbeitet durch User
Warum so viele GPIOs? Du brauchst sowieso Treiber, also reicht ein Dir und ein Step pro Motor. Also 12.
T. schrieb: > Roboterarm entwerfen und am 3D-Drucker Drucken. Dieser soll 6 Achsen > haben also müsste ich über den Esp 32 6 Schrittmotoren Hmm, Roboterarme und Schrittmotoren, schlechte Kombination. Du weisst nicht welche Kraft der Arm aufbringen muss weil Schrittmotore immer mit vollem Strom versorgt werden und du bist auf einen engen Drehzahlbereich eingeschränkt, kann nicht mal schnell unbelastet verfahren. Drückt jemand den Arm weg oder blockiert er, weisst du die Position nicht mehr Du willst DC Gleichstrommotore mit Getriebe und Incrementalenencider, aber kein Schneckengetriebe. Und du willst nicht nur Richtung und Geschwindigkeit steuern, sondern Maximalstrom festlegen und realen Strom messen, pro Motor, dazu die Encoderposition und ggf. noch die Motortemperatur. Alternativ Gimbal BLDC. Du brauchst also eher 2 Analogausgänge, 2 Analogeingänge (Strom und Temperatur), 1 Digitalausgang falls die Richtung nicht im Analogsignal (negativ) steckt und 2 Digitaleingänge pro Motor. Ein ESP32 ist vollkommen ungeeignet. Motore mit Encoderscheiben gibt es günstig in Tintenstrahldruckern, z.B. Canon und die gibt es ja täglich im Schrott.
Es gibt eine Firmware FluidNC die steuert 6 Achsen und es gibt auch schon passende HW dazu: http://wiki.fluidnc.com/en/hardware/existing_hardware SM werden auch in Roboterarmen verwendet, bei den Antrieben die ein hohes Drehmoment brauchen dann mit Planetengetriebe, Harmonic Drive oder Cycloid Getriebe. Kann man mit dem 3D Drucker bauen, das sind aber keine Anfängerprojekte. Auch gut sind die SM Treiber die direkt an den Motor angeflanscht werden und ein Businterface wie RS485 oder CAN haben. Suche nach MKS Servo.
:
Bearbeitet durch User
T. schrieb: > Dieser soll 6 Achsen haben also müsste ich über den Esp 32 6 Schrittmotoren > ansteuern. Theoretisch brauche ich dafür dann 24 GPIO Pins Warum brauchst du dafür 24 Pins? Da nimmt man fertige Treiber und steuert die über Impuls/Richtung an. > Theoretisch brauche ich dafür dann 24 GPIO Pins und diese müsste der ESP > 32 S2 Mini ja haben oder sehe ich das falsch? Die Pinanzahl wird dein kleinstes Problem sein. Mach dir eher mal über "benötigte Rechenzeit", "Echtzeit", "Interruptreaktionszeiten" und "Jitter" Gedanken. Und steure zu Beginn einfach mal 1 einzigen Schrittmotor an. > ich möchte gerne über den Winter einen kleinen Roboterarm entwerfen Welche Erfahrung hast du in die Richtung der grade erwähnten Stichworte bereits? Könnte sein, dass da ganz schnell mehrere Winter draus werden... Merke: auch wenn es etwas für kleines Geld an jeder Ecke zu kaufen gibt, bedeutet das nicht, dass man das alleine ohne Erfahrung so nebenher in den Winterferien auch hinbekommt.
Wenn Du ein wenig rumbasteln willst ist aus dem Character der Frage evtl. ein PCA9685 Modul von den üblichen Shops mit einer Hand voll Servos ausreichend - da kannst Du 16 Kanäle (Servos) über 2 Pins (I2C) ansteuern. Simpel aber zum Spielen reicht es. Wenn es solide sein soll sind andere Lösungen gefragt, die Dir hier genügend Leute erklären werden - melde Dich schon mal zum Maschinenbau-, Elektrotechnik- und Informatikstudium um komm dann wieder: aber bloß nicht unter Master! ;-)
Ihr seid schon echt unmöglich. Es ist völlig klar, dass es hier um ein spaßiges Bastelprojekt geht, nicht um industriellen Einsatz. Also lasst die Leute lernen, stattdessen kommen hier neunmalkluge Empfehlungen und Entmutigung. Kein Wunder, dass kaum jemand Lust hat, sich mit solchen Dingen zu beschäftigen, wenn man dermaßen schlechte Hilfe bekommt. Es ist natürlich auch offensichtlich, daß hier seitens des Threaderstellers noch größere Wissenslücken vorherrschen, aber diese lassen sich ja schließen. Der Schrittmotor kann, wie bereits erwähnt, nicht direkt an den ESP32 angeschlossen werden, es wird ein Motortreiber benötigt, der auch die notwendige Leistung schalten kann. Wenn es nicht gerade darum geht, eine Motoransteuerung zu entwickeln, kann man sich den Aufwand sparen und direkt einen integierten Motortreiber verwenden, dem man nur noch die Bewegungsrichtung vorgeben muss und dann für jeden Schritt einen Puls senden. Die gibt es mittlerweile gut und günstig auf kleinen Breakout-Platinen, hier mal ein paar konkrete Modellvorschläge: A4988, DRV8825, TMC2209. In Details unterscheiden die sich natürlich, aber in den Grundfunktionen sind sie ähnlich.
Vielen Dank für die vielen Antworten. Ja es soll eher ein Bastlerprojekt gehen, welches ich über Esp Home oder einen Joystick steuern will. Ich habe bereits einen Schrittmotor 28bjy-48 mit ULN 2003 Treiber Platine angesteuert. Diese Treiberplatine hat 4 Pins zum ansteuern, daher kommen auch die 24 GPIO Pins zustande. Den Arm mache ich hauptsächlich zum Spaß und er sollte auch möglichst günstig sein. Ein paar von diesen Schrittmotoren hatte ich noch rumliegen, daher meine Wahl des 28bjy-48. Mir ist bewusst, dass dieser keinen nenneswerten Drehmoment hat, aber um sich mal in dieser Richtung zu Versuchung reicht es denke ich. Damit ihr mal ein ungefähres Bild dabei liegen habt füge ich eine Idee, welche ich gefunden habe ein. Aber wie bereits erwähnt würde ich gerne selbst etwas entwerfen. Daher bleibt meine Frage, habe ich mit dem ESP 32 bzw S2 mini die Möglichkeit die 6 ULN 2003 anzusteuern? Der Link zu dem Foto: https://www.myminifactory.com/de/object/3d-print-arduino-robotic-arm-117926
https://de.aliexpress.com/item/1005008202785732.html Da ist alles drauf. Aber für Bipolare Schrittmotoren, dafür brauchst du also Schrittmotoren mit 4 oder 6 Anschlüssen. Deiner hat aber 5 Anschlüsse.
:
Bearbeitet durch User
Also ist es nicht möglich die 6 ULN 2003 über den ESP 32 anzusteuern?
T. schrieb: > Also ist es nicht möglich die 6 ULN 2003 über den ESP 32 anzusteuern? Natürlich ist das möglich, die Frage ist nur, ob es sinnvoll ist. Ich befürchte, dass du dich bereits auf irgendwas festgelegt hast und davon partout nicht abweichen willst, aber wenn wir dir das mal nicht unterstellen, dann gibt es einige Möglichkeiten. Es gibt jetzt verschiedene Herangehensweisen, dieses Problem zu lösen. Wir nehmen an, dass ein ESP32 auf deinem bevorzugten Entwicklungsboard nicht genügend Ausgänge hat. - Man könnte nun Porterweiterungen einsetzen, die beispielsweise per I2C (langsam) oder SPI (schneller) angebunden sind. Vorteil: Deine bestehenden Motoren und Treiber können genutzt werden. Nachteil: Viel weitere Hardware notwendig, wahrscheinlich weitreichende Softwareanpassungen notwendig, wahrscheinlich kann die maximale Verfahrgeschwindigkeit der Motoren nicht mehr erreicht werden. - Man könnte jedem Motor seinen eigenen Billig-Microcontroller spendieren (einen der neueren Attinys, CH32V003, ...), der sich um nichts anderes kümmert als die Ansteuerung des Motors. Diese können dann z.B. per I2C oder serieller Schnittstelle an den ESP32 angebunden werden. Vorteil: Extreme Flexibilisierung der Hardwarekonfiguration, da die Motorsteuerung und die Bewegungssteuerung nun getrennt voneinander sind. Nachteil: Ein gewisser Entwicklungsaufwand ist notwendig. - Man könnte mehrere ESP32 verwenden und im Programm einen Modus einbauen, mit dem der zweite ESP32 nur Motorsteuerungsbefehle empfängt und die Motoren dann entsprechend ansteuert. Die Logik dafür brauchst du beim ersten ESP32 ja sowieso, der Programm-Modus könnte durch einen Jumper ausgewählt werden. Vorteil: Keine separate Softwareentwicklung notwendig, kostengünstige Lösung. Nachteil: Softwareentwicklung wird durch die Notwendigkeit, mit dem anderen ESP32 komplex zu kommunizieren, verkompliziert. - Anstatt alle Motoren gleichzeitig anzusteuern, könntest du Motoren oder Motorgruppen multiplexen. Wenn alle im Multiplexbetrieb gefahren werden, brauchst du nur noch 4 + 6 Ausgänge, anstatt 4*6. Vorteil: Weniger Ausgänge benötigt. Nachteil: Sehr aufwendige Hardware-Beschaltung fürs Multiplexing, es können nicht mehr alle Motoren gleichzeitig betrieben werden, komplizierte Software. - Oder du könntest deine Schrittmotoren austauschen und vollintegrierte Treiber für bipolare Schrittmotoren verwenden. Die haben alles integriert, was man will, können (im Gegensatz zu deinem Darlington-Array) die Motoren optimal treiben und haben extern eine einfache step/direction-Schnittstelle. Vorteil: Deutlich bessere Performance, Softwareentwicklung vereinfacht sich. Sehr günstige Treiber verfügbar. Nachteil: Neue Motoren notwendig. So, und jetzt darfst du entscheiden. Was soll's denn sein?
Vielen Dank für deine wirklich sehr detaillierte Auflistung. Ich möchte es eigentlich möglichst unkompliziert halten, da ich mich erst wieder in das Thema einarbeiten muss. Ich habe derzeit ESP32 DEV Kit C V4 von Az-Delivery oder ein S2 mini zur Verfügung. Mir geht es grundsätzlich erstmal um die Frage, ob die Anzahl der Ausgänge auf den Entwicklungsboards ausreichen würde. Es gibt bestimmt sinnvollere Möglichkeiten, aber diese sind denke ich mit meinem Wissensstand nicht so einfach möglich. Da ich die oben genannte Kombi schon am laufen hatte (zumindest 1 Schrittmotor) ist meine Idee drauf gefallen. Sie scheinen auch ein wenig robuster zu sein als die Servos(9g Micro Servos), die ich daheim hab. Mein Ziel ist es eigentlich mit den Mitteln, welche ich bereits habe, das Projekt zu realisieren. anbei die links zu den Entwicklungsboards: https://www.az-delivery.de/products/esp-32-dev-kit-c-v4 https://www.az-delivery.de/products/esp32-s2-mini?_pos=1&_sid=caf31e2e1&_ss=r
Es ist verständlich, dass du dein Projekt mit dem realisieren willst, was du bereits hast. Allerdings: Besonders geschickt ist das nicht, das muss dir bewusst sein. Es wird eine nette Übung sein, aber deutlich komplexer als notwendig und es wird hinter den Möglichkeiten zurückbleiben, weil dich deine vorhandene Hardware einschränkt. Gerade wenn du auch noch deinen Arm designen und drucken willst, ist es vielleicht geschickt, jetzt mit einem einfacheren Modell anzufangen und die vorhandene Hardware zu nutzen (vielleicht 4 Achsen: Ein Motor zum Rotieren des Aufbaus, zwei Motoren für den Arm, 1 Motor für den Greifer?) und dann später dein sechsachsiges Modell mit besser geeigneten Komponeten umzusetzen. Du wirst auch so relativ viel lernen und kannst schon einmal die Software modular und erweiterbar gestalten, das ist Arbeit genug. Nun zur Verwendung deiner bisherigen Hardware, wenn du unbedingt jetzt deinen sechsachsigen Arm realisieren willst: Das Devkit hat vielleicht genügend I/O-Pins, ich zähle 26, dann passen deine 6 Motoren und ein Joystick mit 2 Achsen gerade so dran. Oder eben deine 6 Motoren und ein I2C zur Kommunikation. Zum Flashen wirst du die UART-Pins irgendwie mit Jumpern ausrüsten müssen, die werden wahrscheinlich benutzt werden müssen. Debugging geht dann auch relativ schlecht. Ansonsten musst du auf bedrahtete Kommunikation verzichten und kannst z.B. deine 6 Motoren plus den UART zum Debugging/Flashen betreiben. Die Steuerung des Arms muss dann per WLAN erfolgen. Du wirst also wahrscheinlich sowieso beide Boards nutzen müssen. Wie du die Funktionalität dann aufteilst, ist dir überlassen.
T. schrieb: > Daher bleibt meine Frage, habe ich mit dem ESP 32 bzw S2 mini die > Möglichkeit die 6 ULN 2003 anzusteuern? Wer richtig Plan von der Sache hat, der bekommt das sicher hin. Der hätte aber von vornherein einen anderen Weg und andere Komponenten gewählt. Ja, die theoretische Möglichkeit besteht. So wie Du fragst, wird das aber wohl nicht. Solange wie Du noch nicht genug Ahnung von der Sache hast, solltest Du tunlichst erst fragen und dann kaufen. Dann kommt mehr bei rum. fchk
Ich gehe davon aus, dass du aktuell 28bjy-48 mit ULN 2003 Treiber hast. Dann würde ich vorschlagen mal nur einen Motor über den ULN 2003 anzusteuern. Das geht sehr einfach. Dann wirst du sehen, dass es sehr schwierig ist damit etwas anzufangen. Für die 28bjy gibts es aber einen einfachen Patch um diese 4Polig mit ordentlichen Treibern zu steuern: https://everythingsmarthome.co.uk/converting-the-28byj-48-stepper-motor-for-more-torque/ Dann investierst du ein paar € in einen der folgen Treiber je Motor A4988, DRV8825, TMC2209 Ich würde für 6 Achsen 2 so grbl arduino boards nehmen: https://howtomechatronics.com/tutorials/how-to-setup-grbl-control-cnc-machine-with-arduino/ Mit dem ESP32 lassen sich die 2 Boards bequem per G Code fernsteuern. Kostet nicht die Welt und auch keine Raketenwissenschaft.
Vielen Dank für die Antworten. Das hat mir auf jeden Fall sehr geholfen. Ich denke ich werde es erstmal bei 4 Stück belassen und schauen, wie gut das klappt. Ich denke das sollte mit den Sachen, welche ich vorhanden habe gut klappen und ich lerne dabei bestimmt einiges um dann irgendwann mit anderen Komponenten einen großen Bruder zu bauen ;)
Dieser NEMA17 Motor ist Preiswert: https://www.pollin.de/p/minebea-schrittmotor-17pm-k077bp01cn-10-2v-0-3a-1-80-310689 und wenn du sowieso Drucken musst: https://www.thingiverse.com/thing:2780513 oder andere aus dem Thingiverse.
T. schrieb: > Theoretisch > brauche ich dafür dann 24 GPIO Pins und diese müsste der ESP 32 S2 Mini > ja haben oder sehe ich das falsch? 😅 Sollte grade so hinhauen. Aber ist damit dann auch quasi nichts mehr sonst an IO möglich. Mir wärs zu knapp, und weiß grade nicht, ob der OTA-Updates kann und ob der Speicher dafür reichen wird. Grobe Steuerung und Debugging geht zur Not per WLAN, aber alles auf Kante. Lothar M. schrieb: > Die Pinanzahl wird dein kleinstes Problem sein. Mach dir eher mal über > "benötigte Rechenzeit", "Echtzeit", "Interruptreaktionszeiten" und > "Jitter" Gedanken. Und steure zu Beginn einfach mal 1 einzigen > Schrittmotor an. Dürfte mit manueller Steuerung und in dem Rahmen unproblematisch sein. Die Punkte greifen aber natürlich massiv wenn "exakte" Bahnen mit den 6 Achsen abgefahren werden sollen. Und dann auch noch möglichst schnell ...
Es ist ein Bastelprojekt für die Tage zwischen den Jahren. Der wird nicht 6-Achsen mit 100k Schritten/s präzise fahren wollen. 32>24, als sind genug GPIO pins da. 8 bleiben noch übrig, da kann man auch noch ein paar Knöpfe oder nen Joystick spendieren. Go for it. Es ist dein Projekt. Die anderen haben natürlich recht, dass es im ganzen keine besonders sinnvolle Umsetzung ist, weil vernünftige Treiber einfacher und mit weniger Pins gesteuert werden können, du keine Positionsrückmeldung hast und die Motoren auch nicht die besten sind. Aber du hast ja schon alles da oder? Und willst das nur noch zusammenlöten, Mechanik bauen und Software schreiben. Software wird sicherlich das komplizierteste, wenn du mehr als eine Achse zur Zeit steuern willst. Vielleicht gibts ja aber auch ein fertiges Projekt irgendwo, dass sich für deine Zwecke anpassen lässt...
Ja da hab ich mich eventuell auch etwas umständlich ausgedrückt. Die Teile hab ich eigentlich schon daheim(aus anderen Projekten) und es soll wirklich nicht extrem aufwendig werden. Mir reicht es vollkommene, wenn die Bewegungen nacheinander ausgeführt werden. Wie gesagt ich probiere erstmal die 4 Achsen aus und schau, wie ich dabei zurecht komme bzw was ich dabei lerne.
Spendiere einfach jedem Schrittmotor einen eigenen adressierbaren Treiber bzw. Subsystem, dann brauchst du am Zentral-Prozessor nur eine Schnittstelle/Bus (Serial, I2C, LAN ...). Kann man auch mit je einem 8266 und Simpel-Treiber selber machen, dann ist man völlig frei bezüglich Schnittstelle und Protokoll. Sowas kann man dann auch besser in Betrieb nehmen, weil einzeln zu erstellen und zu testen. Beispiel: https://www.reichelt.com/ch/de/shop/produkt/arduino_-_grove_i2c-motortreiber_l298-191248 Nachtrag: Wenn du einen einfachen Einstieg willst, probiers erstmal mit Servos. Digitale Servos halten übrigens ihre Position auch dann, wenn die Impulse mal ausbleiben. Das vereinfacht die Programmierung deutlich ...
:
Bearbeitet durch User
Hallo, der Schrittmotor 28bjy-48 hat ein Getriebe mit einer recht krummen Untersetzung (die im Datenblatt angegebenen Schritte pro Umdrehung sind falsch). Mit dem mehrstufigen Getriebe hat der Motor 64*((22*26*31*32)/(9*9*10*11)) Halb-Schritte. Das ergibt dann 1650688/405 = 4075.77 Schritte oder gerundet: const int stepsPerRevolution = 4076; // NOT 4096 half-steps... Eine parallele Ansteuerung mit 6x4 Leitungen wäre mit dem ESP32-S3 möglich, der hat mehr Pins. Oder über I2C-Portexpander (3x PCF8574) oder über 3 Schieberegister 74HCT595 (Arduino-Funktion ShiftOut). Alternativ könnte man auch einen L297 pro Motor-Treiber verwenden, der hat dann am Eingang wieder die Steuerung über Step/Dir - aber das ist bei dem Motor mit Kanonen auf Spatzen geschossen... Wenn du für den Anfang bei 4 Motoren bleibst, wären 2x PCF8574 oder ein PCA9555 (oder der schon erwähnte PCA9685 - dann mit 0/100% PWM als digitaler I/O) am einfachsten anzusteuern. Schieberegister brauchen ein paar Portpins mehr als I2C, die hätten aber den Vorteil, dass man über gleichzeitige Ansteuerung der Output-Latches (Pin RCLK) die Ausgabe bei allen Motoren zeitgleich umschaltet.
Rüdiger B. schrieb: > Aber für Bipolare Schrittmotoren, dafür brauchst du also Schrittmotoren > mit 4 oder 6 Anschlüssen. > Deiner hat aber 5 Anschlüsse. Kannst du bitte auch erklären, wie du dazu kommst? Halbschritt und Vollschrittbetrieb ist ohne Probleme auch mit einem Motor möglich, bei dem die Mittenanzapfungen verbunden sind. Man muss lediglich eine doppelte so hohe Spannung anlegen. Der ULN2003 ist sowieso etwas antiquiert. Heutige Schrittmotortreiber verwenden Stromregelung, damit das Drehmoment bei höherer Drehzahl nicht so früh einbricht. Bernhard S. schrieb: > Das ergibt dann > 1650688/405 = 4075.77 Schritte oder gerundet: > const int stepsPerRevolution = 4076; Bei der Ansteuerung von Schrittmotoren die Schrittzahl/Untersetzung zu runden, führt bei sensorlosem Betrieb unweigerlich zu sich akkumulierenden Positionierungfehlern, sofern der Motor nicht nur hin- und zurück gedreht wird. Das ist meist keine gute Idee.
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.