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:
7:6d3ea87a81c7
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 #ifndef mdc_h
DaichiArai 3:acec9ffd0ac0 2 #define mdc_h
DaichiArai 3:acec9ffd0ac0 3
DaichiArai 3:acec9ffd0ac0 4 #define MOTOR_FREE 0x00
DaichiArai 3:acec9ffd0ac0 5 #define MOTOR_FORWARD 0x01
DaichiArai 3:acec9ffd0ac0 6 #define MOTOR_BACK 0x02
DaichiArai 3:acec9ffd0ac0 7 #define MOTOR_STOP 0x03
DaichiArai 3:acec9ffd0ac0 8
DaichiArai 3:acec9ffd0ac0 9 #define SPD_MINUS 0
DaichiArai 3:acec9ffd0ac0 10 #define SPD_H 1
DaichiArai 3:acec9ffd0ac0 11 #define SPD_M 2
DaichiArai 3:acec9ffd0ac0 12 #define SPD_L 3
DaichiArai 3:acec9ffd0ac0 13 #define COUNT_MINUS 4
DaichiArai 3:acec9ffd0ac0 14 #define COUNT_SPIN 5
DaichiArai 3:acec9ffd0ac0 15 #define ANGLE_MINUS 6
DaichiArai 3:acec9ffd0ac0 16 #define ANGLE_H 7
DaichiArai 3:acec9ffd0ac0 17 #define ANGLE_M 8
DaichiArai 3:acec9ffd0ac0 18 #define ANGLE_L 9
DaichiArai 9:a3a2fb1a3ba7 19 #define NUM 4
DaichiArai 9:a3a2fb1a3ba7 20
DaichiArai 9:a3a2fb1a3ba7 21 #define DPI 6.2832
DaichiArai 3:acec9ffd0ac0 22
DaichiArai 3:acec9ffd0ac0 23 #include "mbed.h"
DaichiArai 3:acec9ffd0ac0 24
DaichiArai 3:acec9ffd0ac0 25 class motor{
DaichiArai 3:acec9ffd0ac0 26 public:
DaichiArai 9:a3a2fb1a3ba7 27 motor(I2C &i2c, int addr);
DaichiArai 9:a3a2fb1a3ba7 28 int move(float pwm = 1000);
DaichiArai 9:a3a2fb1a3ba7 29 void reset();
DaichiArai 3:acec9ffd0ac0 30 //enc-------------------------------------------------------------------
DaichiArai 3:acec9ffd0ac0 31 int count;
DaichiArai 3:acec9ffd0ac0 32
DaichiArai 9:a3a2fb1a3ba7 33 float angle();
DaichiArai 9:a3a2fb1a3ba7 34 float spd();
DaichiArai 9:a3a2fb1a3ba7 35 float position();
DaichiArai 9:a3a2fb1a3ba7 36
DaichiArai 9:a3a2fb1a3ba7 37 //旧作との互換性を確保するためのメソッド------
DaichiArai 3:acec9ffd0ac0 38 float spd_e();
DaichiArai 3:acec9ffd0ac0 39 float angle_e();
DaichiArai 9:a3a2fb1a3ba7 40 float position_e();
DaichiArai 9:a3a2fb1a3ba7 41 //--------------------------------------
DaichiArai 9:a3a2fb1a3ba7 42 //-----------------------------------------------------------------------------
DaichiArai 3:acec9ffd0ac0 43 private:
DaichiArai 7:6d3ea87a81c7 44 char data_reset[2];
DaichiArai 3:acec9ffd0ac0 45 char md_data[2];
DaichiArai 9:a3a2fb1a3ba7 46 char data[10];
DaichiArai 9:a3a2fb1a3ba7 47
DaichiArai 3:acec9ffd0ac0 48 void result();
DaichiArai 9:a3a2fb1a3ba7 49 int write_pwm;
DaichiArai 3:acec9ffd0ac0 50 int val;
DaichiArai 9:a3a2fb1a3ba7 51 int address;
DaichiArai 9:a3a2fb1a3ba7 52
DaichiArai 9:a3a2fb1a3ba7 53 float encoder_spd;
DaichiArai 9:a3a2fb1a3ba7 54 float position_angle;
DaichiArai 9:a3a2fb1a3ba7 55
DaichiArai 9:a3a2fb1a3ba7 56 I2C mdc_i2c;
DaichiArai 3:acec9ffd0ac0 57 };
DaichiArai 3:acec9ffd0ac0 58
DaichiArai 3:acec9ffd0ac0 59 #endif