📄 acind.h
字号:
/*******************************************************************
* File: acind.h
*
* DESCRIPTION: AC Induction Motor control demonstration
* (using constant V/Hz principle)
*
* Header file
*
* AUTHOR: S.Redpath
*
* HISTORY: Original 28th August 2001
*
*******************************************************************/
#ifndef __ACIND_H__
#define __ACIND_H__
typedef unsigned char UINT8;
typedef unsigned short int UINT16;
typedef unsigned long int UINT32;
typedef signed char SINT8;
typedef signed short int SINT16;
typedef signed long int SINT32;
/*------------------------------------------------------------------------
* Common system definitions
*/
#define CLK40M /*this will be the system clock if using emulator*/
#define CLOCK_SELECT 0 // Clock generator operating selection
// (according to CKSEL pin)
#ifdef CLK40M
#define EXT_FREQ 4000000 // frequency of the external crystal/osc. [Hz]
#else
#define EXT_FREQ 5000000 // frequency of the external crystal/osc. [Hz]
#endif
#define PLL_MUL 10 // PLL multiplier as integer
#define PLL_DIV 1 // PLL divider as integer
// Following must not be changed by user.
#define PLL_MODE 0
#define DIRECT_MODE 1
#if (CLOCK_SELECT == PLL_MODE)
#define SYS_FREQ ((EXT_FREQ*PLL_MUL)/PLL_DIV)
#endif
#if (CLOCK_SELECT == DIRECT_MODE)
#define SYS_FREQ (EXT_FREQ/2)
#endif
/**********************************************************************************/
/* Constant definitions */
/**********************************************************************************/
#define SPEED_READS 10 /* number of readings to average speed demand*/
#define POINTS_IN_ONE_QUADRANT 256 /*no of points for first quadrant lookup table*/
#define SINE_TABLE_SIZE (4*(POINTS_IN_ONE_QUADRANT)) /* no of points in sine table */
#define MAX_ADC_READING 1024
#ifdef CLK40M
#define PWM_UPDATE_RATE 5040 /*frequency of timer4 interrupts at 40MHz*/
#else
#define PWM_UPDATE_RATE 5008 /*frequency of timer4 interrupts at 50MHz*/
#endif
#define DISPLAY_UPDATE_RATE 100 /*multiples of timer3 interrupt*/
#define MAX_TM10_COUNT 0xFFFF /*max value of up/down counter*/
#define SINE_OFFSET 14 /*offset = 16384 for integer arithmetic*/
/* V/F profile for AC Motor */
/* NOTE: for practical purposes the maximum DC Link supply for this
application example has been limited to 65v DC (equivalent to 46v AC RMS)
and hence the corresponding maximum frequency is limited to a proportion
of its rated frequency which for the motor used in this example is 89Hz*/
#define MIN_FREQ 11 /*minimum motor frequency Hz*/
#define MAX_FREQ 89 /*maximum motor frequency Hz*/
#define MIN_VOLTS 11 /*minimum RMS motor voltage V*/
#define MAX_VOLTS 46 /*maximum RMS motor voltage V*/
#define VF_SLOPE ((MAX_VOLTS)/(MAX_FREQ)) /*slope of V/F curve for AC Motor*/
#define P 2 /* No. of poles */
#define MAX_SET_SPEED MAX_ADC_READING
#define MIN_SPEED (((MIN_FREQ)*(MAX_SET_SPEED))/(MAX_FREQ)) /*in units of Hertz*/
#define MIN_AMPLITUDE (((MIN_VOLTS) * ((CM3_DATA)/2))/ (MAX_VOLTS))
#define MAX_RPM (((MAX_FREQ) * 120)/(P)) /*maximum rpm of motor - synchronous speed*/
#define ON 1
#define OFF 0
#define CW 1 /* Clockwise rotation operation mode */
#define CCW 2 /* Counter-clockwise rotation operation mode */
#define SAMPLE_RATE 100 /*sampling rate (per second) of speed sensor*/
#define PPR 256 /*pulse per rev of encoder*/
#define MAX_ENCODER_PULSES (PPR * 4)
/*Timer constants*/
#ifdef CLK40M
#define CM3_DATA 500 /* PWM CM003 setting value 20 kHz */
#define BFCM_DATA 500 /* PWM PFCM setting maximum value */
#else /*clock = 50M0hz*/
#define CM3_DATA 625 /* PWM CM003 setting value 20 kHz */
#define BFCM_DATA 625 /* PWM PFCM setting maximum value */
#endif /*CLK40M*/
/* PI coefficients*/
#define KP(a) (6 * (a)) /* proportional gain coefficient */
#define KI(a) ((1 *(a))/4) /* Integral gain coefficient*/
#endif /*__ACIND_H__*/
/*end of file*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -