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

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

3天内不再提示

基于ATmage128单片机和红外测距传感器实现自平衡机器人系统的设计

电子设计 来源:单片机与嵌入式系统应用 作者:李红义,孙汉旭, 2021-04-13 14:43 次阅读

作者:李红义,孙汉旭,贾庆轩 来源:单片机嵌入式系统应用

引 言

移动式机器人在各行各业具有广泛的应用,而轮式移动机器人由于具有结构简单、可控性强、成本低等优点,成为移动式机器人研究的一个主要方向。自平衡机器人采用水平布置的两轮结构,本身是一个不稳定体。也就是说,自平衡机器人在静止状态下,不能保持平衡,车体总是要向前或向后倾倒;而在运动状态下,可以通过一定的控制策略使它达到动态平衡。

由于自平衡机器人具有内在不稳定性和结构灵活性,国内外机器人爱好者设计了多种结构、外观各异的自平衡机器人,尝试采用各种控制策略使其达到自平衡控制。通常这类机器人采用姿态传感器检测机器人车体的倾倒角度和倾倒角速度,根据当前机器人姿态控制伺服电机驱动电压的转向和转速,从而使机器人保持平衡。该方式制作的自平衡机器人虽然控制性能良好,但成本高,不适合广泛推广。本文设计的机器人尝试采用红外测距传感器测量车体与地面的距离,通过计算获取机器人的姿态信息,进而实现机器人的自平衡。

1 系统结构

本文设计的自平衡机器人系统主要由机械行走装置、控制系统和传感器3部分组成,如图1所示。

机械行走装置主要由车体平台、电机驱动器直流无刷电机、齿轮减速机构和车轮组成。机器人采用48 V电池供电,通过DC—DC模块转换为5 V和24 V电压。其中,5 V提供给控制系统和传感器,24 V提供给电机驱动器。控制系统以ATmega128单片机为主控制芯片,通过SJA1000扩展CAN总线与电机驱动器通信。红外测距传感器的输出是与距离成正比的模拟电压值,输入到单片机的A/D采样端口进行处理,从而得到距离信息。机器人的系统结构框图如图2所示。

基于ATmage128单片机和红外测距传感器实现自平衡机器人系统的设计

2 姿态信息获取

机器人的姿态信息包括倾倒的角度和角速度。如图3所示,机器人左右两侧水平位置各安装有1个红外测距传感器,可以测量与地面之间的距离d1和d2。当机器人在竖直状态时,左右传感器距离差为零。当机器人倾倒时,距离差与倾倒角度θ成函数关系如下:

sinθ=(d2-d1)/D

其中,D为传感器之间的距离。机器人在竖直动态控制时倾倒角度范围较小,此时sinθ≈θ,即可由传感器的距离信息得到机器人的倾倒角度。角速度可以通过θ对时间求导获得。

选用的红外测距传感器为Sharp公司的GP2D12,输出为0.4~2.4 V的模拟信号,对应的测量距离为10~80 cm。在同一温度下,传感器的输出与测量结果呈良好的线性关系,可以满足自平衡机器人的要求。

3控制系统设计

3.1 机器人平衡控制原理

当车体偏离平衡位置(竖直位置)向前倾斜时,传感器采集信息并传送到单片机进行计算和判断,车轮随之作出响应向前运动,将车体向平衡位置调整;同样当车体向后倾斜时,车轮将向后运动。这样机器人一直处在倾斜判断、运动调整的动态过程中,使车体始终保持在平衡位置附近,达到一种动态平衡。

3.2控制系统硬件设计

控制系统主芯片选用Atmel公司基于RISC结构的8位单片机ATmega128。它采用低功耗CMOS工艺;具有丰富的片上资源,包括4个定时器、4 KB的数据SRAM、128 KB的程序Flash、可外扩至64 KB的E2PROM和8个10位ADC通道;拥有UART、SPI、I2C、JTAG接口,方便外部扩展和传感器的接入。

3.2.1传感信息输入电路

