资源简介
里面有详细的介绍,PID关于电机速度的闭环控制程序。有详细说明
代码片段和文件信息
#include “control.h“
/**************************************************************************
作者:平衡小车之家
我的淘宝小店:http://shop114407458.taobao.com/
**************************************************************************/
int Target_velocity=50; //设定速度控制的目标速度为50个脉冲每10ms
int TIM3_IRQHandler(void)
{
if(TIM3->SR&0X0001)//10ms定时中断
{
TIM3->SR&=~(1<<0); //===清除定时器1中断标志位
Encoder=Read_Encoder(2); //===读取编码器的值,M法测速,输出为每10ms的脉冲数
Led_Flash(100); //===LED闪烁;指示单片机正常运行
Moto1=Incremental_PI(EncoderTarget_velocity); //===速度PI控制器
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;
}
/**************************************************************************
函数功能:增量PI控制器
入口参数:编码器测量值,目标速度
返回 值:电机PWM
根据增量式离散PID公式
pwm+=Kp[e(k)-e(k-1)]+Ki*e(k)+Kd[e(k)-2e(k-1)+e(k-2)]
e(k)代表本次偏差
e(k-1)代表上一次的偏差 以此类推
pwm代表增量输出
在我们的速度控制闭环系统里面,只使用PI控制
pwm+=Kp[e(k)-e(k-1)]+Ki*e(k)
**************************************************************************/
int Incremental_PI (int Encoderint Target)
{
float Kp=20Ki=30;
static int BiasPwmLast_bias;
Bias=Encoder-Target; //计算偏差
Pwm+=Kp*(Bias-Last_bias)+Ki*Bias; //增量式PI控制器
Last_bias=Bias; //保存上一次偏差
return Pwm; //增量输出
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2787 2016-06-01 11:57 电机速度闭环控制(代码详细注释)\BALANCE\CONTROL\control.c
文件 463 2015-10-28 10:52 电机速度闭环控制(代码详细注释)\BALANCE\CONTROL\control.h
文件 2891 2015-07-09 14:05 电机速度闭环控制(代码详细注释)\BALANCE\DataScope_DP\DataScope_DP.C
文件 586 2015-07-09 14:05 电机速度闭环控制(代码详细注释)\BALANCE\DataScope_DP\DataScope_DP.h
文件 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
文件 2108 2015-07-09 14:05 电机速度闭环控制(代码详细注释)\BALANCE\filter\filter.c
文件 399 2015-07-09 14:05 电机速度闭环控制(代码详细注释)\BALANCE\filter\filter.h
文件 11064 2015-10-20 17:02 电机速度闭环控制(代码详细注释)\BALANCE\MPU6050\MPU6050.c
文件 14781 2015-07-09 14:05 电机速度闭环控制(代码详细注释)\BALANCE\MPU6050\mpu6050.h
文件 3273 2015-10-13 13:02 电机速度闭环控制(代码详细注释)\BALANCE\show\show.c
文件 331 2015-10-16 15:04 电机速度闭环控制(代码详细注释)\BALANCE\show\show.h
文件 2377 2015-06-22 15:54 电机速度闭环控制(代码详细注释)\HARDWARE\ADC\adc.c
文件 189 2015-06-22 15:39 电机速度闭环控制(代码详细注释)\HARDWARE\ADC\adc.h
文件 2563 2015-07-09 14:05 电机速度闭环控制(代码详细注释)\HARDWARE\ENCODER\encoder.c
文件 470 2015-07-09 14:05 电机速度闭环控制(代码详细注释)\HARDWARE\ENCODER\encoder.h
文件 10557 2015-07-09 14:05 电机速度闭环控制(代码详细注释)\HARDWARE\IIC\IOI2C.c
文件 3119 2015-07-09 14:05 电机速度闭环控制(代码详细注释)\HARDWARE\IIC\IOI2C.h
文件 1630 2015-06-21 12:46 电机速度闭环控制(代码详细注释)\HARDWARE\KEY\key.c
文件 234 2015-06-21 11:03 电机速度闭环控制(代码详细注释)\HARDWARE\KEY\key.h
文件 484 2015-12-27 16:13 电机速度闭环控制(代码详细注释)\HARDWARE\LED\LED.C
文件 166 2015-12-27 16:24 电机速度闭环控制(代码详细注释)\HARDWARE\LED\LED.H
文件 1059 2015-12-27 15:50 电机速度闭环控制(代码详细注释)\HARDWARE\MOTOR\motor.c
文件 307 2015-12-27 16:01 电机速度闭环控制(代码详细注释)\HARDWARE\MOTOR\motor.h
文件 5550 2015-06-21 16:07 电机速度闭环控制(代码详细注释)\HARDWARE\OLED\oled.c
文件 961 2015-06-21 16:51 电机速度闭环控制(代码详细注释)\HARDWARE\OLED\oled.h
............此处省略129个文件信息
相关资源
- stm32 风洞-位置式PID
- PID位置环和速度环源码
- 模糊PID液位控制系统的设计与实现
- 基于单片机的电阻炉温度PID控制系统
- RapidIO学习笔记--互连协议的介绍
- zw_tangtangzizi-6915835-FactorySoftOPCDARapidT
- zw_weixin_41094315-10703260-增量式PID控制速
- 基于pid控制的只能循迹小车
- 数据挖掘工具Rapidminer基础介绍
- 智能控制先进PID算法,应用于智能控
- 步进电机PID速度闭环控制.rar
- 全桥单极性带死区互补SPWM基于STM32F
- RapidIO Specification 3.2
- 步进电机位置速度双环串级控制
- 微软官方推荐.NET平台的爬虫软件,
- scrapy爬虫完整案例.zip
- RapidMiner
- xilinx srio协议中文版.rar
- stm32 自动车电磁巡线.rar
- DSP的C2000系列的PID运算
- STM32/ARM的官方DSP库
- K60_DMP_3_PID输出
- 两轮平衡车控制源码
- Wireless Communications Over Rapidly Time-Vary
- 先进PID控制MALAB仿真
- stm32单片机pid控制编码器直流电机程序
- PIDKey密钥检测工具v2.1.2.1017
- stm32 风洞 pid算法程序
- PID算法及仿真
- 电机模糊pid控制
评论
共有 条评论