0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

智能车舵机控制算法详解

姚小熊27 来源:网络整理 2018-05-11 10:22 次阅读

舵机的原理和控制

控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。

舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms-2.5ms范围内的角度控制脉冲部分,总间隔为2ms。以180度角度伺服为例,那么对应的控制关系是这样的:

0.5ms--------------0度;

1.0ms------------45度;

1.5ms------------90度;

2.0ms-----------135度;

2.5ms-----------180度;

舵机的追随特性:

假设现在舵机稳定在A点,这时候CPU发出一个PWM信号,舵机全速由A点转向B点,在这个过程中需要一段时间,舵机才能运动到B点。

保持时间为Tw

当Tw≥△T时,舵机能够到达目标,并有剩余时间;

当Tw≤△T时,舵机不能到达目标;

理论上:当Tw=△T时,系统最连贯,而且舵机运动的最快。

实际过程中w不尽相同,连贯运动时的极限△T比较难以计算出来。

假如我们的舵机1DIV =8us,当PWM信号以最小变化量即(1DIV=8us)依次变化时,舵机的分辨率最高,但是速度会减慢。

智能车舵机控制算法详解

智能车舵机控制算法详解

舵机:小车转向的控制机构。也就是控制小车的转向。它的特点是结构紧凑、易安装调试、控制简单、大扭力、成本较低等。舵机的主要性能取决于最大力矩和工作速度(一般是以秒/60°为单位)。它是一种位置伺服的驱动器,适用于那些需要角度不断变化并能够保持的控制系统。在机器人的控制系统中,舵机控制效果是性能的重要影响因素。舵机能够在微机电系统和航模中作为基本的输出执行机构,其简单的控制和输出值得单片机系统很容易与之接口

组成:舵盘、减速齿轮组、位置反馈电位计、直流电机、控制电路

工作原理:控制信号→控制电路板→电机转动→齿轮组减速→舵盘转动→位置反馈电位计→控制电路板反馈。

输入线:中间红色——电源线Vcc;黑色——地线GND;白色/橘黄色——控制信号线

信号:pwm信号,其中脉冲宽度从0.5-2.5ms(周期为20ms),相对应的舵盘位置为0-180度,呈线性变化。

智能车舵机控制算法详解

pwm波脉冲宽度与舵机转角角度的关系:

智能车舵机控制算法详解

也就是不同脉冲宽度的pwm波,舵机将输出不同的轴转角。所以要控制小车的转角,我们就要控制输出不同脉冲宽度的pwm波。

PWM:脉冲宽度调制

原理:对电路元件的通断进行控制,使输出端得到一系列幅值相等的脉冲。猪八戒的耙子就可以看似脉冲宽度相等的pwm波形。那不相等的呢,可以 把一排身高相等但胖瘦不同的人排排站看做脉冲宽度不相等的pwm波形。比如这里有一个简单的电路:

智能车舵机控制算法详解

我们以5s为一个周期,在每一个5s内,前3s开关打开,后2s开关闭合,则ab端电压将会这样变化:

智能车舵机控制算法详解

对电路元件的通断进行控制,使输出端得到一系列幅值相等的脉冲。

在这个例子中,输入信号脉冲宽度为3s,周期为5s。

重复一下:所以要控制小车的转角,我们就要控制输出不同脉冲宽度的pwm波。

PID控制:一种调节器控制规律为比例、积分、微分的控制。其中:P:比例(proportion)、I:积分(integral)、D:导数(derivative)

智能车舵机控制算法详解

式子中Kp为比例系数,Ti为积分时间参数,Td为微分时间常数。

各个参数的意义作用:

Kp:比例系数。一般增大比例系数,将加快系统的响应。

Ti:积分时间常数。一般地,积分控制通常与比例控制或比例微分控制联合使用,构成 PI或 PID控制.增大积分时间常数 (积分变弱)有利于小超调,减小振荡,使系统更稳定,但同时要延长系统消除静差的时间.积分时间常数太小会降低系统的稳定性,增大系统的振荡次数.

Td:微分时间常数。一般微分控制和比例控制和比例积分控制联合使用,组成PD或PID控制,微分控制可改善系统的动态特性。

PID的控制方法常用的有两种:

1.增量式PID

所谓的增量,就是本次控制量和上次控制量的差值。增量式PID是一种对控制量的增量进行PID控制的一种控制算法。

智能车舵机控制算法详解

(说明:Kp-》P,Ki-》I,Kd-》D,e数组-》error数组,

e[n]-》本次差值,e[n-1]-》上次差值,e[n-2]-》上上次差值)

举个例子,增量式PID可以应用在电机上。

假设当前电机PID的pwm值为5000(精度为10000,即此时的占空比为50%)。对应的速度为100r/s。

程序发出一个命令,要求pwm输出为0,即要求停车。(可能有人有疑问为什么不直接程序给pwm为0,这也是一种方法,可是由于惯性的存在,小车会在一段时间后才停下。)

这时,我们可以采用PID控制的方法来实现。

我们在程序中定义几个变量:

智能车舵机控制算法详解

根据公式,我们编写程序:

void PID()

{

/*

增量式PID

P=Kp*(error-error_pre);

D=Kd*(error-2*error_pre+error_pre_pre);

I=Ki*error;

Pwm+=P+I+D;

*/

error=speed_want-speed_now; //speed_now可以通过编码器采值等等方式得到

pwm_duty+=(int)(P*(error-error_pre)+I*error+D*(error-2*error_pre+error_pre_pre));

//注意上面的加号,加号是增量式PID的体现。我们对增量(即右边的式子)进行PID控制。

error_pre_pre=error_pre;

error_pre=error;

}

