-
大小: 68KB文件类型: .rar金币: 1下载: 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装制的三角波、方波发生器电路
相关资源
- 基于labview的直流电机转速控制
-
Rapidxm
l读取并修改xm l文件 - 小车巡线控制算法 最经典的PID控制算
- 基于PLC的PID算法在恒水位控制上的实
- ZN法整定PID参数
- GA遗传算法优化PID.rar
- 直流电机的PID控制
- RapidIO-Specification-4.0
- 用于瓦斯抽放真空泵的减振系统设计
- 基于改进的PSO算法的球磨机PID神经网
- Rapid detection of virulent factors of Aeromon
- STM32 PID控温源码内有增量算法和位置
- OV7670和ADV611的图像采集与压缩系统设
- 不确定磁悬浮轴承模型的自适应PID控
- 基于PID控制器的磨煤机进料控制单元
- Rapid thermal processing phosphorus gettering
- Monostable Waves in a Time-delayed and Diffusi
- Aluminum-induced changes in reactive oxygen sp
- One new subgenus and one record species of Rha
- A Geometric Morphometric Approach of Wing Shap
- PID autoTune PID 自整定算法C代码
- grbl运动控制源代码+中文注释
- 一拖三二次恒压供水竣工资料.rar
- 非常好的PID模拟软件
- SMBUS1.1 SMBUS110 中文注释版
- 大神教你如何将PID输出结果与PWM占空
- 基于自适应模糊PID控制器的温度控制
- 单神经元自适应PID控制算法
- Xilinx Srio详解IP核使用.docx
- 基于STM32F103C8T6的直流无刷电机程序
评论
共有 条评论