ラズパイから出力された電気信号を、物理的な動き(回転運動や直線運動)に変換する電気部品を、アクチュエーターと呼びます。モーターやソレノイド(電磁石)が代表的な例です。それぞれ、様々な仕様のものが市販されています。今回は、ブラシ付きモータ(DCモータ)とブラシレスモータの動作原理、ラズパイとの接続、プログラミングについて紹介します。
ブラシ付きモーター
モーターは電力を機械的な力(回転力)に変換します。モーターにはさまざまな種類・構造のものがありますが、まずはもっとも一般的なブラシ付きモーターについて解説します。
リレーと同様に、モーターはコイルに電流が流れると磁場が発生する、という現象を応用した電気部品です。磁場の方向(N極・S極)は、電流の流れる方向によって決まります。電流の方向が逆になれば、磁場の方向も逆になります。
ブラシ付きモーターを構成する要素の一つが「ステーター(固定子)」です。動かないように固定されていて、磁場を帯びています。ブラシ付きモーターでは、ケーシングの内側に永久磁石を配置したものが多く見られます。
もう一つの要素が「ローター(回転子)」で、こちらが電気エネルギーを受けて回転します。
回転軸に取り付けられた鉄心の周りに巻き線をコイル状に配置したものです。
モーターを回転させるためには回転しているローターに電流を流す必要があります。
常に回転してい部品なので、当然直接電線でつなぐということはできません。
そこで、「整流子」と「ブラシ」という部品を使います。
ローターに取り付けた電極(整流子)を、ケーシングに取り付けたブラシでこすりながら電流を流します。
コイルの電流の向きをうまくコントロールできるように、両者の形状や配置は工夫されています。
回転しながらローターの磁場の方向が自動で切り替わり、ステーターの永久磁石と引き合ったり反発しあったりして、モーターが連続して回転することができるのです。
こうした原理で動作するモーターは直流電源で動作します。交流電源で動作するモーターもありますが、趣味の工作ではあまり使用されません。
モーターはエンジンなどの他の動力機関に比べて多くの利点があることから、非常に幅広い用途に利用されています。
- モーターはエネルギーの変換効率が非常に高く、供給した電気エネルギーのほとんどを運動エネルギーに変換することができます。
- エンジンは回転数を広範囲にコントロールすることが難しいため、自動車などは変速機(トランスミッション)を利用してその時々に最適な回転数を作り出しています。一方、モーターは回転数を簡単に広範囲にコントロールできることから、自動車産業でも次世代の動力源として注目されています。
- モーターは摩耗部分が少なく、耐久性にも優れています。
ブラシと整流子、軸受け部分以外に接触部分がないため、メンテナンスはこれらの部分だけで済みます。 - 磁界をうまく制御することで、電磁力によるブレーキをかけることも可能です。
通常の物理的なブレーキは摩耗する部品のメンテナンスが必要ですが、電磁力によるブレーキは摩耗する部分がないのでメンテナンスを行わずに済みます。 - モーターは構造が発電機と似ていて、モーターを回転させると電気が発生します。
この電気をバッテリーの充電などに利用すればエネルギーの無駄の少ないブレーキになります。電気自動車やハイブリッド自動車、電車のブレーキなどに応用されています。
趣味の工作の分野で最も多くモーターが利用されているのは模型製作ではないでしょうか。
小型のエンジンよりも製作も動作も制御もはるかに簡単に行えます。
Raspberry Piでモーターを使用する場合、GPIOピンに直接つないではいけません。
モーターは動作に大きな電流が必要で、Raspberry Piの内部回路が電流に耐え切れず壊れてしまいます。
直流モーターを使用するときには、モータードライバーを使用すると簡単に制御を行えます。Raspberry Piとモーターとの間に設置し、モーターを回転させる電流を供給します。完成品のモジュールやICが数多く流通しています。Raspberry Piで使用する場合には、通常はRaspberry PiからPWM信号を出力してモーターの回転速度を制御します。
PWMとは、Pulse Width Modulationの略で、パルス幅変調という意味です。周波数一定のパルスのうち、ONの時間とOFFの時間との比を変えた信号を出力します。 モーターの制御に使用した場合、ONの時間が長ければモーターは早く、OFFの時間が長ければゆっくり回転します。
以下の例のモータードライバーはDRV8835を使用します。詳細は製品ページ( https://www.pololu.com/product/2135/ )を参照してください。モータ制御は下記のとおりです。
xIN1 | xIN2 | xOUT1 | xOUT2 | 制御 |
---|---|---|---|---|
0 | 0 | OPEN | OPEN | 停止(惰性) |
PWM | 0 | PWM | L | 順方向回転 PWM % |
0 | PWM | L | PWM | 逆方向回転 PWM % |
1 | 1 | L | L | 停止(ブレーキ) |
モータードライバーの接続はいたってシンプルです。
2つある入力の片側をGPIO18番ピンに、もう一方をGNDに接続します。ここで2つある入力のどちらにGPIOピンをつなぐかで回転方向が決まります。
GPIOピンからモータードライバーにHIGHレベルの電圧が入力されると、内部のトランジスタが動作してモーターに電流を流します。
Pythonプログラムの中身も非常にシンプルで、GPIO 18番ピンにPWM信号を出力しているだけです。この例では、モーターの回転速度が6段階に切り替わります。
import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BCM) GPIO.setup(18, GPIO.OUT) pwm = GPIO.PWM(18, 50) pwm.ChangeDutyCycle(10) pwm.start(0) time.sleep(1) pwm.ChangeDutyCycle(10) time.sleep(1) pwm.ChangeDutyCycle(25) time.sleep(1) pwm.ChangeDutyCycle(50) time.sleep(1) pwm.ChangeDutyCycle(75) time.sleep(1) pwm.ChangeDutyCycle(100) time.sleep(1) pwm.stop GPIO.cleanup()
ブラシレスモーター
整流子とブラシを用いた通常の直流モーターは先に述べたような多くの利点がありますが、欠点もあります。
- 整流子とブラシはローターの回転に合わせて常にこすり合わせられています。
整流子に負担がかからないよう、ブラシはある程度柔らかい材料で作られているので、使用とともに摩耗していきます。 - このため、定期的にブラシの交換が必要になりますが、モーターを簡単に触れないような用途に使用した場合、ブラシの交換ができない・難しいという事態になってしまいます。
- 摩耗したブラシは導電性の粉塵を発生させてしまうので、こちらの定期的なメンテナンスも必要です。
- 整流子とブラシを常にこすり合わせながら回転するので、どうしても摩擦によってエネルギーが失われてしまい、電圧降下も発生します。
- 直流モーターは特に高負荷で動作しているときにブラシ部分でスパーク(火花)が発生することがあり、用途や使用する環境によっては危険を伴います。
例えばパソコンのハードディスクを動かすモーターなどはブラシを利用した直流モーターが使えない代表的な用途と言えます。
電力の供給に整流子とブラシを使用しているということが、こうした欠点を生み出してしまっています。
こうした欠点を解消したモーターがブラシレスモーターです。
その名の通りブラシを使用していないため、メンテナンスが必要な個所は軸受け部分のみになります。
これは、直流モーターが整流子とブラシで行っていた電流・磁界の切り替え操作をマイコンなどで置き換えることで実現しました。
モーターに取り付けたセンサーでローターの角度を検知し、モーターが回転し続けられるように電流の流れを切り替えて制御します。
ブラシ付きモーターとは構造が逆になっていて、ステーターがコイル、ローターが永久磁石になっています。
ブラシレスモーターの最大の長所は摩耗部分が少なく寿命が長いことです。エネルギーの変換効率もよく、スパークも発生しません。
欠点は、部品点数が多くなり、構造が複雑になってしまうということです。
また、直流の電流を流すだけでは動作しません。モーターが回転させ続けられるように電流を流すコイルと電流の向きを、マイクロコントローラで制御する必要があります。ブラシレスモーターを動作させるための専用のマイコンユニットをESC(Electronic Speed Controller)と呼びます。
ブラシレスモーターやESCはどんどん小型化され、価格も安くなっていることから様々な分野で直流ブラシ付きモーターに代わって使用されるようになりました。
ブラシレスモーターをRaspberry Piで制御するためには、図5のように配線します。
【注意】ブラシレスモーターは強力に回転するものや非常に高速で回転するものがあり、固定が不完全だと暴れたりして危険な場合があります。また、高電圧のバッテリーや取り扱いの難しいバッテリーを使用する場合もあります。モーターやESC、バッテリーの説明書などをよく確認し、細心の注意を払って実験を行ってください。
ESCからRaspberry Piに接続するケーブルは2本だけです。
ESCには3本の制御線があります。通常、電源、GND、信号線の3本です。
多くの場合、電源が赤、GNDが黒、信号線が白や黄色になっています。
電源線はESCに接続されたバッテリーや電源から制御回路に電源を供給する線なので、Raspberry Piには接続しません。
Raspberry PiとESCそれぞれのGNDを接続します。信号線はRaspberry PiのGPIO18番ピンに接続してPWM信号を入力して制御します。
ECSとブラシレスモーターを接続する電線は3本あり、マークが付けられています。
モーターの回転方向を逆にしたい場合には3本のうち2本を入れ替えると逆回転させることができます。
すべて接続し、モーターをしっかりと固定したら、以下のpythonプログラムを実行してみてください。
import time import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) GPIO.setup(18, GPIO.OUT) motor = GPIO.PWM(18, 100) motor.start(0) motor.ChangeDutyCycle(10.0) time.sleep(2) motor.stop() GPIO.cleanup()
使用するブラシレスモーターやESCによってはこのサンプルプログラムが動作しない可能性があります。ブラシレスモーターやESCの説明書・データシートなどを確認してください。
コメントを残す