Hallo zusammen, ich will hier in der Firma einen Versuchsaufbau realisieren, um das Zusammenspiel von Kolbenstangen mit Dichtung zu testen. Ein Schrittmotor-angetriebener Schlitten schiebt die Stange in die Dichtung hinein, dahinter ist Vakuum, das über einen Analogspannungs-ausgebenden Sensor gemessen wird. Um was es da genau geht, ist nicht wichtig, aber können wir gerne nebenbei diskutieren. Meine FRAGE ist die: Da hab ich nun den Schrittmotor und den Sensor, wie bekomme ich das mit geringstem Aufwand zum Laufen? Die Informationsflut erschlägt mich momentan, und ich bin total unentschieden. Meine ersten Ideen: A) Komplette RAMPS 1.4 Elektronik mit Display und Arduino ATMega2560 hab ich hier liegen, nie benutzt. Problem sind meine begrenzten Programmier-Fähigkeiten. Ich steh schon wie der Ochs vorm Berg, wenn darum geht, Marlin oder ähnliches darauf zu installieren. Geschweige denn das dann für meine Bedürfnisse abzuändern. Falls ich die Pinbelegungen rauskriege, könnte ich mir vorstellen, ganz von Grund auf mit dem Mega2560 einen Schrittmotor zu betreiben, dann aber nur im langsamen Start/Stop-Betrieb. Selbst eine smoothe Beschleunigungsrampe hinzubekommen, da fehlen mir die Kenntnisse und Konzepte. B) Eine simple A/D-Wandlung der Sensorwerte habe ich vor 1-2 Jahren mit einem Arduino MKRZERO hinbekommen. Ich habe diesen quasi als A/D-Wandlerboard mit USB-Anschluß mißbraucht, und den in der Arduino-IDE enthaltenen "Serial Plotter" als Anzeige am PC mißbraucht. Das war quick und dirty, so stelle ich es mir wieder vor. Dieser Hardware einen einzelnen dieser A4988 Schrittmotor-Treiber dranzustricken ist nicht schwierig, wenn man dessen Pinbelegung verdaut hat. Aber dann bin ich natürlich wieder an dem Punkt, eine Beschleunigungsrampe selbst programmieren zu müssen. Kurzum, ich bin zu doof, das mächtige Marlin-Paket zu sezieren und zu verändern, aber auch zu doof, selbst eine Beschleunigungsrampe zu programmieren. Fällt Euch da eine Lösung ein? Viele Grüße Tom.
:
Bearbeitet durch Moderator
Sowas wäre wohl am einfachsten: https://funduino.de/nr-15-schrittmotor Falls du jedoch deine Hardware nutzen möchtest, wirds je nachdem bestimmt umfangreicher. Tom H. schrieb: > Beschleunigungsrampe selbst programmieren zu müssen. Da kannst du dir einfach ein Array mit Werten hinterlegen die du beim Anfahren durchläufst, fertig. Oder die Library hat sogar schon eine Funktion dafür, kenn jetzt auch nicht alle vorhandenen Bibliotheken. Sollte es bestimmt geben.
:
Bearbeitet durch User
Adam P. schrieb: > Sowas wäre wohl am einfachsten: Dazu wäre die Bedingung, dass er überhaupt so einen alten dummen uneffektiven unipolaren Scgrittmotor hat. Und selbst dann fehlt jede Bewegung. Diese Schaltung https://www.ebay.de/itm/326053473747 bewegt wenigstens den Schrittmotor, stoppt aber nicht bei Erreichen des gewünschten Drucks, der resultierenden Analogspannung und schaltet nicht die Richtung um wenn er sinkt. Immerhin hat er aber ENABLE und DIRECTION Eingänge, ein (Doppel/Quad)OpAmp könnte also die Steuerung übernehmen. Das ist dann aber keine schnelle PID Regelung, sondern billige Zweipunktregelung. Hätte er einen kleinen DC Motor statt Schrittmotor würde
1 | +---+---- +12V |
2 | | | |
3 | | | |
4 | | | OpAmp, leistungsstark genug für den Motor, z. B. L272 |
5 | Druck-)--|+\ |
6 | | | >--(M)-- Masse |
7 | Poti-|-/ |
8 | | | |
9 | | | |
10 | | | |
11 | +---+---- -12V |
dasselbe bringen.
Die in dem verlinkten funduino-Artikel verwendete Library "stepper.h" scheint doch recht einfach zu sein. Ich bin mir recht sicher, daß da keinerlei Beschleunigungsrampe enthalten ist. Sie bietet das Auscodieren der Schritte, falls jede SAchrittmotor-Wicklung über einen einzelnen diskreten Treiber von einem Controllerpin gesteuert wird. Aber das brauch ich so nicht, ich habe ja diese kleinen A4988-Module, die werden über zwei Pins mit Step und Direction gesteuert. Ich habe jetzt auch schon Beispiele für Rampen gefunden, aber da werden die Step-Signale über Bitbanging eines IO-Pins und dazwischengeschaltete "delayMicroseconds" generiert. Das muß doch eleganter/professioneller gehen? Ich will ja auch während der Schrittmotor-Fahrt die Sensorwerte aufzeichnen.
Tom H. schrieb: > Das muß doch eleganter/professioneller > gehen? Ich will ja auch während der Schrittmotor-Fahrt die Sensorwerte > aufzeichnen. Ja, dafür machst dir halt eine State Machine. Verzichtest auf delay und nutzt einen Timer (System-Tick).
Eine bessere Lib ist AccelStepper, da kann man auch Rampen konfigurieren. Die kann die Step/Dir Treiber ansteuern und du gibst einfach die Anzahl Schritte vor die gemacht werden sollen, Beispiele sind natürlich dabei.
Salamischeibe 1: Der Schrittmotor ist ein 2phasen mit 6V 0,8A und sollte mit 24V Betriebsspannung die gewünschte Dynamik haben. Liegt schon da, ist gesetzt. DC-Motor hatte ich auch überlegt, aber der Schrittmotor bietet eine von der wechselnden Belastung unabhängige Geschwindigkeit. Die A4988 Treibermodule liegen auch schon da, sind millionenfach in 3D-Druckern bewährt und werden verwendet. Doch noch ein paar Worte zum mechanischen Aufbau, damit hier nicht gemutmaßt werden muß oder überflüssige* Ideen gestrickt werden, wie man das ganz anders machen kann. *überflüssig? Kann auch hilfreiche Ideen geben, aber dazu muß ich eben den Aufbau näher erklären. Also, wir bauen hier ein Produkt, bei dem zwei Betätigungsstangen durch O-Ring-Dichtungen in ein Hochvakuum (~10hoch-8 mbar) geschoben werden. Das muß super dicht sein, auch während der Bewegung. Es sind zwei O-Ringe in kurzem Abstand hintereinander, dazwischen ist großzügig Vakuumfett eingebracht, sozusagen als Vorratspackung. Es ist auch nicht nur die reine "Dichtheit", es geht auch um Luftfeuchtigkeit, die sich an der Stange anlagert, solange sie außerhalb an Atmosphäre ist, und die dann abdampft, wenn die Stange eingeschoben wird. Ausgehend von früheren Erfahrungen verwende ich auf h7 geschliffene Stangen aus 1.4301 Edelstahl und poliere diese Stangen händisch auf Hochglanz (mit Kontrolle unterm Stereomikroskop, ob die ursprünglichen Schleifriefen wirklich wegpoliert wurden) Das ist eine Sch...arbeit und nun möchte ich doch ausprobieren und quantisieren, wieviel schlechter unpolierte Stangen, oder zum Beispiel fertig verchromte Kolbenstangen wären. Deshalb Versuchsstand. Der Schrittmotor fährt die Stangen mit reproduzierbarer Geschwindigkeit rein, der sündteure Sensor mißt (leider mit schlechter Samplerate) das kurze "Einbrechen" des Vakuums. Das ganze am besten wiederholt, bis eine vernünftige zusammengemittelte Zeit-Druck-Kurve da ist. Dann der nächste Stangen-Proband...
Und noch kurz zu den zwei Antworten während meiner letzten Tipperei :-) Ja, StateMachine und Zugriff auf System-Tick (also z.B. micros() ) verstehe ich sogar. Vielleicht ist es doch nicht so ein Hexenwerk. AccelStepper habe ich als Stichwort schon gehört, schaue ich mir an. Danke!
Wenn ein Mod die Muße hat, kann er dem Schritmotor im Titel ein zweites t spendieren. Das ist mir ein Dorn im Auge... danke.
Tom H. schrieb: > Die in dem verlinkten funduino-Artikel verwendete Library "stepper.h" > scheint doch recht einfach zu sein. Ich bin mir recht sicher, daß da > keinerlei Beschleunigungsrampe enthalten ist Es ist eine Beschleunigungsrampe drin. Nicht besonders sauber und schön, aber vorhanden. Für einfache Anwendungen reicht sie. Die maximale Schrittfrequenz ist allerdings ziemlich begrenzt.
:
Bearbeitet durch User
Es gibt neuere SM mit angeflanschtem Treiber: MKS Servo42D. Die gibt es mit RS-485 oder CAN Bus Schnittstelle und können daher direkt von einem PC mit entsprechendem Interface (10-20 €) angesteuert werden. Diese Treiber sind nur etwas teurer als gute TMC Treiber, knappe 20 €, mit Motor knappe 30 €. Für das was sie können eher spottbillig, durch Closed Loop können die auch besser und auf höhere Schrittfrequenzen beschleunigen. Wenn die Ansteuerung also per PC kommen soll sind die sicher auch eine Alternative.
Tom H. schrieb: > Problem sind meine begrenzten Programmier-Fähigkeiten. Python wirst Du doch wohl können, falls nicht: da hat man sich schnell eingearbeitet, selbst wenn man vor 30 Jahren das letzte mal mit Fortran unterwegs war. Da wäre die Lösung Python auf einem Raspi oder Micropython auf einem ESP32-C3, dazu eine einfache Treiberplatine, die haben oft einen Eingang für "1 Schritt vorwärts" bzw. "1 Schritt rückwärts" ADC und Raspi: https://www.elektronik-kompendium.de/sites/raspberry-pi/2701241.htm Und der ADC ist mit dem ESP genauso einfach: https://randomnerdtutorials.com/esp32-esp8266-analog-readings-micropython/ Allerdings ist der ADC am hohen Ende des Eingangsbereichs etwas ungenau.
https://github.com/gnea/grbl/ Einen simplen Arduino mit Schrittmotor-Shield dazu, kann man alles plug&play kaufen. Das Teil sprichst du seriell mit G-Codes an. Wenn du nur eindimensional arbeiten willst, dann bestückst du halt nur X, und sagst sowas wie
1 | X250 |
2 | X0 |
Mit bissel gugeln findest du, wie du die Parameter dafür so einstellst, dass sie zu deinem Schrittmotor passen, sodass in obigem Kommando dann halt genau 250 mm (oder 25.0 mm oder was auch immer du brauchst) gefahren werden. Die Parameter werden danach im EEPROM des Controllers abgelegt, das musst du nur einmalig einrichten.
Naja, wenn man eh RAMPS nutzen will und per G-Code ansteuern, kann man sich auch einfach ein 3D-Drucker Mainboard kaufen. Das ist schon fertig programmiert. Dann wäre das Fahren gegen einen Endschalter mit G28 schon direkt einprogrammiert.
Eine erste Abrundung für heute: Alle bisherigen Antworten zeigen für mich in die Richtung: Selber programmieren ist machbar, auch für einen alternden Autodidakten, der vor 20 Jahren mit C-Control angefangen hat und jetzt auch leidlich was auf Arduino zusammenstöpseln kann. Damit ist diese RAMPS 1.4 Hardware raus und auch jegliche gruslige Gedanken, aus der Marlin-Firmware etwas herauszuschälen. Als nächstes klatsche ich den vorhandenen MKRZERO und ein A4988-Steppermodul auf eine Lochraster und fange an zu probieren. Leider sind diese schönen IC-Buchsenleisten zum Einstecken der Module gerade aus, mußte ich bestellen, also gehts erst morgen wieder weiter. Die Dimensionierung des Linearschlittens mit Kugelgewindetrieb und des Schrittmotors erfolgte ganz grob über den Daumen. Sollte es sich als zu schwach herausstellen, bietet der Lineartrieb auch einen Montageplatz für einen NEMA23-Motors statt des jetzt verhandenen NEMA17. Der würde dann auch mehr Power benötigen, da wäre einer mit hinten angeflanschter Treiberplatine dann das richtige.
Walter T. schrieb: > Naja, wenn man eh RAMPS nutzen will und per G-Code ansteuern, kann man > sich auch einfach ein 3D-Drucker Mainboard kaufen. Das ist schon fertig > programmiert. Da ist aber ein Haufen mehr drin, was man mit bezahlt. grbl auf einen Arduino(-Clone) zu flashen ist nun keine Raketenwissenschaft. Endschalter müsste ich nachgucken. Da grbl zur Steuerung von Werkzeugmaschinen konzipiert ist, wird es das sicher auch unterstützen. Wir haben damit vor einiger Zeit einen Drehteller für ein paar Messungen angesteuert und dafür ebenfalls nur eindimensional ansteuern müssen (X360 -> 360° in einer Richtung drehen).
Moin, ich habe mal für meinen XY-Tisch einen Treiber geschrieben. Beitrag "Re: Zeigt her eure Kunstwerke (2021)" Wenn Du sowas gebrauchen kannst, kann ich Dir gerne den Quelltext und die .hex schicken. Natürlich kannst Du damit auch nur einen Motor ansteuern. Das läuft auch über eine Kugelumlaufspindel. Gruß Carsten
Tom H. schrieb: > Meine FRAGE ist die: > Da hab ich nun den Schrittmotor und den Sensor, wie bekomme ich das mit > geringstem Aufwand zum Laufen? Dann brauchst du noch einen Treiber für den Schrittmotor, der ihn mit dem erforderlichen Strom füttert. > Kurzum, ich bin zu doof, das mächtige Marlin-Paket zu sezieren und zu > verändern, aber auch zu doof, selbst eine Beschleunigungsrampe zu > programmieren. Du könntest dir die Atmel Applikation Note AVR446 zu Gemüte führen.
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.