基于Arduino UNO两轮平衡车的研制
2022-08-18马双宝董玉婕
林 巍,马双宝,董玉婕
基于Arduino UNO两轮平衡车的研制
林 巍,马双宝*,董玉婕
(武汉纺织大学 机械工程与自动化学院,湖北 武汉 430200)
随着电子技术的发展和提高,移动机器人作为新兴技术的体现,在生产和生活中的应用越来越普遍。为了达到手动无线操控小车运动的目的,本课题组研制出基于Arduino UNO两轮平衡车,该系统以Arduino UNO为主控制器,通过红外遥控实现人机通信。遥控器向控制器发送命令,接到命令后,控制器执行相关程序,控制车辆处于前、后、左、右不同状态,始终保持车辆的平衡。硬件包括红外遥控模块、陀螺仪模块、电源模块、驱动模块、测速模块、显示模块、Arduino uno主板模块。软件部分对各个模块进行了编程和相关功能的实现后,再进行了调试,最后完成了各个小车状态的控制。
Arduino UNO;两轮自平衡机器人;智能制造;轮式移动机器人
0 引言
二轮平衡小车拥有得天独厚的外形优势和使用特点,使其具有很高的研究价值[1]。随着社会的发展以及智能制造水平的提高。近年来,两轮平衡车的研发速度逐步加快,涵盖了很多领域,与此同时,由于平衡小车通常执行较为复杂的任务,所以对其适应环境的能力要求逐渐提高。例如,在条件恶劣的地方,车流量巨大,交通无法正常通行的情形,或者弯道较多的场所,小车如何能在较短时间内获取有效正确的信息并能够独立处理执行任务已经成为当下的研究热点。两轮平衡小车概念的提出,迎合了当前的研究热点,可以完美解决在复杂环境下小车所遇到的问题,再加上红外遥控技术以及无线通信技术,可以精准的远程遥控小车的运动姿态,未来在交通管控、抗险救灾、医疗卫生甚至执行军事行动上都会有非常广泛的发展空间。
1 控制系统
本文通过对小车驱动设计、红外遥控系统的设计、Arduino uno主板模块设计、机械结构框架的设计完成了基于Arduino uno的两轮平衡小车的研制[2]。本系统采用Arduino uno主板微控制器作为系统的主控制芯片,以MPU6050作为车体姿态的传感器并输出车体的加速度及角速度,经过大量的PID计算和实验调试获得了使车体稳定运行的角速度和加速度。利用TB6612FNG驱动系统控制H桥不同输入的切换,可改变小车的运动方向达到前后左右旋转及刹车,使用无线遥控器与小车系统通信控制直立行走及转弯[3]。以下就是平衡小车主要的一些方向和总体设计,以及流程完成所需要的步骤。流程及步骤如图1所示。
图1 流程及步骤图
1.1 Arduino uno主板模块
Arduino uno是一个开源的硬件平台。它可以用来开发交互式产品。可以读取大量开关信号和传感器来控制物理设备,如各种照明设备、显示器和电机。相对于传统的Arduino Duemilanove和Arduino Mega1280,Arduino UNO将USB转换为串行端口组件,并用ATMega8U2微控制器取代原来的USB到串行端口芯片FT232RL3232[4],这使得下载速度更快,更稳定。
1.2 红外遥控模块
红外遥控平衡小车[5],编程完成后小车能够实现以下功能:(1)能够接受红外信号并可以通过远程控制进行认证;(2)具有避障功能,当红外探测仪探测到前方有障碍物时能够及时避开并能够重新规划路线;(3)能够手动控制实现前进、后退、停止、左转、右转等功能。
红外遥控平衡小车能够实现循迹避障功能主要由红外遥控器,L298 驱动电机以及充电锂电池三部分来实现。其红外遥控系统的硬件部分由一个发射遥控器、接收器、单片机组成。其中,红外遥控发射器的内部包括了载波发射器、指令编码电路、调制电路、驱动电路、红外发射器电路五个部分[6]。本次选择红外遥控装置来实现功能,是因为红外遥控技术成本低,功耗低,抗干扰能力强,具有稳定的信息传输能力等优点。
1.3 陀螺仪模块
陀螺仪的工作原理就是一个物体在运动或者静止过程中,不管外部有没有对其施加作用力,该物体的运动方向依然保持不变。有很多地方需要一直保持运动的方向不变,并且将数据信号传给控制系统,通过运用这个方法可以保持方向恒定[7]。陀螺仪的组成部件包括了内外框架、力矩马达、信号传感器、同步电机、三相交流电机。它的主要特性是它的稳定性和进动性,在高速旋转过程中不但可保持平衡,竖直不倒,而且还会旋转匀速,绕定点运动反映出陀螺的稳定性和进动性,如图2示出了陀螺仪的模型图,每个陀螺仪负责检测相应的轴线,也就是转速,检测绕各轴的旋转速度。
1.4 电源以及驱动模块
图2 陀螺仪模型图
平衡车既可以是锂电池输入接口,也可以是电源输入,输入电压为12v。使用输出电压为12v的LM2596S作为开关稳压器[8]。输入电压的范围处于4.0v~40v之间,转换频率达到150KHz,输出电流为1A,工作温度在零下25摄氏度到125摄氏度之间。在负载调节的情况下都有很高的提升,稳定性强,抗干扰能力强,能够满足本次平衡小车的工作要求。
该驱动模块具有强劲的驱动能力,发热量很低,抗干扰能力强的特点,能够使该系统正常工作。可以通过驱动电源部分去电工作,避免稳压芯片损坏,使用外置5v,而且TB6612FNG使用大容量滤波电容,续流保护二极管,提高可靠性[9]。内部包含4通道逻辑驱动电路,一种二相和四相电机专用驱动器。接收标准TTL逻辑电平信号是二个H桥高电压大电流驱动器。驱动程序使用TB6612FNG作为主芯片,电路图如图3所示。
图3 电机驱动电路图
1.5 电机及霍尔传感器测速码盘
本平衡小车选取了型号为GB37的 4.3KG/CM 大扭矩直流电机,该直流电机具体参数为:额定电压12V;减速前转速330rpm;空转电流120ma;功率4.8kw;堵转最大电流1.2A;减速箱长度22mm。
为了使小车能够达到使用条件并且出色的完成工作任务,该平衡小车搭载了霍尔传感器高精度测速码盘,其包含了16线强磁码盘。在A B双相输出共同作用下,通过实际测量及计算可得出车轮在完整的转动一圈时,脉冲数能够达到30*13*2=960个,单相可以达到480个,完全符合平衡小车的正常工作要求。电机及霍尔码盘如图4所示。
图4 电机及霍尔码盘
电机的工作原理:
电机的工作原理主要是依据电磁学,导体在闭合磁场中做切割磁感线的运动随之会产生电磁力,导体在电磁力的作用下从而转动。其运动学公式为:
F=B*i*l (1)
F为电磁力,B为磁场强度,i为电流,l为导体长度。
在电磁学理论中中,直流电机既可以用作电动机带动着平衡小车车轮的转动,同时带电导体做切割磁感线的运动会产生电流,又可以成为一部发电机为小车持续不断的提供用电。当然,让此系统成为某种特殊设备,需要限定一定的条件。给系统输入合适的直流电压,此电压将会加载电机的电刷之上。此过程涉及到能量之间的转化,输入的是电能而输出的是机械能,机械能带动设备运动[10]。反之,如若不给电机系统输入一定的电压,电刷在内部磁场做切割磁感线的运动产生电动势,系统作为电源将电流输出,作为发电机,产生电能。该过程称之为可逆原理,可以为系统节约能源的损耗。原理如图5所示。
图5 直流电机原理图
1.6 显示屏模块
对于这个两轮自平衡机器人,为了能够更为直观的看到小车的剩余电量、时间、速度以及转向,我们给平衡小车搭载了LCD 1602显示屏。LCD驱动器通过微处理器的实时控制驱动输出接口重构图像数据,然后将图像数据转换为“0”和“1”编码序列,可直接用于LCD扫描信息,根据显示屏驱动芯片ht1621的时序,将编码序列发送到显示屏进行显示。
为了使显示模块正常工作,其内部的设置流程主要包括 LCD 初始化、控制时钟及控制寄存器设置、数据缓冲帧设置、编码信号与时序处理、分辨率像素等。
2 小车平衡原理
实际上平衡小车就是通过控制两个车轮的不断快速转动使其处于相对动态平衡而不会倒下的智能小车,它在两个车轮的协同作用下保持直立并能够接受指令进行前进及后退等一系列操作。
平衡机器人的工作原理也是如此,系统通过MPU6050的反馈实现调整并平衡。这是相对简单的保持直立,因为汽车有两个轮子在地板上,车身只会向倾斜一方的车轮进行滚动。通过控制车轮的转动来消除掉小车将要倾斜的姿态,就可以使小车在一个维度中保持平衡[11]。智能平衡小车的倒立摆水平图如图6所示。
图6 倒立摆水平图
当没有对平衡小车进行控制时,无论车身是有向前或者向后的倾倒趋势时,两个车轮都是保持静止状态不动的,可以理解为两个车轮的转动和车身的倾斜是分别独立,互不干扰的。当平衡小车处于控制状态时,我们在直立状态下释放小车,小车这个时候就可能会存在三种运动状态的其中一种,当内部编程算法完全正确时,小车就会保持平衡直立状态[12]。小车三种运动状态图如图7所示。
图7 小车三种运动状态图
三种类型的运动状态下及其控制策略如下:
(1)在停止状态时,当平衡小车的重心直接位于电机轴线的垂直上方时,小车将保持平衡直立,不受任何控制,如图7(a)所示。
(2)在前进状态时,当小车的重心直接位于电机轴线的前方时,车轮向前滚动,使车体保持平衡,如图7(b)所示。
(3)在后退状态时,当小车的重心直接位于电机轴线的后方时,车轮向后滚动,使车体保持平衡,如图7(c)所示。
因此,小车能够保持平衡的方法就是通过传感器测量来得到平衡小车车身与竖直垂直的相对角度,将相对角度这个数据传输到单片机,然后通过单片机计算处理后,向电机控制电路发出指令信号,控制电机的转速和转向来带动车轮的转动,使车身保持动态平衡。
所以依照上文所得出的结论,控制小车达到动态平衡的关键技术就在于测得小车的倾角和倾角速度。经过多次选型与实验,最终我们采用集成传感器陀螺仪- MPU6050来测量小车运动过程中的倾斜角度和倾斜速度[12]。
3 机械结构设计
3.1 车体结构设计
由于SolidWorks具有优越的操作性和应用广泛性,所以我们采用它作为本小车车身整体结构设计的绘制工具。采用SolidWorks建模首先要从整体出发,计算该模型需要哪些零部件,随后研究分析各个零件的建模,分析各个零件所具有的特性以及加工要求,明确不同特征之间装配关系,确定了创造秩序的特点后,在该整体模型的基础上,增加工程的特点。利用二维平面绘制的草图来进行旋转、拉伸、扫描、混合等一系列方法从而建立整体三维物理模型。最后将各个完整的零件模型经过计算之后,进行整体装配整合得到我们最终所需要的平衡小车三维立体模型。
在设计小车的整体结构之前,研究了近年来国内外各个平衡机器人的结构特点,并总结成了下面的表1。
表1 结构特点特性总结表
综合以上的研究和考量,为了使平衡小车能够正常的工作,最终设计出了结构质心位置可变,倒立摆式的车身机械结构,通过测量车身倾斜角度随之做出平衡调整。具体机械结构如图8所示。
3.2 电机的选择
由于本小车是为了进行负载工作的,考虑到小车自身的重量以及到时候所要负载的一些重量,我们要根据情况来选择合适的电机,综合考虑我们选用了型号为GB37的4.3kg/cm大扭矩直流电机,电
图8 整体结构图
机根据功率和转速选定,减速机根据减速比和功率选定。以下是电机载荷的计算方式。
电机载荷计算公式:
P=T*n/9550 (2)
公式中P为功率(kW) ,T为扭矩(N·m),n为转速(r/min)。
减速比计算公式:
i=N1/N2 (3)
公式中i为减速比,N1为电机转速,N2为输出转速。
电机尾部搭载双通道霍尔效应编码器,AB双路输出,单路每圈脉冲16CPR,双路上下一共输出64CPR,其减速比为30,车轮转动一圈,那么编码器也相应的转动30圈,编码器为16CPR时,则3016=480脉冲,轮子周长为65*pi=204mm,则精度204/480=0.425mm。如果把每一路脉冲的上沿和下沿都利用起来,相当于四倍频16×4=64,此时精度为204/64/30=0.10625mm。已达到该系统所需精度,可以做到小车原地直立。通过实验,该小车选取了GB37(带16CPR霍尔效应编码器)。
P=1.732UIcosφ (4)
电机功率计算公式:
P= F×v÷60÷η (5)
公式中P为功率(kW),F为牵引力(kN),v为速度(m/min),η为传动机械的效率,一般在0.8左右。
P= F×v÷60÷η×k (6)
P=1.732*U*I*cosΦ (7)
功率P与视在功率S的比值称为功率因数cosφ,即cosφ=P/S。所以,三相电源的线电压为U,线电流为I,则有S=1.732*UI,I=S/(1.732U),S=P/cosφ,P=1500W/μ,故导线的最大电流I=1500W/ (1.732U* cosφ*μ) (单位:A)。
3.3 实物制作
由于充分考虑到两轮平衡小车采用的GB37直流电机的载重能力以及所需成本问题,所以在对车体框架的设计和实物制作时的选材排除了最初的钢制型材和塑料型材,最后再结合实际情况选取了亚克力塑料玻璃板作为车身框架制作的原材料。该亚克力玻璃塑料板的优点是便宜、方便加工和拼装,较轻便并且结实牢固。为了减轻小车的自重,使其车身架构更加紧凑并且保证其发生碰撞时的车身强度,整车不是包罗万象的外壳,而是框架式结构。
机身的上下板则是由丙烯酸有机玻璃切割而成,确保车身较轻,易于处理且保证车身强度。另外,在下板的两侧设计了两个小孔形通孔,用于将电机固定在狭窄的空间内。最终该平衡小车的整体尺寸为高25cm、宽8cm、高26cm。
4 整体调试
首先将各个模块进行独立调试,确保每个模块能够正常工作,再将各个模块进行组装整合来联合调试。上电之后,先观察控制器是否可以控制点击转动,且点击转动与实际情况是否符合,随后进行小车的动态调试。
当整车稍向前倾斜时,观察到车轮有向前运动的趋势;当整车向后倾斜时,观察到车轮有向后运动的趋势。串口屏幕实时显示小车的倾斜角度。则表示控制器的控制逻辑与电机的实际运行状况相同。随后为了使小车能够达到不同的运动状态,需要调节PID的各个参数来完成。如图9为小车正面实测图,图10为测试数据折线图。
图9 小车正面实测图
图10 测试数据折线图
通过观察实验数据的折线图可以看出,随着小车与地面之间倾角的增加,小车达到平衡状态所需要的时间也在增加,当小车与地面的倾角在0°到±30°的范围内时,小车最终将达到平衡状态。
5 总结
本次平衡小车的系统采用了Arduino UNO为主控制器,共包含了以下各个模块:电源模块为该系统提供了电能,保障着所有模块能够正常运行;控制器模块是该系统的核心部分,通过对该系统发送指令及接收反馈,实现小车的实时控制使其维持正常工作;电机驱动模块放大控制信号,驱动电机正常工作;陀螺仪模块主要是使该系统无论在运动或者静止过程中,即使有外力也不会对小车运动方向产生变化;显示模块用来显示小车的倾斜角度及其车况;测速模块用于测量车速,最终通过闭环反馈控制车速;红外遥控模块使小车和遥控器之间相互通信来操作小车达到不同的运行状态,最终小车实现了在不同状态下的自我平衡。
[1] 王鹏. 基于STM32的两轮自平衡车控制系统设计与实现[J]. 中国科技纵横, 2018, (18): 3.
[2] 林忠海. 基于单片机的两轮自动平衡小车设计[J]. 科技创新与生产力, 2013, (2): 4.
[3] 刘静, 肖家宝, 王晓, 等. 两轮自平衡机器人控制系统设计与实现[J]. 电子技术与软件工程, 2019, (17): 2.
[4] 丁倩雯, 徐红红. 基于Arduino UNO的平衡车设计[J]. 西安文理学院学报(自然科学版), 2019, 22(01): 53-57.
[5] 陈木桂, 张谦, 黄睿, 等. 一种光电平衡智能车设计[J].教育教学论坛, 2019, (39): 5.
[6] 李澍源, 冯奇杰, 兰家祥, 等. 基于超声波测距式的自平衡车控制系统[J]. 内燃机与配件, 2017, (2): 3.
[7] 王宇坤, 陈沃源. 基于PI控制器的两轮平衡小车设计[J]. 信息记录材料, 2018, 19(7): 2 .
[8] 熊跃军, 史明政, 林金勇, 等. 一种两轮自平衡小车的设计与实现[J]. 长沙大学学报, 2016, 30(2):4 .
[9] 杨柳. 两轮自平衡小车控制系统探讨与分析[J]. 中国新通信, 2018, 20(19):157.
[10] 夏鹏辉. 两轮平衡车的强化学习控制算法研究[D]. 哈尔滨:哈尔滨工业大学, 2018.
[11] 柯国松, 陈阳, 许志文. 两轮自平衡小车的研究与实现[J]. 工业控制计算机, 2014, (11): 3.
[12] 方雁峰. 双轮直立机器人行走关键技术研究[D]. 杭州:浙江工业大学, 2014.
[13] 孙丽莉. 两轮自平衡倒立摆式机器人系统设计与控制[D]. 大连:大连海事大学, 2016.
Development based on Arduino UNO Two-wheel Balancing Vehicle
LIN Wei, MA Shuang-bao, DONG Yu-jie
(School of Mechanical Engineering and Automation, Wuhan Textile University, Wuhan Hubei 430200, China)
With the development and improvement of electronic technology, mobile robots are more and more widely used in production and life, and have become the focus of emerging technologies. In order to achieve the purpose of manually and wirelessly controlling the movement of the car, a two-wheel balance car based on Arduino UNO is developed. The system takes Arduino UNO as the main controller and realizes man-machine communication through infrared remote control. The remote controller sends a command to the controller. After receiving the command, the controller executes relevant procedures to control the vehicle in different states of front, rear, left and right, and always maintain the balance of the vehicle. The hardware includes infrared remote control module, gyroscope module, power module, drive module, speed measurement module, display module and Arduino UNO motherboard module. In the software part, after the programming of each module and the realization of related functions, the debugging is carried out, and finally the control of each trolley state is completed.
arduino UNO; two-wheeled self-balancing robot; intelligent manufacturing; wheeled mobile robot
TP212
A
2095-414X(2022)04-0027-06
通讯作者:马双宝(1979-),男,副教授,博士,研究方向:智能检测与控制.
纺织新材料与先进加工技术国家重点实验室开放课题基金(FZ2020005).