こんにちは、いまかみです。
以前から中華モータードライバの位置決め精度を知りたかったので測定してみました。
手動で何度も測定すると気が遠くなるほどの作業になるので、ミツトヨのデジマチックインジケーターからArduinoを通じて自動測定させます。
Arduinoのスケッチはここのものをそのまま使いました。
http://www.instructables.com/id/Interfacing-a-Digital-Micrometer-to-a-Microcontrol/
測定するトリガには、電圧を考慮するのが面倒だったのでドライバ基板のスピンドル駆動リレーを使いました。
単純に上のリンクの回路図のトランジスタへの入力と+5Vの間にリレーをはさんだだけです。
好きな位置に移動してスピンドルをオン・オフするだけでArduinoのシリアルから寸法が流れてきます。
LinuxCNCのマクロを使ってGコードはこうなりました。
#1=0 #2=0.5 (step) O200 do G0 X#1 G4 P0.5 M3S100 G4 P0.5 M5 #1=[#1+#2] O200 while[#1 le 25.0] M2 %
デジマチックインジケーターのストロークが約25mmなので、25mmを0.5mm刻みで移動させて実測値を取得するプログラムです。
結果、こうなりました。
・マイクロステップ設定は1/8
・25mm間を0.5mmずつ、計50回測定を1時間くらいかけて10セット
・指定値と実測値とのずれをプロット(単位μm)
生データを見たい方はこちら。
https://docs.google.com/spreadsheets/d/1QP_HAcb3tiajKLUAglq0ONIWQJKflMPBF4GU4X5VMo0/edit?usp=sharing
理想値と実測値のずれが綺麗に比例すれば、1mmのステップ数を調整すればよいのですが、一定間隔で上下しているようです。
おそらく中華モータードライバのせいだと思われますが、他のドライバと交換して比較してみたいところです。