Clone duet2で遊んでいます

Duet3が気になって、ほとんど同じファームが走るDuet2のクローンを買ってしまいました。

興味だけで買ったタッチパネル付きLCD付きの物ですが、このタッチパネル付きLCDは単純にスタンドアロンでDuet2を制御するだけの物で動かす分にはオモシロいけれど私にはあまり価値の無い物でした。

Clone Duet2にはファーム 2.03beta4が入っていて、これをファーム 3.1.1にしました。

構造的にはSDカードにファームを入れてM997 S0を打ち込めば良いというものですが、2つ引っかかりました。

  • 2.xから3.xにアップデートするときは3.0を経由しないとファームが大きすぎて上げられない
  • iap4.binを入れておかないとアップデートできない
    そのあたりがわからず、wifiの設定をしてGUIからやったり色々苦労しました。

またWEBインターフェースがwww/フォルダーの中にありますが、これとファームの連携がどのように取れているのかわからないのが気になる所です。

WiFiの設定はWiFiルータを2.4GHzで使えるように設定した後、
USBシリアルから
M587 S"SSID" P"Password" I192.168.31.20 J192.168.31.1 K255.255.255.0
; IP: 192.168.31.20 , GW: 192.168.31.1 , Netmask : 255.255.255.0

config.g に M552 S1 をセットしておくとWiFiに繋ぎに行くようです。
このコマンドで打ち込んだM587の設定がどこに保存されているのか、いまだに謎です。
このM587の設定をconfig.gに書き込んでも反映されずどーしたもんかなあ。と思って居ます。

まだモーター類も繋がず、実験用電源に繋いだだけの環境で遊んでいます。

良いところ

  • 基板面積が小さい
  • CPUがパワフルなので1/256stepで使っても問題無さそう
  • わりとしっかり作ってある。
  • 本家から買ってもduet2なら割安感がある
  • 設定は多いが変更すると何に影響するのかわかっていればわかりやすい

悪い所

  • WiFiは私にとって不便に感じる。まあ本家からイーサーモジュール買えばいいような気がする
  • cloneなのか初期状態でsetupにも入れないのは途方にくれた原因はSDカードのweb/フォルダーの設定がやたら古いバージョンの物が使われていた。これはまあ酷い

CNCjsからはMarlin接続で使える事がわかりました。結構面白いのでモーターに繋いで見ようかという気になってきました。

後はClone故の問題として作者に金が行かないと問題があります。

「いいね!」 1

Firmware を3.xにしたのだがconfig.gとかが古いままなのが気になります。

多分、互換性が無い設定があったりデフォルトがかなり違う物があるような気がします。
このサンプルファイルはどこから落とせばいいのだろう。

とりあえず https://configtool.reprapfirmware.org で簡単に作ってそれをベースにしようかな。

いいですね!
Duet3でCNCjsの動作を以前試してみましたが,ジョグが動作しなかったり,NCプログラムが途中で止まったり(Duet側の受信をCNCjs側が確認できていないかも?)と問題が多かったため放置していました.
もしうまく行ったら共有していただけると助かります!

また,RepRapFirmwareの3系と2系ではGコード・Mコードの仕様が変わっているものが色々とあります.
CBeamMachineと同系統のWorkBeeCNCMachineではDuet2を採用しているのでconfigファイルが参考になるかもしれません.
https://learn.ooznest.co.uk/Wiki/WorkBee_Firmware_Releases

これですが,wwwフォルダの中身(DuetWebControl)がクライアントのPC上(ブラウザ)で実行され,Duet(RepRapFirmware)に対してHTTP等で指令を送信している感じです.

それをRepRapFirmwareで受け取って色々と処理してる感じですね

そのあたりは大体そうなっているのかなあ。とは思って居ました。
といっても読んだ事が無いので参考になりました。

気になった点はファームウェアとこのWEBサーバーに入っている内容は密に関係しているのに、WEBコンテンツは別のレポジトリーとか公開ファイルがあるという点で互換性は大丈夫なのかなあ。という点でした。

まあ見ていくとあまり変化しそうにないAPI?のようで大丈夫な気もしてきました。

https://configtool.reprapfirmware.org に安易な設定をしてconfig.gを作らせてcncに一軸だけ繋いで見ました。

動いたのには動いたのですが次のような問題が出て、ああこのあたりが疲れる点なのかと感心しています。

  • 電源を入れてもステッピングモーターにパワーが入りません。動かすと入ります
  • X+50を押しても0.5mmぐらいしか動きません
  • すごく動きがのんびりです

電源を入れてもステッピングモーターに電流が流れないのは何となく設定探せばなんとかなるだろうと予想していますが。
そうそう電源が入ってないときのZ軸が工具の重みで落ちていく問題をみなさんどーしているのでしょうか。
私は電源を落とす前にZ軸を上にあげてから洗濯ばさみを挟んで浮かせています。
そうでもしないと刃が降りて来て加工板の上で休みます。
この洗濯ばさみを外さずにホーミングとかすると、何個かの洗濯ばさみを動かなくなるまで連ねているのでモーターの力で洗濯ばさみが潰れていきます。プラの洗濯ばさみだったのでバネの力で飛んで怖かった。

移動速度はステップ分周を256に出来ると設定したこととか、その状態でstep / mmを修正しなかったとか色々思い浮かぶ所があるので直せそうです。X+50も多分50mm動かすというGUIだけどstep/mmが間違っているためだと思う。

xCNC Pro V4と違いステッピングモーターのPWM周波数が低いのかステッピングモーターから音がします。

意外に大変なのかもなあ。感じ始めました。

— 追記
STEP数を合わせてやると大体あってそうなので、全ての軸を繋いで試した所 XとZ軸が同時に動き Xを操作してもZを操作しても同じように動くようになってしまいました。

消去法で設定を見ていくと
M669 K2 ; select CoreXY mode
が問題のようでコメントアウトすれば見た目では動いているようです。

現在の設定を入れておきます。
; Configuration file for Duet WiFi (firmware version 3)
; executed by the firmware on start-up
;
; generated by RepRapFirmware Configuration Tool v3.1.4 on Fri Aug 28 2020 23:07:12 GMT+0900 (JST)

; General preferences
G90 ; send absolute coordinates…
M83 ; …but relative extruder moves
M550 P"MyCNC2" ; set printer name
; M669 K2 ; select CoreXY mode

; Network
M552 S1 ; enable network
M586 P0 S1 ; enable HTTP
M586 P1 S1 ; enable FTP
M586 P2 S0 ; disable Telnet

; Drives
M569 P0 S0 ; physical drive 0 goes forwards
M569 P1 S0 ; physical drive 1 goes forwards
M569 P2 S0 ; physical drive 2 goes forwards
M569 P3 S0 ; physical drive 3 goes forwards
M584 X0 Y1 Z2 ; set drive mapping
M350 X256 Y256 Z256 I0 ; configure microstepping without interpolation
M350 E16 I1 ; configure microstepping with interpolation
M92 X6400.00 Y6400.00 Z6400.00 ; set steps per mm
M566 X1200.00 Y1200.00 Z1200.00 ; set maximum instantaneous speed changes (mm/min)
M203 X6000.00 Y6000.00 Z6000.00 ; set maximum speeds (mm/min)
M201 X500.00 Y500.00 Z500.00 ; set accelerations (mm/s^2)
M906 X2400 Y2400 Z2400 E800 I50 ; set motor currents (mA)
M84 S0 ; Disable motor idle current reduction
M564 S1 H0

; Axis Limits
M208 X0 Y0 Z0 S1 ; set axis minima
M208 X300 Y300 Z200 S0 ; set axis maxima

; Endstops
M574 X2 S1 P"!xstop" ; configure active-high endstop for high end on X via pin !xstop
M574 Y2 S1 P"!ystop" ; configure active-high endstop for high end on Y via pin !ystop
M574 Z2 S1 P"!zstop" ; configure active-high endstop for high end on Z via pin !zstop

; Z-Probe
M558 P2 C"zprobe.in+e0stop" H5 F120 T6000 ; set Z probe type to modulated and the dive height + speeds
M558 H30 ;*** Remove this line after delta calibration has been done and new delta parameters have been saved
G31 P500 X0 Y0 Z2.5 ; set Z probe trigger value, offset and trigger height
M557 X15:215 Y15:195 S20 ; define mesh grid

; Heaters
M140 H-1 ; disable heated bed (overrides default heater mapping)

; Fans
M950 F0 C"fan0" Q500 ; create fan 0 on pin fan0 and set its frequency
M106 P0 S1 H-1 ; set fan 0 value. Thermostatic control is turned off
M950 F1 C"fan1" Q500 ; create fan 1 on pin fan1 and set its frequency
M106 P1 S1 H T45 ; set fan 1 value. Thermostatic control is turned on

; Tools

; Custom settings are not defined
M552 S1 ; Wifi Module ON
; M453 ; Select CNC Printer Mode
M575 P1 B57600 S1
M575 P0 B57600 S1

; Miscellaneous
M501 ; load saved parameters from non-volatile memory

WiFiの設定がconfig.gに無い理由は大体わかってきました。たぶんこの情報直接WiFiモジュールに記録されているだけじゃないかとWiFiモジュールの使い方を見ていて気が付きました。

いまだに起動時からステッピングモーターに電力を供給する方法がわかりません。だいぶ探したんだけどなあ。ほとんど動かない範囲の相対移動をX,Y,Zに送ればステッピングモーターにパワーが与えられるような気がします。
しかしこれだとホーミングするようにしたら動かなくなる気が・・・ホーミングする前にモーター位置を保持してもらって、その間に洗濯ばさみ(今はクリップだな)を取りたいのだが。

M906のI100にしたらアイドル時の電流が100%になるはずなので改善するかもしれません.

またM84 S0で操作なし0秒後にIdleに切り替えの設定なので,そのせいかも?

アイドル電流は30%でも保持していました。今は100%にしてステッピングモーターががどの程度温度上がるか見ています。
2.4A設定で3軸のモーターを駆動して風呂ぐらいの温度かなあ。CNC基板に流れる電流は1.27A程度。コントローラ基板のドライバーはxPro V4と同じファンを使ってxPro V4よりは低い感じがします。

M84は影響ありませんでした。

とりあえず考えている案としては

  • 起動時に 0.05mmでも全ての軸に対して動かす
  • Z軸のストッパーにしているクリップを生かしたままホーミングしてしまう

というのを考えています。

duet2 clone

リミットセンサーを付けてみました。
リミットセンサーは他の所に書いたPanasonic PM-K45です。

センサー端子に付いている電源は3.3VでPM-K45が動作する5V-24Vが調達できないためFANの所から電源だけ頂きました。このファン端子 5Vと24Vをジャンバーで切り替える事ができます。今回はxCNC Proのファンを流用したので24Vに設定してあります。付いているヒューズが2Aで、もしこの細いケーブルがショートした場合燃える可能性があります。ヒューズを0.5A程度にしておこうかなあ。とも思っています。

設定はRepRapFirmware Configuration Tool : https://configtool.reprapfirmware.org に助けられました。
limitx.g, limity.g, limitz.g の設定方針がよくわかりました。

残念な所は HOME XYZをすると最後にZを行うところで状態によっては下がりに下がったZ軸状態でX,Y軸が動き工具を吹っ飛ばす可能性があることです。

起動時にモーターをONにしたい件も合わせて、そろそろファームのソースでも読まないといけないのかなあ。と思いつつあります。

