Forum: Markt [V] Schrittmotortreiber mit ModBus ansteuerung


von C. H. (hedie)


Angehängte Dateien:

Lesenswert?

Hallo zusammen

Ich habe vor einiger Zeit ein Schrittmotortreiber mit einer ModBus 
Schnittstelle entwickelt. Inzwischen habe ich diesen bereits erfolgreich 
in meiner Pick and Place Machine eingesetzt. 
https://databyte.ch/?portfolio=bestueckungsautomat

Nun dachte ich, dass hier vielleicht auch andere Interesse an solch 
einem Treiber hätten?

Ich könnte eine C# Beispielimplementierung bereitstellen.

Hier ein einfaches Beispielprogramm von mir um ModBus mittels RTU 
anzusprechen:
https://github.com/swissbyte/ModbusMasterTool

Funktionsumfang:

Aktuell bietet der Treiber folgende Funktionen:

- Referenzfahrt
- Statusregister
- Beschleunigungsrampen in steps/s2
- Bremsrampen in steps/s2
- Zielgeschwindigkeit in Rotations per Minute
- Zielgeschwindigkeit in Rotations per Second
- Zielgeschwindigkeit in Steps per Minute

Motion:
- Anzahl Schritte zum fahren
- Gehe an Position in Schritten
- Motorstrom
- Anzahl Mikroschritte
- Schritte pro Umdrehung
- Aktuelle Schrittposition in Schritten

- Eingagn A und B (Zustand)
- Konfiguration von GPIO A und B (Ein oder Ausgang)
- Ausgang A und B (Zustand setzen)
- Referenzfahrt
- Homing einstellungen (Welcher Eingang als Trigger verwendet wird)
- Joystick Modus (Manuelles Fahren)

Weitere Informationen finden sich im entsprechenden Dokument:
https://databyte.ch/?smd_process_download=1&download_id=1704

Wie verwendet man dieses Board konkret:

Am einfachsten durch anschliessen eines USB zu RS485 Kabels.
Wie dieses hier z.B. 
https://www.reichelt.com/ch/de/raspberry-pi-usb-rs485-schnittstelle-ch340c-rpi-usb-rs485-p242783.html
Dann braucht man nur noch die entsprechende Serielle Schnittstelle auf 
dem PC-Auswählen und kann mit obig erwähntem Tool bereits die einzelnen 
Register beschreiben und so den Treiber konfigurieren.

Etwas bequemer geht dies mit der in C# erstellten motion-klasse.
Dann sieht dies so aus:
1
TheMachine = new machine(serialPort1, 3, 4, 1, 5);
2
MotionEngine = new BCMachineMotion(TheMachine);
3
PlacementEngine.setMotionAndMachine(TheMachine, MotionEngine);
4
InitializeMachine();
5
....
6
MotionEngine.MoveZAxisTo(0);
7
TheMachine.DisableAllAxes();


Falls Intersse besteht, könnte ich folgendes anbieten:

- Anpassung der Leiterplatte und Firmware, so dass es einen 
Adressschalter gibt. (Aktuell ist die ModBus Adresse Hard gecoded)

- Andere HW-Anpassungen falls gewünscht?
- Anbieten der unbestückten Leiterplatten
- Bestückte Leiterplatten evtl. aus China organisieren bei grossem 
Interesse.


Würde mich über ein Feedback freuen.

Viele Grüsse

von C. H. (hedie)


Lesenswert?

Hier noch ein Video der Treiber in Aktion....
Beim automatischen aufnehmen einer Bestückungsdüse.

https://databyte.ch/wp-content/uploads/2019/09/pickAndPlace.mp4

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
Noch kein Account? Hier anmelden.