⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bldc_data.h

📁 LIN Slave Example 芯片是PIC18系列 程序我已经调试过了
💻 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 + -