AbudoriLab.

自律ロボットで誰でも遊べるよう試行錯誤するブログです。

ROSで使える!電子工作を始めよう 入門編 -超初級 モータを回してみよう-

AbudoriLab.です。

今回は電子回路に切り込んでいきます。

世の中には回路入門なテキストがたくさんありますが、回路に興味を持っていざ勉強を始めると思うと具体的に何から手をつければよいかわかりにくいものばかりです。

このシリーズでは、ROSに興味を持った人が全く電子回路がわからない状態から、ROSでモータを制御する基板を作成できることを目標としています。

ROSで動作する基板ということで、基本なモータ制御基板の原型をこのシリーズで作っていきたいと思います。

これを見れば、初心者がとりあえず簡単なセンサ基板も作れるようになるようなベースとなれるような記事を目指していこうと思いますのでお楽しみに!

電子工作始めよう記事の構成について

本シリーズ記事のゴールとして、ROSからArduino系のマイコンを制御し、ブラシ付きDCモータを任意の速度(rpm)でLinux上で制御できる基板を作成します。

記事の構成として

  • 入門編 :とりあえず、モータを回してみる ← 【本記事】
  • 基本編 マイコンを使った基板を作ってみよう
  • 応用編 :ROSと通信してみよう

の内容で進めていこうと思っています。

最終的に自作基板でROSと通信するサンプルを作れるようになります。

Arduinoマイコン 基板(Arduino互換機やESP32など)は出来合いのものを使用するので、完全に一枚の完全自作基板は要望があればシェアしたいなと思います。

モータを回してみる

モータを制御できるために、はじめに知らないといけない"モータを回転させる方向"や"モータを早く回転させる"方法について回路を用いてご紹介します。

用意するものは電池とモータと導線です。

f:id:abudori:20220208002624p:plain
f:id:abudori:20220211004007p:plain
f:id:abudori:20220208003345p:plain
図1 モータを時計回りに回す 図2 モータを反時計回りに回す 図3 直列つなぎで速く回す

図1のように繋ぐと、電池から赤い矢印の方向に電流が流れ、モータは時計回りに回転するとします。

この時計回りの回転を今後はClockWise: CWと表記します。

一方、図2のように電池を逆向きに繋ぐと、赤い矢印の方向に電流が流れ、図1とは逆方向に回転させることができます。

この反時計回りの回転を今後はCounterClockWise:CCWと表記します。

また、図3のように電池を2つ直列に繋ぐと図1の時よりも速く回すことができます。

電圧・電流・抵抗の関係

電圧と電流と抵抗について改めて復習します(初歩なので読み飛ばしてOKです)。

説明のために電気の性質を水槽とパイプと水に例えます。図4のように電池を水槽、モータや豆電球などの抵抗を水を排出するパイプ、パイプから排出される水を電流とします。

f:id:abudori:20220210235041p:plain

図4 水槽モデル

電池という水槽からパイプという抵抗を通じて出てきた水が電気エネルギー、つまりモータが回転したという仕事エネルギーと発生する熱エネルギーにあたります。

電池、抵抗を直列繋ぎにしたモータ回路について考えてみる

 

f:id:abudori:20220211000544p:plain
f:id:abudori:20220211000541p:plain
図5 電池を直列つなぎ 図6 モータも直列つなぎ

電池を直列つなぎにした場合、図5のように縦に水槽を縦に繋いだ状態と考えましょう。

水槽の高さが変わり水圧が高くなるため、水は勢いよく排出されます。

これを回路に置き換えて考えると、電圧は高くなりモータを早く回すことが可能になります。

水の勢いを決める要因、電気における位置エネルギーまたはポテンシャルエネルギーです。

次に、モータを直列つなぎにした場合、図6のようにパイプを繋いだ状態と考えましょう。

パイプの長さが2倍となるので、水が排出されるまでに時間がかかり勢いが徐々に落ちてより流れにくい(抵抗が高い)状態となります

したがって、抵抗が増えると電流は流れにくくなるためにモータは遅く回ります。

電池,抵抗を並列繋ぎにしたモータ回路について考えてみる
 
f:id:abudori:20220211001642p:plain
f:id:abudori:20220211001659p:plain
f:id:abudori:20220211002825p:plain
図7 電池を並列つなぎ 図8 モータを並列つなぎ 図9 抵抗の並列は流れやすくなる

電池を並列に繋いだ場合は図7のように、水槽を縦ではなく横に並べた状態になります。水槽の高さは同じで流れにくさも変わりません。

ただ、水槽の容量は2倍になるので、長い時間モータを回すことができます。

スマホの電池が3000mAh→6000mAhになったのと同じです。

抵抗を並列に繋いだ場合は図8のようにパイプが2つに増えた状態になります。

また、図9のようにパイプの断面積が2倍に増えたとも考えることができ、水(電流)が流れやすくなった状態になります。

この時は電圧が変わらず、抵抗は1/2倍になるので、電流は2倍になります。

モータを並列につなげた場合は図4の時とモータの速度に変化はありませんが、それぞれ同じ量の電流が流れるため、60分持つ電池が30分で空になります。

任意のタイミングで正転・逆転させるには?

前半で電池の向きを変えることで、モータを正転・逆転させることを紹介しました。

