中華CNC Woodpecker CNC のコントローラを grbl1.1fに上げた話

とうとう中華CNC導入したので,そのファーム上げをしたので作業メモを残しておきます。


中華CNC woodpecker とは?

aliexpressとかでよく売ってるCNCキットの製品名のようです。
(でも,ググるともっと本格的な中国のCNCベンダーが出てくるんだよな…)
まあ,ミリング以外にもレーザーカッターも搭載できるので,色々と使いみちはありそうです

engadgetさんとかでも組み立ててましたね。。
http://japanese.engadget.com/2017/08/04/cnc/

自分が買ったのも2.5Wレーザー付きで,200ドルを切る感じのキットです。


コントローラ

要するにコントローラは3DプリンタよろしくなArduino互換の基板が付いています。
したがって,CPUはAtmega328pとかです。
これに,grbl controller というオープンソースのファームウェアが乗っているというものです。
grbl自体は3Dプリンタとかもベースは一緒だったりします。


問題の基板

上記の中華キットでは,素のarduino基板+CNCシールドではなく,一応専用の制御基板になっています。

プロセッサはarduinoでおなじみなAVR ATMega 323pです。

問題はシルクに印刷されているとおり grbl 0.9f が入っており,ちょっと古いというのがあるので,
今回はこのファームをgrbl 1.1f に上げるのが目的です。


grbl 1.1fにアップグレード

公式のgithubから grbl 1.1f のコンパイル済み.hexをダウンロードしてきます。
これをavrdudeなどで焼くだけなのですが,どうもLinux版のavrdudeだと以下のように上手く通信できなかったため,
結局,キット付属のCD-Rに入っていたwindows版のavrdudeをwineで動かして使いました。


%:~/Desktop/CNC2418/Restore firmware$ ../avrdude-5.11svn-20111019/avrdude -p m328p -C avrdude.conf -c stk500 -b 115200 -P /dev/ttyUSB1 -U flash:r:firmware.hex:i
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer

キット付属版のCD-Rにファーム純正ファームウェアが入っているので,
最悪はこれで戻せるっぽいです。


%:~/Desktop/CNC2418/Restore firmware$ ls
avrdude.conf devices.txt grbl_v1.1f.20170801.hex libusb0.dll woodpecker_cnc_stock_grbl_0.9f.hex 固件(firmware)
avrdude.exe firmware.hex how to refresh the firmware.jpg license.txt XLoader.exe


grbl パラメータの確認

で,実際にgrbl v1.1fを焼くわけですが,その前に現在のgrblの調整パラメータを確認しておきます。
PCと制御基板をUSBでつないで,cuやscreenで通信するとgrblのコンソールが出ているので,
コレを使って確認します。

ターミナルに接続できたら, $$ と打つと現在のパラメータ一覧がダンプされるので,これを適当にメモります。


%:~/Desktop/CNC2418/Restore firmware$ cu -s 115200 -l /dev/ttyUSB1
Connected.

Grbl 0.9j ['$' for help]
$$ (view Grbl settings)
$# (view # parameters)
$G (view parser state)
$I (view build info)
$N (view startup blocks)
$x=value (save Grbl setting)
$Nx=line (save startup block)
$C (check gcode mode)
$X (kill alarm lock)
$H (run homing cycle)
~ (cycle start)
! (feed hold)
? (current status)
ctrl-x (reset Grbl)
ok
$0=10 (step pulse, usec)
$1=25 (step idle delay, msec)
$2=0 (step port invert mask:00000000)
$3=5 (dir port invert mask:00000101)
$4=0 (step enable invert, bool)
$5=0 (limit pins invert, bool)
$6=0 (probe pin invert, bool)
$10=3 (status report mask:00000011)
$11=0.010 (junction deviation, mm)
$12=0.002 (arc tolerance, mm)
$13=0 (report inches, bool)
$20=0 (soft limits, bool)
$21=0 (hard limits, bool)
$22=0 (homing cycle, bool)
$23=0 (homing dir invert mask:00000000)
$24=25.000 (homing feed, mm/min)
$25=500.000 (homing seek, mm/min)
$26=250 (homing debounce, msec)
$27=1.000 (homing pull-off, mm)
$100=800.000 (x, step/mm)
$101=800.000 (y, step/mm)
$102=800.000 (z, step/mm)
$110=5000.000 (x max rate, mm/min)
$111=5000.000 (y max rate, mm/min)
$112=800.000 (z max rate, mm/min)
$120=10.000 (x accel, mm/sec^2)
$121=10.000 (y accel, mm/sec^2)
$122=10.000 (z accel, mm/sec^2)
$130=200.000 (x max travel, mm)
$131=200.000 (y max travel, mm)
$132=200.000 (z max travel, mm)
ok


avrdude で grbl を焼き込む

avrdudeのtarballを落としてきていくつか試してみたのですが,
何かタイミングの問題なのかいずれも上手く基板と通信できませんでした。

そこで,キットに付属していた avrdude.exe をwineから使ってgrblを焼き込みます。

