FluidNC - sterownik CNC oparty na GRBL i ESP32. Co to jest, nie będę się rozpisywał, bo już było więc można sobie poczytać:
fluidnc-t116108.html
https://github.com/bdring/FluidNC
Ja natomiast chciałbym opisać jak uruchomić to na płytce ESPDUINO i CNCShield V3.
Dlaczego na tym dziadostwie? Powodów może być kilka. ESPDUINO jest zgodne z arduino UNO a na tym zapewne pracuje wiele sprzętów. Ja również mam 2 maszyny na arduino UNO, teraz buduję trzecią więc dla mnie wygodniej rozpracować ten układ, bo potem łatwo będę mógł zrobić upgrade na pozostałych maszynach. To pierwszy powód. Drugi jest taki, że płytkę CNC Shield mam a ESPDUINO jest dostępne niedrogo na polskim portalu aukcyjnym, przychodzi na 2 dzień z fakturką a nie trzeba czekać na dostawę od Chińczyka. A 3 powód jest taki, że układ ten zbudowany w kanapkę jest po prostu mały i zgrabny i mi odpowiada. Nie będę usprawiedliwiał wyboru, bo z pewnością są lepsze wybory, dlatego "wszystkowiedzących" proszę o podarowanie sobie tematu, że ten wybór sprzętowy jest bez sensu.
Po co ten opis?
1. Może komuś się przyda, bo mimo, że są opisy to wcale wszystko nie było takie oczywiste i od razu mi się nie udało.
2. Bo za miesiąc zapomnę jak to robiłem i jak będę chciał następną maszynę, to będę rozgryzał od nowa. A tak to odgrzebię na forum.
Noto od początku.
Płytka kosztowała mnie 37 zł. zważywszy na to, że przyszła na drugi dzień i jest to cena z podatkiem VAT, uważam, że całkiem tanio. Co dalej? Kompilować? Raczej nie. Są dostępne skompilowane wersje dla bluetooth i wifi, ale tu też trzeba odpowiednie archiwum pobrać, bo w jednym brakuje plików. Pobrać należy stąd:
https://github.com/bdring/FluidNC/releases/tag/v3.4.5
jedno z archiwów, albo posx dla linuxa albo win64 dla windowsa. Ja wszystko robiłem na linuksie, dlatego opis będzie dla linuxa. Czy zadziała na windowsie? Pewnie tak, trzeba spróbować.
Po rozpakowaniu archiwum, trzeba wejść do katalogu. Znajdują się tam skrypty instalacyjne, ja wybrałem instalację wersji na bluetooth więc jest to skrypt install-bt.sh Trzeba go uruchomić w terminalu. Ale pewnie od razu nie zadziała, bo trzeba będzie doinstalować pythona, esptool i pewnie coś jeszcze czego na chwilę obecną nie pamiętam. Tu też były problemy, bo wersji esptool jest kilka i nie każda obsłuży ten skrypt. O ile dobrze pamiętam, ja instalowałem tak:
https://docs.espressif.com/projects/esp ... ation.html
Ale najpierw trzeba zainstalować python i Fluidterm, jest to opisane tutaj:
https://github.com/bdring/fluidterm/blob/main/README.md
Fluidterm służy później do wgrywania konfiguracji.
Po zainstalowaniu potrzebnych bibliotek, skrypt instalacyjny powinien wgrać soft do ESP32 a następnie uruchomić terminal (fluidterm) i zgłosi się grbl
Następnie należy przygotować i wgrać konfigurację (wszystkie ustawienia wprowadza się za pomocą pliku lub można wpisywać je komendami). Ja tym razem mam prostą maszynę, ma 4 silniki (2 na oś Y) i nic więcej, żadnego PWM, wrzeciona, chłodziwa itd. Ale przygotowałem konfigurację na wypadek, gdybym kiedyś to potrzebował i to wszystko jest tam wpisane. Moja konfiguracja:
Kod: Zaznacz cały
name: "my_ploter"
board: "ESP32 Dev Controller V4"
stepping:
engine: RMT
idle_ms: 255
dir_delay_us: 1
pulse_us: 2
disable_delay_us: 0
axes:
shared_stepper_disable_pin: gpio.12
shared_stepper_reset_pin: NO_PIN
x:
steps_per_mm: 100
max_rate_mm_per_min: 6000
acceleration_mm_per_sec2: 200
max_travel_mm: 900
soft_limits: true
homing:
cycle: 2
allow_single_axis: false
positive_direction: true
mpos_mm: 1.000
seek_mm_per_min: 200.0
feed_mm_per_min: 50.0
motor0:
limit_all_pin: gpio.13:low:pu
stepstick:
direction_pin: gpio.16
step_pin: gpio.26
y:
steps_per_mm: 100
max_rate_mm_per_min: 6000
acceleration_mm_per_sec2: 200
max_travel_mm: 900
soft_limits: true
homing:
cycle: 2
allow_single_axis: false
positive_direction: true
mpos_mm: 1.000
seek_mm_per_min: 200.0
feed_mm_per_min: 50.0
motor0:
limit_all_pin: gpio.5:low:pu
stepstick:
direction_pin: gpio.27
step_pin: gpio.25
motor1:
limit_all_pin: gpio.4:low:pu
stepstick:
direction_pin: gpio.19
step_pin: gpio.18
z:
steps_per_mm: 800
max_rate_mm_per_min: 2000
acceleration_mm_per_sec2: 25
max_travel_mm: 1000
soft_limits: true
homing:
cycle: 1
allow_single_axis: false
positive_direction: true
mpos_mm: 1.000
seek_mm_per_min: 200.0
feed_mm_per_min: 50.0
motor0:
limit_all_pin: gpio.23:low:pu
stepstick:
direction_pin: gpio.14
step_pin: gpio.17
coolant:
flood_pin: gpio.33
mist_pin: NO_PIN
probe:
pin: gpio.15:low:pu
PWM:
pwm_hz: 5000
output_pin: gpio.02
enable_pin: gpio.32
direction_pin: gpio.0
disable_with_s0: false
s0_with_disable: true
spinup_ms: 0
spindown_ms: 0
tool_num: 0
speed_map: 0=0% 10000=100%
Konfigurację należy zapisać w pliku z rozszerzeniem .yaml, czyli ja zapisałem my_ploter.yaml
Więcej o konfiguracji tutaj:
https://github.com/bdring/FluidNC/wiki/ ... tup#homing
https://github.com/bdring/FluidNC/wiki/ ... grbl_esp32
https://github.com/bdring/FluidNC/tree/ ... le_configs
Aby wgrać konfigurację, należy mając uruchomiony FluidTerm nacisnąć jednocześnie klawisz Ctrl i U, utworzy się okienko w którym trzeba wskazać plik:
A następnie potwierdzić nazwę
Urządzenie odpowie po zapisaniu pliku
W urządzeniu może być zapisanych wiele plików konfiguracyjnych i można je wybierać, które jest aktualnie używane.
Aby sprawdzić czy plik się wgrał oraz jakie są wgrane inne konfiguracje, należy wpisać w terminalu:
$LocalFS/List
Aby wybrać odpowiedni plik do użycia należy wpisać:
$Config/Filename=<yourfile.yaml>
czyli u mnie:
I zresetować płytkę (przyciskiem - wtedy nie odłączy się od terminala) ponieważ nowe ustawienie zastosowane zostanie dopiero po resecie. Aby sprawdzić jaka konfiguracja jest aktualnie używana, trzeba wpisać w terminal
$S
Można też wprowadzać ręcznie zmiany każdego parametru wpisują w terminal i następnie zapisać je do pliku, ale uważam, że edycja pliku na komputerze i wgranie do urządzenia jest wygodniejsze. Więcej o tym tutaj:
https://github.com/bdring/FluidNC/wiki/ ... onfiguring
Co do mojej konfiguracji, poniżej znajduje się schemat przypisania poszczególnych pinów do wyprowadzeń ESPDUINO
Niestety nie dało się wykorzystać pinów tak, aby wszystkie były wyprowadzone na płytkę CNC Shield, ponieważ piny IO34, IO35, IO36, IO39 nie są możliwe do wykorzystania w każdy sposób (nie rozgryzałem tego, wyrzucało błąd konfiguracji po uruchomieniu) dlatego użyłem inne dostępne piny.
A tu niżej schemat podłączenia tego na płytce CNC Shield
I na koniec jeszcze jeden problem jaki napotkałem. Otóż po podłączeniu płytki CNC Shield na ESPDUINO, ESP32 ciągle się resetował. Nawet podłączenie samej pustej płyty, bez sterowników, bez żadnego podpięcia. Metodą prób i błędów, doszedłem, że to podłączenie 5V z ESPDUINO do CNCSHIELD powoduje, że UC się resetuje. Ponieważ na pustej płycie jedyne co robi 5V to podciąga nogi EN sterowników do 5V (a te są podłączone do wyprowadzeń ESP32). Spróbowałem zmienić to podciągniecie do 3.3V ale również ten sam problem. Ostatecznie usunąłem rezystor podciągający. Nie wiem, czy to był wyjątkowy problem który zdarzył się tylko mi, czy to problem globalny ale na dziś nie chce mi się już szukać przyczyny. Na ten moment program działa, bazują się wszystkie osie i silniki i się kręcą. Nie sprawdzałem, czy działają sygnały PWM, SPINDLE, PROBE itd.