目录
一、为什么要引入PID
r是期望值,y是实际值
上面图我们一般用的电机的上面是+下面是-,假设就顺时针转,反过来就是逆时针,上下的差值电压大的话速度就越大
在这里假设我们设置PWM的占空比,我们给10m/s,在我的上一篇有细讲
[STM32]个人学习笔记--通过C代码使用PWM_yanyonglin123的博客-CSDN博客
因为给的力是一定的,但是如果我们放在不同的地面或者是爬坡的时候,受到的阻力是不一定是10m/s。
所以实际速度和期望速度不一样,就需要引入PID调节,但是在这之前我们需要测量实际速度就要用到一个测速的装置,叫做编码器。
同样的如果想做一个角度环(让实际角度 = 期望角度),可以使用一个测量角度的传感器-陀螺仪(MPU6050)
角度环其实就是让你的小车直着走
减速器(编码器)的东西就是让速度变慢了,让力矩变大
光电编码器的精度更高会更贵一些,霍尔编码器对于我们小车来说就足够用了
我询问了实验室的老师(老师说欧姆龙的编码器),我感觉下面链接这种就可以了
GM37-3530直流电机AB相增量式霍尔编码器 智能小车磁编码测速模块
就是有一个光栅,在圆盘里面转啊转,然后就出来上面的波形,单相能测量速度,但是两相就能知道正转还是反转
二、编码器是什么?
编码器是一种将角位移或者角速度转换成一串电数字脉冲的旋转式传感器。编码器又分为光电编码器和霍尔编码器。
三、编码器工作原理是什么?
霍尔编码器是有霍尔马盘和霍尔元件组成。霍尔马盘是在一定直径的圆板上等分的布置有不同的磁极。霍尔马盘与电动机同轴,电动机旋转时,霍尔元件检测输出若干脉冲信号,为判断转向,一般输出两组存在一定相位差的方波信号。示意图如下∶
上图是Stm32F10x的编码器的配置,为什么配置为65535
慢慢从0往上计数,0-65535电机转了很多圈,算速度只需要如图上求斜率,中间切一段就好了
我:那一般放置在小车的什么位置呢?
老师:有个齿轮,连到轮子上,轮转他就转
我们的小车一般用的是增量型的PID
只用KP控制时候
这个up主举了一个例子:比如我们要把水面提高到10m,如果kp设置为0.2,那么一开始是误差是10,那么就倒入2m,再误差是8,倒入1.6,后来误差是6.4,那么倒入就是1.28。。。
会一直趋近于10但是一直到不了10
kp越大那么抖动的程度就会越大
如果说漏出来的水和kp算出来的水一样,那么就永远不会满了,所以需要引入积分调节KI
那么我们用累积的误差,然后kp调节后再加上这个累积的误差,然后就会慢慢又达到期望的值了
KI好处就是减少静态误差
Kd微分就是防止灌水灌得太多太猛,加上一个负值,然后就减缓
体现在车上的就是给的电压太高了,就会导致电机的烧毁。
上面的这个公式是连续时间的值
但是我们在单片机都是要算离散的量的
总结:
P:比例项,最重要的部分; I:积分项,减小静差; D:微分项,增加阻尼。
实验中用到的定时器
TIM4先把走过栅格的个数赋个初值
TIM2中断就算出速度。
每隔5ms就去计算一次速度
定时器4获得的是一个栅格数
用0x7fff = 65535作为中间的值,就可以算出来是,如果是正转就是算出来的正值,但是如果是反转,那么算出来的就是负值。
cnt*1.0(学习的这个up主讲的不太清楚)这是讲的比较好的,参考另一个CSDN博主
STM32电机测速(正交或者霍尔编码器)_「小白学移动机器人」一个专注分享移动机器人相关知识的公众号!-CSDN博客_霍尔编码电机
调试的软件是:VOFA+
实验的时候我们先调节kp、再调节KI
调节的时候就是调节kp,增加阻尼,调节KI