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で、プログラムの結果と一致しています。