


モーター制御回路の回路図
| 部品 | 型番 | 数量 | 役割 |
|---|---|---|---|
| PNPトランジスタ | BC327 | 4個 | Hブリッジの上側スイッチ |
| NPNトランジスタ | BC337 | 4個 | Hブリッジの下側スイッチ |
| ショットキーバリアダイオ―ド | 1N5819 | 8個 | モータの逆起電力からトランジスタを保護 |
| 抵抗 | 220R | 8本 | トランジスタのベース電流を制限 |
| 抵抗 | 10k | 8本 | PNP側のプルアップおよびNPN側のプルダウン |
| セラミックコンデンサー | 10nF | 2個 | モータから発生する高周波ノイズを低減 |
| ピンヘッダ | 14PIN | 1個 | Arduino、電源、モータおよび周辺回路との接続 |
| ユニバーサル基板 | - | 1枚 | モータ制御回路を実装 |
表1モーター制御回路に使用した部品
図 12 PIN端子
図12を示す。黒点を付けた右端を1番ピンとし、左方向に向かって2番から14番まで割り当てた。1番および2番ピンを左側モータ、3番から6番ピンを左側モータの制御信号入力、7番から10番ピンを右側モータの制御信号入力、11番および12番ピンを右側モータ、13番および14番ピンを4.5 V電源に接続した。
表2 ピン配置
| 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| + | - | + | - | Q1 | Q3 | Q2 | Q4 | Q6 | Q5 | Q8 | Q7 | + | - |
| 4.5V電源 | 右側モーター | 対応するトランジスタの番号 | 左側モーター | ||||||||||
表3 各動作におけるHブリッジ回路の電流経路
| 動作 | M1の電流経路 | M2の電流経路 |
|---|---|---|
| 前進 | +4.5 V → Q1 → M1→ Q4 → GND | +4.5 V → Q5 → M2→ Q8 → GND |
| 右折 | +4.5 V → Q2 → M1→ Q3 → GND | +4.5 V → Q5 → M2→ Q8 → GND |
| 左折 | +4.5 V → Q1 → M1→ Q4 → GND | +4.5 V → Q7 → M2→ Q6 → GND |
BC337及びBC327を選ぶ理由
NPNトランジスタとして2SC1815とBC337-40BUが配布された。2SC1815の最大コレクタ電流は150 mAであるのに対し、BC337-40BUは800 mAまで対応できる。両モーターの拘束電流及び回転電流の実測値は表4を示す。
表4モーター電流の実測値
| 条件 | 電源電圧(V) | 電流(A) |
|---|---|---|
| 両モーター回転時 | 4.60 | 0.18 |
| 両モーター拘束時 | 4.60 | 0.54 |
合計0.54 Aであり、1個のモーターでは約0.27 Aとなるため、2SC1815では電流容量が不足する。したがって、電流容量に余裕のあるBC337-40BUをHブリッジの下側トランジスタとして採用した。また、Hブリッジの上側にはBC337の相補型PNPトランジスタであるBC327を使用した。
ベース抵抗(R1-R8)は220Ωを選ぶ理由
4.60 Vで測定した結果、2個のモータの通常回転時の電流は合計0.18 A、拘束電流は合計0.54 Aであった。左右に同じ電流が流れるとすると、1個当たりの電流は、
となる。
BC337およびBC327のデータシートでは、飽和電圧の測定条件IC=500mA,IB=50mAであるため、強制電流増幅率は
となる。
したがって、通常回転時に必要なベース電流は、
となる。
一方、Arduinoの端子電流は最大20mAであるため、ベース電流を9−20mAに限定する。ベース・エミッタ間電圧を0.7 Vとすると、NPN側の抵抗範囲は、
となる。
PNP側では
となる。複数の標準抵抗値が条件を満たすが、トランジスタを確実に飽和させるため、より大きなベース電流を確保できる220 Ωを採用した。このとき、
となり、ただし、NPN側の電流は約19.5 mAとなり、Arduinoの上限に近いため、余裕は小さい。
10 kΩ抵抗の役割(R9、R10を例として)
R9は、PNPトランジスタのベースを電源側に引き上げるプルアップ抵抗である。これにより、Arduinoの出力端子が不定状態または高インピーダンス状態になった場合でも、PNPトランジスタをOFFに保つ。
一方、R10は、NPNトランジスタのベースをGND側に引き下げるプルダウン抵抗である。これにより、NPNトランジスタの意図しない導通を防止する。
10 kΩは220 Ωのベース抵抗より十分に大きいため、通常の制御時にベース電流へ与える影響を小さくしながら、Arduinoの起動時やリセット時に各トランジスタの状態を安定してOFFに保つことができる。
1N5819の役割
トランジスタをOFFにしても、モーターのコイルに流れていた電流は急にはゼロにならず、同じ方向に流れ続けようとする。この電流は1N5819を通って電源側へ戻る経路を形成する。例えば、左モーターが正転した際、トランジスタがOFFするときの逆起電流の経路は(GND→D3→M1→D2→4.5V)である。これにより、逆起電力による急激な電圧上昇を抑え、トランジスタを保護する。
10 nFコンデンサーの役割
10 nFコンデンサーはモーターの端子間に接続し、ブラシと整流子の接触や切替えによって発生する高周波ノイズを低減するために使用する。高周波成分をコンデンサに流すことで、電源線や配線へのノイズの伝播を抑え、光センサの検出値やArduinoの動作を安定させる。
本回路ではHブリッジを2組使用することで、左右のモータの正転,逆転を個別に制御し、前進、右折および左折を実現できた。また、1N5819によって逆起電力の電流経路を確保し、モータ端子間の10 nFコンデンサによってブラシから発生する高周波ノイズを低減する構成とした。
4.60 Vで測定した結果、2個のモータの通常回転電流は合計180 mA、拘束電流は合計540 mAであった。1個当たりではそれぞれ約90 mA、270 mAとなり、BC327およびBC337の最大コレクタ電流800 mA以下であるため、電流定格には余裕がある。ただし、拘束状態が続くとモータとトランジスタが発熱するため、長時間の拘束は避ける必要がある。220 Ωのベース抵抗によって、通常走行時に必要なベース電流を確保できた。一方、NPN側のベース電流は約19.5 mAとなり、Arduinoの端子電流20 mAに近いため、抵抗値や電源電圧の変動に対する余裕が小さい。
一方、設計ミスもあります。通常動作時にはHブリッジ回路によってモータの正転・逆転を制御できた。しかし、Arduinoの電源をOFFにし、モータ用4.5 V電源のみを接続した場合、複数のトランジスタが急激に発熱する現象が確認された。この原因として、PNPトランジスタのベースから220 Ω抵抗とArduinoの端子を通して、電源が切れたArduinoの内部保護回路へ電流が流れた可能性が考えられる。その結果、PNPのベース電圧が低下してPNPが導通するとともに、Arduinoが不完全に給電され、NPNの制御状態も不定になったと推測される。上側のPNPと下側のNPNが同時に導通すると、4.5 V電源からGNDへ貫通電流が流れ、トランジスタが発熱する。今回使用した10 kΩのプルアップとプルダウン抵抗は、Arduinoの通常起動時に端子状態を安定させる効果はあるが、Arduinoの電源が切れた状態で流れる電流を完全には防止できなかった。このことから、異なるの電源を使用する場合には、通常動作だけでなく電源投入と遮断の順序も考える必要がある。
改善方法として、Arduinoとモータ用電源を同時に遮断できる2回路スイッチを使用することが挙げられる。また、ArduinoとPNPトランジスタの間にNPN前段ドライバを追加する。Arduinoの出力がHIGHになるとNPNがPNPのベースを低くしてPNPをONにする。一方、Arduinoの電源が切れた場合はNPNがOFFとなり、10 kΩ抵抗によってPNPのベースが4.5 Vへ引き上げられる。これにより、4.5 V電源からArduinoへの電流流入を防ぎ、電源遮断時の貫通電流を抑制できる。ただし、PNPの制御論理をLOWでONからHIGHでONに変更する必要がある。