微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 智能车速度控制pid(电机闭环控制算法)

智能车速度控制pid(电机闭环控制算法)

时间:12-02 来源:互联网 点击:

息,我们首先就是对舵机的控制,控制车子根据什么道路情况来进行转弯,

转弯的方向,大小,都是靠这些数据来实现,当然当前的速度值也是控制

舵机转向大小的一个附加因素,这样更加的有利于我们及时处理不同弯道。

知道了这些信息,就跟我们开车一样,我们要转弯了,得感知我们车的速

度,怎么感知啊,就靠汽车自带的速度表,这样我们就可以通过控制刹车

或者油门还有方向盘来控制车子平稳的转过弯道,不同的弯道,不同的速

度,转弯的控制和刹车的控制都是不同的。如果我们不知道当前的速度,

那么很可能因为拐弯速度过快,导致翻车,或者侧滑,造成危险。智能车

情况跟真车是一样的,我们必须知道车子当前速度,比如我们智能车拐弯

安全速度是3M/S,所谓安全速度就是车子顺利安全且没有较大侧滑过弯时

的速度,在进入弯道前我们车子的速度是4M/S,当传感器感知要进入弯道

了,通过跟安全速度对比,我们发现智能车的速度远大于安全弯道速度,

这个时候我们就要刹车,把车子速度快速降低到3M/S,这样保证我们顺利

快速的过弯。在这里您可能问3M/S 的安全速度怎么来?其实很简单这个

速度是靠实验来的,不用什么计算,完全属于经验值,根据跑道的材料、

车子机械性能和弯道的角度来决定,所以为什么我们要比赛的时候要试车,

试车中一个最重要的环节就是熟悉比赛跑道所用的材料,用于我们实验车

子的安全速度等。

对于智能车的速度反馈,在这里我就针对增量式编码器来说,其实码

盘啊,霍尔啊,他们原理都一样。光电增量式编码器不同于绝对值编码器,

绝对值编码器在编码器转动一周的每个特定位置都有一个确定的值输出,

增量式编码器转动一圈,固定输出一定的脉冲,无法确定转动到哪个位置,

对外输出一般为方波,这样有助于MCU 进行数据采集。

有了编码器,我们通过齿轮、皮带等将编码器跟电机或者传动轮进行

连接,这样电机转动的时候,就会带动编码器转动,然后编码器就能向外

输出方波,接到单片机上,我们就能进行采集编码器脉冲了。有了脉冲,

可能您又要问这个脉冲没有规律性,随着转动不停的增加,到底怎么来衡

量速度?您这个时候啊,动动手,观察观察数据特点,您会发现,当车速

度比较快的时候啊,脉冲数自增的速度比较快,也就是说,转速越快,频

率越高,单位时间内的脉冲数就越多,这样立刻有了灵感,我们用定时器

设置一个中断,这个中断的时间为5MS,那么每5MS 我们就采集编码器

一次脉冲值,当采集完毕后,我们就对脉冲数寄存器清零,这样在5MS

内,得到的脉冲数越多,说明车子速度越快,到这里车速就解决了。到这

里您可能会说:还没完呢,还没转换为速度呢?要把这个脉冲根据距离和

时间转换为具体的XX 米/秒的速度。您的这个想法很好,但是真的是没

有必要,我们根本没有必要浪费时间去计算这个,因为我们本来就是想知

道速度,脉冲数的多少已经就能衡量速度大小了,我们何必要很麻烦的转

换为具体速度? 一定时间内的脉冲数已经够了,够我们底层硬件进行判断

计算了。既然我们反馈的数据类型为脉冲数,所以我们所给定的速度也对

应的到脉冲数,比如50 个脉冲代表速度3M/S,80 个代表4M/S 的速度,

这样通过道路类型给定脉冲数,就能实现电机的闭环控制了,是不是很简

单?到这里我知道又有人会疑问,50 个脉冲对应3M/S,80 个脉冲对应4M/S

是怎么得到的?其实这个更简单,很多人做智能车容易把简单问题复杂化,

其实很多问题都可以用几行程序解决,比如那个坡道,很多人用了很多复

杂方法解决,比如加一个开关啊,加个加速度啊,加个陀螺仪啊,根本没

有必要,程序几行就搞定了。具体的脉冲对应速度,您固定给定一个脉冲

让车子跑跑到一圈,然后记下时间,跑道实际长度除以时间,就是对应速

度,你只是需要大概知道对应就行了,不用一个一个实验,具体的X 米/

秒是宏观上我们感知的,跟单片机没有任何关系。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top