arduinoとステッピングモーター

ステッピングモーターを制御しようと思いたって、
年明けからあれこれと試していたやつ。

制御に用いるマイコンボード、arduinoのプログラム(スケッチというそうだ)は
自分で最初からプログラミングしなくてもネットに公開されてるやつを漁ってきて
モーターの制御に温度や表示も絡めようと画策。(最初はお手軽じゃん♪って思ってた)



モーター、温度、表示、それぞれのスケッチを組み合わせて、
温度を検出→表示
(温度が設定以下(以上)なら警告表示&最初に戻る)
可変抵抗器の状態を検出(回転数の値を取得)
回転数の値を表示
スイッチの状態がON→回転方向表示&1ステップだけ回す
(回転数の値)ぶんの遅延
最初に戻ってまたループ という流れ。

モーター1ステップごとの間隔が0.3秒なら
0.3秒x1.8度が200ステップ=1分間に1回転
毎分100回転なら遅延は0.003秒という感じ、、、

なので、カーラジオのボリュームみたいにコリコリと回る
ヌルヌルとスムーズに回す制御の仕方もあるみたいだけど、、、


スケッチは探してきて大幅に書き換えたメインの部分以外に、
モーターのドライブ基盤や、温度センサーの基盤、液晶の表示、それぞれ
設定を記述してあるヘッダーファイルのようなものも一緒に読み込むのね、

それぞれのヘッダーファイルはそのまま使っていたのだけど
ヘッダーファイルを確認してみたら信号の読み書きなどのために
マイクロ秒単位のディレイを持たせてあったりするようです

低回転のうちは問題ないのだけど、回転が速くなってくると
それらのディレイの時間とモーターのディレイが重なっておかしな動作になってしまうっぽい

なので、厳密には毎分1回転じゃないというコトにも気付いていたけど
何十ミリ秒とかの誤差だから今回は無視して問題ない

ヘッダファイルのほうをイジってみたけど
やっぱりディレイを入れないと読み書きにエラーがでてしまうんだな、、、



もうソフト的に追求するのは諦めて
温度検出/表示とモーター制御それぞれ、2台のarduino を使うコトにした、爆

arduino nanoを追加で調達して、、、互換品だから1こ数百円だしね。

同じモノ2つなので、間違えて同じスケッチを両方に書き込んじゃったりして、、、汗
お互いに信号のやり取りするためにシリアルのピンを繋いでるせいで
スケッチ書き込むときはいちいち外さないとおかしなコトになったりしてイライラする

狭いテーブルの上でごちゃごちゃと作業してるから
ボードから外して書き込もうとしたときに
むき出しのピンが電源に触れて、1つダメにしたのはココだけの話 (爆

ちゃんと動作したの確認して、1枚のブレッドボードに並べた

イメージ 1

ブレッドボードの上はarduino nano 2台、温度センサー、液晶
赤っぽい基盤に放熱器の付いたのがモータードライバ
小さなブレッドボードに乗ってるのは電圧変換用(後述)
あとは屋外で試すつもりなので、可変抵抗器とスイッチは外付け

100均で買ったケースに穴あけて詰め込む

イメージ 2


コレに組み合わせようと目論んでるステッピングモーターは、、、

イメージ 3

頭にチューブポンプというモノが付いたやつ、


イメージ 4

モーターの軸にローラーが付いてて、
回転するとシリコンチューブを周りに押し付けて液体をシゴき出すというタイプのもの。
動いていると、もにゅもにゅとチューブが動いてちょっと面白い


シリコンチューブの内径は2mmくらい。
流量のデータがなくて、水で試してみたのだけど
1時間あたり、毎分1回転で10cc、毎分100回転で1000ccでした


モーターを注文したサイトでは12-24Vって表記してあったので
最初のうちは12vで回したのだけど、ギャーギャーとヘンな音が出るのね
電圧が足りないのかな?と思ってもう少し電圧上げたら音は更に酷く、、、

ここでやっと、ラベルを確認 ←最初にやるべきコトだよね

イメージ 5

42はモーターの大きさの規格みたい(42mm□)
1.8は1ステップの回転角、 2.5Ω/3.25V/1.3Aって・・・定格3.25Vってコト?!

試しに5Vで回すと変な音しない、、、
信号からPWM制御すれば電源は12Vのままでもイケるのだろうけど
またまた複雑なコトになっちゃうから、もうソフト側はイジりたくない。


arduino nanoはモバイルバッテリーとかの5Vでも動作するけど
外部電源を入れるときは7~12Vらしい、

12Vで容量的にも足りそうな電源があったから、
それをそのままarduinoとモーターに使おうと思っていたのに
モーター電源は(モーターのドライバの定格が5V以上なので)12V→5Vへと降圧するハメに。

ドライバICの動作電圧とモーター電圧の差が少ないからか?
こんどはドライバICの発熱が非常に多くなっちゃう、、、これは小さなファン入れてどうにかなりそう。


本当は回転がおかしくなる65rpmくらいまで回さなくても足りそうだから
arduinoは1台のまま、最高回転数の設定を抑えれば悩まなかったのだけどね、
何となく最初の目標の1~100rpmのまま進めてしまったから時間かかってしまったけど
久しぶりのソフトウェアもそれなりに楽しいよ、
「お外で元気に遊べないから仕方なく」だったりするのだけど、、、


とりあえず「定量ポンプ」はこれで完成。