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

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);
+}