传感器信号通过放大器引入,通过设置反馈电阻(R1和R2)和输出端电阻(R3和R4)的阻值可以使输入的电压值在要求的范围内。具体硬件电路如图4所示。

3.2.2扩展CAN通信电路

单片机与电机控制器采用CAN总线通信,CAN接口采用Philips公司的CAN物理层和链路层接口芯片SJA1000和PCA82C250。单片机直接控制SJA1000的AD0~AD7、ALE、INT引脚。SJA1000工作在Intel模式下,MODE脚接高电平,片选脚CS接地,始终处于选通状态。扩展CAN通信电路如图5所示。单片机对SJA1000的操作主要是对寄存器的操作:一方面,对SJA1000的模式寄存器、命令寄存器、状态寄存器、中断寄存器、中断允许寄存器、总线定时寄存器、输出控制寄存器、时钟分频计数器进行设置和检测;另一方面,对收发缓冲区进行读写,从而和CAN设备交换数据。

3.3控制系统软件设计

自平衡机器人的控制系统需要实现以下功能:传感器信息处理和机器人姿态信息计算,电机控制PID算法实现和CAN口的数据处理。系统控制流程如图6所示。系统上电后从主函数开始执行。主函数负责初始化控制器的I/O口、CAN口、控制周期定时器、A/D转换器、各个中断接收数据和发送数据模块等。初始化完毕,控制周期定时器时间到后,传感器信息输人到A/D转换器中进行转换,计算机器人的倾倒角度和倾倒角速度;然后调用PID算法计算电机控制数据,并通过CAN口输出给电机驱动器。

3.4速度PID控制算法

机器人采用经典的PID算法进行平衡控制。控制系统采用典型的双闭环控制结构和前馈控制方法。速度环路设计有利于提高电机输出速度精度。前馈控制主要是为了补偿电机转轴与车轮转动轴以及传动系统的间隙误差,这些误差是稳定的、可以测量的。当电机在正反转变换时,控制系统可以检测到变换方向,经过位置误差环节调整后把确定的偏差补偿量叠加到驱动器输出端。这样电机转动的角度在原理基础上增加了补偿量,机械误差得以修正。

采用PID控制算法公式如下:

u(k)=u(k-1)+△u(k)

u(k)=Kp[e(k)-e(k-1)]+K1e(k)+Kd[e(k)-2e(k-1)+e(k-2)]

其中,u(k)为当前调节器输出量;u(k-1)为上一次调节器输出量;△u(k)为当前控制增量;e(k)为当前控制误差量;Kp为比例系数;KI为积分系数;Kd为微分系数。PID控制算法流程如图7所示。图中,ε为调试过程中设定的误差值。

4 实 验

利用该控制方法,对原理样机进行了多次实验。实验中,在机器人正上方水平位置安装陀螺仪,以采集机器人的倾倒角度数据。实际测量角度信息随时间变化的曲线如图8所示。通过测得数据分析可以看到,机器人大致可以稳定在0°附近,最大偏差为±2°。

结 语

本文设计了以ATmage128单片机为控制核心,采用红外测距传感器监控的双轮自平衡机器人,并搭建实验平台进行了控制试验。实验结果表明,该机器人可以通过有效的控制保持在竖直状态,并且在一定的角度范围内达到平衡。

责任编辑:gt

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

    关注

    2550

    文章

    51071

    浏览量

    753343
  • 单片机
    +关注

    关注

    6036

    文章

    44556

    浏览量

    635024
  • 机器人
    +关注

    关注

    211

    文章

    28405

    浏览量

    207020
