Nichts ist interessanter, als eine richtig 'dicke' Maschine mit einem selbstgeschriebenen Programm an eigener Elektronik zu betreiben. Auf dieser Seite werden erste Ansatzpunkte zur Ansteuerung eines Bohr- oder Fräsautomaten mittels 89C2051ern vorgestellt. | |
Welcher Bastler wollte nicht schon immer mal einen Fräsroboter im Keller haben und damit Platinen herstellen oder dreidimensionale Objekte auf den Bruchteil eines Millimeters genau fräsen! Aufgrund der üblichen Beschränkungen des Budgets ist es für Hobbyisten allerdings praktisch unmöglich, dazu auf fertige, teure Industrielösungen zurückzugreifen. Also ist an der einen oder anderen Stelle Selbstbau angesagt - was zugegebenermaßen auch noch mehr Spaß macht als eine Fertiglösung :-) | Da ich meine Fertigkeiten im Bezug auf Feinmechanik realistisch eingeschätzt habe, habe ich das Gerät fertig bei Isel erworben. Steuerelektronik und Steuerprogramme allerdings habe ich mir durchaus zugetraut und - mit Erfolg - selbst erstellt. Eine kleine Beschreibung dieser Steuerung folgt auf dieser Seite und kann damit sowohl für Betreiber von Fräsanlagen als auch für Anhänger von Roboter- oder Schrittmotorprojekten Hinweise liefern. |
Wie schon eingangs erwähnt wurde die Mechanik vollständig montiert von Isel bezogen und macht einen sehr professionellen und ausgereiften Eindruck. Drei Achsen mit spielfreiem Kugelgewindetrieb erlauben Verfahrwege von 350x290x75mm. Laut Speditionspapieren beträgt das Gewicht ca. 100kg. Angetrieben wird die Anlage von drei identischen bipolaren Schrittmotoren mit 200 Schritten pro Umdrehung, 3.8 A Phasenstrom und 110 Ncm Leistung. |
Eine in der Z-Achse angebrachte Gasdruckfeder gleicht das Gewicht des
angebrachten Werkzeugs aus.
Als Werkzeug dient der Fräsmotor von Proxxon mit der Bezeichnung
|
Hier findet sich ein und noch ein großes Bild von der Anlage. Ich bitte die Unordnung zu entschuldigen ;-) |
Die Steuerung sollte zwei Prämissen folgen: zum einen sollte kein PC benötigt werden, um Objekte zu fräsen oder Platinen zu bohren. Da PC und Monitor in staubdichtem Industriegehäuse praktisch unerschwinglich sind und in normaler Ausführung neben einer Anlage, die Alu-Späne überall herumschleudert, nichts zu suchen haben, sollte die Steuerung vollständig über Microcontroller durchgeführt werden. Zur Datenübertragung vom PC mit CAD-Programm auf die Anlage soll ein großes EEPROM eingesetzt werden. | Die zweite Vorgabe bestand darin, dass die Anlage über eine kleine Handsteuerung am Kabel bedient werden kann, um beispielsweise ohne erst ein Programm erstellen zu müssen Flächen planfräsen zu können. Am besten ließen sich diese Vorgaben realisieren, indem ein AT89C2051 die Intelligenz der Anlage darstellt und fest in die Steuerung eingebunden ist, und ein zweiter auf einem Handregler über eine serielle Verbindung über Kabel dem Controller in der Steuerung mitteilt, wohin dieser die Schrittmotoren führen soll. |
Die Handbedienung zur Steuerung der Anlage besteht aus einem LCD-Display
mit 16 Zeichen, 6 darunter angebrachten Tastern, einem Winkelencoder und
einem EEPROM mit 32kBytes.
Das EEPROM nimmt die von einem Programm am PC erzeugten Fräsdaten oder Bohrkoordinaten auf und gibt sie über die Handbedienung an die Anlagensteuerung weiter. Einsatz findet ein serielles AT24C256, welches über I2C angesteuert wird und daher nur wenig Platz auf der Platine belegt. Tasten und LCD-Display dienen zur Menüführung und Anlagensteuerung. Dabei sind folgende Aktionen implementiert: ein manueller Vorschub mithilfe des Winkelencoders, das Laden von Daten vom PC und ablegen im EEPROM, das 'Abspielen' dieser Daten auf der Anlage sowie Start/Stop/Neustart dieses Abspielens. |
Der eingesetzte Winkelencoder (ACE-128 von Bourns) sieht aus wie ein Potentiometer mit 10 statt nur 3 Anschlüssen und wird auch so bedient. Dabei gibt es keinen Endanschlag, sodass bei der Bedienung keine Notwendigkeit darin besteht, beim Wechsel des Menüpunktes den Encoder auf eine Mittelstellung zurückzusetzen - die Mittelstellung ist da, wo das Programm sie definiert. Ausgegeben wird eine Absolutposition mit einer Auflösung von 128 Stellen auf 360 Grad. Daher ist es nicht notwendig, wie bei Drehimpulsgebern bestimmte Mindestabfragezyklen einzuhalten, um zu verhindern, dass Bewegungen unbemerkt bleiben. Der Winkelencoder wird zur Steuerung des manuellen Vorschubs benutzt, ähnlich dem Vorschub einer Drehbank. Um den Pinverbrauch zu minimieren wird der 8 Bit-Graycode, den der Encoder ausgibt, mit einem 74LS299 Parallel-Seriell Wandler aufgenommen und in den Microcontroller eingelesen. |
Der Leistungsteil der Anlage steuert die 3 Schrittmotore und besitzt
dank eines weiteren AT89C2051 genug Intelligenz, um aus dem Vektor
Strecke X, Strecke Y, Strecke Z sowie der Maximalgeschwindigkeit selbständig
die notwendigen Pulsfolgen für die Schrittmotore zu errechnen.
Einen Algorithmus zum korrekten Abbilden einer mathematischen Strecke auf ein Raster entwickelte ein Herr Bresenham mit dem Ziel, einen möglichst ressourcenschondendes Verfahren zum Zeichnen von Linien auf dem Bildschirm zu schaffen. Dieser Bresenham-Algorithmus lässt sich unkompliziert in einem Microcontroller umsetzen und um eine dritte Dimension erweitern. Als Leistungstreiber dienen je ein L298 pro Schrittmotor-Phase, also bei 3 bipolaren Schrittmotoren insgesamt 6 Stück. Dabei sind in jedem L298 beide enthaltenen Brückentreiber zusammengeschaltet, um einen Strom bis 4A zu ermöglichen. |
Jeder Schrittmotor wird dabei von einem L297 Schrittmotor-Controller gesteuert.
Dieser entlastet den Microcontroller, indem er eine aktive Stromregelung
übernimmt sowie aus Richtungs- und Pulssignal die vom
Schrittmotor benötigten Pulssequenzen berechnet. Mit dieser
Konfiguration ist sowohl Voll- als auch Halbschrittbetrieb möglich.
Eingebaut ist der Leistungsteil in ein 19"-Rack von 3 Höheneinheiten. Dieses ist zwar lange nicht voll, aber dank der großzügigen Dimensionen konnte ich vergleichsweise riesige Kühlkörper einsetzen und komme so mit passiver Kühlung aus. Wie man am abgebildeten Photo leicht erkennt, ist die Hardware derzeit noch im Beta-Stadium. Sie funktioniert aber zuverlässig, sogar Geschwindigkeiten bis über 100 mm/Sekunde bei einer (rechnerischen) Genauigkeit von 0.0125mm sind gut machbar. |
Fertig ist diese Seite noch lange nicht, ebensowenig wie meine Steuerung. Aufgrund des großen Interesses habe ich sie dennoch schon online gestellt. Wenn ich dazu Zeit finde und meine Entwicklung in einer stabilen Phase ist, werden sich an diese Seite weitere anschließen, mit Beschreibungen zur Ansteuerung von Schrittmotoren, Winkelencodern und I2C-EEPROMs sowie einer genauen Erläuterung des Algorithmus zum Bewegen der Schrittmotore im dreidimensionalen Raum. Bei Interesse gebe ich bis dahin gern meinen jeweils aktuellen Entwicklungsstand per Mail heraus - meine EMail-Adresse befindet sich am Ende dieser Seite. Mein aktueller Entwicklungsstand: Derzeit sind die uC-Programme für die beiden 2051 dicht vor einem produktiven Einsatz. Es sind nur noch Kleinigkeiten zu ergänzen. Die Hardware ist noch nicht völlig zufriedenstellend. Es fehlt noch ein einstellbarer Ruhestrom, den ich aus Zeitmangel nicht von Anfang an implementiert habe. Vordringliches Problem ist erst einmal eine PC-Software, die aus CAD-Daten (z.B. DXF-Formaten) Fräsdaten extrahiert. |