CNC-Fraese
Einleitung
Wir haben eine kleine CNC-Fräse im Labor stehen und nun muss dafür eine neue Steuerung entwickelt werden, weil die alte ganz doll saugt.
Aktueller Stand
- 30.01.2012
- Die Kiste wurde ins Labor geschleppt und erstmal gereinigt
- Reverse engineering der Schrittmotor-Treiber
- Bau der Interface-Karte zum PC
- Anlegen der Wiki-Seite
- Erste Versuche mit EMC2
- Alle drei Achsen lassen sich steuern und Endschalter funktionieren
- Problem mit den Achsen im Endbereich, da sie etwas schwergängig sind.
- Erste Erfolge mit der Billig-Bohrmaschine ausm Baumarkt
- Der Schriftzug EMC wurde in einen Pizzakarton gefräst
- Es wurde versucht das Labor-Logo in eine Holzplatte zu fräsen. Dank eines Fehlers im G-Code hat die Holzplatte ein tiefes Loch mehr und der Fräser eine Spitze weniger. (Es ist zwar noch einer da, aber ich kümmer mich um Ersatz.--MadEngineer 11:49, 31. Jan. 2012 (CET))
- 02.02.2012
- Ich habe einen neuen Spindelantreib im austausch mitgebracht Tixiv - das ist ein ordentlicher Motor mit Isel Umrichter, max. Drehzahl 20.0000/min
- Inbetriebnahme des Umrichters mit der Software auf dem altenWidnows 95 Rechner - funktioniert schonmal (serielle Schnittstelle) allerdings lässt Sich das Teil nicht überreden, sich mit dem vorhandenen Poti statt mit der Software zu steuern.
- Noch ein paar Fräsversuche - die Schrittmotortreiber sind etwas tückisch - die Z Achse steigt aus, wenn der Treiber warm wird, und die Y-Achse hat wesentlich weniger Saft als die X-Achse
- Schrittmotorspannungen oszilloskopiert an X- und Y- Achse: Tatsache: Der Strom der Y-Achse ist deutlich kleiner als der der X-Achse, auch bei voll aufgedrehtem Strom-Poti
Baustellen
- Spindelantrieb fixen oder Ersatz organisieren (Die Bohrmaschiene dreht viel zu lahm und verträgt die hohen Seitenkräfte auf dauer nicht)
- Done: neuer Motor ist da
- Rauskrigen wie man mit EMC 2 den Umrichter per Serieller Schnittstelle steuern kann
- Spulenstrom einstellen
- Schrittmotorkarte fertig reversen
- Schrittmotorkarten reparieren/verbessern, oder neue aussuchen/designen
- Einstellungen der Software optimieren
- Mechanik überprüfen (An den Randbereichen ist der Widerstand höher und die Schrittmotor bleibt dort beim Homing mal stehen(besonder X-Achse))
Mechanik
Es handelt sich hier um eine kleine Portalfräse mit 3 Achsen. Die Achsen werden von Schrittmotoren über Kugelumlaufspindeln angetrieben.
Daten der Schrittmotoren: Zweiphasen-Schrittmotor 1,8° pro Schritt --> 80Schritte/mm Rw= 0,72Ohm Iw= 1,9A
Der Spindelantrieb ist ein Kress FM6990E und ist im Moment wegen eines bösen Lagerschaden nicht einsatzfähig.
Controller-Einschub
Das Herz der Steuerbaugruppe ist ein 8051 µC der seine Befehle vom Steuerrechner über die serielle Schnittstelle erhält und daraus dann die Ansteuersignale für die Schrittmotortreiber generiert. Über das Kommunikationsprotokoll gibt es keine Informationen. Es ist jedoch eine funktionierender Steuerrechner mit passender Software vorhanden, so dass reverse-engineering hier möglich wäre. Die Baugruppe wird über die Backplane mit ungeregelten 12V aus einer der Schrittmotortreiber Karte versorgt.
Umrichter
Der Umrichter für den Spindelmotor ist ein Isel FC1200-is. Für ein ähnliches Modell gibt es eine ausführliche Anleitung im Netz. Es gibt jedoch ein paar Unterschiede:
- RS232-Schnitstelle statt 20mA Current Loop
- Anderes Datenformat: 9600:8N1 statt 9600:7E1
- Keine Jumper und DIP-Switches im Inneren
- Adresse ist 30(dezimal) statt 32-63
An den Steckern ist noch wildes Gebastel von Freitag Elektronik angeschlossen. Der umrichter braucht anscheinend eine extern Einspeisung von 24V (siehe Anleitung) die hier von einem 12V?!?-Netzgerät erledigt wird. Das muss man einstecken, damit irgendwas geht. Poti und Richtungsumschalter zur Manuellen Steuerung sind richtig angeschlossen(haben wir nach denr Anleitung gecheckt), allerdings haben die keine Funktion: Der Umrichter lässt sich nur über die serielle Schnittstelle steuern. Laut Anleitung lässt sich der Steuermodus per serieller Schnittstelle auch auf analog umschalten, was uns allerdings bisher nicht gelungen ist. Aufgrund der aktuellen Erfolge mit der Integration in die Steuerung, wird die externe Beschaltung bald zurückgebaut.
Auf dem Windows 95 PC befinden sich 2 Programme, um den Umrichter zu steuern: "Spindle Windemo" (link auf desktop), und ein dos-programm namens isd.exe unter C:/isd . Über "isd /?" bekommt man hilfe. Über "isd -smod:ZAHL" Lässt sich der Steuermodus umschalten. Allerdings wird das nicht beim Ausschalten gespeichert, und das poti hat bisher noch nichts sinvolles getan. Workaround bisher um den Motor ein/aus zu schalten: Drehzal in isd.ini setzen. Motor mit Kommando "isd -on" einschalten und über "isd -off" ausschalten. Wenn man vorher "doskey" aufruft kann man die Kommandos wechelweise ausfüren, indem man 2 mal pfeil rauf und enter drückt. Der Bildschirm kann dann an den EMC-Rechner....
Durch Studium der falschen Dokumentation und Mitsniffen der Kommunikation wurden die ersten Erkenntnisse gewonnen:
Das Telegramm baut sich so auf:
0x04 0x30 0x02 [Befehl in Acii] 0x03 [XOR des Befehls incl. dem EOT 0x03]
Zum Initialisieren:
003=0
010=0 //Drehzahl 0
Starten:
007=1
Drehzahl einstellen:
010=n [u/min]
Stoppen:
008=0
Diese Erkenntnisse wurden in ein erstes Visual Basic.nez Programm gegossen mit dem man Parameter auslesen und setzen konnte, den Motor starten und stoppen, wie die Drehtzahl vorgeben kann.
Im Laufe des Bastelabends entstand dann ein Python-Script, welches in dem HAL der Steuerung läuft. Dort stellt es eine Komponente zur Steuerung der Spindel bereit. Die Daten des motion-controllers werden an diese Komponente weitergereicht, das sind im Moment Betriebszustand (an/aus) und Soll-Drehzahl. Die Komponente meldet zurück, wenn diese Drehzahl erreicht ist (Im Moment nur ein Timeout von 4s). So wird die Spindel völlig transparent angesteuert und kann entweder über die Bedienoberfläche von EMC2 oder direkt aus dem G-Code gesteuert werden.
Schrittmotortreiber- Einschub
Die Schrittmotortreiber wird mit 230VAC über die Backplane versorgt. Auf der Karte befindet sich Ringkerntrafo (30,5V 2,5A & 9V 1A) und ein 7805 zur Spannungsversorgung. Die Schrittmotorsteuerung erfolgt mit dem typischem Chipsatz bestehend aus L297 (Datenblatt) und L298 (Datenblatt).
Schaltplan
Reverse engineerter Schaltplan:
Ich Tixiv habe mal den Schaltplan reversed. Die Überstromsicherung (Q1, Q2, Q3 im Schatplan) sieht mir sehr Zweifelhaft aus. Hier mal eine kurze Erklärung, wie ich die Schaltung verstehe: Normalerweise Leitet Q1 durch Den Basistrom durch R3. Über R2 Fällt eine Spannung proportional zum Motorstrom durch alle Wicklungen ab (man beachte, dass die Rücklaufdioden am Motorausgang vor die Strombegrenzung nach V+ gehen!). Wird dieser Strom zu hoch, so leitet Q2, welcher den Strom durch Q1 begrenzt. Wenn dadurch über Q1 mer als 18V abfallen, so leitet auch Q3, nachdem sich C2 auf 0.7V aufladen konnte. Man beachte, dass dieser falschherum gepolt ist! Das Schaltet dann Q1 für immer aus, da diese Stufe mitkoppelnd arbeitet. C2 dient dazu, dass im Einschaltaugenblick diese Schaltung nochnicht anspricht, und sich am Ausgang erstmal eine Spannung aufbauen kann.
Das Problem mit dieser Schaltung sehe ich darin, das unter gewissen Betreibsumständen die Spannung am Versorgungsanschluss des L298 wesentlich niedriger sein kann als V+. Wenn nun noch welche von den Motorwicklungen gechopped werden, dann werden die Spannungsspitzen nach V+ gekappt. Der IC dürfte aber nur max. 5V über V+ vertragen, da sonst die Basis Emitter Dioden der oberen Transistoren rückwärts gespannt werden. Dadurch dürfte der Sterben, falls die Schaltung jemals arbeitet.
Ich habe an dem Testexemplar hier die Schaltung ein paar mal durch brücken von B-E am BD442 die Schaltung ausgelöst, und beim zweiten mal war der BD442 hin!! Irgendwas ist seehr merkwürdig an der Schaltung...
Die Strombegrenzung scheint außerdem auf 2A dimensioniert zu sein, was ja eigentlich keinen Sinn macht, wenn die Ausgangsmotorströme je 2A betragen dürfen. Sie wird also wahrscheinlich bei hoch eingestelltem Strom schon im Normalbetrieb immer mal ansprechen.
Am L298 slebst ist auch kein ordentlicher Abblock-Elko in der Nähe angebracht. Es sind hässliche Spannungsspitzen zwischen VCC und GND messbar. Der kleine 22µF Pisser, der da ist, hat allerhöchstens homeopathische Wirkung.
Verbesserung
Ich habe hier an einer Platine mal den BD442 rausgeschmissen, und einfach überbrückt. Außerdem habe ich die Rücklaufdioden direkt an den VCC des L298 angeschlossen, und diesem noch einen 220µF/63V Elko direkt am IC spendiert. Ergebnis: Die Karte läuft gefühlt um einiges kälter, und die Spannungen sehen viel sauberer aus.
Ich würde vorschlagen, diese Modifikation bei allen Karten durchzuführen, und in die Frtontblende einfach eine Sicherung für die 30.5V Trafospannung oder die Netzspannung einzubauen, damit im Kurzschlussfall nichts abbrennt.
Jumper
Position JP1 ist oben unter der grünen LED
Jumper | Gruppe | Funktion |
---|---|---|
1 | Schrittmodus | Halbschritt |
2 | Vollschritt | |
3 | Externe Auswahl über Pin 10 der Backplane | |
4 | Strom Absenkung | Strom Absenkung aus (Jumper kann auch weggelassen werden) |
5 | Strom Absenkung über Pullup / Pin5 der Backplane | |
6 | D-Sub Pin 8(Endschalter NO) | Über Diode an 5V. AUF KEINEN FALL SETZTEN, da die aktuellen Endschalter dann 5V Versorgung kurzschließen würden. |
7 | also Eingang (an NAND Pin 4B, NO=GND setzt flipflop) | |
8 | Pin 9 Backplane(Endschalter out) | an Flipflop: NC Kontakt löscht flipflop, NO Kontakt setzt flipflop |
9 | direkt an NC Kontakt von schalter. High=betätigt oder Kabel ab, Low=nicht betätigt |
Pin-Belegung zur Backplane
Draufsicht, Pin 1 liegt links unten
Pin | Signal | Bemerkung |
---|---|---|
1 | Masse | |
2 | Versorungsspannung Ausgang | Wählbar über Jumper neben 9V Gleichrichter, umshaltbar zwischen 5V und 12V |
3 | L297 Enable | über Lötbrücke (normalerweise offen) |
4 | DSUB Pin 7 | geht auch auf Erweiterungsstiftleiste |
5 | Strom Absenkung | High senkt den Motorstrom auf einen geringen Wert wenn Jumper 5 gesetzt. Hat Pullup. |
6 | Eingang Schritttakt 1 | |
7 | Richtung | |
8 | Eingang Schritttakt 2 | Zusammen mit Pin 6 über ein NAND an Takteingang des L297 |
9 | Endschalterausgang | Modus über Jumper wählbar (JP8 oder JP9) |
10 | Voll- oder Halbschritt-Modus | Nur nutzbar wenn Jumper auf JP3 und nicht JP1(Halbschritt)&JP2(Vollschritt)! |
11 | D-SUB Pin 6 | geht auch auf Erweiterungsstiftleiste |
12 | Synchronisation | Sync-Pin des L297 |
13 | kein Pin | |
14 | 230V Netz | Zusammen mit Pin darüber |
15 | 230V Netz | Zusammen mit Pin darüber |
16 | Schutzleiter | Verbunden mit Kühlkörper und Gehäuse |
Pin-Belegung Ausgang
Pin | Signal | Bemerkung |
---|---|---|
1 | Motor A | |
2 | Motor B | |
3 | Motor C | |
4 | Motor D | |
5 | Endschalter COM / GND | liegt intern an GND |
6 | Backplane/Erweiterungsstiftleiste | not connected am Motor |
7 | Backplane/Erweiterungsstiftleiste | not connected am Motor |
8 | Endschalter NO | interner Pullup 100k auf +5V, Wahlweise Flipflop Eingang (Jumper 7(Standart))oder über Diode an 5V (Jumper 8). Auf keinen Fall Jumper 8 setzen, dann schließt Endschalter Versorgung kurz. |
9 | Endschalter NC | interner Pullup 100k auf +5V |
Modifikationen
PC-Interface Karte
Die Schrittmotortreiber benötigen zur Ansteuerung nur ein Takt- und Richtungssignal. Das wir bei dem Lasercutter-Projekt gute Erfahrungen mit der freien CNC-Software EMC2 gemacht haben, soll diese nun auch hier ihre Arbeit verrichten. Also wurde auf die schnelle eine Einsteckkarte zusammengeschustert, die Signale des Parallelport des Steuerrechners auf die Backplane umsetzt.
Parallel-Interface Belegung
Pin | Signal | Bemerkung |
---|---|---|
1 | Not-Aus | Im Momente nicht benutzt |
2 | X- Direction | |
3 | X-Step | |
4 | Y-Dir | |
5 | Y-Step | |
6 | Z-Dir | |
7 | Z-Step | |
8 | ||
9 | ||
10 | ||
11 | ||
12 | Home & Endschalter X | Active Low |
13 | Home & Endschalter Y | Active Low |
14 | Spindle CW | Im Moment nicht benutzt |
15 | Home & Endschalter Z | Active Low |
16 | Spindle PWM | Im Moment nicht benutzt |
17 | Amplifier Enable | Im Moment nicht benutzt |
18 | GND | |
19 | ||
20 | ||
21 | ||
22 | ||
23 | ||
24 | ||
25 |