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を参照してください。

readme.txt

Committer:
DaichiArai
Date:
2019-04-11
Revision:
8:f62e19b0c76e
Parent:
3:acec9ffd0ac0
Child:
9:a3a2fb1a3ba7

File content as of revision 8:f62e19b0c76e:

1.インスタンス生成方法
class motor motorname(int address);
現在対応しているアドレスは0x20~0x40

2.モータの駆動方法
int move(int spd);
・-127 ~ -1:モータ逆回転
・1 ~ 127  :モータ正回転
・0        :モータ停止(ブレーキ)
・引数無し(空白):モータフリー(何もしない)
返り値:通信結果(0:成功,1:失敗)

3.エンコーダの角度と角速度の読み取り(単位はrad基準)
//void read(); 全ての値を読み取る(旧式).返り値なし・廃止されている
float spd_e();角速度を読み取る.返り値:角速度(rad/s)
float angle_e();角度を読み取る.オーバーフロー注意.返り値:角度(rad)

float spd;    read()かspd_e()関数が最後に呼び出された時点での角速度がこの変数に代入される
int count;    read()かangle_e()関数が最後に呼び出された時点での回転数がこの変数に代入される(角度の算出用のため、実用的ではない)
float angle;    angle_e()関数が最後に呼び出された時点での角度がこの変数に代入される(countの値も考慮されている)

//サンプル----------------------------------------------------------------------
#include "mbed.h"

class motor motor1(0x20);
class motor motor2(0x22);

int main(void){
    while(1){
        motor1.move(50);
        motor2.move();
        pc.printf("motor1.spd = %.3f\t",motor1.spd_e());
        pc.printf("motor1.angle = %.3f\t",motor1.angle_e());
        pc.printf("motor2.spd = %.3f\t",motor2.spd_e());
        pc.printf("motor2.angle = %.3f\n",motor2.angle_e());
    }
}