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

: Bearbeitet durch User
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.