📄 inverter.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 + -