<-- zurück
Wie bereits im Abschnitt 'Elektronik' beschrieben, basiert
die Steuerung auf einem ATmega 1284p, der mit 20 MHz getaktet wird. Der Prozessor besitzt 128k
Flash-Speicher und 16k RAM. Damit sollte es zunächst einmal nicht mehr notwendig sein, auf optimierten
Code zu achten.
Nicht alle Software-Komponenten habe ich selbst entwickelt. Die meisten basieren
auf mehr oder weniger modifizierten, im Netz erhältliche Bibliotheken.
Dies ist eine
Beschreibung des aktuellen Stands. Es sind noch einige ToDo's offen, weil noch nicht alle Komponenten
optimal aufeinander abgestimmt (z.B. die Bewegungs- und Motor-Steuerung) oder implementiert sind
(z.B. Berücksichtigung des Spindelspiels). Auch die elektrische Anbindung der Hardware-Komponenten
kann so nicht bleiben. Es werden zu viele Pins benötigt. Aktuell fehlen mindestens noch Anschlüsse
für Endschalter und für die Drehzahlkontrolle. Aber es funktioniert erst einmal. Ich scheue
die Mühe, nach jeder geschlossenen Baustelle die Dokumentation zu ergänzen. Deshalb gibts
es noch keinen öffentlich verfügbaren Code.
LCD:
Die Steuerung basiert auf der "HD44780U LCD library" von
Peter Fleury <pfleury@gmx.ch>.
Es wurde einige Display-Optionen gestrichen um den Code ein wenig übersichtlicher zu machen.
Einige Routinen wurden den Bedürfnissen angepasst (z.B.: kein Weiterschreiben in die nächste
Zeile, Umlaut-Konvertierung) oder ergänzt (z.B.: Zeilenlöschen). Zur Vereinfachung wurde
'printf()' implementiert (wie gesagt, Code-Größe spielt keine Rolle).
USART: Eine minimalistische USART-Schnittstelle zur Textausgabe
ebenfalls mit 'printf()'-Implementierung erlaubt es, auf komfortable Weise den Programmfluss zu protokollieren.
Dies erleichtert das Debuggen wesentlich.
SD-Card:
Die Zugriffe auf die SD-Card erfolgen über die Library von
Roland Riegel. Einige Routinen mussten überarbeitet
werden. Es gab u.a. eine Endlosschleife, die entfernt werden musste. Des weiteren wurden die Returncodes
ein wenig gesprächiger gestaltet.
G-Code: Der
G-Code-Paser basiert auf den Programmen von
Simen Svale Skogsrud, eine für den
Arduino geschriebener 'CNC milling controller'. Auch hier waren Anpassungen notwendig.
Motion: Die Bewegungssteuerung habe ich nur zu einem kleinen
Teil aus der o.g. Bibliothek übernehmen können. Hier waren große Anpassungen notwendig.
Insbesondere die Kreisfunktionen waren recht unbrauchbar.
Motor: Die Motorsteuerung ist eigentlich unproblematisch,
aber aktuell noch nicht wirklich brauchbar (s.o.).
UI:
Die Bedienung des Systems erfolgt ähnlich der des NXT. 'Links-Rechts' über den Encoder,
ansonsten Tasten für OK, ESC und AUX.
<--
zurück