LoginSignup
5
3

More than 3 years have passed since last update.

Raspberry Pi ZeroのGPIOを使ってブラシレスモーターを制御する

Posted at

Raspberry Pi Zeroでブラシレスモーターを制御する

概要

ちょっと思うところがあって、市販のブラシレスモーターをRPi Zeroを使って制御してみました。

構成

IMG_20191018_212638-01-small.jpg

接続

  1. モーターとESCを繋ぐ。3本線があるが、適当に繋いでも回転が逆になるだけなので大丈夫。
  2. ESCとRPiを繋ぐ。コネクターに3本入っているが、真ん中の線は使わない。黒い線と反対側の何色かのもう一本を使う。黒い方を適当なGNDに、色がついている方を適当なGPIOに繋ぐ。GPIOは後でプログラムで指定するので、何番かをメモっておく。 ピンアサイン参考: https://www.raspberrypi.org/documentation/usage/gpio/
  3. いざ動作確認する段階でバッテリーを繋ぐ。何が起こるかわからないので、安全なバッテリーを推奨。例ではそのへんに転がっていたウナギ型のLiFeを利用。普通はウナギリフェなんて転がってはいないので注意。

プログラミング

とりあえずパルス幅を指定してやり、少しずつ回すのを繰り返す。

サンプルソースコード

import pigpio
import time
motor_pin = 27 #メモしたGPIO番号

pi = pigpio.pi()

for i in range(3):
        pi.set_servo_pulsewidth(motor_pin, 1500) 
        time.sleep(1)
        pi.set_servo_pulsewidth(motor_pin, 1600) 
        time.sleep(1)
        pi.set_servo_pulsewidth(motor_pin, 1700) 
        time.sleep(1)
        pi.set_servo_pulsewidth(motor_pin, 1800) 
        time.sleep(1)
        pi.set_servo_pulsewidth(motor_pin, 1900) 
        time.sleep(1)
        pi.set_servo_pulsewidth(motor_pin, 2000) 
        time.sleep(1)


pi.set_servo_pulsewidth(motor_pin, 0) 
pi.stop()

解説

pi.set_servo_pulsewidth(motor_pin, 1500) 
time.sleep(1)

motor_pinでGPIO番号を指定し、パルス幅を数値で指定する。
指定できる値範囲がどこからどこまでかは、ESCの仕様による。
ESCの仕様がわからない場合は手探りで探すしかない。
このESCでは、1500ぐらいから2000ぐらいまで指定できた。
sleepで、次の状態までの持続時間を指定する。

pi.set_servo_pulsewidth(motor_pin, 0) 

止める場合は、こんな記述をしないとうまくいかなかった気がする。
いらなかったかも。まあおまじない的な。

ESCによっては、動かす前におまじないが必要なものもあるらしい。
それはESCの仕様を調べるしかない。

まとめ

という感じで、めちゃくちゃ簡単にブラシレスモーターを制御できた。
ただし、既存のESCを使ってのパルスと時間の制御になるので、厳密なブラシレスモーターの制御とは言えないかも。本来は、ESCの機能をそのものをRPiで制御したい。

ちなみにこのブラシレスモーターは、中身が回るのではなく、外側のガワが回るので、固定しないとめっちゃ暴れる(笑)中央のローターが回るモーターを使ったほうが安全だと思う。

RPiを使ってモーターを制御すると、目に見えて制御できてる!!という達成感が得られるので、プログラミングの勉強にもおススメ。このブラシレスモーターとESCのセットは1000円ぐらいで買えるので、下手な電子工作キットなどを買うより安価に楽しめると思う。

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3