Thorsten online

Mikro-Controller als NC-Steuerung:

Einleitung Spezifikation Hardware Programmer (alt)

Atmel 89C52

Mein bisher ehrgeizigstes (und wohl auch umfangreichstes) Projekt:
Steuern des Fräs-Bohr-Plotters mittels Mikro-Controller

Die meißten erhältlichen Steuerprogramme für kleine CNC-Maschinen laufen auf dem PC. Da die Steuerung der Schrittmotoren eigentlich ein Echtzeitbetriebssystem erfordern würde, laufen sie in der Regel nur unter DOS, weil das kein Multitasking-OS ist und so relativ einfach ausreichend gute Ergebnisse erzielt werden können. Das reine Dos-Programme, die nichteinmal in der DOS-Box laufen, nicht mehr state-of-the-art sind, braucht wohl nicht extra erwähnt werden.

Ein möglicher Ansatz währe nun die Verwendung eines Realzeit-Betriebssystems (z.B. RT-Linux, Lynx, Qnx,...) was aber die meisten semiprofessionellen und Hobbynutzer abschrecken würde. Daher versuchen inzwischen einige Firmen, ihre DOS-Software auf Windows 9x umzustellen, in dem sie betriebssystemnahe Treiber entwickeln. Dies ist natürlich ein relativ umständlicher Weg, auf dem sich vermutlich auch nur bedingt gute Ergebnisse erzielen lassen.

Meine bisherige Idee, statt dessen die komplette Funktionalität einer PC Steuersoftware in einem Mikrocontroller zu implementieren, scheiterte bisher schnell an der viel zu hohen Komplexität und den beschränkten Möglichkeiten bei der Mensch-Maschine-Schnittstellle (Display etc.). Peter Waltenberg hat mir die Sourcen für eine etwas vereinfachte, 8051-basierte Lösung (unter GPL) zur Verfügung gestellt, die ich hier zum Download anbieten kann. Damit ist es möglich, einen Fräs-Bohr-Plotter wie einen normalen Plotter mittels Windows-Treiber, Corel-Export u.ä. anzusprechen. Allerdings läßt der Komfort dieser Lösung naturgemäß etwas zu wüschen übrig, aber es ist umsonst und funktioniert! Dazu gibt es einen Simulator, der auf dem PC lauffähig ist. Die Sourcen sollten sowohl für DOS als auch für Linux brauchbar sein.

Eine andere, praktikable, Möglichkeit besteht darin, nur den Echtzeit-Teil von einem Mikrocontroller berechnen zu lassen, und die grafische Aufbereitung, Bearbeitung, etc. der Daten auf dem PC zu erledigen. Für die Erzeugung der Motor-Takte und die Interpolation der Bahnen ist prinzipiell auch ein billiger 8-bit Mikrocontroller leistungsfähig genug. Da ich mich immer um die Programmierung eines komplexeren Windows-Projektes herumzudrücken versucht habe, bedurfte es erst einer Beteiligung von Holger Hassel.

Gemeinsam wollen wir nun versuchen, ein funktionierendes System zu erstellen. Holger kümmert sich um das Windows-Programm zur Aufbereitung der Daten, während ich die Hard- und Software für das Mikrocontroller-Board übernommen habe. Die Kommunikation zwischen PC und MC soll dabei über eine serielle Schnittstelle mit einem möglichst einfachen Protokoll erfolgen. Da CNC-Maschinen sowieso meist langsamer als Drucker arbeiten, stellt die Datenrate der seriellen Verbindung wohl keinen Flaschenhals dar. Die Koordinaten werden schon auf dem PC in Motorschritte umgerechnet, um dem MC möglichst viel Rechenarbeit abzunehmen.

  Einleitung Spezifikation Hardware Programmer (alt)
Blockschaltbild zur NC-Steuerung

Die Steuerungshardware für die Maschinensteuerung wird sich langfristig auf ein Master-Slave Prozessorsystem verteilen. Am 'Slave' wird ein Encoder (als Jogdial bzw. Drehrad) und optional eine kleine Tastaturmatrix und ein Grafikdisplay für die Anzeige wichtiger Daten angeschlossen. Es können so die aktuellen Koordinaten angezeigt werden, Handfahrten ausgeführt werden usw. Da die Verbindung zwischen beiden MCs auch seriell erfolgt, hat man quasi ein tragbares Bedienteil, mit dem man um die Maschine herum gehen kann.

Der 'Master' stellt dann die eigentliche Verbindung zwischen PC und der Maschine dar, wobei das Interface zur Leistungselektronik kompatibel zu gängigen Schrittmotorkarten sein soll. Die erste Entwicklungsstufe enthält nur den 'Master'-MC, an dem neben den Schrittmotoren auch die Referenz- und Endschalter, sowie ein kleines SRAM als Datenpuffer und ein Textdisplay zur Koordinaten- und Fehleranzeige angeschlossen werden können.

Das 'Nebenprojekt' 8051-Programmer hat den Start der Arbeiten am Steuerungs-Controller erheblich verzögert. Obwohl der Programmer inzwischen funktioniert, habe ich mich von Joachim Girke überzeugen lassen, das die Controller der AVR-Serie von Atmel für dieses Projekt die bessere Wahl sind. Ohne ihn wäre das Projekt wahrscheinlich schon vor geraumer Zeit in der Versenkung verschwunden...
Auf der Homepage von Claudio Lanconelli fand sich dann ein Schaltplan für einen AVR-Programmieradapter, der mit einer 6-Draht Verbindung zur InSystemProgrammierung auskommt. Mein fertiges Eagle-Layout gibt es hier.

  Einleitung Spezifikation Hardware Programmer (alt)

Prototyp der NC-Steuerung

Inzwischen ist ein erster Prototyp fertiggestellt. Bis auf ein paar Kleinigkeiten, die inzwischen in den Schaltplan bzw. das Platinenlayout eingeflossen sind, hat alles auf Anhieb funktioniert. Alle Bauteile finden auf einer halben Eurokarte Platz, ohne das SMD Bauteile verwendet werden mußten. Ich überlege allerdings, ob es nicht sinnvoller währe, doch ein paar SMDs zu verwenden, um die Platine noch etwas kleiner zu bekommen...

Um bei diesem relativ umfangreichen Projekt nicht zu schnell den Durchblick zu verlieren habe ich mich nach einem preiswerten C-Compiler für die AVR-Familie umgesehen. Dabei bin ich auf WinAVR gestoßen, eine Portierung des bekannten GNU C-Compilers, der sogar kostenlos erhätlich ist.

Nachdem ich die Hardwaretests abgeschlossen habe, konnte ich mit der Programmierung beginnen. Die Routinen für die Display-Ansteuerung sind bereits fertig. Aktuell (d.h., wenn ich mal Zeit habe ;-) bin ich mit der Programmierung des Protokolls zwischen PC und MC beschäftigt. Bis der Controller die ersten Maschinenbewegungen erzeugt dürfte es also immernoch ein Weilchen dauern...

Home