Auswahl geeigneter Mikrocontroller - Nähmaschinensteuerung

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.

Diese Bibliothek kenne ich nicht, scheint aber mit Teensy zurechtzukommen. Das wäre eine schnellere Hardwarealternative, allerdings habe ich in diesem Forum bislang eher Fragen als Antworten gelesen.

Daher empfehle ich Dir einen Blick auf die MobaTools zu werfen, denn der Autor ist hier aktiv. Außerdem entfällt Stepper.loop(), da die Bewegungen mittels Interrupts "im Hintergrund" ablaufen. Die, wie ich finde, vermutlich beste Lösung für Dich. Diese Bibliothek läuft auf NANO, Mega2560 und ESP32.

Es gibt Displays von Nextion, die den µC weitgehend entlasten, die könnten auch mit einem NANO funktionieren. Sonst stimme ich Deinem "Glauben" zu, alleine Fontdefinitionen benötigen eine Menge Speicher. Preis und Bibliotheksunterstützung weisen dann auf den ESP32.

Da habe ich mal den einen oder anderen Blick drauf geworfen, Puh!

Ich kenne Dich nicht, kann Dein Können nicht einschätzen, aber für einen Anfänger dürfte das nach Raketenwissenschaft aussehen.

ESP32 mit Arduino-IDE programmiert, ist machbar, ohne Funk fast wie ein NANO, nur mit mehr Speicher und höher getaktet.

Mehr Speicher als der NANO hat auch der Mega2560, den es auch als Mini gibt. Eventuell genügt auch der.

Anstelle von zwei Cores dürften zwei µCs einfacher zu handhaben sein. Für ein anderes Projekt habe ich einen Mega2560 per Serial mit einem ESP32 verbunden, der ein Display angeschlossen hat. Für Dich wäre das eine Ausweichmöglichkeit, sollte es bei Phase 3 "klemmen".

Soweit meine Überlegungen, wie immer ohne Gewähr :slightly_smiling_face:

Schau ich mir an, dankeschön.

Die Programmierung macht mir keine Sorgen. Ich bin nur in der Mikrocontrollerwelt Anfänger. Softwareentwicklung ist mein Broterwerb. Und auch mit verschiedenen Threads zu arbeiten ist für mich kein Neuland.

Mit dem ESP32 hab ich schon gearbeitet (Wetterstation mit mehreren Sensoren, Kommunikation per MQTT, Abfrage von OpenWeatherMap, Touchdisplay), also grundsätzlich kenne ich den. Nur die Arduino-IDE tu ich mir nicht an :wink: PlatformIO finde ich schöner.

Ist ja letztlich auch dual core, wobei man dann noch die Kommunikation der beiden Controller selbst implementieren muss.

Vielen dafür auf jeden Fall!

Dann vergiß bitte die zwei µCs und widme Dich den zwei Cores :slightly_smiling_face:

Endlich gibt es jemanden, der da mal was mit macht, Klasse.

Wobei ich aber vernüftigerweise nicht unerwähnt lassen möchte, daß nach meiner Einschätzung auch ein Core genügt. Aber diesen Hinweis ignorierst Du bitte :blush:

Soweit ich weis, kann die ContinousStepper auch mit Timer-Interrupts arbeiten, dann braucht es die stepper.loop() nicht.

Grundsätzlich ist die Frage, ob ein Stepper für eine Nähmaschine so perfekt ist. Stepper sind an sich eher für exakte Positionierungen gedacht. 'Nur zum Drehen' sind sie eigentlich ungünstig, da sehr ineffektiv und mit - im Vergleich zur Motorgröße - eher schlechtem Drehmoment. Das macht dann evtl. noch Sinn, wenn man ohne Regelung eine vorgegebene Drehzahl exakt erreichen möchte. Aber auch das sehe ich bei einer Nähmaschine eher nicht.

Die MobaTools sind von der Architektur her auch eher für's Positionieren vorgesehen. Das begrenzt aufgrund der notwendigen internen Berechnungen dann die maximale Geschwindigkeit. Da erreicht die ContinuousStepper sicher mehr - zumindest auf einem AVR :wink: .

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.