ここで、モータを移動ロボットに載せた場合を考えてみます。

図9のLapinを例に考えてみると、左側車輪をCCW、右側車輪をCWに回すことで前進することができます。

f:id:abudori:20220227232859p:plain

図9 移動ロボットLapinのモータ回転方向

後退したい時は左側車輪をCW、右側車輪をCCWに回すことができます。

ただ、図1と図2のように、その時々に手動で電池を入れ替えるわけにはいきません。

そこで、その課題を解決する方法であるHブリッジ回路をご紹介します。

Hブリッジ回路は図10のような回路になります。

 

f:id:abudori:20220211005833p:plain
f:id:abudori:20220211005837p:plain
f:id:abudori:20220211005840p:plain
図10 Hブリッジ 図11 CWに回転させる回路 図12 CCWに回転させる回路

Hブリッジ回路にはスイッチが4つあり、図11のようにSW1/SW4を閉じたり、図12のようにSW2/SW3を閉じることで、モータの電流の方向を簡単に逆転させることができます。

このような簡単な工夫で自由に回転方向を変えることができます。

実際にモータを扱う上では、このような回路を自分で組む必要はなく、パッケージ化されたICが売られています。

今回は東芝TB67H450を例に見てみましょう。

akizukidenshi.com

 

秋月電子ページよりICの詳細情報であるデータシートを確認することができます。

データシートから抜粋すると、5番ピンに電池の+(VM)、1番ピンにー(GND)を接続、6、8番ピンにモータを接続、2、3番ピンにマイコンの正転、逆転指示するピンを接続するとHブリッジが完成します。

具体的な接続方法は次の記事で説明いたします。自分で作らなくてもHブリッジ回路が簡単に作れるICが存在するよ、とだけ認識してください。

入出力ファンクション表を参考に、マイコンのプログラムでTB67H450の2番ピン(IN1)をH、3番ピン(IN2)をLと出力すると正転、その逆で2番ピン(IN1)をL、3番ピン(IN2)をHと出力すると逆転するようになります。

f:id:abudori:20220228001058p:plain

東芝XXXデータシートより入出力ファンクションと入出力端子

https://akizukidenshi.com/download/ds/toshiba/TB67H450FNG_datasheet_ja_20190401.pdf


秋月電子通商より実際の部品

https://akizukidenshi.com/catalog/g/gK-14753/


akizukidenshi.com

 

任意の速度で回してみよう

モータを正転、逆転させることはできました。

次に好きな速度で回してみましょう。

前半で電圧(電池の直列繋ぎの個数)でモータの速度が変わることを説明しました。

しかし、ロボットの速度を変えるごとに電池の個数を毎回替えるわけにはいきません。

世の中の多くのモータは電源と繋がる回路を高速でONOFFする制御を繰り返すことで、任意の速度で回すことを実現させています。

乾電池4本を直列にした回路を例に考えてみましょう。

乾電池はおよそ1.5Vなので、合計で6Vになります。これを電池を2本で3V、3本で4.5Vに次々と変える…とはやりたくないですよね。

Hブリッジの時のように、スイッチをONOFFすることで仮想的に電池を2本にした回路、2.5本にした回路、に即時に替えることができます。

f:id:abudori:20220211013126p:plain

図13 電池4直列つなぎ時のモータ回転速度

まず、電池4本直列の回路でモータを回した時の回転数を表現してみました。

電源スイッチをオンにすると通電して徐々に回転数が上がっていき、最高速度に達した時、速度が一定になります。

スイッチでオフにすると、モータの回転数は徐々に下がっていき最終的には停止します。

f:id:abudori:20220211013129p:plain

図14 電池2直列つなぎ時のモータ回転数

電池2本直列の回路でも同様にオンにすると図13のようにモータ回転数は変化しますが、回転数は電圧が半分であるため、回転数も半分となります。

 

f:id:abudori:20220227233357p:plain

図15 電池4直列つなぎ時にスイッチをONOFFした時のモータ回転数

 

次に、電池4本直列の回路に戻して、モータの最高回転数に上がる前にスイッチオフ、停止する前にスイッチオンを繰り返します。

するとどうでしょう。上がったり下がったりを繰り返し、図14の時の電池2本直列回路と同じ回転数で回転させることができます。

このとき、オンとオフの時間の割合は1:1です。電源がオンになっている時間が50%なので、6Vに対して50%の3Vと同じ回転数で回転していることがわかります。

f:id:abudori:20220221174600p:plain

図16 3:1の割合でオンオフ操作をし続けた時のモータ回転数

同じように、オンとオフの時間の割合を3:1にすると、電池3本直列した回路と同じように回転します。

つまり、オンとオフの時間変えることで、好きな電圧を仮想的に作ることができます。モータの回転数を最大回転数から停止までの好きな回転数で回すことができます。

このオンとオフのタイミングをマイコンで制御することでモータを制御することができます。

モータの制御理論については別の記事で解説予定です。

次回、試作基板を考えてみよう

簡単な回路を元にモータを正転、逆転、自由な速度で回す方法を解説しました。

次回はこれを実現する回路を実際に作ってみます。

電源は扱いやすいACアダプターを使い、マイコンでモータドライバに入力し回転速度を制御することができる基板を作っていきます。

 

次回の記事はこちら!!

www.abudorilab.com