MDC2018のデータ量を削減したプログラムのマスタ側(メインマイコン)のプログラム
モータドライバコントローラ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を参照してください。
mdc.h@10:1bbe0d41813e, 2019-06-27 (annotated)
- 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?
User | Revision | Line number | New 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 |