• Skip to main content
  • Skip to primary sidebar
  • Skip to footer
  • HOME
  • Arduino
    • Arduino初心者編
    • Arduino基礎編
    • Arduino応用編
    • Arduino実践編
  • Raspberry Pi
  • microbit
  • XBee
  • Scratch
  • Contact Us
  • Privacy Policy

STEMSHIP

ものづくりを通して、科学を学ぼう!

現在の場所:ホーム / Raspberry Pi / Raspberry Pi はじめてのラズパイ:ブラシ付きモータとブラシレスモータを制御する

Raspberry Pi はじめてのラズパイ:ブラシ付きモータとブラシレスモータを制御する

2020年11月4日 by STEMSHIP 2 コメント

ラズパイから出力された電気信号を、物理的な動き(回転運動や直線運動)に変換する電気部品を、アクチュエーターと呼びます。モーターやソレノイド(電磁石)が代表的な例です。それぞれ、様々な仕様のものが市販されています。今回は、ブラシ付きモータ(DCモータ)とブラシレスモータの動作原理、ラズパイとの接続、プログラミングについて紹介します。

ブラシ付きモーター

モーターは電力を機械的な力(回転力)に変換します。モーターにはさまざまな種類・構造のものがありますが、まずはもっとも一般的なブラシ付きモーターについて解説します。

リレーと同様に、モーターはコイルに電流が流れると磁場が発生する、という現象を応用した電気部品です。磁場の方向(N極・S極)は、電流の流れる方向によって決まります。電流の方向が逆になれば、磁場の方向も逆になります。

  • 図1 ブラシ付き直流モーターの構造

ブラシ付きモーターを構成する要素の一つが「ステーター(固定子)」です。動かないように固定されていて、磁場を帯びています。ブラシ付きモーターでは、ケーシングの内側に永久磁石を配置したものが多く見られます。

もう一つの要素が「ローター(回転子)」で、こちらが電気エネルギーを受けて回転します。
回転軸に取り付けられた鉄心の周りに巻き線をコイル状に配置したものです。

モーターを回転させるためには回転しているローターに電流を流す必要があります。
常に回転してい部品なので、当然直接電線でつなぐということはできません。

そこで、「整流子」と「ブラシ」という部品を使います。
ローターに取り付けた電極(整流子)を、ケーシングに取り付けたブラシでこすりながら電流を流します。

コイルの電流の向きをうまくコントロールできるように、両者の形状や配置は工夫されています。
回転しながらローターの磁場の方向が自動で切り替わり、ステーターの永久磁石と引き合ったり反発しあったりして、モーターが連続して回転することができるのです。

図2 ブラシ付き直流モーターの動作原理

こうした原理で動作するモーターは直流電源で動作します。交流電源で動作するモーターもありますが、趣味の工作ではあまり使用されません。
モーターはエンジンなどの他の動力機関に比べて多くの利点があることから、非常に幅広い用途に利用されています。

  • モーターはエネルギーの変換効率が非常に高く、供給した電気エネルギーのほとんどを運動エネルギーに変換することができます。
  • エンジンは回転数を広範囲にコントロールすることが難しいため、自動車などは変速機(トランスミッション)を利用してその時々に最適な回転数を作り出しています。一方、モーターは回転数を簡単に広範囲にコントロールできることから、自動車産業でも次世代の動力源として注目されています。
  • モーターは摩耗部分が少なく、耐久性にも優れています。
    ブラシと整流子、軸受け部分以外に接触部分がないため、メンテナンスはこれらの部分だけで済みます。
  • 磁界をうまく制御することで、電磁力によるブレーキをかけることも可能です。
    通常の物理的なブレーキは摩耗する部品のメンテナンスが必要ですが、電磁力によるブレーキは摩耗する部分がないのでメンテナンスを行わずに済みます。
  • モーターは構造が発電機と似ていて、モーターを回転させると電気が発生します。
    この電気をバッテリーの充電などに利用すればエネルギーの無駄の少ないブレーキになります。電気自動車やハイブリッド自動車、電車のブレーキなどに応用されています。

趣味の工作の分野で最も多くモーターが利用されているのは模型製作ではないでしょうか。
小型のエンジンよりも製作も動作も制御もはるかに簡単に行えます。

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/ )を参照してください。モータ制御は下記のとおりです。

xIN1xIN2xOUT1xOUT2制御
00OPENOPEN停止(惰性)
PWM0PWML順方向回転
PWM %
0PWMLPWM逆方向回転
PWM %
11LL停止(ブレーキ)

モータードライバーの接続はいたってシンプルです。
2つある入力の片側をGPIO18番ピンに、もう一方をGNDに接続します。ここで2つある入力のどちらにGPIOピンをつなぐかで回転方向が決まります。
GPIOピンからモータードライバーにHIGHレベルの電圧が入力されると、内部のトランジスタが動作してモーターに電流を流します。

  • 図3 モータードライバーによるモーター制御

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()

ブラシレスモーター

整流子とブラシを用いた通常の直流モーターは先に述べたような多くの利点がありますが、欠点もあります。

  • 整流子とブラシはローターの回転に合わせて常にこすり合わせられています。
    整流子に負担がかからないよう、ブラシはある程度柔らかい材料で作られているので、使用とともに摩耗していきます。
  • このため、定期的にブラシの交換が必要になりますが、モーターを簡単に触れないような用途に使用した場合、ブラシの交換ができない・難しいという事態になってしまいます。
  • 摩耗したブラシは導電性の粉塵を発生させてしまうので、こちらの定期的なメンテナンスも必要です。
  • 整流子とブラシを常にこすり合わせながら回転するので、どうしても摩擦によってエネルギーが失われてしまい、電圧降下も発生します。
  • 直流モーターは特に高負荷で動作しているときにブラシ部分でスパーク(火花)が発生することがあり、用途や使用する環境によっては危険を伴います。
図4 模型製作用ブラシレスモータ

例えばパソコンのハードディスクを動かすモーターなどはブラシを利用した直流モーターが使えない代表的な用途と言えます。
電力の供給に整流子とブラシを使用しているということが、こうした欠点を生み出してしまっています。

こうした欠点を解消したモーターがブラシレスモーターです。
その名の通りブラシを使用していないため、メンテナンスが必要な個所は軸受け部分のみになります。
これは、直流モーターが整流子とブラシで行っていた電流・磁界の切り替え操作をマイコンなどで置き換えることで実現しました。

モーターに取り付けたセンサーでローターの角度を検知し、モーターが回転し続けられるように電流の流れを切り替えて制御します。
ブラシ付きモーターとは構造が逆になっていて、ステーターがコイル、ローターが永久磁石になっています。

ブラシレスモーターの最大の長所は摩耗部分が少なく寿命が長いことです。エネルギーの変換効率もよく、スパークも発生しません。
欠点は、部品点数が多くなり、構造が複雑になってしまうということです。
また、直流の電流を流すだけでは動作しません。モーターが回転させ続けられるように電流を流すコイルと電流の向きを、マイクロコントローラで制御する必要があります。ブラシレスモーターを動作させるための専用のマイコンユニットをESC(Electronic Speed Controller)と呼びます。

ブラシレスモーターやESCはどんどん小型化され、価格も安くなっていることから様々な分野で直流ブラシ付きモーターに代わって使用されるようになりました。

ブラシレスモーターをRaspberry Piで制御するためには、図5のように配線します。

  • 図5 ブラシレスモーターとESC、Raspberry Piの接続図

【注意】ブラシレスモーターは強力に回転するものや非常に高速で回転するものがあり、固定が不完全だと暴れたりして危険な場合があります。また、高電圧のバッテリーや取り扱いの難しいバッテリーを使用する場合もあります。モーターや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の説明書・データシートなどを確認してください。

Filed Under: Raspberry Pi 関連タグ:DCモータ, ブラシレスモータ

Reader Interactions

コメントを残す コメントをキャンセル

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください。

最初のサイドバー

CONTACT US

  • Facebook
  • Twitter
  • Youtube

More to See

Arduinoベースのセンサノード:XBeeデータ収集ノードの製作

2021年9月27日 By STEMSHIP

Arduinoベースのセンサノード:Arduinoを使った温度センサの作製

2021年9月21日 By STEMSHIP

XBeeモジュールとBMP280センサを使用してデータ収集する

2021年5月31日 By STEMSHIP

XBeeモジュールでMicroPythonを使ってセンサを読み取る

2021年5月24日 By STEMSHIP

XBeeモジュールでセンサを読み取る:センサノードの設定と測定

2021年5月17日 By STEMSHIP

カテゴリー

  • Arduino (44)
    • Arduino初心者編 (15)
    • Arduino基礎編 (11)
    • Arduino実践編 (4)
    • Arduino応用編 (11)
    • Arduino番外編 (3)
  • MakeyMakey (1)
  • microbit (11)
  • Raspberry Pi (13)
  • Scratch (6)
  • STEM教育 (5)
  • XBee (15)
  • ものづくり教育 (2)
  • 子供の教育 (2)
  • 科学 (6)
  • 算数 (5)

Tags

BLE DCモータ EEPROM ELEGOO ESP32 ESP8266 IoT LCD LED makeymakey MQTT Node-RED scratch STEM教育 WiFi XBee アニメーション オンラインゲーム カメラ クローン ゲーム コスチュームの変更 サーボモータ ステッピングモータ ステートマシン スピーカ タイマー ピンポン ブロック定義 ペン ライントレース ラジコン リスト 分数 割り込み 実験 工作 幼児 当たり判定 温度センサ 無線通信 物理 角度制御 重力 音楽

Footer

最近の投稿

  • Arduinoベースのセンサノード:スケッチ(プログラム)の作製
  • Arduinoベースのセンサノード:XBeeデータ収集ノードの製作
  • Arduinoベースのセンサノード:Arduinoを使った温度センサの作製
  • XBeeモジュールとBMP280センサを使用してデータ収集する
  • XBeeモジュールでMicroPythonを使ってセンサを読み取る

タグ

BLE DCモータ EEPROM ELEGOO ESP32 ESP8266 IoT LCD LED makeymakey MQTT Node-RED scratch STEM教育 WiFi XBee アニメーション オンラインゲーム カメラ クローン ゲーム コスチュームの変更 サーボモータ ステッピングモータ ステートマシン スピーカ タイマー ピンポン ブロック定義 ペン ライントレース ラジコン リスト 分数 割り込み 実験 工作 幼児 当たり判定 温度センサ 無線通信 物理 角度制御 重力 音楽

Search

2023年3月
月 火 水 木 金 土 日
 12345
6789101112
13141516171819
20212223242526
2728293031  
« 10月    

Copyright © 2023 · STEMSHIP.COM