ちなみに,このキット付属のavrdude.exeは v5.4でした。

wineでCOMポートを/dev/ttyUSBx にマップするには,~/.wine/dosdevices に /dev/ttyUSBx のシンボリックリンクを張ってあげます。


%:~/.wine/dosdevices$ ls -al
total 0
lrwxrwxrwx 1 xxx xxx 10 Jan 29 2017 c: -> ../drive_c
lrwxrwxrwx 1 xxx xxx 12 Jan 29 2017 com1 -> /dev/ttyUSB0
lrwxrwxrwx 1 xxx xxx 12 Jan 27 12:49 com2 -> /dev/ttyUSB1
lrwxrwxrwx 1 xxx xxx 12 Jan 27 12:49 com3 -> /dev/ttyUSB2
lrwxrwxrwx 1 xxx xxx 8 Jan 29 2017 d:: -> /dev/sdc
lrwxrwxrwx 1 xxx xxx 27 Jan 29 2017 e: -> /media/evilmaster/1C65-1D01
lrwxrwxrwx 1 xxx xxx 9 Jan 29 2017 e:: -> /dev/sdc1
lrwxrwxrwx 1 xxx xxx 8 May 8 2017 f:: -> /dev/sr0
lrwxrwxrwx 1 xxx xxx 1 Jan 29 2017 z: -> /

Wine経由でavrdudeを起動し,ボードのgrblを焼き込みます。
このとき,COMポートは上のリンボリックリンクの名前を指定します。


%:~/Desktop/CNC2418/Restore firmware$ wine avrdude.exe -p m328p -c stk500 -b 115200 -P COM2 -U flash:w:grbl_v1.1f.20170801.hex
Fontconfig warning: "/etc/fonts/conf.d/69-language-selector-ja-jp.conf", line 126: Having multiple values in isn't supported and may not work as expected
Fontconfig warning: "/etc/fonts/conf.d/69-language-selector-ja-jp.conf", line 126: Having multiple values in isn't supported and may not work as expected
Fontconfig warning: "/etc/fonts/conf.d/69-language-selector-ja-jp.conf", line 126: Having multiple values in isn't supported and may not work as expected
Fontconfig warning: "/etc/fonts/conf.d/69-language-selector-ja-jp.conf", line 126: Having multiple values in isn't supported and may not work as expected
Fontconfig warning: "/etc/fonts/conf.d/69-language-selector-ja-jp.conf", line 126: Having multiple values in isn't supported and may not work as expected
avrdude.exe: successfully opened stk500v1 device -- please use -c stk500v1

avrdude.exe: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude.exe: Device signature = 0x1e950f
avrdude.exe: NOTE: FLASH memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude.exe: erasing chip
avrdude.exe: reading input file "grbl_v1.1f.20170801.hex"
avrdude.exe: input file grbl_v1.1f.20170801.hex auto detected as Intel Hex
avrdude.exe: writing flash (30492 bytes):

Writing | ################################################## | 100% 4.97s

avrdude.exe: 30492 bytes of flash written
avrdude.exe: verifying flash memory against grbl_v1.1f.20170801.hex:
avrdude.exe: load data flash data from input file grbl_v1.1f.20170801.hex:
avrdude.exe: input file grbl_v1.1f.20170801.hex auto detected as Intel Hex
avrdude.exe: input file grbl_v1.1f.20170801.hex contains 30492 bytes
avrdude.exe: reading on-chip flash data:

Reading | ################################################## | 100% 3.87s

avrdude.exe: verifying ...
avrdude.exe: 30492 bytes of flash verified

avrdude.exe: safemode: Fuses OK

avrdude.exe done. Thank you.

どうやら,Windows版のavrdudeは上手く書き込めるようです。

書き込んだら先程と同じようにcu等でgrblにアクセスすると,versionが上がっているのを確認できます。


%:~/Desktop/CNC2418/Restore firmware$ cu -s 115200 -l /dev/ttyUSB1
Connected.

Grbl 1.1f ['$' for help]
[HLP:$$ $# $G $I $N $x=val $Nx=line $J=line $SLP $C $X $H ~ ! ? ctrl-x]
ok
$0=10
$1=25
$2=0
$3=0
$4=0
$5=0
$6=0
$10=1
$11=0.010
$12=0.002
$13=0
$20=0
$21=0
$22=0
$23=0
$24=25.000
$25=500.000
$26=250
$27=1.000
$30=1000
$31=0
$32=0
$100=250.000
$101=250.000
$102=250.000
$110=500.000
$111=500.000
$112=500.000
$120=10.000
$121=10.000
$122=10.000
$130=200.000
$131=200.000
$132=200.000
ok

あとは,パラメータを先程メモっていた値に直せば,grblのアップグレードは完了となります。


あとがき

Linux版のavrdudeから何故か書き込めないので,キット付属のavrdudeが特殊なんですかね?
ちょっと釈然としませんが,grbl1.1に簡単に上げることはできたので良しとします。。

Leave a Reply

Your email address will not be published. Required fields are marked *