Arduinoでモーターを制御してみたいけど、どのサイトを見てもやり方がいまいちよく分からないなぁ
別に難しいことをやりたい訳じゃなくて、せいぜいON/OFFを制御できればいいのに
初心者向けにシンプルに的を絞って解説して欲しい
今日はそんな要望に東城がお答えします!
先日僕はArduinoを使ってモーターを制御しようと色んなサイトをググったのですが、どれも難しいことが書いてあって結局よく分かりませんでした。
せいぜい1秒毎にON/OFFを繰り返すという動作を行いたかっただけなので複雑なことは必要なく、シンプルな配線(回路)設計とコードでよかったのですが、これが見事に見当たらない。
ググって得た情報を元になんとか自分で考え出して簡単なモーター制御システムを完成させたわけですが、きっと僕同様に同じ悩みを抱えている人は多数いると思うので、その情報の共有をしたいと思います。
モーター制御に必要なもの
モーター
トランジスタ(PN2222)
ダイオード
1kΩ抵抗
電池ボックス
テストフッククリップ
配線図および回路図
コード(スケッチ)
1 2 3 4 5 6 7 8 9 10 |
void setup() { pinMode(3, OUTPUT); } void loop() { digitalWrite(3, HIGH); delay(1000); digitalWrite(3, LOW); delay(1000); } |
解説
トランジスタの仕組み
まず、このArduino単体ではモーターを駆動させるだけの電力を供給できないため、外部電源が必要となります。
その外部電源を制御するための部品がトランジスタになります。
トランジスタは3本足でそれぞれ「コレクタ」「エミッタ」「ベース」という役割があり、Arduinoからベースに電圧をかけるとコレクタとエミッタが接地し、モーターに電流が流れるという仕組みになっています。
ただし今回使用するPN2222トランジスタは左から「エミッタ」「ベース」「コレクタ」ですが、この順番はモノによって変わってくるので、別のトランジスタを使う際はデータシートなどをみて、必ず順番を確認してください。
ダイオードの仕組み
モーターのようなコイルを有する部品は急激にスイッチをOFFにすると「今まで電流が流れていた方向に強大な電流を流す」という現象が発生します。
(詳しい仕組みは割愛)
そのときにダイオードのような「保護回路」を設定していないとトランジスタなどの他の部品が過電流によって破壊されてしまいます。
さてこのダイオード、「アノード」と「カソード」という向きがありまして、必ずアノードからカソードの向きにしか電流が流れないのです。(電気の逆流を防ぐ)
そのダイオードをまずはモーターに対して並列に接続します。
まず①の通常時はモーターにダイオードを並列に接続しても、電気はダイオードには流れません。
もし②のようにダイオードを並列に接続していない状態でいきなりスイッチをOFFにすると先程言った通りモーターのコイルから強大な電気が発生して、電流がスイッチに衝突してしまいます。
今回はスイッチの例を挙げましたが、これがトランジスタだった場合は確実に壊れます。
そして③のようにダイオードを並列接続していると、スイッチを切ったあとでモーターから電気が発生しても、ダイオードによって迂回回路ができ、発生した電気をモーター自身で消費させることができるのです。
(スイッチをOFFにしてもしばらくはモーターが駆動する)
こうすることによりダイオードを使って保護回路を構成することができるのです。
以上がArduinoを使った簡単でシンプルなモーター制御方法でした。
もしモーターの回転数を上げたり下げたりしたい場合はPWM出力を使えば可能になりますので、そちらも試してみてください。
また最後に以前トランジスタの制御で僕がハマッた時の過去記事を貼り付けておきますので、そちらも参考にしてみてください。