R_Castle が 2020年04月20日12時19分41秒 に編集
初版
タイトルの変更
DCモーターをArduinoUnoで動かしてみる(その1)
タグの変更
Arduino
Arduino_Uno
モーター
トランジスタ
回路
ブレッドボード
本文の変更
# モーターを回してみよう 前回の記事でもご紹介した様に、Arduinoマイコンボードで何か動くものを作ろうとした時、角度を自由に設定可能なサーボモーターを利用出来ることは非常に便利です。 記事リンク:[ラジコンサーボモーターをArduinoで動かしてみる(その1)](https://elchika.com/article/6559c562-aefb-414f-befe-a3ab83ae50ee/) 記事リンク:[ラジコンサーボモーターをArduinoで動かしてみる(その2)](https://elchika.com/article/bd2d528c-62ff-4564-ad24-0c1ee310cb53/) ですが、動かそうとする物の内容によっては自動車のタイヤや船のプロペラの様に、自由に回転させ続ける様な動作を制御する必要も生まれてきます。 # モーターの動作原理とArduinoUnoへの接続 Arduino各種に限らずほとんどのマイコンボードは、高速で信号を処理する事が出来る代わり制御できるのはスイッチのON/OFF、つまり電圧があるか無いかについてコントロールするだけです。 これに対して、電子工作などで使用する様なモーターのほとんどは、電磁石の原理を応用して電流を力に変えて回転しています。 これらの動作原理については電子部品のメーカーサイトに動作原理から高度なモーターに関する例まで、大変詳しく解説されていますので一度ご覧いただく事をお勧めし、ここでは動作原理についての詳細説明は省かせて頂きます。 Rohm社のモーター制御に関する技術情報サイト WEBサイトリンク:[「TechWebMotor」](https://techweb.rohm.co.jp/motor/knowledge/basics/basics-02/49) 簡単にまとめてしまうと、モーターとは磁石で作られた空間の中に収められた電線を巻いたコイルに電圧を加え、コイルに流れる電流で回転する力を生み出すことが出来る部品、という事になります。 ここで重要になるポイントが2点ありますので改めて確認しておきます。 ==マイコンボードからのON/OFF制御でコントロールできるのは電圧だけ== ==マイコンICを経由して流すことが出来る電流は非常に少ない== つまり、マイコンICからモーターを自由に動かそうとするプログラムを実行する場合、2つの間で大きな電流をコントロールすることが出来る電子部品による回路を用意する必要があるのです。 ## マイコン制御の基本「トランジスタ制御」 あらゆるマイコン電子工作で必ず使う事になる電子部品の一つ、それがトランジスタです。  ### 「抵抗やLEDは知ってるけど、トランジスタって何?」 という方も少なくないと思います。 トランジスタとは、マイコンICなど少ない電流しか流せない制御信号から、今回のモーターやスピーカー等、大きな電流や電圧を必要とする機器を制御する事が出来るようになるスイッチのような役割を持った、半導体と呼ばれる電子部品の一種です。 現在では更に高性能な増幅素子としてFETと呼ばれている物や専用のモータードライブIC等も開発されています。ですが、純粋に1個の信号を制御したい時など今でもトランジスタによる制御回路を利用する事例は沢山ありますので是非覚えておきましょう。 トランジスタの詳細な区分やそれぞれの特徴、増幅回路と呼ばれる信号制御の方式について説明を始めると、それこそ電気の歴史みたいになってしまいますので、ここでは省電力の信号制御を主な用途にしている「バイポーラトランジスタ」について使い方を説明したいと思います。  このバイポーラトランジスタには「NPN型」と「PNP型」があります。 三本の端子が出ているのが一般的で、それぞれE:エミッタ、C:コレクタ、B:ベースと呼ばれています。 NPNトランジスタはベース-エミッタ間に流れる電流を制御する事でコレクタ-エミッタ間に流れる電流を制御することが出来ます。 PNPトランジスタの場合は少し複雑になり、ベース-コレクタ間の電圧を制御する事でエミッタ-ベース間に流れる電流が変化し、この電流の変化でエミッタ-コレクタ間の電流を制御する事が可能になっています。 両タイプのトランジスタで簡単なON/OFFを制御する回路を描くと、下図の様になります。  それぞれの使い方に適した用途がありますが、マイコンの制御電源と別の電源を使用する事が多いモーター等の機器を使用する場合はNPNトランジスタによる制御回路を構築する事が多いと思います。 # トランジスタ制御回路の構築 実際にトランジスタを使いモーターを動かす回路を構築してみます。 最初に使用するモーターの使用を確認します。 ### マブチモーター「FA-130RA-2270」仕様 詳細については[マブチモーター(株)公式サイト](https://product.mabuchi-motor.co.jp/detail.html?id=9)のカタログスペックもご覧ください。 |項目| 値 |単位| |---|---|---| |型式|FA-130RA/2270| | |電圧|動作範囲:1.5~3.0(公称値:1.5)|V | |無負荷時回転数|9100|r/min | |無負荷時電流|0.20|A | |定格回転数|6990|r/min(最大効率時)| |定格電流|0.66|A(最大効率時)| |定格トルク|0.59/6.0|mN・m/g・cm(最大効率時)| |定格出力|0.43|w(最大効率時)| |ストールトルク|2.55/26|mN・m/g・cm| |ストール電流|2.20|A| ここで消費電流が0.66A=660mAとあります。制御に使用するトランジスタはコレクタにこの値が流せないと安定して制御する事が出来ないのですが、ここで一つ注意があります。 モーターは止まっている状態から急に動き出した時や、突然加速する様な制御をした場合、定められている値を上回る大きな電流が流れる事があります。 これを突入電流といい、カタログに記載がある場合を除けば、大体1.2倍~1.5倍程度の電流が瞬間的に流れます、と考えて置けばいいと思います。 ==モーターの仕様書等に記載のある「ストール電流」とは、構想上の最大トルクが発生している=モーターが回転できない状態のときに流れる最大の電流値を示します。通常ストールする様な状態でモーターを使用するのはたいへん危険ですので、動くものを作る時はモーターのトルクに余裕があるものを選定して、それを充分制御できるトランジスタ等の電子部品を選ぶようにしましょう。== 今回は消費電流660mA×1.2倍=792mA、区切りよく800mAが流せるトランジスタを選定します。 電子部品のカタログや通販サイトを調べるとコレクタ電流がちょうど800mAのトランジスタに「2SC2120-Y」が見つかりました。 このトランジスタを使用する事にして、制御に必要なベース電流の値をデータシートに記載されているグラフから確認します。 多くの通販サイトが電子部品のデータシートをダウンロードできる様になっていますが、見つからなかった場合は検索サイトで 「(部品の型番) データシート」 と調べてみると良いでしょう。 データシートから電流値を確認して、マイコンとベース間に割り込ませる抵抗の値を計算で求め電子部品を準備します。  最初に、データシートから「コレクタ・エミッタ間電圧 VCE」と「コレクタ電流 IC」の関係を示したグラフを見つけます。 今回モーターを動作させる電圧は3Vを想定していますので、横軸VCEが3Vのところから上に登っていき、グラフの線が交わる交点を探します。  一番上の交点が750mA位のところを示しています。先ほどの計算では定格電流660mAの1.2倍で約800mAと想定しましたが、グラフ上最大値は750mA位になるという事の様です。  交点からそのまま右にずらしていくと、グラフの右側にも数字が並んでいます。この数値が必要なベース電流の値を示しています。今回の場合6mAと7mAの大体中間を示していますから、ベース電流は6.5mAという事になります。 使用しているArduinoUnoのピン出力は5Vですから、必要な抵抗の値は ### (信号電圧5V)÷(ベース電流6.5mA)=769Ω という事になります。カーボン抵抗は連即した数字2桁×10のn乗で使用が定められているので、近い値である750Ωの抵抗を選定し、回路を構築してみましょう。  選定した部品で回路を構築したら、1秒おきにモーターをON/OFFするプログラムを動かしてみましょう。 ```arduino:1秒おきにモーターを回転/停止させるプログラム /*****************************************************************/ int Motor = 13; // モーター動作確認用に13番ポートのLEDも利用します。 int Time = 1000; // 連続動作時間を指定します。 void setup() { pinMode(Motor, OUTPUT); } void loop() { digitalWrite(Motor, HIGH); // モーター回転 delay(Time); digitalWrite(Motor, LOW); // モーター停止 delay(Time); } /*****************************************************************/ ``` 今回はプログラムが簡単です。周辺の回路の準備が出来れば、制御するプログラム自体はそう難しくないという事が判ると思います。 また、今回の回路はモーターを1方向にON/OFFするだけになっています。この様な制御回路は「I(アイ)ブリッジ」と呼ばれており、方向固定の回転制御を行う時に使用されています。 ですが色々動く電子工作を作る様になると、回転方向の切り替えを含めた速度コントロールが出来る様になった方が何かと便利です。 次回の投稿では、モーターの回転方向迄制御できる「Hブリッジ」の概要を説明した上で、もっと手軽にモーター制御が行えるドライバーICのコントロール方法について解説したいと思います。