Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
MotorControl.h
00001 #ifndef MOTORCONTROL_H 00002 #define MOTORCONTROL_H 00003 00004 #include "mbed.h" 00005 #include <string> 00006 00007 #define DEBUG 00008 00009 00010 #define ED_MIN_SPEED 1000 00011 #define ED_MAX_SPEED 3000000 00012 #define N_MIN_SPEED 0.001 00013 #define N_MAX_SPEED 125.000//125.0RPM 00014 00015 #define REV_MAX_STEPS -2147483648 00016 #define FWD_MAX_STEPS 2147483648 00017 00018 #define MIN_CURRENT 0 00019 #define MAX_CURRENT 6000//6000mA 00020 00021 #define MIN_TORQUE 0 00022 #define MAX_TORQUE 8500//N.m 00023 00024 00025 #define SPACE 0x20 00026 #define ACK 0x06 00027 #define NAK 0x15 00028 00029 #define VALID_MSG_LEN 0x03 00030 00031 #define ML_ROTATION 5.6 00032 #define STEPS_PER_ROTATION 1024 00033 00034 #define CW 1 00035 #define CCW 0 00036 00037 #define RX_ECHO_VALID 0 00038 #define RX_ECHO_FAIL 1 00039 #define RX_REGITSER_FAIL 2 00040 #define RX_REGITSER_VALID 3 00041 #define MSG_RESEND 4 00042 00043 #define REBOOT 5 00044 00045 #define MSG_RETRY_COUNT 3 00046 00047 #define NOT_USED 0 00048 #define STOP_NO_RAMP 0 00049 #define STOP_WITH_RAMP 1 00050 #define STOP_WITH_STEPS 2 00051 00052 #define BUFFER_SIZE 50//command message + data 00053 #define DATA_BUFFER_SIZE 20//characters 00054 #define DATA_ITEMS 19 00055 00056 //////////////////////////////////////////// 00057 // MOTOR COMMAND RESPONSE DATA STORAGE 00058 /////////////////////////////////////////// 00059 #define READ_DIG_IN 0 00060 #define READ_DIG_OUT 1 00061 #define READ_CURRENT 2 00062 #define READ_DRV_REG 3 00063 #define READ_DRV_REG_EXT 4 00064 #define READ_DRV_TEMP 5 00065 #define READ_DRV_VOLTAGE 6 00066 #define READ_DRV_WORKING_SET 7 00067 #define READ_DRV_WORKING_SET_EXT 8 00068 #define READ_ERROR_REG 9 00069 #define READ_FB_BOOST_CUR 10 00070 #define READ_FB_STATUS 11 00071 #define READ_FW_VERSION 12 00072 #define READ_FW_CHECKSUM 13 00073 #define READ_MASTER_REG 14 00074 #define READ_MIN_CURRENT 15 00075 #define READ_MAX_CURRENT 16 00076 #define READ_BOOST_CURRENT 17 00077 #define READ_NOM_CURRENT 18 00078 00079 #define COMMANDS_TO_TEST 10 00080 00081 00082 //////////////////////////////////////////// 00083 // BAUD RATES 00084 /////////////////////////////////////////// 00085 #define SLOW_BAUD 9600 00086 #define MED_BAUD 115200 00087 #define FAST_BAUD 921600 00088 00089 #define MOT_AL_PDT 0x0001//Protection Drive Thermal 00090 #define MOT_AL_PDV 0x0002//Protection Drive Voltage 00091 #define MOT_AL_PDC 0x0004//Protection Drive Current 00092 #define MOT_AL_POP 0x0008//Protection Open Phase 00093 #define MOT_AL_UNUSED1 0x0010//NOT USED 00094 #define MOT_AL_FE 0x0020//Feedback Error 00095 #define MOT_AL_PCR 0x0040//Protection Current Regulation 00096 #define MOT_AL_POT 0x0080//Protection Open Transistor 00097 #define MOT_AL_UNUSED2 0x0100//NOT USED 00098 #define MOT_AL_SWER 0x0200//Protection Software Error 00099 #define MOT_AL_UNUSED3 0x0400//NOT USED 00100 #define MOT_AL_MC 0x0800//Missing Calibration 00101 #define MOT_AL_WDG 0x1000//Watchdog 00102 #define MOT_AL_EEF 0x2000//EEPROM Fail 00103 #define MOT_AL_I2T 0x4000//I2T Potection 00104 #define MOT_AL_UNUSED4 0x8000//NOT USED 00105 00106 00107 #define D3_BUTTON D3 00108 #define D4_BUTTON D4 00109 #define D5_BUTTON D5 00110 #define D6_BUTTON D6 00111 #define D7_BUTTON D7 00112 #define D8_BUTTON D8 00113 #define D9_BUTTON D9 00114 #define D10_BUTTON D10 00115 #define D11_BUTTON D11 00116 #define D12_BUTTON D12 00117 00118 #define A7_OUT1 A7 00119 #define A6_OUT2 A6 00120 #define A5_OUT3 A5 00121 00122 #define A4_IN1 A4 00123 #define A3_IN2 A3 00124 #define A2_IN3 A2 00125 00126 #define A1_OUT A1 00127 #define A0_OUT A0 00128 00129 extern DigitalIn d3_button; 00130 extern DigitalIn d4_button; 00131 extern DigitalIn d5_button; 00132 extern DigitalIn d6_button; 00133 extern DigitalIn d7_button; 00134 extern DigitalIn d8_button; 00135 extern DigitalIn d9_button; 00136 extern DigitalIn d10_button; 00137 extern DigitalIn d11_button; 00138 extern DigitalIn d12_button; 00139 00140 extern DigitalOut a7_out1; 00141 extern DigitalOut a6_out2; 00142 extern DigitalOut a5_out3; 00143 extern DigitalIn a4_in1; 00144 extern DigitalIn a3_in2; 00145 extern DigitalIn a2_in3; 00146 00147 extern DigitalOut a1_out; 00148 extern DigitalOut a0_out; 00149 00150 extern char motData[][DATA_BUFFER_SIZE];//data only 00151 00152 extern char binBuffer[]; 00153 extern uint8_t cnt; 00154 extern const string rxMsgTable[]; 00155 extern char rxMsgStore[];//received local message store 00156 extern char mc_Tx_Buffer[];//transmitted message buffer 00157 extern char mc_Rx_Buffer[];//received message buffer 00158 extern volatile unsigned char mc_Rx_Rd_Ptr;//circulare buffer read pointer 00159 extern volatile unsigned char mc_Rx_Wr_Ptr;//circulare buffer write pointer 00160 extern unsigned int rx_int;//received integer / character 00161 extern volatile bool rxMsgValid;//message received flag 00162 extern bool msgRdy; 00163 00164 void motEncoderISR(void); 00165 00166 void int2bin(int value, char* buffer, int bufferSize); 00167 00168 void rstPointers(void); 00169 00170 void readCurrent(char *array); 00171 bool setDigOutput(uint8_t par1, char *array); 00172 void readDigInput(char *array); 00173 void clrRxMsg(char *array); 00174 void motMsg_RX_ISR(void); 00175 uint8_t getMotMsg(char *txReadCmd, char *rxRegArray); 00176 00177 00178 00179 00180 bool set_mL(bool direction, uint32_t mL, char *array); 00181 bool setRotMotor(bool direction, char *array); 00182 00183 void initBuffer(string s, char *array, char character, uint8_t size); 00184 00185 void dispBuffer(string s, uint8_t size, char array[]); 00186 void dispMotReg(string s, uint8_t regSel, char regArray[9][BUFFER_SIZE]); 00187 00188 00189 uint8_t procMotMsg(char *txMsg, char *rxMsg, char motReg[9][BUFFER_SIZE]); 00190 void dispRegDec(string s, uint8_t regSel, char regArray[9][BUFFER_SIZE]); 00191 void dispRegHex(string s, uint8_t regSel, char regArray[9][BUFFER_SIZE]); 00192 00193 00194 void data2mem(uint8_t dataLoc, char destMemArray[][DATA_BUFFER_SIZE], char sourceMemArray[BUFFER_SIZE]);//for command with <CR><VALUE> 00195 void Init(void); 00196 00197 long mapI(long x, long in_min, long in_max, long out_min, long out_max); 00198 float mapF(float in, float inMin, float inMax, float outMin, float outMax); 00199 00200 #endif
Generated on Wed Jul 13 2022 03:47:44 by
