オープンソースのCAMソフトGrblでステッピングモーターを回してみるArduinoで学ぶ基礎からのモーター制御(11)(1/3 ページ)

今回は、3DプリンタやCNCで定番の制御ファームウエアとなっているオープンソース「Grbl」を使って、ステッピングモーターを制御します。

» 2016年10月24日 15時00分 公開
[今岡通博MONOist]

はじめに

 今回はオープンソースのファームウェア「Grbl」をArduino上で動作させてステッピングモーターを制御します。このGrblはオープンソース系のCNCや3Dプリンタなどで定番のファームウェアです。今回は1軸(X軸)のみにステッピングモーターを接続し、Grblの基本動作を理解していきます。

オープンソースのファームウェア「Grbl」

 まず、ファームウェア側の環境を整えます。

 なお、ハードウェアについては前回の記事(基礎からのマイコンモーター制御(10):マイコン1つで複数モーターを操る、制御モジュール「A4988」を学ぶ)を参考にして整えてください。またPC側の「Grbl Controller」については次回以降に説明します。

図1:本連載で紹介するハード/ソフトウェア構成イメージ
今回は、ファームウェアの部分について解説する

 では早速ArduinoにGrblをインストールします。ここからの操作は「Windows 10」搭載PCでの作業を前提に説明します。

 以下のサイトからGrblをダウンロードできます。

図2:Grblダウンロードサイトのスクリーンショット

 図2は、上記サイトのスクリーンショットです。githubからプロジェクト全体をZIP形式のファイルでダウンロードし、ソースからビルドしてArduinoのHEX形式のファイルを生成する方法もありますが、既にビルドしたHEXファイルがいくつか用意されています。

 HEXファイルとはプロジェクトをビルドした結果生成されるファイル形式の1つで、Arduino(Atmega328p) の実行命令を格納するフラッシュメモリに書き込まれる一歩前のファイル形式と思ってください。ビルドした結果がバイナリー形式のものもありますが、HEX形式はこれをいったんASCII文字で表現できる16進の数字列に変換した後、アドレスとチェックサムを付加した形式となっています。

 筆者の場合、このHEX形式のファイルを使っても特に問題がなかったので、これをいつも利用しています。Grblには、いくつかのバージョンがありますが、筆者は「Grbl v0.8c」を使っています。ですので、本記事もこのバージョンを前提に書いています。Grbl v0.8cは、最新のバージョンに比べてシリアル通信のボーレートが9600bpsと多少低めです。ですが、

  • 以前から使っていて実績があった
  • 機械相手なので通信側だけ速くてもあまりメリットを感じなかった
  • モーター制御なので耐ノイズ性の観点からボーレートが遅い分通信の信頼性が多少よいかな

という理由からGrbl v0.8cを使っています。

 アーカイブの中から任意のバージョンを選択して、ローカルのPCにダウンロードします。

 ダウンロードしたHEX形式のファイルは、Arduino IDEではそのままターゲットであるArduinoには書き込めません。そこで、Arduino IDEから呼び出される書き込みツールのAvrdudeをコマンドラインやシェルから直接操作する必要があります。そのためHEXファイルをGUI形式のオペレーションでArduinoに直接書き込めるXloaderを使います。Windows版は以下のサイトからダウンロード可能です。

図3:Xloader起動時の操作画面

 右の図(図3)がXloaderを起動した時の操作画面です。

 操作画面の上の入力項目から説明します。Hex fileの項目にはダウンロードしてきたHEXファイルを指定します。次のDeviceはArduinoの種類を選択します。筆者の場合はDuemilanove/Nano(Atmega328p) を選択しました。次のCOM Portですが、ArduinoをPCにUSBケーブルで接続した際に認識されたポート番号を選択します。Baud rateは書き込む際の通信速度ですが、これはArduinoの種類によって異なります。筆者が使っているArduino Nano Atmega328Pの場合は57600bpsを選択します。これであとはUploadのボタンを押せばGrblのファームウェアがArduinoに書き込まれるはずです。

       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.