STM32平衡车二次学习记录

功能配置

编码器

编码器作为一个读取电机的位移的传感器,对应的引脚GPIO要设置成浮空输入。
通过STM32的定时器输入捕获,实现数据的读取
编码器读取电机速度的原理,通过编写的Read_Speed函数,单位周期内读取的位移值即为该时刻的速度,即每次读取完赋给另一个变量之后,需要将定时器捕获的值清零
1.编码器读取电机速度的原理,通过编写的Read_Speed函数,单位周期内读取的位移值即为该时刻的速度,即每次读取完赋给另一个变量之后,需要将定时器捕获的值清零
2.编码器级数的原理以及程序配置的流程:①时钟配置,GPIO和定时器的时钟②GPIO引脚配置,设置为输入模式③定时器的时基单元,不分频④配置输入捕获单元(滤波器和极性)
在这里插入图片描述
后两个参数是极性选择,上升沿表示不反相,下降沿表示反向。
在这里插入图片描述
通过(上升沿,下降沿),(高电平,低电平)两组的状态组合进行区分正转还是反转。

TB6612驱动

驱动原理和L298N类似,两个电机,每个电机各有两个方向引脚如:1,0正转;0,1反转;这样。一共四个AIN1.AIN2;BIN1,BIN2。(PB12,13,14,15)方向确定之后,将PID调整过的一个脉冲值,使用定时器的PWM输出比较功能,在程序中是使用定时器一的通道一和通道四(PA8,11),输出相应的脉冲

平衡车PID算法

1.KP就让偏差(目标减去当前)与调节装置的“调节力度”,建立一个一次函数的关系,kP越大,调节作用越激进,kP调小会让调节作用更保守。
2.KD控制作用,让被控制的物理量的“变化速度”趋于0,即类似于“阻尼”的作用。kD参数越大,向速度相反方向刹车的力道就越强。
3.对于下面这种情况:天气太冷,水散热的速度,和P控制的加热的速度相等了。需要引入KI积分调节。
P兄这样想:我和目标已经很近了,只需要轻轻加热就可以了。
D兄这样想:加热和散热相等,温度没有波动,我好像不用调整什么。作为一个人,根据常识,我们知道,应该进一步增加加热的功率。可是增加多少该如何计算呢?设置一个积分量。只要偏差存在,就不断地对偏差进行积分(累加),并反应在调节力度上。
I的作用就是,减小静态情况下的误差,让受控物理量尽可能接近目标值

速度环PI控制

速度环输入:1.给定速度2.速度反馈
输出:角度值(直立环的期望角度)
选择PI的原因:由于电机的死区或者是滑动,电机的振动,需要减小静差。正反馈

直立环PD控制

直立环输入:1.给定角度2.角度反馈
输出:PWM(直接控制小车)
控制量:角度
比例:提高响应速度,减小静差。
积分项:消除稳态误差。
微分项:减小震荡以及超调。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值