HOME XYZの順序の修正方法がわかりました。
Homing sequence - Z axis first, then X and Y [SOLVED] https://forum.duet3d.com/topic/7648/homing-sequence-z-axis-first-then-x-and-y-solved
ここを見て順序を変えると出来るようです。

G91 ; relative positioning
G1 H2 Z0 F6000 ; lift Z relative to current position
G1 H1 Z104 F360 ; move Z up stopping at the endstop
G1 H1 X245 Y325 F1800 ; move quickly to X and Y axis endstops and stop there (first pass)
G1 H2 X-5 Y-5 F6000 ; go back a few mm
G1 H1 X245 Y325 F360 ; move slowly to X and Y axis endstops once more (second pass)
G90 ; absolute positioning
G92 Z0 ; set Z position to axis maximum (you may want to adjust this)

移動後、モータが停止しきれてなかったので加速度を修正しました。
M201 X80 Y80 Z80 ; set accelerations (mm/s^2)

もうちょっと、ドキュメントを読んでからやった方がいいよなあ。

上記の変更をして可動範囲を細かく調整してみました。
2020-08-30-dist-2nd.zip (85.6 KB)

その他やったことを書いておきます。

USB接続

USB端子にパソコンを繋ぐとUSBシリアルとして動作します。速度とか設定しなくても繋がるのでターミナルソフトで繋ぎました。

# 液晶表示の接続
販売元の写真の通りに繋ぐと動き出します。ただし全くコントロールが出来ていません。
M575 P1 B57600 S1
コマンドを送ってシリアルポートに通信パラメーターをセットします。その後で液晶のSetupで接続速度を設定します。
この表示基板の役割はCNCのシリアルポートに繋いでコマンドを与えたり、コンソール表示するような機能を持っています。またSDカードに入れたGBRLファイルを送り出す機能があるようです。

タッチパネルで大体の事が出来るのはいいけれど、そんなに欲しいものじゃ無かったという気がします。

ファームウェアアップデート

DuetのファームはファームウェアとWEBに表示させるデーターがあります。
さすが中華のクローンだけあって付属のMicroSDに入っている内容が酷くて始めはWEBから何をやっても操作ができませんでした。
詳しく調べて見るとファームが2.xに対してWEBフォルダーが1.x用になっていました。
この問題はファーム2.x用のWEBフォルダーの内容に入れ替えることで動作しました。またファーム2.xの状態でファーム3.x用のWEBフォルダーの内容でも使う範囲で問題はありませんでした。

ファームのアップデートは2.xからでも一旦 3.0を入れないとファームが大きくて入らないという事とiap4e.binが必要な事がわかりました。

とりあえずファームは最新の物に入れ替えました。

ステッピングモーター 2.4A動作

M906 X2400 Y2400 Z2400 I100
を与えるだけで即座に反応してくれます。

動かすまでステッピングモーターに電力が供給されない

とりあえずリミットスイッチが設定されていないし、ホーム動作は怖いので
M564 S1 H0
を使ってホーミング無しで動かすように設定しました。
ちなみにステッピングモーターをONするコマンドは見つけました。
M17 X Y Z という形で設定するそうです。
止めるのは M18 X Y Zという設定らしいです。
実際にシリアル入力でやるとM17に対してはCommand is not suppotedと言うつれない返事が返って来て実際に機能しません。しかしM18は反応しモーター駆動が止まります。

きっとファームの作成者はモーターがどっちに向かって動くかわからない状態で駆動できるか。というコンセプトなんだろう。

なんでこれがしたいかというと、起動時にZ軸だけは保持していてほしい。それを確認した後でZ軸が工具の重さで落ちて来ないように付けてあるクリップを取る作業をするから。

かといってホーミングしない状態でモーターが動くコマンドを受理されるのも本当は嫌。という問題があってどうするか考え所。起動時に安全方向に少し動かすという方法しかないのかもしれません。

  1. M564 S1 H0で自由に動けるようにする
  2. Z軸モーターを少しだけあげる (-0.1mm)
  3. M564 S1 H1でホーミングするまでは動かせないようにする

