• 大小: 2.61M
    文件类型: .rar
    金币: 1
    下载: 1 次
    发布日期: 2024-05-26
  • 语言: C/C++
  • 标签:

资源简介

单片机C语言PID控制

资源截图

代码片段和文件信息

#include “control.h“		
  /**************************************************************************
作者:平衡小车之家
我的淘宝小店:http://shop114407458.taobao.com/
**************************************************************************/
/**************************************************************************
函数功能:所有的控制代码都在这里面
          TIM1控制的定时中断 
**************************************************************************/
u8 Flag_Velocity=1;
int TIM1_UP_IRQHandler(void)  
{    
if(TIM1->SR&0X0001)//5ms定时中断
{   
  TIM1->SR&=~(1<<0);                             //===清除定时器1中断标志位       
  if(Menu_MODE==1)
{
Encoder=Read_Position(4);                      //===更新位置信息
Moto=Position_PID(EncoderTarget_Position);    //===位置PID控制器
}
  else if(++Flag_Velocity>2)                         //===速度控制20ms一次,一般建议10ms,因为这里使用USB供电,速度比较慢,20ms可以延长获取速度的单位时间,提高数值
{
Flag_Velocity=1;
Encoder=Read_Velocity(4);                      //===更新速度信息
  if(Encoder<0) Encoder=0;
Moto=Incremental_PI(EncoderTarget_Velocity);  //===速度PI控制器
}
  if(delay_flag==1)
  {
 if(++delay_50==5)  delay_50=0delay_flag=0;    //===给主函数提供50ms的精准延时
  }
  Xianfu_Pwm();                                    //===PWM限幅
if(Flag_Stop==0) Set_Pwm(Moto);             //===赋值给PWM寄存器
else                  Set_Pwm(0);                //===赋值给PWM寄存器
  Led_Flash(100);                                  //===LED闪烁指示系统正常运行 
Key();                                           //===扫描按键变化
Voltage=Get_battery_volt();                      //===采集供电电压
}       
 return 0;   

/**************************************************************************
函数功能:赋值给PWM寄存器
入口参数:PWM
返回  值:无
**************************************************************************/
void Set_Pwm(int moto)
{
     if(moto<0) AIN2=1 AIN1=0;
else            AIN2=0 AIN1=0;
PWMA=myabs(moto);
}

/**************************************************************************
函数功能:限制PWM赋值 
入口参数:无
返回  值:无
**************************************************************************/
void Xianfu_Pwm(void)
{
  int Amplitude=7100;    //===PWM满幅是7200 限制在7100
  if(Moto<-Amplitude) Moto=-Amplitude;
if(Moto>Amplitude)  Moto=Amplitude;
}
/**************************************************************************
函数功能:按键修改运行状态 
入口参数:无
返回  值:无
**************************************************************************/
void Key(void)  
{
int tmptmp2Position_Amplitude=260Velocity_Amplitude=5; 
tmp=click_N_Double(50); 
 if(Menu_MODE==1)  //改变运行位置 
 {
  if(tmp==1)Target_Position+=Position_Amplitude;
if(tmp==2)Target_Position-=Position_Amplitude;
 }
 else             //改变运行速度
 {
if(tmp==1)Target_Velocity+=Velocity_Amplitude;
if(tmp==2)Target_Velocity-=Velocity_Amplitude;
 }
 if(Target_Velocity>60)Target_Velocity=60; //速度最大值限幅
 if(Target_Velocity<0)Target_Velocity=0;   //速度最小值限幅
tmp2=Long_Press();      

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       5403  2020-01-02 21:22  单片机PID控制学习程序\BALANCE\CONTROL\control.c

     文件      11154  2016-02-22 15:13  单片机PID控制学习程序\BALANCE\CONTROL\control.c~RF18b9998.TMP

     文件        582  2016-05-06 09:55  单片机PID控制学习程序\BALANCE\CONTROL\control.h

     文件          0  2016-02-22 11:47  单片机PID控制学习程序\BALANCE\CONTROL\MFC10DB.tmp

     文件          0  2016-02-23 08:58  单片机PID控制学习程序\BALANCE\CONTROL\MFC3A5E.tmp

     文件       2891  2015-07-09 14:05  单片机PID控制学习程序\BALANCE\DataScope_DP\DataScope_DP.C

     文件        586  2015-07-09 14:05  单片机PID控制学习程序\BALANCE\DataScope_DP\DataScope_DP.h

     文件      19342  2012-12-14 11:16  单片机PID控制学习程序\BALANCE\DMP\dmpKey.h

     文件       6765  2012-12-14 11:16  单片机PID控制学习程序\BALANCE\DMP\dmpmap.h

     文件      84104  2015-07-09 14:05  单片机PID控制学习程序\BALANCE\DMP\inv_mpu.c

     文件       4335  2015-07-09 14:05  单片机PID控制学习程序\BALANCE\DMP\inv_mpu.h

     文件      57839  2015-07-09 14:05  单片机PID控制学习程序\BALANCE\DMP\inv_mpu_dmp_motion_driver.c

     文件       3386  2015-07-09 14:05  单片机PID控制学习程序\BALANCE\DMP\inv_mpu_dmp_motion_driver.h

     文件       2105  2015-12-07 15:52  单片机PID控制学习程序\BALANCE\filter\filter.c

     文件        399  2015-12-07 15:52  单片机PID控制学习程序\BALANCE\filter\filter.h

     文件      11099  2015-12-04 10:34  单片机PID控制学习程序\BALANCE\MPU6050\MPU6050.c

     文件      14787  2015-10-17 15:04  单片机PID控制学习程序\BALANCE\MPU6050\mpu6050.h

     文件       6211  2020-01-02 21:42  单片机PID控制学习程序\BALANCE\show\show.c

     文件        332  2017-03-11 14:51  单片机PID控制学习程序\BALANCE\show\show.h

     文件       4685  2016-05-06 10:25  单片机PID控制学习程序\HARDWARE\ADC\adc.c

     文件        487  2016-04-23 15:27  单片机PID控制学习程序\HARDWARE\ADC\adc.h

     文件       2887  2015-06-07 00:48  单片机PID控制学习程序\HARDWARE\DataScope_DP\DataScope_DP.C

     文件        581  2015-05-04 12:37  单片机PID控制学习程序\HARDWARE\DataScope_DP\DataScope_DP.h

     文件       4201  2016-07-01 19:38  单片机PID控制学习程序\HARDWARE\ENCODER\encoder.c

     文件        558  2016-05-04 08:56  单片机PID控制学习程序\HARDWARE\ENCODER\encoder.h

     文件       2423  2017-11-15 19:42  单片机PID控制学习程序\HARDWARE\EXTI\exti.c

     文件        454  2017-11-15 19:23  单片机PID控制学习程序\HARDWARE\EXTI\exti.h

     文件      10779  2015-12-07 15:46  单片机PID控制学习程序\HARDWARE\IIC\IOI2C.c

     文件       3118  2015-11-03 08:45  单片机PID控制学习程序\HARDWARE\IIC\IOI2C.h

     文件       2858  2017-11-15 19:24  单片机PID控制学习程序\HARDWARE\KEY\key.c

............此处省略169个文件信息

评论

共有 条评论

相关资源