当函数运行第一次的时候,输出的pwm为:

智能车舵机控制算法详解

电机给了一个反转的力,小车前进受到了阻力,于是可以很快的停下来了。

2、位置式PID

与增量式不同,位置式PID不需要对控制量进行记忆,直接对偏差值进行计算得出期望的pwm。公式:

智能车舵机控制算法详解

(说明:Kp-》P,Ki-》I,Kd-》D,ek-》本次误差、ek-1-》上次误差)

举个例子,位置式PID可以应用在舵机上。因为舵机本次的pwm输出值与上次pwm输出值关系不太,舵机需要的是快速转到某个角度。

假设舵机pwm输出1000时舵盘转轴为90°,pwm输出0时舵盘转轴为0°,pwm输出2000时舵盘转轴为180°。

现在舵机pwm输出为1500,我们要让舵盘转到最中间。

在这里我们采用PD控制,即I值为0(I值为偏差的积分,即对偏差求和。我们当时试验小车的舵机控制时发现I值可以省略,PD控制足矣。当然,具体需不需要I项要在实际中进行分析验证)。

代码:

pwm_duty=(int)(P*error+D*(error-error_pre); //红色部分表示这是位置式PID控制

反馈系统:

智能车舵机控制算法详解

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 控制
    +关注

    关注

    4

    文章

    1010

    浏览量

    122607
  • PID
    PID
    +关注

    关注

    35

    文章

    1470

    浏览量

    85257
  • 舵机
    +关注

    关注

    17

    文章

    264

    浏览量

    40935
收藏 人收藏

    评论

    相关推荐

    智能车

    求一个智能车的程序,有一个L298N驱动,红外传感器,舵机模块的
    发表于 08-27 22:35

    [资料分享]智能车黑线识别算法控制策略研究

    不错的资料,智能车黑线识别算法控制策略研究
    发表于 09-09 12:17

    labview智能车参考程序(fuzzy 控制

    最近在做智能车的材料,想用Labview实现控制,发现了例程中的这个用模糊算法控制倒车的程序文件,感觉受益很大,特意发到这里,希望有需要的同学也能有点收获。
    发表于 02-05 14:55

    PID的智能车控制算法研究

    PID的智能车控制算法研究
    发表于 07-18 20:07

    基于光电管路径识别的智能车系统设计

    舵机驱动前轮转向,使用符合PI算法控制器实现直流电机的调速。为了使智能车快速、平稳地行驶,系统必须把路径识别、相应的转向伺服电机控制以及
    发表于 11-06 15:08

    请问智能车怎么依靠舵机实现左右转向?

    网上的资料,舵机好像只能实现一个方向转,可是某些智能车怎么怎么依靠舵机实现左右转向呢???
    发表于 06-24 00:23

    电磁循迹智能车是由哪些模块组成的

    我的第一辆智能车—电磁循迹智能车以下是所用的模块:舵机,电机,L298N驱动模块,PID算法,OLED,电磁杆,ADC多路采集配置DMA,干簧管,普通GPIO口使用。1.
    发表于 01-14 09:08

    舵机模糊控制智能车控制中的应用介绍

    ,如何让智能车在不同形状的赛道上进行平稳 、快速的切换,实现路径的最优控制,是转向控制的一个关键问题 目前,转向控制的物理实现普遍采用的是用一个舵机
    发表于 09-19 08:03

    基于路径识别的智能车系统设计

    介绍了一种基于光电管路径识别的智能车系统。该智能车使用光电管作为路径识别装置,依靠舵机辅助智能车转向,使用直流电机驱动智能车前进。系统采用符
    发表于 07-06 16:57 73次下载

    飞思卡尔智能车舵机测试程序

    飞思卡尔智能车舵机
    发表于 01-06 16:11 544次下载

    基于光电管路径识别的智能车系统设计

    介绍了一种基于光电管路径识别的智能车系统。该智能车使用光电管作为路径识别装置,依靠舵机辅助智能车转向,使用直流电机驱动智能车前进。系统采用符
    发表于 06-09 09:56 2941次阅读
    基于光电管路径识别的<b class='flag-5'>智能车</b>系统设计

    改进PID算法智能车控制上的应用

    改进PID算法智能车控制上的应用
    发表于 11-18 17:19 1次下载

    飞思卡尔智能车舵机和测速的控制设计与实现pdf资料下载

    飞思卡尔智能车舵机和测速的控制设计
    发表于 03-16 17:39 20次下载

    基于模糊控制算法智能车转向舵机控制

    本文首先介绍了模糊控制算法的概念,其次介绍了模糊控制的工作原理,最后详细介绍了基于模糊控制算法智能车
    的头像 发表于 05-11 10:48 1.1w次阅读
    基于模糊<b class='flag-5'>控制</b><b class='flag-5'>算法</b>的<b class='flag-5'>智能车</b>转向<b class='flag-5'>舵机</b><b class='flag-5'>控制</b>

    飞思卡尔智能车舵机和测速的控制设计与实现

    电子发烧友网站提供《飞思卡尔智能车舵机和测速的控制设计与实现.pdf》资料免费下载
    发表于 10-20 09:38 0次下载
    飞思卡尔<b class='flag-5'>智能车</b><b class='flag-5'>舵机</b>和测速的<b class='flag-5'>控制</b>设计与实现