こうしておいて利用者がクリップを取って安全を確保した上でホーミングをする。
というアイデアしかないような気がしてきました。(あとでgoogleておく)

https://duet3d.dozuki.com/Wiki/G-Codes_not_implemented には
M17: Enable/Power all stepper motors (Not required)
と書かれています。

ステッピング分周 256

あんまり意味が無いと思いますが、とりあえず設定ができるので1/256設定にしました。
M350 X256 Y256 Z256 I1

結果としてsteps par mmの設定が6400になりました。
M92 X6384.039 Y6384.039 Z6412.18

→ 全く必要性が感じられないしモーターの加速機能がジャッキーな感じがしたので1/32に変更した。
これが原因かわからないが、ガクガク動く動作が改善された気がする。

変態ボードなのか?

このコミュニティーでは良く変態ボードとはハッカー用とか言われていますが・・・
ボード自体はすごくシンプルに作ってあってCNC xPro-V4と比べても、そんなに難しい事をしているようには思えません。

ただ、ソフトの作り込みの悪さとか、元々3Dプリンターを考えて作ってあるとか、設定に自由度があるとかの違いはあるかもしれませんが。

ハード的にはちょっと保護が弱いかなと思いますが、根本的な問題は設定で何でもできるという所にある気がします。

CNCのZ軸には重い工具が乗っているので、ステッピングモーターのテンションが切れた時の問題があります。
どういう所が問題かというと

  • 電源を切ったときに工具の自重でZ軸が落ちてくると刃物が台だとか加工中の材料にあたり傷を付けたりする
  • 工具の自重でZ軸が落ちている状態でホーミング等をするとZ軸引っ張りあげる時に傷を付ける
  • 強制停止等でCNCコントローラーを止めた際にステッピングモーターのテンションが無くなるとZ軸が落ちてきて、電源を切っても慣性で回っている工具が穴を開ける

心配症の私はそんな事を想像して途方にくれます。

それともZ軸が落ちてくるのは私だけかな。機械オイル塗ってからとても簡単に動くようになりました。

.ncデーター入れて動かして見ました。

CNCjsはジョグに対するコマンドとかホーミング等はうまくいきますが.ncファイルを使うと途中でエラーになるようです。

試しにWEB UIからやってみるとある程度動く感触があったので少し.NCファイルを編集して動かすとエラーが出るけれど最後まで進行しました。
(怖いので工具は付けていませんが)

後から探すとRepRapのポストファイルがありました。これを登録するのは簡単でしたが、どうやって呼び出すかわからず悩みました。

出てこないと悩んでいましたが、一番上にある「ソース」というのを「カスタム ポスト」にしないと出てこないのね。
screen-2020-09-01

コンソールにはサポートしてないとかパラメーターが不足してますとか出ていますが動作は正しそうです。

もう1点追加:同じくポストの設定でプロパティにある「らせんの移動を許可」をオフにしないとエンドミルより大きな穴の形が崩れるようです。

DuetWebControlのソース

nyarurato / DuetWebControl https://github.com/nyarurato/DuetWebControl/tree/workbeecontrol
のブランチ workbeecontrol-ja
を今の所試しています。

経緯がいまいちわからないが、とりあえずX,Yの小数点以下が4桁なのが良いです。

Duet2のケースがthingiverseにあったので3Dプリントしてみました。
Duet 2 Ethernet / Wifi Case for Workbee CNC https://www.thingiverse.com/thing:3721923/comments

結構小さめのファンが必要で今注文中です。このケースはUSB, MicroSDにアクセス出来なくなります。
もうWiFiに飼い慣らされてしまったのでこれでいいかなあ。と思っています。

プリントにはFLASHFORGE ADVENTURER3を使った関係で150x150x150mmまでしか印刷できません。
それで斜めに印刷物を設定してスレスレで印刷出来ました。
もうちょっと大きい3Dプリンター買うべきだったかと思いました。