high,
ich hab mir vor 2 Jahren eine kleine Fräse gebaut, die ich "headless" , d.h. ohne PC direkt, mit SD-Karte betreiben wollte.
Auf der SD ist eine am PC mit Eagle 6.x (mittlerweile 7.2) / ULP erzeugte G-Code - Datei. Die G-Code Daten werden vom "G-Code-Sender"-Board (auf einem Arduino UNO) über die Rx/Tx -Leitung (serielle Schnittstelle) an das "G-Code-Empfänger-Board" , ebenfalls ein Arduino UNO, geschickt. Auf dme Empfängerboard befindet sich die eigentliche Ansteuerungssoftware (grnl 0.6...), die die drei Steppermotoren/H-Bridges ansteuert.
Ich hab damit damals einige Platinen gefräst ( Eagle /und eine ULP, die den Gcode aus den Eagle Dateien erzeugt), war aber nicht zufrieden.
Mitllerweile hab ich die Fräse mechanisch verbessert, die Ansteuerungssoftware auf grbl V09.j upgedatet.
Ausserdem hab ich den "G-Code-Sender" erweitert:
Er hat jetzt zwei Funktionen:
- Mode 0: abarbeiten SD-Karte
- Mode 1: Jogging:
Der ursprüglichen Mode 0 wurde erweitert, die Anzeige der Nachrichten von grbl ("messages") erfolgt jetzt auf einem Grafik-Farb-Display,
es können bis zu 15 angezeigt werden, danach scrollt der BS und die älteste Nachricht geht verloren. Wenig informative Nachrichten ("ok") werden unterdrückt (werd ich aber mal mitzählen), der Text "error: " ebenso( diese Nachricht wird rot dargestellt).
Im Mode 1 kann ich G-Code über zwei 4x4 Keyboards eingeben oder Einstellungen ("grbl-settings") anzeigen (FEED-Rate, steps_per_mm, max_rate,...) ändern.
Es wird bei der G-Code Eingabe auf dem Keypads einiges formal geprüft, den Rest übernimmt (hoffentlich) grbl.
Das Programm ist noch in Arbeit, ich kämpfe mit dem Speicher (von den 32kB benutze ich fast 30kB), hab aber Dank Auslagerung der ca 90 Fehlermeldungen
(z.B. Zahl sollte maximal einen Dezimalpunkt haben) in ein externes EEProm und Auslagerung der messages von grbl in ein externes RAM (SPI-RAM)immer noch Platz gefunden.
Die HW des G-Code-Senders hab ich in 2 Gehäusen untergebracht:
Die Anzeige (SPI-TFT ILI9341 240x300 2.4") incl. SD-Card, Arduino Nano und SPI-RAM in einem kleinen Kästchen (ca 8x6x5cm) an einem Schwanenhals, den Rest (EEPROM, 2 x 4x4 Keyboard) über I2C Bus in der Nähe des grbl-Board/H-Bridges. Ich komm mit einem 8/9 poligen Kabel im Schwanenhals aus:
Spannungsversorgung : 0V, 5,6V, (3,3V kann ich auch aus den 5,6V erzeugen),
mProzessor-Reset,
I2C: SDA,SCL
Serielle: Rx,Tx.
Interrupt ( von D13 nach D2) , noch nicht intergriert
Den Nano betreibe ich mit 3.6V, da schaffe ich noch locker 16MHz, kann mir aber die Levelshifter sparen. Der Umbau ist bei der Nano-VClone-Version mit CH340 ist recht einfach, blöd ist nur, dass es keine Pin-kompatiblen 3.6V Regler gibt, sodass ich einen AM1117 adj mit zwei Widerständen nehmen musste.
Grosse Probleme hatte ich mit der Darstellung der messages "error" von grbl, die über Rx/Tx geliefert werden:
Es wurden - da der Arduino-Nano im Vergleich zum PC/Pentium I5 wohl etwas langsam ist - einige verschluckt, auch konnten die "Settings:" (ca. 25 Zeilen auf einmal) nur zu einem kleinen Teil ausgegeben werden.
Ich hab lange "geübt", geholfen hat nur eine Erhöhung des Serial-Rx-Buffers (Arduino-IDE: /.hardware/arduino/avr/cores/arduino/HardwareSerial.h)
von 64 auf 224 byte: #define SERIAL_RX_BUFFER_SIZE 224
und eine Splittung der Message in grbl v0.9j in 2 Teile. Auch habe ich dort die reinen "festen" Texte dort eliminiert, die kann ich zur Not aus dem extrenen EEPRom holen. Aber jetzt klappt die Anzeige gut, auch bei 115200 Baud, gerade wenn ich die Einstellungen (Vorschub, inch/mm etc.) über das Keypad ändere, hab ich dann eine Kontrolle, was wirklich im grbl-EEProm abgelegt ist.
https://www.youtube.com/watch?v=ODvCfD5I694
https://www.youtube.com/watch?v=w21rDR9v4T8
https://www.youtube.com/watch?v=w-IEwHAgBiM
https://www.youtube.com/watch?v=5eaE3VN7RyE
https://www.youtube.com/watch?v=K_Lu_iBz-cE
Gruss mausi_mick
Lesezeichen