Kurzinfo zum Projekt:
ich komme aus der 3D-Druck Branche und habe nicht wirklich eine große Ahnung von Microcontrollern. Ich versuche es aber zu lernen!
ich habe eine Ladeeinheit für den Modellbau konstruiert es handelt sich um 4mm Metallkugeln die über ein Mitnehmerrad nach oben gedrückt werden und anschließend in einen Eisenbahnwagon fallen.
Was soll der Code machen?
ArduinoBoard : Arduino Pro Mini 328 (5V - 16MHz)
Ich möchte einen Steppermotor (Nema17 Motor - HEM-17D3003) + (ULN2003 Stepper Motor Driver Board) ansteuern den man mit einem Poti (10K) regeln kann. Gestartet werden soll das ganze mit einem Druckschalter (weiß nicht welchen ich nutzen kann) und einer LED ob der Motor läuft (HIGH) oder "aus" ist (LOW).
Grob: Switch(ON) -> GREENLED(HIGH) -> Steppermotor (ON) -> Poti (um zu regeln) -> Switch(OFF) -> GREENLED(LOW)
Sonstiges:
Sollte das Board nicht genug Anschlüsse haben oder zu "schwach" sein, bin ich gern für Alternativen offen. Oder Ideen wie man das besser kompakter oder Ressourcenarmer machen kann.
Alternative:
Ich weiß nicht ob man den Steppermotor "abfragen" kann. Wenn er 1x seine 200 Steps (1,8= 1Step) macht, dass man in einem (AZ-Delivery 1,3Zoll l2C OLED Display) anzeigen lassen kann das 24 Kugeln gefördert hat ?
Oder ist das zu viel für den ArduinoProMini 328
Die Aufgabe überfordert einen solchen Prozessor keineswegs; die geschilderten Funktionen sind locker damit zu erledigen.
Ein Steppermotor kann ab seiner Einschaltposition gezielt um n Schritte nach links oder rechts gestellt werden. er liefert per se keine absolute Position, es sei denn dass er zusätzlich über einen absoluten Winkelgeber verfügt.
Werden absolute Winkelstellungen benötigt, setzt man auf die Achse ein "Fähnchen", das in einer definierten Winkelstellung eine Lichtschranke unterbricht. Man fährt von links oder rechts in die Schranke und benutzt die Stellung, bei der die Lichtschranke unterbrochen wird, als Startwinkel, von dem aus alle anderen Winkel angefahren werden können. Man kann u.U. die Winkelposition vor dem Ausschalten nichtflüchtig speichern und beim Start (bevor der Stepper bewegt wird) wieder auslesen. Man sollte dann allerdings sicherstellen, dass der Motor danach nicht mehr (auch nicht von Hand) bewegt wird und kein Neustart mit "falschen" Daten stattgefunden hat.
Soll es ein Druckschalter sein oder ein Taster? Beides ist problemlos möglich, braucht aber ein softwareseitiges Entprellen ("Debouncing").
Bei dieser Aufgabe (wenn das Bild nicht täuscht) braucht es vermutlich keine absolute Position; das Mitzählen der Schritte sollte genügen. Und wenn eh schon Lichtschranke, dann bietet es sich vielleicht an, direkt die geförderten Kugeln zu zählen, dann wird auch eine "Leerförderung" erkannt und nicht gezählt ...
Wenn ich recht gegoogelt habe, benötigt der Mini Pro zum Programmieren einen FTDI-Adapter oder ein spezielles Breakout-Board, da das Board über keinen direkten USB-Anschluss verfügt. Falls das zu umständlich erscheint, kann man ein entsprechendes Board mit Mini- oder Micro-USB-Anschluss verwenden (Nano, Micro).
an. Dort kannst Du Deinen Sketch schnell und weitgehend testen, bevor Du die Hardware aufbaust. Das ULN-Board ist die bessere Wahl als das direkte Anschließen an die Pins, funktioniert aber softwareseitig identisch.
Ich habe das Beispiel für eine Stepperansteuerung an einen Nano angepasst und eine Led hinzugefügt. Das Ein/Ausschalteschalten der Led ist allerdings nur simpel zeitgesteuert und nicht mit der realen Bewegung gekoppelt. Auch das ist machbar, das Einbringen ist nicht schwer, braucht aber ein wenig Zeit Es gibt Libs zum Ansteuern der Stepper, die zurückmelden, ob der Stepper noch läuft (angesteuert wird). Damit würde ich es umsetzen ...
Hey, ich danke dir erstmal für die schnelle Antwort. Tatsächlich den Code verstehe ich soweit. Pins definieren loop erstellen etc soweit bin ich auch schon aber mit stepper etc bin ich noch weit entfernt nur eingelesen. Danke dafür !
Ja, das board verfügt über keinen usb oder den dickeren anschluss für das datenkabel. Ich wollte den haben da er so klein ist das man ihn verstecken kann.
Genau so hatte ich mir das gedacht !...
der steppermotor dreht eigentlich nur in eine richtung um die kugeln nach oben zu drücken also nur clockwise.
ein taster wäre die bessere option denke mal da kann man anfang und ende besser bestimmen wenn im display X Kugeln stehen, kann man den taster erneut drücken um den ladevorgang zu stoppen.
lichtschranke hab ich nicht da, kann aber gekauft werden.
Das mit dem Poti dem einstellen würde beim steppermotor auch gehen oder muss man den bereich konkret definieren ?
Frage : wie kann man Displays gut gestalten? Wird das alles im code definiert ?
Gedankengang:
ja ein ganz interessantes thema wäre es wenn man die kugeln per lichtschranke zählen und im display ansteuern könnte das er X-Kugeln fördern soll. Aber das ist mir nicht wichtig.
Das paßt nicht zusammen.
Laut gefundenen Infos ist der Motor ein Bipolarer Schrittmotor für Stromansteuerung und nicht für Spannungsansteuerung und unipolar ( wofür der ULN geeignet wäre.
Für diesen Motor brauchst Du einen Stromtreiber wie zB den A4988 und mindestens 12V Versorgungsspannung.
Meine Meinung nach müßte ein kleinerer Motor wie der 28BJY48, der für den ULN2003 geeignet ist, für den Verwendungszweck reichen. Diesen Motor gibt es als 5V Variante.
Meine Bibliotheksempfehlung sind die MobaTools für
bipolare (Treiber A4988 oder DRV8825), unipolare (Treiber ULN2003) Schrittmotoren,
Tasterentprellung
Zeitmessung
Die Fontdefinitionen benötigen viel Speicher, weshalb es etwas knapp werden könnte. Die 20x4 LC-Displays haben eingebaute Fonts und sind einfacher zu programmieren.
Da gibt es noch viel kleinere boards. Zum Programmieren hättest dich mit nem nano oder uno leichter getan. Wenn dann die Programmierung abgeschlossen wäre, könntest das ganze ganz einfach und je nach microcontroller ohne großen Aufwand auf ein board deiner wahl importieren.
Danke euch für die top kommentare die mir wcht weiterhelfen. Ich hoffe nur das mit jemand mit dem code helfen kann. Das verdrahten etc kann ich da habe ich sonst fachpersonal.
Es soll so simpel wie möglich gehalten werden mit den bauteilen. Der LCD ist mehr so nebending
Das mit dem steppermotor war so dass ich den durch den 3D druck noch liegen hatte. Einen Uno habe ich auch noch liegen den könnte ich auch benutzen. Das mit dem LCD ist nicht wirklich notwendig ... er soll nur die waggons beladen und ich kann selber entscheiden wann der waggon voll ist alles in sichtweite des bedieners.
Vor der fabrik ist eine entladestation und die kugeln wandern in die fabrik und machen dampf und licht. Die kugeln wandern in einen behälter unter der anlage das mache ich irgendwann auch anders... eher spielkram aber wenns läuft interessant.
Naja nicht zum thema aber ich würde mich freuen wenn der kollege dann wirklich mir mit dem code helfen kann
Also auf meinem anderen stepper motor driver steht "SH02" drauf ist ein rotes kleines board mit pins. Keine ahnung ob ihr damit was anfangen könntet denke eher weniger ...
Anschlüsse : enable , Ms1-3 , reset, sleep, step, direction, gnd, Vdd, 1A/B , 2A/B , Vmot
Ich danke euch nochmals und wünsche euch einen schönen dienstag !
Das Stimmt , nur wen man u8x8 aus der U8g2 nimmt ist das halb so Kritisch, braucht 1/3 vom dem was die ausgewachsene U8g2, gerade für sowas ist die Optimal.
Jedoch wen der LCD2004 Reicht, ist noch besser, vor allem man braucht keine Lupe
Ich lerne momentan ürogrammieren über den baukasten, aber dies projekt braucht etwas länger und ist kompakter ich will mir gern nur den code anschauen damit ich weis wie ich in späteren projekten expandieren kann.
Ok, wen du aber schon den Stepper + Treiber hast kannst du schon anfangen üben
Ist für Uno, hat aber wenig zu Sagen, ist abgesehen vom IC fast das gleiche
Für das Display sind in der Bibliothek U8g2 Beispiele, empfehle die Beispiele für u8x8. Hast ja noch kein Display
Les dir oben das projekt durch ... das muss ich im code zusammenfassen und da hab ich keine erfahrungen mit loops und mehr Pins definieren etc das mit dem stepper ansteuern etc habe ich mir angeschaut aber das system in eins fusionieren ist für mich schwer