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

📄 inverter.h

📁 单相电机变频驱动原码,采用DISPIC30芯片
💻 H
字号:
/****************************************************************
*
*		Microchip 16-bit Embedded Control Design Contest
*
*		Entry # MT2268
*
*		Spa Pump Controller
*
*****************************************************************
*
*		Inverter definitions
*
*****************************************************************/


#define DT_COMP			// Enable deadtime compensation
#define VBUS_COMP		// Enable bus voltage compensation
#define VBUS_HOLD		// Enable bus voltage high/low ramp hold
#define PHASE_ADJ		// Enable automatic phase adjustment


#define INV_FREQ_MIN	(20 Hz)		// Minimum running freq
#define INV_FREQ_MAX	(60 Hz)		// Maximum running freq
#define INV_FREQ_INIT	(1 Hz)		// Initial starting freq
#define INV_FREQ_START	(30 Hz)		// Target starting freq
#define INV_FREQ_STOP	(10 Hz)		// Final stopping freq

#define INV_UPDATE_RATE	10			// Time between freq ramp steps (msec)
#define RAMP_RATE_UP	(2 Hz / 4)	// Ramp up step size
#define RAMP_RATE_DOWN	(1 Hz / 4)	// Ramp down step size

#define AMPL_SLOPE		(Q14_ONE * 460UL / 400)	// V/F slope = desired / actual bus voltage
#define AMPL_MIN		(Q14_ONE / 8)			// Flatten out curve at low frequencies
#define AMPL_MAX		(Q14_ONE)				// Max limit to prevent distortion
#define AMPL_VBUS_VAR	(Q14_ONE * 10UL / 400)	// Margin to allow for bus voltage variation

#define DELTA_NOM		(90 Deg)	// Nominal AUX / RUN motor current phase difference
#define DELTA_THRESH	(3 Deg)		// Phase difference min error threshold
#define DELTA_LIMIT		(20 Deg)	// Phase difference max error limit
#define DELTA_MIN		(60 Deg)	// Minimum output driver phase delta value
#define DELTA_MAX		(120 Deg)	// Maximum output driver phase delta value
#define DELTA_INCR		(2 Deg/100)	// Phase adjustment increment per PWM period

#define OFFSET_NOM		0			// Nominal AUX / RUN motor RMS current difference
#define OFFSET_THRESH	0x100		// RMS current difference min error threshold
#define OFFSET_LIMIT	0x1000		// RMS current difference max error limit
#define OFFSET_MIN		(-10 Deg)	// Minimum output driver phase offset value
#define OFFSET_MAX		(10 Deg)	// Maximum output driver phase offset value
#define OFFSET_INCR		(1 Deg/100)	// Phase adjustment increment per PWM period

#define TEMP_LIMIT		80			// Max heatsink temperature (degrees C)

#define _TEMP_LIMIT		((((TEMP_LIMIT * 10) + 500) * 65535UL) / 5000UL)	// ADC value


#define Hz		* 4

#define Deg		* 65536 / 360


EXTERN enum {		// Inverter state

	STOPPED		= 0,	// Motor stopped
	STARTINIT	= 1,	// Initialize before spin-up
	STARTWAIT1	= 2,	// Wait for short delay
	STARTWAIT2	= 3,	// Wait for first PWM interrupt
	STARTUP		= 4,	// Initial spin-up
	RUNNING		= 5,	// Constant speed
	RAMP_UP		= 6,	// Ramping up while running
	RAMP_DOWN	= 7,	// Ramping down while running
	STOPPING	= 8,	// Spin-down
	ABORT		= 9,	// Immediate stop
	DELAY		= 10,	// Short delay
	DELAY1		= 11,
	DELAY2		= 12,
	DELAY3		= 13,
	DELAY4		= 14

} inv_state;


EXTERN struct {					// Adjustable inverter parameters

		struct {
			BYTE	down;		// see RAMP_RATE_DOWN above
			BYTE	up;			// see RAMP_RATE_UP above
		} ramp;
		WORD	ampl_var;		// see AMPL_VBUS_VAR above
		WORD	delta_nom;		// see DELTA_NOM above
		WORD	delta_thr;		// see DELTA_THRESH above
		WORD	offset_nom;		// see OFFSET_NOM above
		WORD	offset_thr;		// see OFFSET_THRESH above

} invp;


#ifdef VBUS_HOLD
EXTERN BYTE vbus_low, vbus_high;	// Status flags for inverter
#endif


void Inv_init (void);
BYTE Inv_get_freq (void);
void Inv_set_freq (BYTE freq);
void Inv_start (void);
void Inv_stop (void);
void Inv_run (void);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -