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:
Thu Jun 27 07:56:29 2019 +0000
Revision:
10:1bbe0d41813e
Parent:
9:a3a2fb1a3ba7
2019/06/07

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
DaichiArai 10:1bbe0d41813e 35 float angle_data;
DaichiArai 10:1bbe0d41813e 36 float position_data;
DaichiArai 9:a3a2fb1a3ba7 37 //-----------------------------------------------------------------------------
DaichiArai 10:1bbe0d41813e 38 char data[2];
DaichiArai 3:acec9ffd0ac0 39 private:
DaichiArai 7:6d3ea87a81c7 40 char data_reset[2];
DaichiArai 3:acec9ffd0ac0 41 char md_data[2];
DaichiArai 9:a3a2fb1a3ba7 42
DaichiArai 3:acec9ffd0ac0 43 void result();
DaichiArai 9:a3a2fb1a3ba7 44 int write_pwm;
DaichiArai 3:acec9ffd0ac0 45 int val;
DaichiArai 9:a3a2fb1a3ba7 46 int address;
DaichiArai 9:a3a2fb1a3ba7 47
DaichiArai 9:a3a2fb1a3ba7 48 float encoder_spd;
DaichiArai 9:a3a2fb1a3ba7 49 float position_angle;
DaichiArai 9:a3a2fb1a3ba7 50
DaichiArai 9:a3a2fb1a3ba7 51 I2C mdc_i2c;
DaichiArai 3:acec9ffd0ac0 52 };
DaichiArai 3:acec9ffd0ac0 53
DaichiArai 3:acec9ffd0ac0 54 #endif