资源简介
基于STM32的PID位置式闭环程序,值得参考
代码片段和文件信息
#include “control.h“
/**************************************************************************
作者:平衡小车之家
我的淘宝小店:http://shop114407458.taobao.com/
**************************************************************************/
int Target_position=11000; //初始值是10000,目标值是11000
int TIM3_IRQHandler(void)
{
if(TIM3->SR&0X0001)//10ms定时中断
{
TIM3->SR&=~(1<<0); //===清除定时器1中断标志位
Encoder=Read_Encoder(2); //===读取编码器的位置数据 初始值是10000,详见encoder.c 和encoder.h
Led_Flash(100); //===LED闪烁;指示单片机正常运行
Moto1=Position_PID(EncoderTarget_position); //===位置PID控制器
Xianfu_Pwm(); //===PWM限幅
Set_Pwm(Moto1); //===赋值给PWM寄存器
}
return 0;
}
/**************************************************************************
函数功能:赋值给PWM寄存器
入口参数:PWM
返回 值:无
**************************************************************************/
void Set_Pwm(int moto1)
{
if(moto1>0) AIN2=1 AIN1=0;
else AIN2=0 AIN1=1;
PWMA=myabs(moto1);
}
/**************************************************************************
函数功能:限制PWM赋值
入口参数:无
返回 值:无
**************************************************************************/
void Xianfu_Pwm(void)
{
int Amplitude=7100; //===PWM满幅是7200 限制在7100
if(Moto1<-Amplitude) Moto1=-Amplitude;
if(Moto1>Amplitude) Moto1=Amplitude;
}
/**************************************************************************
函数功能:绝对值函数
入口参数:int
返回 值:unsigned int
**************************************************************************/
int myabs(int a)
{
int temp;
if(a<0) temp=-a;
else temp=a;
return temp;
}
/**************************************************************************
函数功能:位置式PID控制器
入口参数:编码器测量位置信息,目标位置
返回 值:电机PWM
根据位置式离散PID公式
pwm=Kp*e(k)+Ki*∑e(k)+Kd[e(k)-e(k-1)]
e(k)代表本次偏差
e(k-1)代表上一次的偏差
∑e(k)代表e(k)以及之前的偏差的累积和;其中k为12k;
pwm代表输出
**************************************************************************/
int Position_PID (int Encoderint Target)
{
float Position_KP=80Position_KI=0.1Position_KD=500;
static float BiasPwmIntegral_biasLast_Bias;
Bias=Encoder-Target; //计算偏差
Integral_bias+=Bias; //求出偏差的积分
Pwm=Position_KP*Bias+Position_KI*Integral_bias+Position_KD*(Bias-Last_Bias); //位置式PID控制器
Last_Bias=Bias; //保存上一次偏差
return Pwm; //增量输出
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2016-08-17 12:46 电机位置闭环控制(代码详细注释)\
目录 0 2016-08-17 12:46 电机位置闭环控制(代码详细注释)\BALANCE\
目录 0 2016-08-17 12:46 电机位置闭环控制(代码详细注释)\BALANCE\CONTROL\
文件 2987 2016-06-01 11:55 电机位置闭环控制(代码详细注释)\BALANCE\CONTROL\control.c
文件 458 2016-06-01 11:53 电机位置闭环控制(代码详细注释)\BALANCE\CONTROL\control.h
目录 0 2016-08-17 12:46 电机位置闭环控制(代码详细注释)\BALANCE\DataScope_DP\
文件 2891 2015-07-09 14:05 电机位置闭环控制(代码详细注释)\BALANCE\DataScope_DP\DataScope_DP.C
文件 586 2015-07-09 14:05 电机位置闭环控制(代码详细注释)\BALANCE\DataScope_DP\DataScope_DP.h
目录 0 2016-08-17 12:46 电机位置闭环控制(代码详细注释)\BALANCE\DMP\
文件 19342 2012-12-14 11:16 电机位置闭环控制(代码详细注释)\BALANCE\DMP\dmpKey.h
文件 6765 2012-12-14 11:16 电机位置闭环控制(代码详细注释)\BALANCE\DMP\dmpmap.h
文件 84104 2015-07-09 14:05 电机位置闭环控制(代码详细注释)\BALANCE\DMP\inv_mpu.c
文件 4335 2015-07-09 14:05 电机位置闭环控制(代码详细注释)\BALANCE\DMP\inv_mpu.h
文件 57839 2015-07-09 14:05 电机位置闭环控制(代码详细注释)\BALANCE\DMP\inv_mpu_dmp_motion_driver.c
文件 3386 2015-07-09 14:05 电机位置闭环控制(代码详细注释)\BALANCE\DMP\inv_mpu_dmp_motion_driver.h
目录 0 2016-08-17 12:46 电机位置闭环控制(代码详细注释)\BALANCE\filter\
文件 2108 2015-07-09 14:05 电机位置闭环控制(代码详细注释)\BALANCE\filter\filter.c
文件 399 2015-07-09 14:05 电机位置闭环控制(代码详细注释)\BALANCE\filter\filter.h
目录 0 2016-08-17 12:46 电机位置闭环控制(代码详细注释)\BALANCE\MPU6050\
文件 11064 2015-10-20 17:02 电机位置闭环控制(代码详细注释)\BALANCE\MPU6050\MPU6050.c
文件 14781 2015-07-09 14:05 电机位置闭环控制(代码详细注释)\BALANCE\MPU6050\mpu6050.h
目录 0 2016-08-17 12:46 电机位置闭环控制(代码详细注释)\BALANCE\show\
文件 3273 2015-10-13 13:01 电机位置闭环控制(代码详细注释)\BALANCE\show\show.c
文件 331 2015-10-16 15:04 电机位置闭环控制(代码详细注释)\BALANCE\show\show.h
目录 0 2016-08-17 12:46 电机位置闭环控制(代码详细注释)\HARDWARE\
目录 0 2016-08-17 12:46 电机位置闭环控制(代码详细注释)\HARDWARE\ADC\
文件 2377 2015-06-22 15:54 电机位置闭环控制(代码详细注释)\HARDWARE\ADC\adc.c
文件 189 2015-06-22 15:39 电机位置闭环控制(代码详细注释)\HARDWARE\ADC\adc.h
目录 0 2016-08-17 12:46 电机位置闭环控制(代码详细注释)\HARDWARE\ENCODER\
文件 2547 2015-10-28 12:03 电机位置闭环控制(代码详细注释)\HARDWARE\ENCODER\encoder.c
文件 589 2015-10-28 12:03 电机位置闭环控制(代码详细注释)\HARDWARE\ENCODER\encoder.h
............此处省略126个文件信息
相关资源
- USB设备的获取与判断通过VIDPID
- 五线四相步进电机开发全套资料
- Ball&beam模糊PID控制仿真研究
- FPGA实现PID模糊控制
- 步进电机多轴运动控制系统的研
- 全桥双极性带死区互补SPWM基于STM32F
- 智能车PID+算法实现原理讲解
- STM3228BYJ-48步进电机+ULN2003驱动程序
- stm32步进电机驱动,包括库函数和寄存
- PID控制原理详解
- 智能步进电机驱控芯片TMC5160中文手册
- 基于STM32的bldc控制代码
- 模糊pid和模糊控制的智能车编程实现
- PID控制器参数整定方法及其应用研究
- 无人机飞行PID控制
- PID Standard Control Tool V 5.1
- 电机速度闭环控制代码详细注释
- stm32 风洞-位置式PID
- THB6128步进电机驱动电路
- PID位置环和速度环源码
- 步进电机资料,很全,完美。。。
- 模糊PID液位控制系统的设计与实现
- 基于单片机的电阻炉温度PID控制系统
- RapidIO学习笔记--互连协议的介绍
- zw_tangtangzizi-6915835-FactorySoftOPCDARapidT
- zw_weixin_41094315-10703260-增量式PID控制速
- 基于STM32F4控制步进电机代码
- 基于pid控制的只能循迹小车
- stm32控制步进电机加减速
- 数据挖掘工具Rapidminer基础介绍
评论
共有 条评论