はじめに
何か実用的な作品を作りたい、というモチベーションから、Arduinoを用いたペンプロッタを作成しました。
せっかくなので作品紹介を兼ねて、他の方の作品制作のアイデア出しのヒントになれば、電子工作を始めたばかりの方の道しるべになれば、ということで記事を初投稿していきます。
目次
作品の概要
ステッピングモーターを使ってボールペンを固定したプロッタステージをx/y軸方向のいずれかに動かし、サーボモーターでペンを上下に動かすことで描画を行います。
ペンの打点間隔を調整することでグレースケール4諧調の濃淡表現をします。
おおまかな仕様
ペンプロッタというと、画像のエッジ抽出を行って、輪郭を描画するスタイルが一般的かと思いますが、今回はドット絵の要領で、ペンを紙に押し当てて打点を繰り返しながら描画を行う"ドット絵方式"での作成を目指します。
CNCマシンの作成にあたっては、オープンソースソフトウェアであるGRBLを使用するケースが多いようです。GRBLはCNCマシンに対する命令コード(Gコード)を生成するためのツールです。(GRBLについてはこちらが分かりやすかったです。)
詳細はソフトウェア実装の記事で述べますが、前述のドット絵方式では複雑なモーター制御が不要であるため、GコードやGRBLは使用せず、敢えて命令コマンドも自分で用意し、Arduino側で命令デコード&駆動を行うことにします。
画像の事前処理や命令コードの変換はPythonで行い、シリアル通信で命令コードをArduinoに送信し、逐次デコードする仕様で考えていきます。
使用する電子部品
主要な部品のみです。
めっちゃ適当です、すみません。
No | 内容 | 備考 |
---|---|---|
1 | Arduinoボード | 最近は半導体不足で値上がりしてますね。今回はArduino nano互換品を使っています。 |
2 | NEMA17 *2 | 比較的安価なステッピングモータ。x/y軸方向のプロットステージ駆動用に使います。 |
3 | A4988搭載モータードライバ *2 | モータードライバモジュール。ステッピングモーターを駆動するのに使います。 |
4 | SG90 | 安価なサーボモーター。ペンを上下させるためのアクチュエータとして利用します。 |
5 | NJM7805FA | 5V出力の三端子レギュレータ。サーボモータへの電力供給用です。 |
6 | 可変抵抗 | サーボモータの駆動角度のコンフィグレーション用。抵抗値は低すぎなければ(>1kΩ)適当でOK。 |
7 | 12V電源 | モーターへの電力供給用。モータードライバ側で供給電流の上限を設定できるので、この値よりも多めの電流供給能力をもつ電源を用意しましょう。詳細は下のA4988補足の項目で。 |
- ノイズ抑制用のコンデンサや、装飾のためのLEDなどは省略しています。
- タイミングベルトやヒートシンク、ボールペン等の非通電部品は省略しています。
補足 モータードライバ
A4988搭載のモータードライバモジュールのみ補足をしておきます。
電流制限については、電流が少なすぎるとトルク不足でプロッタステージを動かせなくなり、多すぎると12V電源(ACアダプタ)のスペックをオーバーするため、実験的に必要な電流量を見極めます。
今回のペンプロッタでは2基あるステッピングモーターは必ず排他的に使用する(同時に2個動かすことがない)ため、2基モーターがあるから必要な電流容量スペックもI_maxの2倍、というわけではなく、片方のモータードライバ側のI_maxに対して50%程度のマージンをもたせた値よりも12V電源の電流容量が大きければ(1.5 * I_max < I_spec)問題ないと思います。自分の場合は0.8 Aを上限値に設定したので、かなり余裕をみた12 V/2 AのACアダプタを電源として採用しています。
- より詳細な仕様や制御についてはA4988/ドライバモジュールの仕様書をご確認ください。
次回
当初は1個の記事に全てまとめようと考えていましたが、思っていたよりもボリュームが大きそうなので、記事3個程度に分割しようかと思います。
次回はハードウェアの実装について書く予定です。
記事投稿は初めてなのでかなり読みにくい記事になってしまっていると思います。ここまで読んでいただきありがとうございました。