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

📄 slbdc.h

📁 关于C8051无刷电机开发的源代码 自己调试过了 十分有用
💻 H
字号:
//-----------------------------------------------------------------------------
// Sensorless BLDC Motor Reference Design
//-----------------------------------------------------------------------------
// Copyright 2006 Silicon Laboratories Inc.
//
// AUTH: KAB
// DATE: 14 SEP 2006
//
// This program provides Sensorless BLDC motor control using the
// 'F310. This software is written specifically for the SBLDC
// reference design hardware. Please see the full application
// note for further information.
//
// Target: C8051F30x
//
// Tool chain: KEIL 'c' full-version required
//
// Rev History:
// 
// 30 AUG 2006 - Initial release (Pitmann  N2311A011 Motor)
//
// 14 SEP 2006 - Changed Motor Supplier (Anaheim Automation BLY171S-24V-4000)
//               Added switch for different motor types.
//               Modified Motor Parameters in this header file only.
//               Other source files unchanged.
//
//-----------------------------------------------------------------------------
// MACROS
//-----------------------------------------------------------------------------
// User modified Motor Parameters
//
// These parameters are related to thespecific motor used for the reference
// design. These parameters will need to be changed if using a different motor.
//
// define motor type - Pittman, Anaheim Automation, or custom motor 
//
//

#define ANAHEIM_BLY171S_24V_4000
//#define PITTMAN_N2311A011

// Motor parameters for Aneheim Automation BLYS171S_24V_4000 Motor
#ifdef ANAHEIM_BLY171S_24V_4000
#define MILLIOHMS 1800                 // motor resistance in milliohms
#define VMOTOR 12                      // motor voltage in volts
#define IMOTOR 500                     // maximum motor current in millamps
#define NUM_POLES 8                    // motor poles
#define RATED_RPM 4000                 // rated no load rpm at max voltage
#define MAX_RPM 2000                   // max desired speed
#define KPINIT 20                      // Kp initial value
#endif

// Motor parameters for Pittman Motor N2311A011 Motor
#ifdef PITTMAN_N2311A011 
#define MILLIOHMS 260                  // motor resistance in milliohms
#define VMOTOR 12                      // motor voltage in volts
#define IMOTOR 5                       // maximum motor current in amps
#define NUM_POLES 4                    // motor poles
#define RATED_RPM 7500                 // rated no load rpm at max voltage
#define MAX_RPM 5000                   // max desired speed
#define KPINIT 40                      // Kp initial value
#endif

//-----------------------------------------------------------------------------
// constants
#define SYSCLK 24500000L               // bus clock (long int)
#define ILIMIT 1000                    // current limit
#define VSTALL 2                       // minimum stall criteria
#define TALIGN 255                     // align time in 10ms increments
#define ON 0                           // push-button logic ON
#define OFF 1                          // push-button logic OFF
#define STOP 0                         // Motor State variable values
#define ALIGN 1          
#define START 2
#define RUN 3
//-----------------------------------------------------------------------------
// preprocessor calculated values
#define TABLE_MIN 8
#define TABLE_MAX 240
#define RAMP_MOD 8
#define RUN_MOD 4
#define T0_DIV 48
#define VLIMIT  ((128L * MILLIOHMS * IMOTOR )/VMOTOR /1000000)
#define T0_CLK (SYSCLK/T0_DIV)
#define TSCALE ((2*10*60/6)*T0_CLK/RATED_RPM/NUM_POLES/RAMP_MOD/TABLE_MIN)
#define VMIN (128/10)                  // (128 /10)
#define VSTART (128 * TABLE_MIN / 10)
#define TENMS (SYSCLK / T0_DIV / 100)      // timer count for 10ms delay
#define TRUN_TIMES_127 (((127L*2*60/6)*T0_CLK)/RATED_RPM/NUM_POLES/RUN_MOD)
#define RPM_SCALE (RATED_RPM/127)
#define T2_RELOAD (65536-SYSCLK/1000)
#define T2_RELOAD_L (T2_RELOAD & 0x00FF)
#define T2_RELOAD_H (T2_RELOAD/256)
#define OMEGA_LIMIT (127*MAX_RPM/RATED_RPM)

//-----------------------------------------------------------------------------
// preprocessor error checking
// These macros check for range errors on user modifiable parameters
#if ((TSCALE)>(255))
   #error "TSCALE requires 16 bit math"
#endif
#if ((TSCALE*TABLE_MAX)>65535)
   #error "TSCALE too large"
#endif

//-----------------------------------------------------------------------------
// typedefs
//-----------------------------------------------------------------------------
typedef union                          // unsigned union for accessing SFRs
{
  struct
  {
      unsigned char hi;
      unsigned char lo;
  } b;
  unsigned int w;
}udblbyte;

typedef union                          // signed union used for signed ADC
{
  struct
  {
      unsigned char hi;
      unsigned char lo;
  } b;
  signed int w;
}sdblbyte;

⌨️ 快捷键说明

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