-
大小: 68KB文件类型: .rar金币: 2下载: 0 次发布日期: 2021-05-06
- 语言: 其他
- 标签: dsPIC30f3010 PID 中文注释
资源简介
该代码需要复制到非中文路径下,使用开发环境MPLAB IDE 8.01或更高版本。
该开发环境需安装有MCC30编译器。

代码片段和文件信息
//---------------------------------------------------------------------------------------------------------
// 文件名: ClosedLoop.c
//
// 工程节点包括以下三个:
// 1. 主节点: CloseLoop.c
// 2. 芯片链接器描述文件: p30f3010.gld
// 3. PID运算汇编节点: PID.s
//---------------------------------------------------------------------------------------------------------
#include
//--------------------------芯片配置字设置-------------------------------
_FOSC(CSW_FSCM_OFF & XT_PLL16);
_FWDT(WDT_OFF);
_FBORPOR(PBOR_ON & BORV_20 & PWRT_64 & MCLR_EN);
//-----------------------------------------------------------------------
typedef signed int SFRAC16;
#define FCY 20000000 // xtal = 5Mhz; PLLx16 -> 20 MIPS (运行速度20MIPS)
#define FPWM 19531 // PWM频率设置为19.5 kHz 避免产生人能听到的噪音
#define _10MILLISEC 10
#define _50MILLISEC 50
#define _100MILLISEC 100
#define _500MILLISEC 500
#define HALLA 1 // RB3
#define HALLB 2 // RB4
#define HALLC 4 // RB5
#define CW 0 // 电机顺时针方向(CCW)转动标志位
#define CCW 1 // 电机反时针方向( CW)转动标志位
#define Switch_2 (!PORTCbits.RC14)
// 计算周期 Period = TMRClock * 6 / RPM
// 例如转速 RPM = 6000 (最大速度)
// 周期 Period = (20000000 / 64) * 6 / 6000 = 312.5
// RPM = 60 (最小转速)
// 周期 Period = (20000000 / 64) * 6 / 60 = 31250
#define MINPERIOD 313 // 对于 6000 max rpm 和 10 极电机
#define MAXPERIOD 31250 // 对于 60 min rpm 和 10 极电机
#define MINABSSPEED 327
#define MAXABSSPEED 32663
// 当使用floats来初始化有符号16-bit小数变量时使用这个宏
#define SFloat_To_SFrac16(Float_Value) (((Float_Value)<0.0)?(SFRAC16)(32768*(Float_Value)-0.5):(SFRAC16)(32767*(Float_Value)+0.5))
void SixStepComm(int _Current_Sector int _Required_Voltage); // 换向操作(根据转子的位置)
void InitADC10(void); // 初始化 ADC(用于速度指令)
void InitMCPWM(void); // 初始化 PWM为20kHz 中心对齐 互补对称模式,500 ns死区
void InitTMR1(void); // 初始化 TIMER1 (使用速度控制和电机停止保护)
void InitTMR3(void); // 初始化 TIMER3 (作为两个输入捕捉通道的时基)
void InitUserInt(void); // 初始化所有端口 (输入和输出)
void Init_IC_and_CN(void); // 初始化输入捕捉和电平变换中断CN (用于霍尔传感器输入)
void RunMotor(void); // 初始化所有变量和中断(用于启动和运行电机)
void StopMotor(void); // 清零所有标志位 停止和电机控制相关的操作,禁止PWM
void ForceCommutation(void); // 当电机低速运行,该函数强制换向
void ChargeBootstraps(void); // 在电机运行起始阶段 对bootstrap 电容进行充电
extern void SpeedControl(void); // 该函数包含所有汇编和C函数,进行速度PID环路控制
extern void SpeedCalculation(void);
// 工程里用到的标志位
struct
{
unsigned MotorRunning :1;
unsigned MotorCommInAdv :1;
unsigned MotorAdvEnabled:1;
unsigned unused :13;
}Flags;
unsigned int HallValue; // 霍尔输入值
unsigned int Sector; // 当前扇区值
unsigned int LastSector; // 最后一个扇区的值,对于滤除因为硬件滤波导致的慢转换速率引起的错误信号
unsigned int MotorStalledCounter = 0; // 每 1 ms加1 每次检测到新扇区即清零.用于强制换向和电机零速保护
// 电机接线端子 | MCLV板连接
// -------------------------|-------------------
// 白(相)
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2008-06-18 02:03 PID_Lab
文件 21643 2007-06-01 14:27 PID_Lab\Close_Loop.c
文件 44496 2007-06-01 14:27 PID_Lab\Close_Loop.o
文件 41631 2006-03-24 14:54 PID_Lab\ClosedLoop.o
文件 4338 2006-03-24 14:54 PID_Lab\foo.o
文件 40709 2005-04-26 04:24 PID_Lab\p30f3010.gld
文件 13364 2007-06-01 14:27 PID_Lab\PID.o
文件 5003 2007-06-01 14:27 PID_Lab\PID.s
文件 78767 2007-06-01 14:27 PID_Lab\PID_test.cof
文件 9380 2007-06-01 14:27 PID_Lab\PID_test.hex
文件 67641 2007-06-01 14:27 PID_Lab\PID_test.map
文件 861 2007-05-21 21:02 PID_Lab\PID_test.mcp
文件 95744 2008-06-18 02:26 PID_Lab\PID_test.mcw
文件 7844 2007-06-01 14:27 PID_Lab\PID_test.mptags
文件 103 2007-06-01 14:27 PID_Lab\PID_test.tagsrc
文件 146 2008-06-18 02:23 PID_Lab\说明.txt
文件 2651 2008-06-18 02:26 PID_Lab\PID_test.mcs
----------- --------- ---------- ----- ----
434321 17
- 上一篇:仿真图.zip
- 下一篇:用NE555装制的三角波、方波发生器电路
相关资源
- 模糊PID控制 c
- 课程设计蔬菜大棚自动控制系统,包
- (温度PID)实验指导书(三菱)
- PLCS7-1200PID参数自整定
- PLCS7-1200PID闭环控制
- RapidIO 2.2 Specification
- RapidIO_Rev_2.2_Specification
- 基于DSP的大功率开关电源的设计方案
- 基于DSP的大功率开关电源设计
- BLDC电机PID算法
- 基于双闭环模糊PID控制器的开关电源
- pid 模拟测试软件
- 基于RBF神经网络在线辨识的永磁同步
- VC++ RS232 RS485串口通信源代码_
-
Lipase-catalyzed synthesis and the lipid me
- 中微子双β衰变的CUPID-Mo实验:性能
- 智能车模糊控制
- LabVIEW实现Fuzzy_PID的补充资源
- 四轴飞控源码 PID参考apm 采用了dmp自带
- 平衡小车之家全套资料
- 基于ARM的高精度PID温度控制器_张军
- 基于STM32F07单片机风洞程序
- 基于51单片机的直流电机PID控制
- 基于STM32的智能服务型多功能多足机器
- 基于STM32PID电机控制
- STM32直流有刷电机PID控制
- STM32F407. 基于PID速度环的步进电机速度
- 基于stm32F103的两轮自平衡小车
- 模糊PID算法控制
- 倒立摆调试,使用步进电机,完全成
评论
共有 条评论