Skip to main content

Es ist schon ein Weilchern her

das ich meine CNC Fräsmaschine gebaut habe. Ursprünglich war mein Ziel eine Machine zu bauen die von mit komplett selbst hergestellt ist, das bedeutet also alle mechanische Bauteile aus Standardwerkstoffen (in meinem Fall Stahl) selbst herstellen mit den mir zur Verfügung stehenden Maschinen. Dann sollten die Antriebe aus gewöhnlichen DC Motoren mit angekoppelter Positionsgebern erstellt werden wodurch ein selbst aufgebauter Servo entsteht. Schliesslich war mein Ziel die Steuerung der Servos, des Interpolators und des Positionsintegrators in einem kleinen! ATMega mit gerade einmal 4096 Byte Arbeitspeicher zu implementieren.

Das habe ich 2014 fertiggestellt und das Resultat ist auf der Seite "Meine CNC Fräsmaschine" zu sehen.

Corona machts möglich...

Die letzten fast zehn Jahre hat die Maschine dann im Keller verbracht und Patina angesetzt.

Schade eigentlich -- obwohl Patina bei Oldtimern selbst wertsteigernd wirken kann. 

Da Corona meine Betätigung außer Haus ziemlich einschränkte, dachte ich irgentwann darüber nach das alte Projekt wieder auszugraben und auf die Höhe der Zeit zu bringen. Zuerst überlegte ich mir eine neuere Architektur auf Microcontroller-Basis, aber ich erinnerte mich dann an die vielen Nebenbaustellen die sich mit dem Atmel Microcontroller während der Entwicklung auftaten.

  • Wo die Programme speichern?
  • Wie das Benutzerinterface anzeigen?
  • Wie den knappen Arbeitsspeicher aufteilen?
  • Wie die geringe Performance optimal nutzen?

Sicherlich spielen bei neueren Mikroprozessoren die letzten beiden Themen für eine CNC nicht mehr die Hauptrolle, Entwicklung auf einer Plattform ohne Betriebsystem macht den Prozess jedoch viel schwieriger.

Da ich bereits mehrere Projekte auf der Linuxplatform in einem Raspberry Pi umgesetzt hatte, war mir der kleine Zwerg schon ein bischen ans Herz gewachsen und ich begann die ersten Ideen gedanklich auf diesem System zu projektieren. Die vier obigen Herausforderungen bestehen auf dieser Plattform überhaupt nicht, es gibt aber eine neue.

  • Brauche ich ein echtzeit Unix oder reicht ein normales Raspian?

Um das heraus zu finden entschloss ich mich zu einem Versuch mit einer Achse. Sollte es möglich sein eine Achse vernünftig anzusteuern, dann kann ich entscheiden ob die weitere Umsetzung der Steuerung Sinn macht. Von Vorteil war für die Linuxvariante auch, daß aller bestehender Kode aus dem alten Projekt in C geschrieben war und weiterverwendet werden konnte.

Die alte Maschinenhardware sollte komplett weiterbenutzt werden, außer den beiden defekten Achsenkodern die ich ersetzen musste. Durch eine Unachtsamkeit meinerseits habe ich aus Versehen die drei Encoder gleichzeitig mit der 12V Spannungsversorgung verbunden, die beiden EnDat vertragen jedoch nur 5V und haben deshalb das Zeitliche gesegnet.
Der Austausch sorgt jetzt auch dafür daß alle Achsen einheitliche Encoder nutzen und nicht, wie in der alten Ausführung, zwei EnDat und ein SSI Enkoder.

 

Das Lesen der Encoderwerte

Der erste Schritt war jetzte somit klar definiert.
Einen funktionierenden Servo mit dem Raspberry bauen der per PID geregelt wird.

Um die Daten aus dem Heidenhain Geber ROQ 525 auszulesen habe ich die Hardwareempfehlung von Heidenhain berücksichtigt und mittels RS485 Treibern ein kleines Breadboard aufgebaut mit der empfohlenen Schaltung.
Die Heidenhaingeber konnte ich günstig über Ebay beziehen, lediglich die "fachmännisch" per Seitenschneidet abgeschnittenen Kabelenden mußte ich mit einem Kabel und Stecker wieder in Ordnung bringen.
Immerhin waren die Geber wegen der abgeschnittenen Kabel äußerst günstig.

Auf dem Breadboard werkeln hier zwei LTC1485, die die CL Schnittstelle zur Datenübertragung zum/vom Geber bilden. Um die Signalpegel des Raspberry mit 3,3V Signalen zu bedienen wurde ein entsprechender Pegelwandler verwendet.

Ursprünglich hatte ich auch die Leistungselektronik für die Ansteuerung der Motoren in Eigenregie entwickelt und mir eine Platine mit den entsprechenden Treibern aufgebaut.
Aber diesmal wollte ich lieber eine Baugruppe zukaufen die diesen Part übernimmt, auch um später bei defekten einzelne Module tauschen zu können.

Mir sind bei der Recherche im Internet dabei die Kontroller von Pololu aufgefallen die sehr schöne konfigurierbar sind und mittels verschiedenster Kanäle ansteuerbar sind. Die Variante 24v12 mit der ein DC Motor angesteuert werden kann wurde dann mein Favorit.

Für die ersten Tests habe ich eine Achseinheit der Maschine demontiert um die neuen Enkoder versuchsweise anzuflanschen.