📄 bldc_data.h
字号:
//This file is used for defining the variables and compile time options
//This file should be included in all .asm/.c files
//Author : Padmaraja Yedamale
//Version: V1.1
//#include "P18F2431.inc"
#ifdef __BLDC_DATA_DEF
#define _AC_
#else
#define _AC_ extern
#endif
//User defined variables
//---------------------------------------------------------------------------------------
//Oscillator frequency
#define OSCILLATOR 20000000L
//---------------------------------------------------------------------------------------
//Enter the PPR of the Optical Encoder on the motor
#define ENCODER_PPR 1024L
//---------------------------------------------------------------------------------------
//Claculating RPM based on the encoder type. The QEI should be in velocity measurement mode
//Timer5 prescaler
#define TIMER5_PRESCALE 1L
//---------------------------------------------------------------------------------------
//Define the QEI mode of operation.
//If the velocity conter is updated only on QEA transition, then enable 2x mode
//If the velocity conter is updated every QEA and QEB transition, then enable 4x mode
#define QEI_X_UPDATE 2L
//#define QEI_X_UPDATE 4
//---------------------------------------------------------------------------------------
//Define Velocity pulse decimation ratio(Only one line should be selected)
#define VELOCITY_PULSE_DECIMATION 1L
//#define VELOCITY_PULSE_DECIMATION 4L
//#define VELOCITY_PULSE_DECIMATION 16L
//#define VELOCITY_PULSE_DECIMATION 64L
//---------------------------------------------------------------------------------------
//Calculate the constant to be divided by the Velocity counter value will give RPS
#define INSTRUCTION_CYCLE (OSCILLATOR)/4L
#define RPM_CONSTANT_QEI 8L*((INSTRUCTION_CYCLE)/(ENCODER_PPR*QEI_X_UPDATE*VELOCITY_PULSE_DECIMATION*TIMER5_PRESCALE))
//The value is multiplied by 8 to increase the accuracy of division. After devision, the result is devided by 8
#define RPM_CONSTANT_HALL INSTRUCTION_CYCLE/(d'12'*d'8')
//60 to convert RPM to RPS, 12= # of Hall pulses/revolution
//---------------------------------------------------------------------------------------
//PWM frequency definition
#define kPWM_TIMER_PRESCALE 1L
#define kPWM_FREQUENCY 16000L
#define kPTPER_VALUE (OSCILLATOR/(4 * kPWM_FREQUENCY * kPWM_TIMER_PRESCALE))-1
//---------------------------------------------------------------------------------------
//Defining the PWM duty cycle constant based on the Motor voltage, DC bus voltage and PWM period register value
#define kMOTOR_VOLTAGE 24L
#define kDC_INPUT_VOLTAGE 24L
#define kMOTOR_RATED_SPEED 2500L
#define kMAIN_PWM_CONSTANT (kMOTOR_VOLTAGE*kPTPER_VALUE*4*16L)/(kDC_INPUT_VOLTAGE*256L)
//1.414*256 = 360
//Multiplication factor = 16
#define kERROR_PWM_CONSTANT (MAIN_PWM_CONSTANT * 256L)/MOTOR_RATED_SPEED
#define kMAX_PWM_VALUE (MOTOR_VOLTAGE*PTPER_VALUE*4*d'100')/(DC_INPUT_VOLTAGE* d'141')
//---------------------------------------------------------------------------------------
#define kESTIMATE_TIMER_CONSTANT ((d'60'* INSTRUCTION_CYCLE)/(MOTOR_RATED_SPEED*d'12'))+1
//Hurst Motor connection:
//Power :
// M1 : Red
// M2 : Black
// M3 : White
// G : Green
//Hall sensors:
//HA : White
//HB : Brown
//HC : Green
//+5V : Red
//GND : Black
//******************************************************************
#define kCYCLE_COUNT_MAXH 0x4E
#define kCYCLE_COUNT_MAXL 0x20
#define kCYCLE_COUNT_MAX 0x4E
#define kMAX_FLTA_COUNT 0x80
//******************************************************************
#define MOTOR_TURN_FWD 0
#define MOTOR_TURN_REV 0x07
//----------------------------------------------
//FLAGS bits
_AC_ union
{
unsigned char b;
struct
{
unsigned char HALL_FLAG :1;
unsigned char FLAG_FAULT :1;
unsigned char PARAM_DISPLAY :1;
unsigned char POSITION_BIT :1;
unsigned char VELOCITY_READY:1;
unsigned char NEGATIVE_ERROR:1;
unsigned char CALC_PWM :1;
unsigned char VALID_HALL :1;
}bits;
}Flags;
#define HALL_FLAG Flags.bits.HALL_FLAG
#define FLAG_FAULT Flags.bits.FLAG_FAULT
#define PARAM_DISPLAY Flags.bits.PARAM_DISPLAY
#define POSITION_BIT Flags.bits.POSITION_BIT
#define VELOCITY_READY Flags.bits.VELOCITY_READY
#define NEGATIVE_ERROR Flags.bits.NEGATIVE_ERROR
#define CALC_PWM Flags.bits.CALC_PWM
#define VALID_HALL Flags.bits.VALID_HALL
//FLAGS1 bits
_AC_ union
{
unsigned char b;
struct
{
unsigned char DEBOUNCE :1;
unsigned char KEY_RS :1;
unsigned char KEY_FR :1;
unsigned char KEY_PRESSED :1;
unsigned char RUN_STOP :1;
unsigned char FWD_REV :1;
unsigned char :2;
}bits;
}Flags1;
#define DEBOUNCE Flags1.bits.DEBOUNCE
#define KEY_RS Flags1.bits.KEY_RS
#define KEY_FR Flags1.bits.KEY_FR
#define KEY_PRESSED Flags1.bits.KEY_PRESSED
#define RUN_STOP Flags1.bits.RUN_STOP
#define FWD_REV Flags1.bits.FWD_REV
//FLT_FLAGS bits
_AC_ union
{
unsigned char b;
struct
{
unsigned char OCUR :1;
unsigned char OVOLT :1;
unsigned char OTEMP :1;
unsigned char :5;
}bits;
}Flt_Flags;
#define OCUR Flt_Flags.bits.OCUR
#define OVOLT Flt_Flags.bits.OVOLT
#define OTEMP Flt_Flags.bits.OTEMP
//Keys parameters
#define KEY_PORT PORTC
#define RUN_STOP_KEY 4
#define FWD_REV_KEY 5
#define DEBOUNCE_COUNT 0x8F
//Delay parameters
#define DELAY_COUNT1 0xFF
#define DELAY_COUNT2 0xFF
//LED parameters
#define LED_PORT PORTC
#define RUN_STOP_LED 0
#define FWD_REV_LED 2
#define LED1 PORTCbits.RC0
#define LED2 PORTCbits.RC2
#define LED3 PORTCbits.RC3
//******************************************************************
#define POS_D0 0x00
#define POS_D1 0x01
#define POS_D2 0x04
#define POS_D3 0x02
#define POS_D4 0x10
#define POS_D5 0x20
#define POS_D6 0x08
#define POS_D7 0x00
//--------------------------------------------------
//Configurartin bits
// __CONFIG _CONFIG1H, 0x06 //_OSC_HS_1H &_FCMEN_OFF_1H&_IESO_OFF_1H
// __CONFIG _CONFIG2L, 0x0E //_PWRTEN_ON_2L & _BOREN_ON_2L & _BORV_20_2L
// __CONFIG _CONFIG2H, 0x1E //_WDTEN_OFF_2H
// __CONFIG _CONFIG3L, 0x3C //0x24 //_PWMPIN_OFF_3L & _LPOL_LOW_3L & _HPOL_LOW_3L & _GPTREN_ON_3L
// __CONFIG _CONFIG3H, 0x9D //_FLTAMX_RC1_3H & _PWM4MX_RB5_3H
// __CONFIG _CONFIG4L, 0x80
// __CONFIG _CONFIG5L, 0x0F
// __CONFIG _CONFIG5H, 0xC0
// __CONFIG _CONFIG6L, 0x0F
// __CONFIG _CONFIG6H, 0xE0
// __CONFIG _CONFIG7L, 0x0F
// __CONFIG _CONFIG7H, 0x40
//--------------------------------------------------
#define __BLDC_DATA_DEF
#undef _AC_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -