Drehgeber aus Schrittmotor / Funktionstasten / Leuchtmelder / mit USB-Interface PoKeys55
Anleitung zum Bau für ein Multifunktions-Handrad ohne die Notwendigkeit von VB-Programmierung
Nachdem ich einige Zeit mit meinen Fräsen gearbeitet habe, ist mir das Einrichten der Maschine mittels Tastatur und Maus zu umständlich. Mit der "riesigen" Tastatur in der Hand zum festlegen des Werkstück-Nullpunkt möglichst genau eine Position anzufahren, sprich x-mal die Tasten zu tippen oder zu halten bis der Finger glüht, geht garnicht. Da mein Computer samt Bildschirm und Tastatur wegen Platzmangel über der Portalfräse steht, ich mich also zu jeder Funktionsauslösung bzw -Prüfung aufrichten müsste, brauche ich viele Funktionen unten an der Maschine.
Also muß eine Fernbedienung (im Volksmund nur Handrad genannt) her. Da basteln Spaß macht, wird wiedermal selbst gefriemelt. Nach dem Vorbild von hier und einigen weiteren Anregungen von hier wird das ganze nun in Angriff genommen.
Dabei sind mir die durch LPT2 und in Mach3 mit OemTrigger möglichen 15 Funktions-Tasten etwas wenig, zumal davon noch mindestens 2 vom LPT für den Drehgeber (Handrad) gebraucht werden. Ganz zu schweigen von weiteren 4 für die Regelung von Vorschub und Spindeldrehzahl. Abhilfe schafft hier ein PoKeys USB-Interface.
PoKeys 55/56 ist ein programmierbarer USB-Controller der vieles kann. Für mich wichtig: Tasten, mit denen der PC gesteuert werden kann, Anschluß eines oder mehrerer Drehgeber (Handrad) für die Achsenbewegung bzw. Encoder zum Erhöhen/Verringern von Vorschub und Spindeldrehzahl. Nicht zuletzt das Ansteuern von LEDs und evtl. auch noch eines Relais für die zweite Kühlung. PoKeys55 kostet 42 Euronen, und wenn man noch das Geld für die eingesparte 2. LPT-Karte abrechnet ... Es lohnt sich wirklich wie man im folgenden sehen wird.
Bau eines Inkrementalgebers mittels eines kleinen Schrittmotors und etwas Elektronik, das ganze 3 mal, nutzbar als Drehgeber für Achsenbewegung, Vorschub +/-, Spindeldrehzahl +/-.
Dazu 22 Funktionstasten: 4 x Achsenauswahl, 4 x Jogmodus, 3 x Schrittweite, Vorschub 100%, Spindeldrehzahl 100%, Aktive Achse nullen, Go Home, Start, Stop, Pause, Reset, Kühlung 1,Kühlung 2, Handrad AUS. Die Achsenauswahltaster sollen gleichzeitig das Handrad einschalten.
LED-Anzeige für: 4 x gewählte Achse, 3 x Schrittweite, Start, Pause, Kühlung 1, Kühlung 2, Feed Overrride, Spindel Override.
Das ganze wird nicht als "fliegendes" Handrad gebaut, sondern in einem kleinen Pult das vorn an der Maschine befestigt wird.
Auf dem Pult werden zusätzlich noch die LEDs für die Endschalter, die Achsbewegung, Not-Stop, Spindel-EIN und Werkzeugtaster platziert.
Weiterhin der Netzschalter für die Steuerung und der Not-Stop-Schlagschalter .
Leider sind die Informationen, die man zum betreiben des PoKeys mit Mach3 braucht, ziemlich verstreut mal in dieser Doku, mal in jener Hilfe, mal nur ein Hinweis, das es so geht, etc. Dazu meist in Anglo-Amerikanisch (amerikanisches Englisch) und mit vielen Abkürzungen (die man erstmal garnicht zuordnen kann). Die meisten Infos findet man im Mach3 Wiki und in den Dokumentationen zu Mach3.
Ich bitte nun erst einmal darum, dies nur als Vorschlag zur Konfiguration zu betrachten. Jeder kann natürlich das folgende nach seinen eigenen Vorstellungen gestalten. Meine gesamte Konfiguration hier zu dokumentieren, würde auch das ganze viel zu unübersichtlich machen. Ich möchte hier nur aufzeigen was mit wenig Aufwand möglich ist.
Es ist auch schwierig, bei diesem umfangreichen Thema eine vernünftige Reihenfolge der Erläuterungen zu finden. Aber ich glaube dennoch, daß mir das ganz gut gelungen ist. Wem das nicht so scheint, dem sei gesagt:
Nachdem man sich einige Stunden mit der folgenden Materie auseinandergesetzt hat, lernt man auch damit umzugehen. Wichtig ist, vorher einen Plan zu haben, welche Funktionen (Tasten und LEDs) man braucht.
Ich habe also PoKeys auf eine Lochplatine geschraubt und dann mit dem experimentieren angefangen.
Nachdem die PoKeys-Software von der PoLabs/PoKeys Webseite installiert und PoKeys angeschlossen ist,
werden die Anschlüsse für die Drehgeber eingerichtet.
2.2. Drehgeber/Encoder anschließen
Das Anschlußbild am Beispiel des Encoders 3 an unserem PoKeys:
2.3. Drehgeber mittels Software prüfen
3. PoKeys / Tasten
Es gibt mehrere Möglichkeiten der Steuerung von Mach3 mittels PoKeys. Ich habe mich für die einfachste Variante entschieden, das darstellen einer Tastatur-Matrix mit 64 Tasten, auf denen dann PC-Tasten emuliert weden.
Kurz: man kann in Mach3 jedem Button eine Taste oder Tastenkombination zuordnen. PoKeys kann diese dann von einer Tastaturmatrix ausgeben. Da Mach3 mit Bildschirmtasten (Buttons) funktioniert, denen man eine Taste oder Tastenkombination zuordnen kann, sollen diese Emulationen dann von Mach3 ausgewertet werden. Somit können mehr als die in Mach3 mittels OemTrigger möglichen 15 Tasten benutzt werden.
3.1. Pokeys Tasten mittels Software einrichten
Ich habe mich für eine 6x6 Matrix entschieden, das ergibt 36 mögliche Tasten an 12 Leitungen. Bei Bedarf kann die Matrix bis auf 8x8 (64 Tasten) erweitert werden.
Eine Tabelle mit den Tastatur-Codes, die auf der deutschen Tastatur anders als auf der englischen Tastatur und in der Auswahl der Pokeys-Software sind, wird unten im Download-Bereich bereitgestellt.
3.2. Tastaturmatrix basteln
Die Sache ist relativ einfach. Es wird ein Gitter aus 6 x 6 Leitungen verwendet. An den Kreuzungen der Leitungen finden die Taster ihren Platz.
Es müssen nicht alle Taster verwendet werden, bei mir sind 22 von möglichen 36 belegt.
Die Leitungen werden am PoKeys angeschlossen, so wie wir die Matrix zuvor definiert haben. In meinem Fall ist das also
So, wie man mit Tasten der Tastaturmatrix Bildschirm-Buttons in Mach3 steuern kann, so kann man umgekehrt mit den Bildschirm-LEDs von Mach3 echte LEDs am PoKeys schalten.
4.1. PoKeys-LEDs mittels Software einrichten
4.2. LEDs anschließen
Bei 5 Volt Versorgungsspannung wird die gängige LED rein rechnerisch mit einem 80 Ohm Widerstand beschaltet. Ich selbst habe 150 Ohm gewählt, damit die LEDs nicht zu hell leuchten.
Von jedem im vorigen Schritt eingerichtetem Pin wird eine LED mit einem Widerstand gegen GND geschaltet, In unserem Beispiel 3 rote LED an 30 bis 32, 3 grüne LED an 33 bis 35. Und schon ist man fertig.
Ein Relais einrichten und prüfen wird genau wie bei den vorher beschriebenen LEDs vorgenommen.
5.2. Relais anschließen
Angeschlossen wird ein Relais wie folgt:
Sollen mehr als 1 Relais geschaltet werden, könnte man theoretisch auch jeweils eine Darlington-Stufe eines ULN2003 benutzen. Mit 5-Volt-Relais funktioniert das Prima. Spätestens dann aber ist eine externe Spannungsquelle für die Relais erforderlich, der USB-Anschluß gibt das nicht mehr her.
Im folgenden erscheinen nicht immer alle Funktionen sinvoll. Manches sei auch Spielerei, aber ich habe versucht, möglichst viele Beispiele in möglichst wenig Arbeit zu legen. Wenn etwa 3 LEDs 5 Funktionen anzeigen, ist das nur eine Darstellung des machbaren. Allerdings sind die Möglichkeiten noch weitaus vielfältiger als ich es in diesem Rahmen demonstrieren kann und will.
6.1. Pokeys in Mach3 configurieren
Zuerst wird das MachCNC Plugin von der PoLabs/PoKeys Webseite installiert. Danach starten wir Mach3, rufen im Menü Config das Config Plugin Control auf und schalten das PoKeys-Plugin (PoKeys0) ein:
Anmerkung: Es gibt ein neues Mach3-Plugin auf der PoLabs/PoKeys-Webseite, im Bild über dem hier benutzten Plugin. Im Download-Bereich des PoKeys findet ihr "PoKeys Mach3 plugin ...", dessen Pokeys.dll; in Mach3-Config-Plugins als "Pokeys-PoLabs-v ..." erscheint. Weitere Hinweise auch hier:... PoKeys Mach3 Plugin ...
Die Einrichtung des Plugins ist optisch stark verändert, funktioniert aber (bis auf den neuen Pulse-Engine Bereich) ähnlich wie hier mit dem alten Plugin beschrieben.
Danach muß Mach3 beendet und neu gestartet werden, damit das Plugin aktiv ist. Achtung: Den PoKeys noch nicht anschließen.
Im Menü Plugin Control wird die PoKeys0 Cfg. aufgerufen.
Hier nehmen wir alle Einstellungen der vorher eingerichteten Pinbelegung des PoKeys für Mach3 vor, genau so, wie wir sie zuvor mit der PoKeys Software eingerichtet haben.
LEDs
Bei 1. eine 2001 eintragen, sonst müssen wir später jedesmal rechnen wenn LEDs konfiguriert werden.
Unter 2. wie zu sehen ein Häckchen setzen und unsere LEDs von 30 bis 35 eintragen. Das Häckchen auch bei Invert Outputs setzen.
Encoder / MPGs
Mit 3. habe ich 2 Encoder und 1 MPG definiert. Die Funktionen stehen direkt im Feld mit drin. Zur Nutzung der Encoder kommen wir noch.
Tastaturmatrix
Bei 4. geben wir die Daten unserer Tastaturmatrix ein. 6 Spalten, 6 Zeilen, Pin-Nummern der Reihen und Spalten.
Zuletzt 5. dient zur Prüfung der Tastatur-Matrix im nächsten Schritt.
Nach einem Klick auf OK ist die Konfiguration abgeschlossen. Jetzt wieder Mach3 beenden, den Pokeys an den PC anschließen und Mach3 starten.
Auch hier haben wir wieder die Möglichkeit, unsere Arbeit zu prüfen:
Im Menü View die Zeile Load Screens aufrufen und die Datei PoKeys.set öffnen. Ist der Bildschirm umgestellt (dauert evtl. etwas), dann oben rechts den Button PoKeys anklicken.
Im folgenden Bildschirm kann alles was bisher gemacht wurde auch geprüft werden. Auf dem Bildschirm sind alle LEDs mit Schalt-Button sowie Encoder-DROs und MPG-DROs zu sehen. Unsere UserLED für die X-Achse hat (PoKeys0.Cfg = UserLED ab 2001) die Nummer 2030, Y-Achse die 2031 usw.)
Rechts führt uns der Button Go to Matrix Test Page zur Prüfung der Tastatur-Matrix.
Wenn alles funktioniert, kehren wir mit View - Load Screens wieder zum 1024.set (oder einem beliebigen anderen SET), also zu unserer Arbeitsoberfläche zurück. Jetzt geht es weiter mit . . .
6.2. Mach3 einrichten
An dieser Stelle nochmals der Hinweis, dies nur als Vorschlag zur Konfiguration zu betrachten. Jeder kann natürlich das ganze nach seinen eigenen Vorstellungen gestalten. Meine gesamte Konfiguration hier zu dokumentieren, würde auch das ganze viel zu unübersichtlich machen.
Nachdem man sich einige Stunden mit der folgenden Materie auseinandergesetzt hat, ist wohl jeder in der Lage damit umzugehen. Wichtig ist, vorher einen Plan zu haben, welche Funktionen (Tasten/LEDs/DROs) ich brauche. Einige Buttons von Mach3 haben Standard-Tasten, die man benutzen kann. Andere müssen selbst eingerichtet werden. Für viele Funktionen gibt es Standard(Oem)-LEDs, andere werden als UserLeds eingerichtet. usw. usw. Los gehts!
Als erstes wird im Mach3-Menü Config die General Config aufgerufen und folgende Einstellungen vorgenommen (zu den Details dazu kommen wir später):
Die Weiteren Voraussetzungen zum Anpassen von Mach3 finden wir im Mach3-Wiki und in den Dokumentationen zu Mach3. Das sind die Handhabung des Screen-Editors und programmieren in VB-Script für Macros ( Macro_Prog_Ref. / VBScript_Commands ) sowie die Nummerierung der LEDs, DROs und Buttons von Mach3 (OEM-Codes).
Programmieren? Hört sich erst mal kompliziert an, ist es aber nicht wirklich.
An dieser Stelle ein Hinweis auf die zweite Titelzeile: Es handelt sich bei VB-Script nicht um das Programmieren etwa einer DLL mittels Visual-Basic, das doch schon etliche Kenntnisse erfordert. Auch das wäre möglich, aber hier soll ja der PoKeys mit einfachen Mitteln betrieben werden, die jeder mit etwas Übung beherrschen kann.
Wir brauchen nur wenige VB-Script Befehle, um Mach3 an unsere vorbereitete PoKeys-Konfiguration anzupassen:
- GetOemLed/SetOemLed und GetUserLed/SetUserLed um am Bildschirm und/oder am PoKeys LEDs ein- und auszuschalten
- GetOemDro/SetOemDro um am Bildschirm DROs (Digitale Anzeigen) zu lesen oder zu setzen
- DoOemButton um per VB-Script Buttons (Bildschirmtasten) zu betätigen
- und um unsere gewünschten Funktionen auszufeilen noch etwas VB-Script wie:
- Code. . .
- Message
- If . . . Then . . . (Else) . . . End If
6.2.1 Auto-Start Macro
Unter General Config haben wir in der Zeile Initialisation Stringm2000 eingetragen. Das bedeutet, daß beim Start von Mach3 und bei jedem Reset (das Häckchen bei Use Init String on ALL "Resets") das Macro mit der Nummer 2000 ausgeführt wird.
Was wollen wir mit dem Macro erreichen? Als erstes soll der Handrad-Modus ausgeschaltet werden, damit nicht versehentlich Bewegungen der Achsen durch das Handrad erfolgen. Ich benutze dazu die Befehle DoOemButton (276) und DoOemButton (305). Dem Mach3-Wiki oder der Oem-Liste entnehmen wir, 276 schaltet in den Step-Mode und 305 Schaltet auf Einzel-Schritt (Tastatur) um. Dazu muß man wissen daß die Modi Cont only und Single (exact) Step für den Jog-Modus Tastatur vorgesehen sind und die Modi Velocity/Step und Step Cont für das Handrad (MPG). Schalte ich also mit diesen beiden Buttons auf Single (exact) Step, dann ist das Handrad ausgeschaltet.
Weiterhin sollen die PoKeys-LEDs der Achsen ausgeschaltet werden. Das erreicht man, indem man die LEDs auf Null setzt mit dem Befehl SetUserLed (20xx,0). Wir errinnern uns, in der Mach3-PoKeys-Configuration (PoKeys0.Cfg) haben wir bei Map User LEDs to IO die Zahl 2001 eingetragen. und dann bei Range Output die 30 bis 35 gesetzt. Vorher haben wir mit der PoKeys-Software diese LEDs im PoKeys als Output programmiert und an die Pins 30 bis 35 die LEDs angeschlossen. Sollen nun die LEDs 30, 31 und 32 für X, Y und Z stehen, muß dieser Befehl 3 mal mit der jeweiligen Nummer 2030, 2031 und 2032 geschrieben werden (es könnte ja jede der LEDs grad die sein die leuchtet). Im Befehl eine 1 hinter dem Komma schaltet die LED ein, die 0 schaltet sie aus.
Jetzt fällt mir auf, ich will auch noch eine LED haben, die mir den AUS-Zustand des Handrads anzeigt. Die könnte ich später am PoKeys nachrüsten, brauche aber die "echte" LED nicht wirklich. Benötigt wird nur die Software-LED als Dummy. Wieso werden wir später noch sehen.
Ich benutze dafür einen noch freien Anschluß, etwa Nummer 29. Das ganze sieht nun so aus:
Sub Main() 'm2000
DoOemButton (276) 'Step Mode
DoOemButton (305) 'Single Exact Steps
SetUserLED(2029,1) 'LED Handrad aus EIN
SetUserLED(2030,0) 'LED Achse X AUS
SetUserLED(2031,0) 'LED Achse Y AUS
SetUserLED(2032,0) 'LED Achse Z AUS
message " - Handrad AUS (Tastatur)"
End Sub
Wichtig: Die Zeilen Sub Main() und End Sub sollen immer am Anfang und am Ende des Macros stehen.
Noch einige Anmerkungen zu nicht unbedingt nötigem Inhalt: Der Text jeweils hinter dem Anstrich wird bei der Ausfürung des Macros ignoriert, er dient sozusagen als Merker.
Der Befehl message zeigt den dahinter in Anführungszeichen stehenden Text in der Status-Zeile von Mach3 an.
Wir starten also im Mach3-Menü Operator den VB Script Editor und schreiben das Macro. Das muß dann im Verzeichnis von Mach3 im Unterverzeichnis macros/Mach3Mill mit dem Namen m2000.m1s abgespeichert werden.
Machen wir nun eine Übung!
1. In PoKeys0.Cfg (Mach3) soll die LED 29 nachgetragen werden.
2. Die LED 29 wird zusammen mit einem Widerstand wie schon mal gemacht am PoKeys angeschlossen
3. Mit der PoKeys-Software soll die LED 29 in den PoKeys programmiert werden.
4. Mit der PoKeys-Software schalten wir die LEDs 30 bis 35 ein, die LED 29 bleibt aus.
Wenn wir jetzt die PoKeys-Software beenden und Mach3 starten (evtl. RESET anklicken), dann müssen durch den Auto-Start des Macros m2000 die LEDs 30 bis 35 ausgeschaltet werden und die LED 29 wird eingeschaltet. Die LED 29 bekommt später noch eine Funtion, ist also nicht unwichtig.
Ebenso wie die echten LEDs verhalten sich in Mach3 auch Bildschirm-LEDs, die wir selbst einrichten:
6.2.2 LEDs auf dem Bildschirm darstellen
Eigentlich ist das nicht notwendig, denn wir haben ja unsere echten LEDs am PoKeys. Der Vollständikeit halber werde ich trotzdem die Erklärung dazu geben, denn die dient auch zum Verständnis der Mach3-Modifikationen. Ich zeige das am Beispiel der Standard-Fräs-Oberflache (1024.set), es funktioniert aber mit jedem anderen Bildschirm-Set genau so. Wer ein anderes Set benutzt, kann das also auch an diesem nachvollziehen.
Zu Mach3 gibt es kostenlos den Screen-Editor Mach3Screen.exe. Nach starten dieses Programms laden wir aus dem Mach3-Verzeichnis die Datei 1024.set. Anmerkung: Die Änderung der Position und der Größe funktioniert genau so auch bei Buttons und LEDs.
6.2.3 "Handrad AUS" Taste
Es erwies sich an dieser Stelle als hilfreich, eine Liste zu führen, welche Änderungen ich in Mach3 vornehme. Falls man später mal etwas ändern oder ergänzen will, findet man leichter den Einstieg. In dieser Liste wird notiert, welche Macros mit welcher Funktion erstellt wurden. Weiterhin welche Buttons mit welcher Funktion (OemCode, Macro-Aufruf etc.) geschaffen wurden. Und nicht zuletzt welche LEDs und DROs mit welcher Funktion gesetzt wurden.
Es gibt 2 Varianten, einen Button zu setzen. Der [ Button ] ist ein Standard-Button der in der Standard-Schrift mit einem Namen versehen werden kann. Der [ Bitmap Button ] kann mit einem passenden Bild hinterlegt werden, das die Beschriftung oder ein Symbol oder beides enthält.
Ich benutze die Variante 2 mit Plan B. Da ich den Button zwar brauche, um eine Taste des PoKeys zum Funktionieren zu bringen, ich den Button aber andererseits nicht brauche, da ich ja die echte Taste am PoKeys habe, nehme ich den [ Bitmap Button ], lege aber kein Bild dahinter. In diesem Fall bleibt der Button auf meinem Screen-Set unsichtbar.
6.2.4 Tasten für Achsenauswahl und "Handrad EIN"
Wie eine Taste in Mach3 eingerichtet wird, wissen wir nun schon. Den AUS-Button für die AUS-Taste und auch die Achs-LEDs haben wir. Jetzt werden die 3 Tasten für die Achsen-Auswahl eingerichtet. Die dafür zu benutzende Tastenkombinationen sollen [ Strg Alt X ], [ Strg Alt Y ] und [ Strg Alt Z ] sein.
Mit der PoKeys-Software ordnen wir 3 Tasten der Tastaturmatrix diese 3 Tastenkombinationen zu. Danach geht es wieder an den Screen-Editor.
Mit dem OemButton 185 im Button-Script wird das Handrad (welches ja ausgeschaltet sein könnte) für das MPG #1 eingeschaltet. Mit dem VB Script Editor schreiben wir jetzt das Macro m2030.m1s dazu.
Für das MPG wird der Jog-Mode gesetzt, dann soll die LED für Handrad AUS ausgeschaltet und die LED für die X-Achse eingeschaltet werden. Da die Tasten nicht nur das Handrad einschalten sollen, sondern auch zum umschalten von einer Achse zur anderen dienen, werden die LEDs für Y- und Z-Achse ausgeschaltet. Hört sich wieder sehr viel an, ist aber relativ einfach.
Als erstes aber schreiben wir uns eine Kommentarzeile (Merker), in der wir die Funktion des zum Macro gehörenden Buttons notieren
Sub Main() 'm2030
' DoOemButton (185) im Button-Script (MPG1 an Achse X)
DoOemButton (327) 'MPG (Handrad) Jog Mode
DoOemButton (304) 'Jog Mode Velocity/Step
SetUserLED (2029,0) 'LED Handrad aus AUS
SetUserLED (2030,1) 'LED Achse X EIN
SetUserLED (2031,0) 'LED Achse Y AUS
SetUserLED (2032,0) 'LED Achse Z AUS
message " X-Achse EIN"
End Sub
Jetzt kann jeder seine Buttons für die Y-Achse und die Z-Achse mit DoOemButton 186 und 187 sowie den Macros m2031.m1s und m2032.m1s und den Tastenkombinationen dazu selbst einrichten.
6.2.5 Taste und Anzeige für Jog Increment (Schrittweite)
Unter Punkt 6.2 haben wir in General Config bei Jog Increments ... 5 Werte eingetragen. Diese und 3 LEDs dazu wollen wir jetzt mittels eins Tasters der Reihe nach umschaltenu. Dazu belegen wir mittels der Pokeys-Software eine Taste der Tastatur-Matrix mit der Tastenkombination [ AltGR I ].
Die 3 Jog-Increment-LEDs am PoKeys bekommen die Nummern 2033 bis 2035 und werden an die passenden Pins angeschlossen.
Mit dem VB Script Editor erstellen wir das Macro 2099. Dazu wissen wir aus der OEM-Code Tabelle, daß das DRO für Jog Increment die Nummer 828 hat. Und der Button-Merker ist auch wieder dabei.:
Sub Main() 'm2099
' DoOemButton (171) im Button-Script (Cycle Jog Increment)
SetUserLED(2033,GetOemDro(828)*1) '1
SetUserLED(2034,GetOemDro(828)*10) '0.1
SetUserLED(2035,GetOemDro(828)*100) '0.01
If GetOemDro(828) = 10 Then '10
SetUserLED(2033,1)
SetUserLED(2034,1)
SetUserLED(2035,0)
End If
If GetOemDro(828) = 0.001 Then '0.001
SetUserLED(2033,0)
SetUserLED(2034,1)
SetUserLED(2035,1)
End If
End Sub
Die ersten 3 Zeilen zeigen uns, wie wir mit einer einfachen Multiplikation unsere 3 LEDs für die Schrittweite EIN- bzw. AUS-schalten können. Nur wenn die passende Schrittweite im DRO angezeigt wird, wird die dazugehörige LED auf 1 gesetzt, sonst auf eine Imaginäre 0.
Danach folgen 2 If ... Then ... End IF abfragen. Wenn ... etwas so ist dann (und nur dann) ... mache dieses Ende der Abfrage.
Sehen wir uns die 3 Zeilen innerhalb der ersten Abfrage an. Wenn das DRO den Wert 10 zeigt, dann werden die 2 LEDs (1.00 & 0.10) eingeschaltet. In der zweiten Abfrage werden bei einem DRO-Wert von 0.001 die 2 LEDs (0.10 & 0.01) eingeschaltet.
Unsere 3 LEDs zeigen uns damit 5 verschiedene DRO-Werte an!
Mit unserem Jog Inc Button auf dem Haupt-Screen von Mach3 können wir nun schon mal die Wirkung ausprobieren. Beim Betätigen schaltet das DRO von 10mm bis 0,001mm der Reihe nach um (Cycle). Die 3 Jog Inc LEDs am PoKeys schalten entsprechend der Programmierung im Macro m2099.m1s.
Und die Taste am PoKeys mit der Codierung [ AltGr I ] tut genau das gleiche.
6.2.6 Macros vervollständigen
Ich möchte nun, daß unser Handrad AUS Macro m2000.m1s aus Punkt 6.2.4. nicht nur die Achs-LEDs sondern auch die Jog-Inc-LEDs ausschaltet. Also UserLED 2033, 2034 und 2035. Unter der Zeile "message ..." fügen wir die Kommandos dafür ein:
Sub Main() 'm2000
DoOemButton (276) 'Step Mode
DoOemButton (305) 'Single Exact Steps
SetUserLED(2029,1) 'LED Handrad aus EIN
SetUserLED(2030,0) 'LED Achse X AUS
SetUserLED(2031,0) 'LED Achse Y AUS
SetUserLED(2032,0) 'LED Achse Z AUS
message " - Handrad AUS (Tastatur)"
SetUserLED(2033,0) 'LED Jog 1,00 AUS
SetUserLED(2034,0) 'LED Jog 0,10 AUS
SetUserLED(2035,0) 'LED Jog 0,01 AUS
End Sub
Mit der letzten Aktion in m2000 haben wir uns ein weiteres Problem geschaffen. Das Ausschalten des Handrads schaltet jetzt auch die Jog-Inc-LEDs aus. Klicken wir jetzt den Cycle-Jog-Inc Button, wird aber die entsprechende LED durch m2099 wieder eingeschaltet. Also muß das Cycle-Jog-Inc Macro m2099 erweitert werden.
Hier bekommt die Handrad AUS-LED Nummer 29 ihre Funktion. Indem wir einfach diese LED abfragen, prüfen wir ob das Handrad ausgeschaltet ist. Ist das der Fall, schalten wir (damit keine weitere Abfrage notwendig wird) alle 3 Jog-Inc-LEDs aus.
If GetUserLed (2029) then ' Handrad ist AUS
sleep 500
SetUserLED(2033,0)
SetUserLED(2034,0)
SetUserLED(2035,0)
End If
Die Abfrage sollte eigentlich "If UserLed (2029) = 1 Then ..." oder "If UserLed (2030) = 0 Then ..." heissen. VB Script ist hier sehr umgänglich, wie wir sehen können wir " = 1 " weglassen.
Der Befehl sleep bewirkt, daß die Ausführung der folgenden Befehle um die Anzahl der hinter sleep stehenden Millisekunden verzögert wird. In diesem Fall, das die mit dem Schalten des Jog-Increments aufleuchtende LED erst nach einer halben Sekunde wieder ausschaltet und uns so die Aufnahme des Tastendrucks signalisiert.
Nach den vorhandenen Kommandos (einschalten einer Jog-Inc-LED) wird dies in m2099 eingefügt:
Sub Main() 'm2099
' DoOemButton (171) im Button-Script (Cycle Jog Increment)
SetUserLED(2033,GetOemDro(828)*1) '1
SetUserLED(2034,GetOemDro(828)*10) '0.1
SetUserLED(2035,GetOemDro(828)*100) '0.01
If GetOemDro(828) = 10 Then '10
SetUserLED(2033,1)
SetUserLED(2034,1)
SetUserLED(2035,0)
End If
If GetOemDro(828) = 0.001 Then '0.001
SetUserLED(2033,0)
SetUserLED(2034,1)
SetUserLED(2035,1)
End If
If GetUserLed (2029) then ' Handrad ist AUS
sleep 500
SetUserLED(2033,0)
SetUserLED(2034,0)
SetUserLED(2035,0)
End If
End Sub
In Folge der beiden vorigen Aktionen müssen die Macros für die Achsen-Auswahl auch die passende Jog-Inc-LED wieder einschalten.
Da wir die Kommandos dafür schon in m2099.m1s haben, benutzen wir das schon aus 6.2.5. bekannte Kommando Code "m2099".
Wieder unter der Zeile "message ..." fügen wir das Kommandos ein. Hier am Beispiel des X-Macros m2030:
Sub Main() 'm2030
' DoOemButton (185) im Button-Script (MPG1 an Achse X)
DoOemButton (327) 'MPG (Handrad) Jog Mode
DoOemButton (304) 'Jog Mode Velocity/Step
SetUserLED (2029,0) 'LED Handrad aus AUS
SetUserLED (2030,1) 'LED Achse X EIN
SetUserLED (2031,0) 'LED Achse Y AUS
SetUserLED (2032,0) 'LED Achse Z AUS
message " X-Achse EIN"
Code "m2099"
End Sub
Die Macros m2031 und m2032 für Y und Z werden genau so geändert.
Die Möglichkeiten von VB-Script sind natürlich noch weitaus vielfältiger als hier dargestellt. Damit kann sich aber bei Bedarf jeder selbst beschäftigen, in dieser Dokumentation soll nur der Einstieg erleichtert werden. Im Mach3-Support und im Mach3-Wiki ist das VB-Script komplett dokumentiert, also viel Spaß beim weiteren Programmieren.
Und noch ein Tip: Normalerweise wird im VB-Script viel mit Variablen gearbeitet. In unseren "kleinen" Macros ist das noch mehr oder weniger überflüssig. Aber je größer ein Script wird, desto unübersichtlicher wird es. Variablen helfen enorm die Übersicht zu behalten, wie man im folgenden sehen wird.
Trotz intensiver Suche habe ich in Mach3 keine Funktion gefunden mit der man etwa den Encoder #1 mit dem Vorschub (Feed Override) verkuppeln kann (siehe hier).
Hier würde bestimmt ein Brain abhelfen, aber damit konnte ich mich bisher aus Zeitmangel noch nicht beschäftigen. Daher erledigen wir das wie folgt:
Wir erinnern uns. In General Config haben wir ein Häckchen vor Run Macro Pump gesetzt. Befindet sich nun im Macro-Verzeichnis von Mach3 ein VB-Script mit dem Namen macropump.m1s, so wird dieses Script etwa 20 mal in der Sekunde ausgeführt. Das können wir nutzen um mit 2 Encodern den Vorschub und die Spindeldrehzahl zu steuern
Ist macropump.m1s schon vorhanden und hat Kommandos zum Inhalt, müssen diese erhalten bleiben. Beispiel:
Sub Main() 'macropump
Call SetParam("SafeZ", GetOEMDRO(54))
End Sub
Ist macropump.m1s nicht vorhanden, erstellen wir eine neue Datei. In die neue Datei oder in die vorhandene Datei vor End Sub setzen wir unsere Steuer-Kommandos für die Encoder ein.
Neu: In der If ... then ... Abfrage wird ein neues Element verwendet. Mit dem Wort and bestimmen wir, daß 2 Bedingungen (vor und nach and) erfüllt sein müssen, damit das Kommando nach Then ausgeführt wird.
Neu: Wird nach Then nur ein Kommando ausgeführt, darf alles in einer Zeile stehen und End If fällt weg.
Sub Main() 'macropump
Call SetParam("SafeZ", GetOEMDRO(54))
' Variablen zum Encoder setzen
FO = GetOemDro(821) ' FeedOverride DRO
FE = GetOemDro(170) ' Enc #1 DRO (FeedEncoder)
SO = GetOemDro(74) ' Spindel Up/Down Increment DRO
SE = GetOemDro(171) ' Enc #2 DRO (SpindelEncoder)
sleep 135 ' Kunstpause
' Vorschub +/- (FeedOverride DRO -- max 300%)
If FO < 300 and GetOemDro(170) > FE Then DoOemButton(108) ' FeedOverride + 10
If FO > 10 and GetOemDro(170) < FE Then DoOemButton(109) ' FeedOverride - 10
' Spindel +/- (Spindel Up/Down Increment DRO -- max 250%)
If SO < 250 and GetOemDro(171) > SE Then DoOemButton(163) ' Spindel Up + 10
If SO > 10 and GetOemDro(171) < SE Then DoOemButton(164) ' Spindel Down - 10
End Sub
Das Macro sagt alles aus, was man wissen muß. Nur noch 2 Erläuterungen:
Ist nach der "Kunstpause" von 135 Millisekunden der Wert des Encoder-DRO (170/171) kleiner oder größer als vor der Kunstpause in der Variablen (FE/SE) gemerkt, dann wird die entsprechende Aktion ausgefürt.
Die "Kunstpause" ist also erforderlich, weil ab dem setzen der Variablen das Macro bis zum drehen am Encoder warten muß, damit im anschließenden Vergleich ein Unterschied in den Werten durch die Encoder-Betätigung entstanden ist. Das Macro wartet hier nicht wirklich auf die Betätigung des Encoders, aber die Kunstpause funktioniert.
Eventuell muß hier die Zeit von 135 Millisekunden -je nach Prozessorgeschwindigkeit des Rechners- etwas nach korrigiert werden.
Manko: Wird der Encoder nach dem sleep und vor dem nächsten Durchlauf von macropump gedreht, findet keine Aktion statt.
Beim FeedOverride ist die maximale Erhöhung auf 300% begrenzt, bei der Spindeldrehzahl auf 250%. Das dient hier nur zum aufzeigen, wie das Kommando aufgebaut wird. Man kann selbstverständlich auch die Spindel auf 300% setzen.
Tip: Das Wort and ist nur eine von vielen logischen Funktionen, mit denen man die unterschiedlichsten Anforderungen bewältigen kann. Wer interressiert ist, sollte sich mit and, or, not usw. und den Begriffen wahr und falsch vertraut machen.
Auch If ... Then ... (Else) ... End If ist nur eine von viele Anweisungen, es ist noch vieles mehr mit VB-Script möglich.
Damit ist unsere Beispiel-Konfiguration von Mach3 fertig.
Jetzt fehlen noch 2 Tasten, die Velocity/Step bzw. Multi-Step schalten. Nützlich wären auch Tasten, die Vorschub bzw. Spindel wieder auf 100% setzen, naja usw. usw.
Ich habe in meiner Konfiguration 1024pk2000.set alle Buttons sichtbar platziert. Zusätzlich zu den Achs-User-LEDs (rot) sind die Achs-OemLEDs (gelb) und die Jog-inc-LEDs (grün) vorhanden. Handrad AUS Button und LED sind rechts neben dem RESET-Button platziert.
Und hier die zu den Übungen gehörenden Dateien, das 1024pk2000.set, die Macros und der Macro-Merk-Text):
Als erstes muß ein kleiner Schrittmotor her. Dazu habe ich alte Diskettenlaufwerke zerlegt und die Schrittmotoren der Kopfsteuerung ausgebaut:
Von Links nach rechts: Sehr altes 5,25 Zoll Laufwerk, neueres 5,25 Zoll Laufwerk, 3,5 Zoll Laufwerk.
Der große Schrittmotor links und der in der Mitte sind 4-Strang-Motoren (5 bzw. 6 Anschlüsse), der rechte Motor ist ein 2-Strang-Motor (4 Anschlüsse).
Der linke, große Motor hat 200 Schritten pro Umdrehung bei 1,8 Grad Schrittweite, geeignet für sehr feinfühliges Arbeiten und dabei sehr präzise. Dieser Motor ist sehr robust gebaut und gut geeignet für die Achsen-Bewegung.
Die beiden kleineren Schrittmotoren haben (da sie im Diskettenlaufwerk mittels Schnecke untersetzt werden) 20 Schritte pro Umdrehung mit 18 Grad Schrittweite. Diese Motoren sind gut als Drehgeber für die Erhöhung und Verringerung von Vorschub und Spindeldrehzahl geeignet.
Der Motor in der Mitte ist sehr schwammig beim drehen. Für meine Zwecke völlig ungeeignet. Der kleinere aus dem 3,5 Zoll Laufwerk (rechts) vermitttelt ein gutes Gefühl beim drehen.
Dann habe ich noch einen bei Pollin für 2,95 Euronen gekauften 4-Strang-Schrittmotor (rechts), 42x42mm, 35mm hoch, etwas größer als der aus dem alten 5,25er Laufwerk (links). Dieser Schrittmotor hat 3,6 Grad Schrittweite, 100 Schritte pro Umdrehung. Die magnetische "Rastung" der einzelnen Schritte ist auch ohne Bremswiderstand schon richtig gut.
Es geht auch noch kleiner. Hier Mini-Schrittmotoren, Durchmesser 10mm, gekauft bei Ebay. Im Vergleich zum aus dem alten 5,25er Laufwerk ausgebauten Motor wirklich klein. Diese 4-Strang-Schrittmotoren wären besonders für ein möglichst kleines Handrad geeignet.
Diese Motoren müssen nun jeweils an einen Inkrementalgeber angeschlossen werden, dessen Schaltung nach den oben genannten Vorbildern so aussieht: Zur besseren Übersicht habe ich die Schaltung mal neu gezeichnet
Links die Schrittmotoren mit Anschluß-Schema. In der Mitte die Impuslgewinnung, rechts die Impulsaufbereitung.
Da die magnetische "Rastung" der Schrittmotore nicht so effektiv ist wie eine mechanische Rastung bei konventionellen Drehgebern /Encodern, ergeben sich bei langsamer Bewegung am Schritttmotor oder drehen von nur einem Schritt natürlich Probleme mit dem geringen Ausgangspegel. Das führt dazu, daß nicht immer auch ein korrekt auswertbares Signal an A und B ausgegeben wird. Aus diesem Grund muß für jeden neuen Schrittmotortyp eine Anpassung des Bremswiderstandes und der Hysterese vorgenommen werden.
Mit den Widerständen R3 und R4 kann der Bremswiderstand des Motors eingestellt werden. Das ist eine Sache des eigenen Gefühls.
Die Widerstände R9 und R10 legen die Hysterese (Ein- und Ausschaltspannung) fest, hier muß eventuell etwas experimentiert werden. Die zumeist benutzte LPT-Schnittstelle bzw. deren TTL-Eingänge schalten bei über 2 Volt ein und bei unter 0,8 Volt aus. Für einen vollkommen Störungsfreien Betrieb sollten die Schaltspannungen bei >= 2,4 Volt und <= 0,4Volt liegen. Dieser Spannungshub von 2 Volt muß hier für beide Kanäle eingestellt werden.
Der erste Inkrementalgeber wurde erstmal auf einer Lochplatine aufgebaut um mit den Widerständen zu experimentieren.
Daran wird nun (hier links) entsprechend der Schaltung der Schrittmotor an 1, 2 und 3 angeschlossen. Die andere Seite der Platine wird - so wie unter Punk 2.2. dargestellt - Plus an Plus, Minus an Minus und die beiden Anschlüsse A und B an die vordefinierten Pins vom PoKeys angeschlossen.
Testergebnisse:
Der kleine Schrittmotor aus dem 3,25er Laufwerk lieferte gute Ergebnisse mit:
R3 & R4 = 300 Ohm, R9 & R10 820 kOhm
Der Pollin-Motor brachte die besten Ergebnisse mit:
R3 & R4 = 680 Ohm, R9 & R10 330 kOhm
Fazit: Als billige Lösung sind die Schrittmotoren absolut geeignet. Sie sind sowohl als MPG (Handrad) als auch als Encoder einsetzbar. Ich habe diese Versuche ganz am Anfang der Arbeit mit dem PoKeys gemacht, aber ob ich die am Ende auch für die Portalfräse benutze, war zu diesem Zeitpunkt noch nicht entschieden.
Auf jeden Fall hat es Spaß gemacht, das ganze zu basteln und zu testen.
Ein TIP:
Bei Schrittmotoren mit diesen Leiterfolien (links), wenn kein passender Stecker zur Verfügung steht:
Die Leiterfolie NICHT entfernen. Drähte vorsichtig anlöten und die Leiterfolie abschneiden (rechts). Die Spulenanschlüsse aus dem inneren des Motors sind so fein, daß sie mit ziemlicher Sicherheit abreissen, wenn man die Leiterfolie entfernt.
Mein Bedienpult hat viele Funktionen mehr als in der obigen Beschreibung. Damit ist eine recht umfangreiche Bedienung der Fräse möglich.
Dieses vorn an der Steuerung angebrachte Gehäuse ist die Basis für das Handrad-Anzeige-Bedienpult. Es folgen einige Bilder vom Aufbau.
Die Einzelheiten des Aufbaus spare ich mir hier, das würde den Rahmen dieser Beschreibung sprengen.
Nach Einbau des Gerüstes für die Tastatur-Platine.
Links unten findet der PoKeys seinen Platz. Das eckige schwarze Teil ganz links im Gehäuse ist die Einbaukupplung für Kantentaster etc.
Die Tastatur-Platine ist eine Lochplatine. Darauf habe ich einfach das ausgedruckte Pult-Layout geklebt und dann Tasten, LEDs und Encoder aufgesetzt. Von unten können dann nach und nach alle erforderlichen Kabel angelötet werden.
Aus dem Pult heraus hängt noch der Anschlußstecker für Not-Stop, Spindel-Sicher-Schalter und Spannungs-LEDs. Die sind in der Abdeckung befestigt die rechts daneben liegt.
Zuletzt bekommen alle LEDs noch einen schwarzen Schlauch übergestülpt, damit sie sich nicht gegenseitig beleuchten.
Und nachdem die Abdeckung montiert wurde, ist das Pult komplett.
An die Steuerung SM33PCV7 bzw. RK3SN angeschlossen sind:
LED Not-Stop
LED SSS - Aus
LED Relais K1 bis K3 (Spindel + Kühlung 1 & 2)
LED Werkzeugsensor/Kantentaster
LEDs Achsen-Endschalter
LEDs Achse-Fahren (++ & --)
Die Taster Not-Stop, SSS-Aus, SSS-Ein
Am PoKeys angeschlossen sind:
Handrad Achse X & Y & Z
4 x Taster Jog-Modus (Single-Step etc.)
3 x Taster Schrittweite (1 & 0.1 & 0.01)
Taster Ursprung
Taster Achse-nullen
Encoder Vorschub
Encoder Spindeldrehzahl
Taster Vorschub 100%
Taster Spindeldrehzahl 100%
später nachgerüstet der Taster Endswitch override
die 6 Werkzeugwechsel-Taster und
alle zu diesen Tastern gehörenden LEDs.
Da ich auch noch eine Rotationsachse für die Portalfräse bauen will, gibt es auch Taster und LEDs für eine 4. Achse (R).
Hier das Layout des Bedienpultes, für Vollansicht auf das Bild klicken:
Zugegeben, manches scheint ein wenig übertrieben, aber ich mag das so. Mit diesem Pult habe ich volle Kontrolle über die Fräse.
Der Aufbau der kompletten Steuerungs-Anlage wird in CNC-Steuerung beschrieben.