STM32上实现增量式PID

论坛 期权论坛     
选择匿名的用户   2021-5-30 02:10   173   0
<div id="sina_keyword_ad_area2">
<div>
  目录:
</div>
<div>
  一、什么是
  <span style="color:#444444;">增量式</span>
  <span style="color:#444444;">PID</span>
</div>
<div>
  <span style="color:#444444;">二、硬件部分</span>
</div>
<div>
  <span style="color:#444444;">三、软件部分</span>
</div>
<div>
   
</div>
<div>
  ---------------------------------------------------------------------------------------------------------------
</div>
<div>
  <span style="color:#444444;">一、什么是增量式PID</span>
</div>
<span style="color:#444444;">虽然PID不是什么牛逼的东西,但是真心希望以后刚刚接触这块的人能尽快进入状态。特地分享一些自己如何实现的过程。</span>
<a href="http://blog.sina.com.cn/s/blog_453226290102wady.html">PID控制算法介绍与C程序实现</a>
<br>
<span style="color:#444444;">首先说说增量式PID的公式,这个关系到MCU算法公式的书写,实际上两个公式的写法是同一个公式变换来的,不同的是系数的差异。</span>
<a href="http://bbs.elecfans.com/jishu_484125_1_1.html">http://bbs.elecfans.com/jishu_484125_1_1.html</a>
<div>
  <span style="color:#444444;">资料上比较多的是:</span>
  <div>
   <a href="http://album.sina.com.cn/pic/001gz4SZzy7g1wzUxIrf7"><img alt="STM32上实现增量式PID" name="image_operate_18571511396618286" src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-290e3d025028701f841f870113e6557f.png"></a>
   <br>
   <span style="color:#444444;">还有一种的算法是:</span>
  </div>
  <div>
   <a href="http://album.sina.com.cn/pic/001gz4SZzy7g1wBmx3s3a"><img alt="STM32上实现增量式PID" height="228" name="image_operate_29631511396618345" src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-5137a50e2a37d7c6ac31dee7b64d3d0c.png" width="577"></a>
   <br>
   <span style="color:#444444;">这里主要介绍第二种,具体会分析比例、积分、微分三个环节的作用。</span>
  </div>
  <div>
   <br> ---------------------------------------------------------------------------------------------------------------
   <br>
   <span style="color:#444444;">二、硬件部分</span>
   <br>
   <span style="color:#444444;">控制系统的控制对象是4个空心杯直流电机,电机带光电编码器,可以反馈转速大小的波形。电机驱动模块是普通的L298N模块。</span>
   <span style="color:#444444;">芯片:STM32F103ZET6</span>
   <br>
   <br> ---------------------------------------------------------------------------------------------------------------
   <br> 三、软件部分
   <br>
   <span style="color:#444444;">PWM输出:</span>
  </div>
  <div>
   <span style="color:#444444;">TIM3,可以直接输出4路不同占空比的PWM波</span>
   <br>
   <span style="color:#444444;">PWM捕获:</span>
  </div>
  <div>
   <span style="color:#444444;">STM32除TIM6、TIM7其余的都有捕获功能,本处使用TIM1、TIM2、TIM4、TIM5四个定时器捕获四个反馈信号</span>
   <br>
   <span style="color:#444444;">PID的采样和处理:</span>
  </div>
  <div>
   <span style="color:#444444;">使用了基本定时器TIM6,溢出时间就是我的采样周期,理论上T越小效果会越好,这里我取20ms,依据控制对象吧,如果控制水温什么的采样周期会是几秒几分钟什么的。</span>
   <br>
   <br>
   <span style="color:#444444;">上面的PWM输出和捕获关于定时器的设置都有例程,我这里是这样的:</span>
   <br>
   <span style="color:#444444;">TIM3输出四路PWM,在引脚 C 的 GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9输出</span>
   <br>
   <span style="color:#444444;">四路捕获分别是TIM4、TIM1</span>
   <span style="color:#444444;">、</span>
   <span style="color:#444444;">TIM2</span>
   <span style="color:#444444;">、</span>
   <span style="color:#444444;">TIM5 ,对应引脚是:  PB7、PE11、PB3、PA1</span>
   <br>
   <span style="color:#444444;">高级定时器ti</span>
   <span style="color:#444444;">m1的初始化略不同,它的中断”名称“和通用定时器不同。具体的内容,请大家看一下我分享的代码就明白了。</span>
  </div>
  <div>
   <div>
    void TIM3_PWM_Init(u16 arr,u16 psc)
   </div>
   <div>
    {  
   </div>
   <div>
            GPIO_InitTypeDef GPIO_InitStructure;
   </div>
   <div>
            TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
   </div>
   <div>
            TIM_OCInitTypeDef  TIM_OCInitStructure;
   </div>
   <div>
            
   </div>
   <div>
     
   </div>
   <div>
            RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
   </div>
   <div>
            RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC  | RCC_APB2Periph_AFIO, ENABLE);  
   </div>
   <div>
    //使能GPIO外设和AFIO复用功能模块时钟使能
   </div>
   <div>
            
   </div>
   <div>
      GPIO_PinRemapConfig(GPIO_FullRemap_TIM3, ENABLE); //Timer3全映射 GPIOC-&gt; 6,7,8,9                 //用于TIM3的CH2输出的PWM通过该LED显示
   </div>
   <div>
     
   </div>
   <div>
    //设置该引脚为复用输出功能,输出TIM3 CH1 CH2 CH3 CH4 的PWM脉冲波形
   </div>
   <div>
            GP
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP