はじめに

ハードからソフトへの架け橋
前回、リミットスイッチを実装したことで、「原点(0, 0)」という物理的な基準を手に入れました。これで、ようやくマシンが「自分の居場所」を正確に認識できるようになったわけです。
ハードウェアとしての土台が整ったところで、今回はいよいよ「PCから自在に操作できる環境」を構築していきます。ただ動かすだけでなく、工作機械として実用的なステップへ進みましょう。
今回のゴール
本日のミッションは以下の3点です。
- Arduinoに「GRBL」を導入する(コントローラ化)
- 「CNCjs」でPCから操作する(操作盤の構築)
- 実移動距離の検証(1mmの重みを知る)
最終的には、単なる「動くおもちゃ」から「CNCとして使える精度」が出ているかを厳しくチェックしていきます。
GRBLとは:Arduinoを「脳」に変えるファームウェア
まず、CNCの中核を担うソフトウェア「GRBL(ガーブル)」について解説します。
簡単に言うと、GRBLは「普通のArduinoをCNC専用のコントローラに変身させる魔法のプログラム」です。
主な役割:
- PCから送られてくる「Gコード(座標指示)」を解釈する。
- ステッピングモーターに適切なパルスを送り、移動を制御する。
- 加速・減速、そして現在位置を1ステップ単位で管理する。
これを入れることで、Arduinoはただのマイコンではなく、「CNCの脳」へと進化します。
インストールの流れ

githubよりGRBLをダウンロード
https://github.com/gnea/grbl
- Codeをクリック
- Download ZIOをクリック
書き込み後、シリアルモニタで $$ と入力して設定一覧がズラッと表示されれば成功です。この数値のひとつひとつが、CNCの挙動(最高速度や加速、移動量)を決定する重要なパラメータになります。
CNCjsの導入:直感的な「操作盤」を手に入れる
次に、PC側でマシンを操作するためのユーザーインターフェース「CNCjs」を準備します。これはブラウザベースで動くオープンソースのCNCコントローラです。
CNCjsでできること:
- ジョグ操作: ボタンひとつで軸を前後左右に動かす。
- Gコード送信: 作成した切削データをマシンに送る。
- 状態監視: 現在の座標やリミットスイッチの反応をリアルタイムで確認。
いわば、CNCマシンの「コックピット」のような存在ですね。ポート番号を選び、ボーレートを「115200」に設定して接続すれば、ついにPCの画面からXYテーブルをミリ単位で操れるようになります。
インストールの流れ

githubよりCNCjsをダウンロード
最新版ではなく、Windows版があるv1.9.22にて進めます。
https://github.com/cncjs/cncjs/releases/tag/v1.9.22
動作確認:実際に動かしてみた結果
PCから「X軸を+10mm」と指示を出すと、静かに、かつスムーズにテーブルが移動します。
「ついに自分専用のCNCが完成した!」と感動する瞬間ですが……ここで避けては通れない「現実」に直面しました。

精度に問題あり:0.7mmのバラつき
指示通りの距離を移動しているかノギスで計測してみたところ、衝撃の結果が出ました。
- 指示値: 10.00mm
- 実測値: 10.00~10.70mm
キャリブレーションの試行と挫折
GRBLには、移動距離を補正するための設定値($100=X軸, $101=Y軸)があります。「1mm進むために何ステップ送るか」を調整する機能です
通常ならこの値を計算して書き換えれば解決するのですが、今回は実測値がバラけていたのでキャリブレーションしたとしても、やっぱり距離がバラけてしまいます
なぜこれが「致命的」なのか
CNCにおいて最も重要なのは、絶対的な精度以上に「再現性」です。
「常に1mm短く動く」のであればソフト側で補正できますが、「ある時は短く、ある時は長い」という状態では、何度削っても同じ形を作ることができません。
工作機械として、この精度の不安定さは致命的な欠陥と言わざるを得ません.....。
原因の考察:どこに欠陥があるのか?
今回の検証で、バラつきの原因はソフトウェアではなく「ハードウェアの限界」にあることが見えてきました。
- オシロスコープでの波形確認⇒キレイな波形が出ていました
- 信号が抜けている可能性⇒周波数カウンタにて100回信号を発信していることが確認できたので、Arduino Uno R3からはキチンと信号出ていました。さすがArduinoです。
- ベルトの緩み⇒タイミングベルトの張りを再調整しても減少変わらず。
- 駆動系のガタ⇒ネジ締めに問題がありガタついていないか確認しましたが問題なし
こうなってくると、モーター側の可能性が大きくなってきました。
やはり秋月電子通商より購入した安価なステッピングモーター(12V)では限界があったと、現時点では推測を立てました。
まとめと次のステップ
今回の挑戦で得られた成果と、突きつけられた課題を整理します。
【今回の成果】
- GRBL導入により、ArduinoがCNCコントローラになった。
- CNCjsを使い、PCからミリ単位の操作が可能になった。
【現在の課題】
- 精度が安定しない(誤差0.7mm)
現状の構成では、精密な加工は難しいという結論に至りました。しかし、方向性は間違っていません。この精度の壁を乗り越えるために、オリエンタルモーター製のステッピングモーターを手配しました。やはりメーカー製を買わないとダメだったか......
次回予告
「ハードウェア改善編:モーターを交換し精度を追い込む」
失敗は成功の元と自分に言い聞かせて、CNC完成に向けさらに改造を進めていきます!













コメント