MDC2018のデータ量を削減したプログラムのマスタ側(メインマイコン)のプログラム

Dependents:  

モータドライバコントローラ2018(MDC)

モータドライバコントローラ(MDC2018)は、2018年に開発されたモータドライバを制御するためのドライバ回路です。

基本データ

分類名称など
CPUSTM32F303K8T6
主用途3ピン型MDの駆動とABZ相出力型インクリメンタルエンコーダの読み取り
製作年2018年
通信方式I²C(Slave)・UART

使用方法

  • ST-LINK V2にmdc_simpleのソースコードを書き込むか、main.cppを参考にしてオリジナルのファームウェアを作成して、書き込みます。
  • I²Cコネクタ経由でメインマイコンから制御します。
  • 5V駆動インクリメンタルエンコーダとモータドライバ(2018年)制御端子を接続します。

詳しくは、readme.txtを参照してください。

Committer:
DaichiArai
Date:
Tue Apr 30 04:54:26 2019 +0000
Revision:
9:a3a2fb1a3ba7
Parent:
8:f62e19b0c76e
Child:
10:1bbe0d41813e
"float position()" function is now available.; Added "angle()" & "spd()" & "position()" & "position_e()".; Corrected readme.txt

Who changed what in which revision?

UserRevisionLine numberNew contents of line
DaichiArai 3:acec9ffd0ac0 1 1.インスタンス生成方法
DaichiArai 3:acec9ffd0ac0 2 class motor motorname(int address);
DaichiArai 3:acec9ffd0ac0 3
DaichiArai 3:acec9ffd0ac0 4 2.モータの駆動方法
DaichiArai 9:a3a2fb1a3ba7 5 int move(float pwm);
DaichiArai 9:a3a2fb1a3ba7 6 ・-1 ~ -0.01 :モータ逆回転
DaichiArai 9:a3a2fb1a3ba7 7 ・0.01 ~ 1 :モータ正回転
DaichiArai 9:a3a2fb1a3ba7 8 ・0 :モータ停止(ブレーキ)
DaichiArai 9:a3a2fb1a3ba7 9 ・引数無し(空白):モータフリー(何もしない)
DaichiArai 3:acec9ffd0ac0 10 返り値:通信結果(0:成功,1:失敗)
DaichiArai 3:acec9ffd0ac0 11
DaichiArai 3:acec9ffd0ac0 12 3.エンコーダの角度と角速度の読み取り(単位はrad基準)
DaichiArai 9:a3a2fb1a3ba7 13 float spd(); 角速度を読み取る.返り値:角速度(rad/s)
DaichiArai 9:a3a2fb1a3ba7 14 float angle(); 角度を読み取る.オーバーフロー注意.返り値:角度(rad)
DaichiArai 9:a3a2fb1a3ba7 15 float position(); 1周のうちの自己位置を求める。正の値しか返さない。返り値:角度(rad)
DaichiArai 9:a3a2fb1a3ba7 16 int count; angle_e()関数が最後に呼び出された時点での回転数。返り値:回転数
DaichiArai 3:acec9ffd0ac0 17
DaichiArai 3:acec9ffd0ac0 18 //サンプル----------------------------------------------------------------------
DaichiArai 3:acec9ffd0ac0 19 #include "mbed.h"
DaichiArai 9:a3a2fb1a3ba7 20 #include "mdc.h"
DaichiArai 3:acec9ffd0ac0 21
DaichiArai 9:a3a2fb1a3ba7 22 Serial pc(USBTX,USBRX,115200);
DaichiArai 9:a3a2fb1a3ba7 23 I2C i2c_encoder(D4,D5);
DaichiArai 9:a3a2fb1a3ba7 24
DaichiArai 9:a3a2fb1a3ba7 25 class motor motor1(i2c_encoder,0x20);
DaichiArai 9:a3a2fb1a3ba7 26 class motor motor2(i2c_encoder,0x22);
DaichiArai 3:acec9ffd0ac0 27
DaichiArai 3:acec9ffd0ac0 28 int main(void){
DaichiArai 3:acec9ffd0ac0 29 while(1){
DaichiArai 9:a3a2fb1a3ba7 30 motor1.move(0.6);
DaichiArai 3:acec9ffd0ac0 31 motor2.move();
DaichiArai 9:a3a2fb1a3ba7 32
DaichiArai 9:a3a2fb1a3ba7 33 pc.printf("motor1.spd = %.3f\t",motor1.spd());
DaichiArai 9:a3a2fb1a3ba7 34 pc.printf("motor1.angle = %.3f\t",motor1.angle());
DaichiArai 9:a3a2fb1a3ba7 35 pc.printf("motor1.position = %.3f\t",motor1.position());
DaichiArai 9:a3a2fb1a3ba7 36 pc.printf("\n");
DaichiArai 3:acec9ffd0ac0 37 }
DaichiArai 9:a3a2fb1a3ba7 38 }