收藏 人收藏

    评论

    相关推荐

    基于ATmega128单片机实现平衡机器人控制系统的应用方案

    移动式机器人在各行各业具有广泛的应用,而轮式移动机器人由于具有结构简单、可控性强、成本低等优点,成为移动式机器人研究的一个主要方向。平衡机器人
    的头像 发表于 04-11 11:05 4058次阅读
    基于ATmega<b class='flag-5'>128</b><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>的应用方案

    atmage128 AVR单片机 JTAG仿真下载正常 仿真时出错

    atmage128 AVR单片机 JTAG仿真下载正常 仿真时出/C:\Users\user\Documents\Tencent Files\524818188\Image\IF{`YJ5[A9B[H)FDWL5FSTK.jp
    发表于 01-18 19:05

    关于两轮平衡机器人载重问题

    能够根据不同重物自主调整平衡的角度,从而使机器人载物时,不会由于重心的变化而朝同一个方向运动呢??之前做过平衡相关的东西,
    发表于 11-24 11:20

    基于单片机红外测距系统设计与实现

    成学长,今天向大家介绍一个学长做的单片机项目基于单片机红外测距系统设计与实现大家可用于 课程设
    发表于 11-18 09:17

    制作一个迷你平衡机器人

    我最终所做的就是使用我为迷你平衡机器人准备的相同 PCB,设计一个小型 3D 打印体并使用更大的步进电机,这样就可以完成我的想法。机器人应该从带有蓝牙连接的自制遥控获取信息,这样我们就可以四处走动
    发表于 07-07 07:17

    用全志R128复刻平衡赛车机器人,还实现了三种不同的操控方式

    更上一层楼。 硬件设计 本项目中的平衡赛车机器人的硬件设计结构非常简单,硬件部分主要由R128开发板和几个驱动模块组成。 供电模块
    发表于 12-20 10:22

    基于单片机传感器机器人设计与实现

    本设计基于单片机及多种传感器,完成了一个自主式移动机器人的制作。单片机作为系统检测和控制的核心,实现
    发表于 08-05 09:54 49次下载

    平衡机器人的控制系统设计

    平衡机器人的控制系统设计 引 言    移动式机器人在各行各业具有广泛的应用,而轮式移动机器人由于具有结构
    发表于 12-15 17:25 1543次阅读
    <b class='flag-5'>自</b><b class='flag-5'>平衡机器人</b>的控制<b class='flag-5'>系统</b>设计

    如何利用超声波传感器制作一个轮式平衡机器人

    这是一个轮式平衡机器人。由 Arduino UNO 供电并由超声波传感器平衡,同时它能够自我保持垂直平衡
    的头像 发表于 05-25 17:16 3145次阅读
    如何利用超声波<b class='flag-5'>传感器</b>制作一个轮式<b class='flag-5'>自</b><b class='flag-5'>平衡机器人</b>

    如何制作WiFi控制的平衡机器人

    电子发烧友网站提供《如何制作WiFi控制的平衡机器人.zip》资料免费下载
    发表于 10-28 11:35 12次下载
    如何制作WiFi控制的<b class='flag-5'>自</b><b class='flag-5'>平衡机器人</b>

    使用TensorFlow对平衡机器人进行手势控制

    电子发烧友网站提供《使用TensorFlow对平衡机器人进行手势控制.zip》资料免费下载
    发表于 11-09 11:25 0次下载
    使用TensorFlow对<b class='flag-5'>自</b><b class='flag-5'>平衡机器人</b>进行手势控制

    Magicbit的平衡机器人

    电子发烧友网站提供《Magicbit的平衡机器人.zip》资料免费下载
    发表于 11-24 11:15 0次下载
    Magicbit的<b class='flag-5'>自</b><b class='flag-5'>平衡机器人</b>

    基于Arduino UNO的平衡机器人

    平衡机器人,使用带有 BluBug 和 Android 的车轮和 imu 6 轴传感器平衡机器人
    发表于 12-08 10:24 0次下载

    平衡机器人的构建

    电子发烧友网站提供《平衡机器人的构建.zip》资料免费下载
    发表于 02-09 11:54 0次下载
    <b class='flag-5'>自</b><b class='flag-5'>平衡机器人</b>的构建

    二轮平衡机器人开源设计

    电子发烧友网站提供《二轮平衡机器人开源设计.zip》资料免费下载
    发表于 06-12 10:43 2次下载
    二轮<b class='flag-5'>自</b><b class='flag-5'>平衡机器人</b>开源设计