ワレコ
左下の親不知の辺りが痛い。
先日歯科に行って、現在、歯根治療の最中だ。
歯が痛い時は電子工作だ!
さて、表題の通りArduino Unoを使ってステッピングモーターのリモコン制御にトライした。
結論としては、取り敢えず成功した。
では、本題に入ろう。
ステッピングモーターのリモコン制御に使うパーツ
当実験で使うパーツを紹介しよう。
秋月電子の赤外線リモコン受信モジュールを使う
まずは赤外線リモコンだ。
秋月電子で以前に買っていたやつを使う。
一個三十円と安かったので、以前に数個買っていたのだ。
写真 赤外線リモコン受信モジュール SPS-444-1(38kHz)
■主な仕様
・電源電圧(VCC):5V(4.7~5.3V)
・消費電流(ICC):1.4mA(無信号時.typ)
・副搬送波周波数(fo):38kHz
・受光中心波長(λ):945nm(Δλ=45nm)
・出力レベル:VL=0.5V、VH=4.5V(TTL/C-MOS)
・基板実装面からレンズトップまでの高さ:14.2mm
引用元 秋月電子
この赤外線リモコン受信モジュールを使ってリモコンの受信実験は数日前に成功した。詳細は下記事参照下さい。
共立エレショップのステッピングモーターを使う
ステッピングモーターは共立エレショップで買ったやつを使う(下写真)。
その仕様は以下の通り。
詳細 ユニポーラステッピングモータ M35SP-7N-DJK
●ステップ数:48Step(7.5°)
●巻線抵抗/相:7Ω
●駆動方式:ユニポーラ定電圧
●駆動電圧:6V
●励磁方式 2-2相
●実測テスト:約500mA(DC6V)(ヒートシンク無し/無負荷/1相励磁)
●コネクタ:XHP 6
●軸径:φ2mm
●取付穴:M2.6×2
●モータ本体サイズ:φ35×15mm(突起含まず)
●ギア:モジュール0.5 歯数20
●使用条件に合わせてドライブ電流/放熱の調整をしてください
このユニポーラステッピングモーターも一年半くらい前に買っていたやつだ。
このステッピングモーターをいつかArduinoなどのマイコンで回してみたい、そんな計画を一年半くらい前に立てていたのだ。
いよいよその時が来たのだ!
今回の実験をするに当たりステッピングモーターに付いて調べた結果、ステッピングモーターにはバイポーラ型とユニポーラ型がある事を知ったのだが、買った当時はそんな事は知らなかったので取り敢えず安かったので買ったのだ。
ステッピングモーターのユニポーラ駆動とバイポーラ駆動
さて、ステッピングモーターのユニポーラ駆動とバイポーラ駆動に関してはネットにも多数の解説がある。
例えばロームさんのサイトが分かり易い。
ワテが共立エレショップで買ったM35SP-7N-DJKはユニポーラ駆動用なのでセンタータップ(COM端子)があるのだが、今回の実験でもユニポーラ駆動で使う。
その理由は、参考にしたサイトがユニポーラ駆動していたからと言う単純な理由だ。
一つ疑問なのだが、ユニポーラ駆動用のステッピングモーターのCOM端子を使わずに、単純にバイポーラ型のように駆動する事も出来ると思うのだが、それはダメなのかな?
つまり、ユニポーラ型ステッピングモーターはバイポーラ型として使っても問題無いのかどうか?それが疑問なのだが、今のところ良く分からない。
リモコン無しでステッピングモーターを連続回転させる
さて、まずはリモコン制御せずにステッピングモーターを単純に回転させてみた。
動画 ユニポーラ型ステッピングモーターを一定時間回転させる
上の動画ではステッピングモーターが二秒ほど回転して停止、それを繰り返している。
つまりArduino UNO基板にはUSB経由で5Vが供給されていて、同時にDCジャックに5.2V(1.2A)の電源を挿している。
正しい配線としては、Arduino UNO基板はUSB接続だけで良い。一方、DC電源はブレッドボードの赤青の電源ラインに接続すべきだ。
そして、ブレッドボードの青ライン(GND)とArduino UNOのGND端子をジャンパー線で接続するのが正解だ。
従って以降の写真や動画でもこの電源配線部分は修正する必要がある。
念の為にArduino UNOの電源供給に付いてメモしておく。
開発時は下図のUSBポートから5Vが供給される。
図 Arduino UNOの三種類の電源供給方法
上図のDCジャックあるいはVin端子から7~12Vが供給されると内蔵しているリニアレギュレータで5Vが生成される。
リニアレギュレータで生成される5VとUSBの5Vとの間にもし電位差があった場合の対策として、逆流防止ダイオードが入っているらしいが、あまり信頼性の高い回路ではないようだ(ネット情報)。
なので、Arduino UNOを使う場合には上図の三種類の電源供給方式のどれか一つだけを使うのが良いと言う情報が多い。
その時もしモーターなどの電流を食う機器を動かしたい場合にはUSB 5V(500mA)では電流不足になるので、その対策としては上記のMEMOに記したようにモーターを接続しているブレッドボードに別電源を供給すれば良い。そしてArduino UNOとブレッドボードのGNDを接続すれば良いのだ。
ステッピングモーター駆動やリモコン制御駆動の回路
下写真が今回のステッピングモーター駆動やこの後紹介するリモコン制御に使った回路だ。
写真 ステッピングモーターのリモコン制御実験に使った回路と配線
下図にその実体配線図を示す。
図 ステッピングモーターのリモコン制御実験の実体配線図
上図に於いて、DIP18ピンのICはステッピングモーターの駆動に使っているトランジスタアレイだ。
トランジスタアレイ(8chダーリントンシンクドライバ) TD62083APG
メーカーカテゴリ 株式会社東芝セミコンダクター社(TOSHIBA)
東芝の8回路入りトランジスタアレイです。
・LEDドライブ、リレーのドライブなどに最適です。
・18ピンDIPパッケージ
・50V500mA/1ch
これも秋月電子で買った。
ステッピングモーター駆動用Arduinoスケッチはネット記事を参考
さて、自称プログラミングの達人のワテであるが歯が痛いのでプログラミングに集中できない。
あかんがなw
そんな時にはネット検索して参考になるプログラムを拝借する事にした。
以下の「おもろ家」さんのサイトはArduino実験に特化したサイトのようで、非常に詳しく書かれているのでとても参考になる。
上のページにあるスケッチを参考にさせて頂いた。
なお、「おもろ家」さんの記事ではドライバモジュールはULN2003A、ステッピングモーターは28BYJ-48(ユニポーラ型)と言う型番のものが使われている。
もし「おもろ家」さんと同じ実験をするなら、たぶん下写真のようなセットになっているやつを買うと良いだろう。
ワテの場合は、ドライバーモジュールもステッピングモーターも「おもろ家」さんの実験とは型番が異なるが、まあ多分大丈夫だろうと思って実験を進めた。
Arduino IDEを起動して参考にしたスケッチをコンパイルしてArduinoに書き込み成功。
そしたら先ほどの動画のようにステッピングモーターがグルグル回り始めた!
Arduinoを使ってステッピングモーター駆動は案外簡単に出来た。
配線さえ間違えなければ誰でも同じように出来ると思う。
なお、「おもろ家」さんのプログラム(スケッチ)の内容は十分には理解出来ていない。
取り敢えずモーターを回す事に意義があるのだ。プログラムの理解はこの後予定している。
リモコンでステッピングモーターを正転・逆転ステップ制御する
さて、無事にステッピングモーター駆動に成功したので、次はリモコン制御だ。
ワテの予定としては、オーディオ機器のボリュームをステッピングモーターで制御したいと思っている。
つまり下写真のようなリモコンを使ってリモコンで音量を調整したいのだ。
写真 今回のリモコン実験では右端のやつを使った。「-」ボタンと「+」ボタン
上写真左は秋月で購入、中央はダイソーのリモコン式ライトに付属、右端はArduino UNO互換機セットに入っていたやつだ。今回は右端のやつを使う。
このリモコン制御実験でも「おもろ家」さんのサイトにあるスケッチを参考にさせて頂いた。
ただし、使っているリモコンが「おもろ家」さんとワテとでは異なる。
そこで「おもろ家」さんのスケッチの一部を以下のように変更した。
void setup() { Serial.begin(115200); /// <=========== ワテ追加した irrecv.enableIRIn(); // 作成したオブジェクトで赤外線受信をスタート myStepper.setSpeed(10); // 10回転/1分に設定 rpm(1分あたりの回転数) } void loop() { if (irrecv.decode(&results)) // 受信したかどうかの確認 未受信=0/受信=1 { Serial.print("results.value="); /// <=========== ワテ追加した Serial.println(results.value, HEX); /// <=========== ワテ追加した switch(results.value) { case 0x1000405: // Panasonic 音量 +ボタンを押した場合 myStepper.step(512); // 512ステップで90度回転 delay(1000); // 1000ms待つ break; case 0x1008485: // Panasonic 音量 -ボタンを押した場合 myStepper.step(-512); // -512ステップで-90度回転 delay(1000); // 1000ms待つ break; } ・・・
コード リモコン受信してステッピングモーターを正転・逆転させるスケッチ(一部)
参考サイト https://omoroya.com/arduino-lesson30/
つまりリモコンで受信した値(results.value)を16進数(HEX)で表示させるコードを追加した。
そしてワテのリモコンの+とーボタンを押してみた。
その結果、それぞれのボタンに割り当てられている数字がArduino IDEのシリアルモニタ画面に表示される。
具体的には以下の通りだった。
ーボタン 0xFFE01F
これらの16進数を上のスケッチ内のcase文のところに書き込めば、ワテのリモコンの+とーボタンでステッピングモーターが制御出来るはずだ。
そのように編集したスケッチをArduino Unoに書き込む。そしてリモコンボタンの+やーを押す。
動画 リモコンのーや+ボタンによって左回り、右回りに回転制御成功
その結果、上動画のように期待通りに動いた。
なお、今回使ったリモコンはボタンを押したままにするとリピートで送信し続けるタイプなのだが、例えば+を押し続けると一発目は+のコード(0xFFA857)が出るが、二発目以降は何故か異なるコードが出る。
赤外線リモコンの送信コードはNECの規格が業界標準のようだが、ワテの場合その辺りの知識は全く無い。
なので、今後はその辺りの理解を深めてリモコンボタンを連続押下した場合にも、それに応じてモーターが連続的にステップ回転するようにスケッチを改良したいと思っている。
それが実現出来れば、リモコン制御でステッピングモーターを時計回りや反時計回りに自由自在にステップ駆動出来る。
それらが成功したら次はオーディオ機器のボリュームをステッピングモーターで制御したい。
まとめ
ワレコ
しかしまあ歯が痛い。
左下の歯根治療をしている箇所の痛みは治まって来たのに、その向かい側の左上奥歯の根っ子もウズウズして痛むぞ。
なんでやねん?
今日は歯が痛いので酒飲んで寝るかな。
最近のワテはあまり酒は飲まない。
せいぜい週末に日本酒をコップ一杯程度飲むくらいだ。
それも毎週ではなく、隔週くらい。
なので月に300~500ccくらいしか飲まない。
その結果、1800ccや2000ccの紙パック日本酒なら飲み切るまで数カ月かかる。
超経済的なワテのお酒ライフ。
ワテお勧めの日本酒は「純米酒」だ。
例えばこんなやつ。
「純米酒」とは醸造アルコール無添加と言う意味。
つまりお米を発酵させて生成されたアルコールだけで作られている昔ながらの日本酒と言う意味だ。
吟醸酒や大吟醸酒はワテの場合は悪酔いするので飲まない。
と言う事で、即席の日本酒講座はこれくらいにしておこう。
(続く)
コメント