资源简介
梯形曲线运动控制算法,只贴出PID梯形算法核心代码和应用示例,由于保密关系,不能上传全部代码,望各位见谅,本示例仅供学习参考交流使用
代码片段和文件信息
/*
***************************************************************************************
*
* (c) Copyright 2006-2008 wei wei.qiu china zj. hz
* All Rights Reserved
*
*
*
*
*--------------文件信息-----------------------------------------------------------------
* 文 件 名: app_gpio.c
* 创 建 人: 邱卫卫
* 创建日期: 2014年01月08日
* 描 述: 主程序C语言入口 uC/OS-II启动
*---------- 版本信息-------------------------------------------------------------------
* 版 本: V1.0
*
*--------------------------------------------------------------------------------------
****************************************************************************************
void get_encoder_TWO(void)//******************计算当前实际速度V
{
s32 CNT3_tempCNT3_last;
cnt3 = TIM3 -> CNT;
CNT3_last = CNT3;
CNT3_temp = rcnt3 * ENCODE_PRD + cnt3;
Position_PID.ActualPoint = CNT3_temp;
V3 = CNT3_temp - CNT3_last;
while (V3>Vbreak)
{
rcnt3--;
CNT3_temp = rcnt3 * ENCODE_PRD + cnt3;
V3 = CNT3_temp - CNT3_last;
}
while (V3<-Vbreak)
{
rcnt3++;
CNT3_temp = rcnt3 * ENCODE_PRD + cnt3;
V3 = CNT3_temp - CNT3_last;
}
CNT3 = CNT3_temp;
//POSITION += CNT3;
}
void PID_init(void)
{
Position_PID.SetPoint=0.0;
Position_PID.ActualPoint=0.0;
Position_PID.CurPoint =0;
Position_PID.CurVolt =0;
Position_PID.DecSpeedF=0;
Position_PID.err=0.0;
Position_PID.err_last=0.0;
Position_PID.voltage=0.0;
Position_PID.integral=0.0;
Position_PID.Kp=0.01;
Position_PID.Ki=0.30;
Position_PID.Kd=0.1;
Position_PID.Integral_Index = 50;//((float)MOTION_POINT/(float)7200)*60.0+2.0;
TIM_Cmd(TIM2 ENABLE);
}
float point_PID_realize(float point)
{
float indexindex2=1.0err_temp;
Position_PID.SetPoint = point;
Position_PID.err=Position_PID.SetPoint-Position_PID.ActualPoint;
index = Position_PID.SetPoint/2;
if(Position_PID.DecSpeedF == 0)
{
if(((Position_PID.SetPoint-Position_PID.err)>=index)
||(Position_PID.voltage>=PWMPeriod))
{
Position_PID.CurPoint = Position_PID.SetPoint-Position_PID.err; //recode
Position_PID.CurVolt = Position_PID.voltage;
//Position_PID.integral -= 24*Position_PID.SetPoint;
Position_PID.DecSpeedF =0xAA;
}
}
if(abs(Position_PID.err)>Vbreak) //
{
index=0.0;
}
else if(Position_PID.ActualPoint>=Position_PID.SetPoint)
{
index=0;
Position_PID.DecSpeedF =0;
Position_PID.integral =0;
}
else if(abs(Position_PID.err)<=Position_PID.CurPoint)
{
//Position_PID.Kp = 7.0;
//Position_PID.voltage=Position_PID.Kp*Position_PID.err;
//return Position_PID.voltage;
- 上一篇:zedboard的usb视频显示
- 下一篇:操作系统——作业调度实验
相关资源
- FPGA实现PID.v
- DV泵加罗茨泵独立控制系统PID.smart
- 模糊PID控制 c
- 课程设计蔬菜大棚自动控制系统,包
- (温度PID)实验指导书(三菱)
- PLCS7-1200PID参数自整定
- PLCS7-1200PID闭环控制
- RapidIO 2.2 Specification
- RapidIO_Rev_2.2_Specification
- 基于DSP的大功率开关电源的设计方案
- 基于DSP的大功率开关电源设计
- BLDC电机PID算法
- 基于双闭环模糊PID控制器的开关电源
- pid 模拟测试软件
- 基于RBF神经网络在线辨识的永磁同步
-
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算法控制
评论
共有 条评论