TB6605FTG Brushless Motor Kit for Arduinoをラズパイで利用する(5)
モータ制御ボードから出ているHP信号は、モータに三つ取り付けられているホール素子のHA+をロジック・レベルにした信号です。ブラシレスDCモータのホール素子は、120度ずつずれた角度でモータに取り付けられています。HP信号をカウントすれば、モータの回転数がわかります。
これまで、回転数計でモータの回転数を測ってきましたが、HPをラズパイでカウントして回転数を求めます。
●接続
モータ・ボードの3番に出ているHP信号をラズパイのGPIO26(物理ピン37)につなぎ、両ボードのGNDもつなぎます。
発振器を約10kHz、3V0-p、デューティ50%でセットし、モータ・ボードの4ピンに入力します。モータ・ボードに約12Vを供給し、Standby ModeスイッチをStart側へ動かすと、モータが回転します。
●スケッチ
RPi.GPIOライブラリを使ってGPIO26ピンのパルスをカウントします。最大約1kHzまで追随できます。
1秒間sleepしている間に、callback関数でグローバル変数のcounterをインクリメントしています。
import time
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.cleanup()
GPIOpin = 26
GPIO.setup(GPIOpin, GPIO.IN)
counter = 0.0
# callback
def callback_count(pin):
global counter
counter += 1
# main
print("start counter ", counter)
GPIO.add_event_detect(GPIOpin, GPIO.RISING, callback=callback_count)
while 1:
time.sleep(1)
print("counter= ", counter, "Hz ", counter * 60, "rpm")
counter = 0.0
実行中の様子です。1秒間のカウント値に60をかけるとrpmになります。
オシロスコープでHP(下側の青色)の信号を観測しています。周波数は76Hzで、プログラムの結果と一致しています。
