Moin,
ich grübel grade an der Auswahl eines geeigneten Mikrocontrollers für mein Projekt. Ich bin noch Anfänger auf dem Gebiet, daher seht mir die Frage nach, ich würde mich über euren Hinweise und Tipps freuen.
Das Projekt ist, eine alte Nähmaschine mit einem kräftigen Steppermotor auszurüsten.
Folgende Aufgaben sind zu erledigen:
Projektphase 1:
- Auswertung des Fußpedals für die gewünschte Soll-Geschwindigkeit
- Erzeugen des PULSE-Signals für den Motortreiber (mit Beschleunigung und Verzögerung des Motors)
Projektphase 2a:
- Abfragen von 2 Hal-Sensoren für den OT/UT der Nadel, um die gewünschte Nadelposition steuern zu können (Nadel steckt beim Stoppen im Stoff, Nadel ist beim Stoppen im OT)
Projektphase 2b:
- evtl. Stiche zählen
- Auf Knopfdruck einen einzelnen Stich durchführen lassen
- Auf Knopfdruck die Nadel hochstellen (in der OT)
- Auf Knopfdruck die Nadel runter stellen (in den UT)
Projektphase 3:
- TFT-Display mit Touch zur Steuerung der Funktionen
Als Hardware habe (momentan) folgendes:
- Arduino Nano
- Motortreiber DM556
- KY-024 Hal-Sensoren (2 sollen ein digitales Signal ausgeben für OT/UT Erkennung, 1 gibt ein analoges Signal aus für die Stellung des Fußpedals)
Zur Steuerung der Beschleunigung nutze ich die Lib ArduinoContinuousStepper(GitHub - bblanchon/ArduinoContinuousStepper: An Arduino library to spin stepper motors in continuous motions.).
Die Funktionen aus Phase 1 habe ich damit gut umgesetzt und sich sehe kein großes Problem. Allerdings muss ja im Code regelmäßig stepper.loop() aufgerufen werden, damit das Pulse-Signal erzeugt werden kann.
Packe ich alles (Auswertung Pedal, setzen der Target-Geschwindigkeit, stepper.loop()
) in die Loop-Funktion, merke ich schon, dass es sich auf die Motorgeschwindigkeit auswirkt, wenn in der Main-Loop noch anderen Dinge gemacht werden, grade wenn der Motor schnell dreht. Klar, die Zeit zwischen Stepper.loop()
ist damit größer. Hier und da ein Serial.println
wirkt sich schon massiv auf den Motorlauf aus.
Ich habe nun die Auswertung des Pedals in eine Timer-Interrupt ausgelagert, der das Pedal 2x pro Sekunde auswertet. Ich hab damit ein bisschen rum gespielt, bis 5x pro Sekunde läuft das noch ordentlich. Aber ich glaub, so oft muss ich den für meine Anwendung gar nicht auswerten.
Bis hier her läuft es bereits und ich bin damit zufrieden.
Nun komme ich aber ins Zweifeln, ob der Nano für meine Funktionen der nächsten Phasen die richtige Wahl ist. Ich denke, die Funktionen aus Phase 2a und eventuell noch 2b könnte ich so noch umsetzen. Aber spätestens wenn das TFT-Display ins Spiel kommt, wird das nicht mehr funktionieren, glaube ich.
Die Überlegung ist nun auf etwas mit 2 Cores umzuschwenken (z.B. ESP-32). Ein Core wäre dann nur dafür zuständig, den Takt für den Motor zu generieren. Der andere Core könnte sich um alles andere kümmern. Der ESP-32 arbeitet allerdings mit 3,3V, der Motortreiber möchte mindestens 5V haben. Ich müsste also noch einen Levelshifter dazwischen setzen.
Wie ist eure Meinung? Ist mein Idee mit dem Dualcore sinnvoll? Habt ihr Vorschläge für einen passenden Mikrocontroller? Die WLAN und Bluetoothfunktionen des ESP brauche ich ja eigentlich gar nicht.
Bin für Meinungen, Hinweise und Tipps dankbar.