ライブラリ
KeiganMotor KM-1 用の Arduino I2C ライブラリです。
I2Cシリアル通信を通じて、Arduino 互換機から KeiganMotor KM-1 をコントロールします。
マイコン ESP32 または ESP8266 も使用可能です。
(通常、外部プルアップ抵抗が必要です。M5 Stack では不要です。詳細は下記参照下さい。)
ソースコード(GitHub)
https://github.com/keigan-motor/Arduino-I2C-KM1
ソースコードはオープンソース(MITライセンス)になります。
I2Cポートを含む有線ポートの詳細は、こちらを参照下さい。
Arduino APIドキュメント
以下にてArduino APIドキュメントを参照ください。
https://docs.keigan-motor.com/apiDocument/Arduino-I2C-KM1/
FAQ
Arduino I2C通信でトルク制御したい
holdTorqueでトルク制御できると書いてあったのですが,GitHubのソースコードの /src/KM1_I2C.cpp に holdTorque の関数が入っておらず,使用方法が分かりません.
ご要望の件につきまして、
以下の関数をお使い頂けますでしょうか?
// Set max torque [N*m]
void KeiganMotor::maxTorque(float value)
本関数で制限をかけた後、runAtVelocityRpm() や、moveToPositionDegree() 等で速度制御や位置制御をすることにより移動方向にトルク制限をかけることができます。
物体に当たると、最大トルクで規制されます。
// 実装例 0.1Nmにトルク制限しながら速度制御を行う。
m.maxTorque(0.1);
m.runAtVelocityRpm(-10);
※ maxTorque 設定後、saveAllRegisters を行うと、設定値がフラッシュに保存されますのでご注意ください。
holdTorque にても実現可能なのですが、速度が無制限になってしまうため上記方法をお勧めさせて頂いております。
Arduino からの モーター測定値の取得
I2CポートとArduinoを接続した後、/examples にあるこちらのコードを実行して下さい。
https://github.com/keigan-motor/Arduino-I2C-KM1/blob/master/examples/ReadMotorMeasurement/ReadMotorMeasurement.ino
本コード書き込みにより、シリアルモニタに定期的に情報が表示されます。
USB通信をお使い頂くと、I2C通信とは異なり定期的に KeiganMotor 側から自動で情報が通知される仕組みとなっております。
ライブラリでは、python や node.js 等で対応しております。