モータドライバコントローラ2018(MDC)
モータドライバコントローラ(MDC2018)は、2018年に開発されたモータドライバを制御するためのドライバ回路です。
基本データ
分類 | 名称など |
CPU | STM32F303K8T6 |
主用途 | 3ピン型MDの駆動とABZ相出力型インクリメンタルエンコーダの読み取り |
製作年 | 2018年 |
通信方式 | I²C(Slave)・UART |
使用方法
- ST-LINK V2にmdc_simpleのソースコードを書き込むか、main.cppを参考にしてオリジナルのファームウェアを作成して、書き込みます。
- I²Cコネクタ経由でメインマイコンから制御します。
- 5V駆動インクリメンタルエンコーダとモータドライバ(2018年)制御端子を接続します。
詳しくは、readme.txtを参照してください。
Diff: mdc_old.cpp
- Revision:
- 9:a3a2fb1a3ba7
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mdc_old.cpp Tue Apr 30 04:54:26 2019 +0000 @@ -0,0 +1,37 @@ +#include "mbed.h" +#include "math.h" +#include "mdc.h" + +//回転回数を数える +//スピードを算出して、スピードの値を返却 +float motor::spd_e(){ + val = mdc_i2c.read(address,data,10,false); + encoder_spd = (double)data[SPD_H] + (double)data[SPD_M]/100 + (double)data[SPD_L]/10000; + if(data[SPD_MINUS] == 1){ + encoder_spd *= -1; + } + return encoder_spd; +} + +float motor::position_e(){ + val = mdc_i2c.read(address,data,10,false); + position_angle = ((double)data[ANGLE_H])+((double)data[ANGLE_M]/100)+((double)data[ANGLE_L]/10000); + if(data[ANGLE_MINUS] == 1){ + position_angle *= -1; + position_angle += DPI; + } + return position_angle; +} + +//角度を算出して角度を返す(回転数も考慮 +float motor::angle_e(){ + val = mdc_i2c.read(address,data,10,false); + count = ((data[COUNT_MINUS])?(-1):(1))*data[COUNT_SPIN]; + + float angle_conv = ((double)data[ANGLE_H])+((double)data[ANGLE_M]/100)+((double)data[ANGLE_L]/10000); + if(data[ANGLE_MINUS] == 1){ + angle_conv *= -1; + } + + return(angle_conv+count*6.28); +}