• 大小: 2.23MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-10-14
  • 语言: 其他
  • 标签: PID  

资源简介

里面有详细的介绍,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个文件信息

评论

共有 条评论