APP下载

基于Arduino与LabView的两轮自平衡小车系统

2020-12-09周宝昌谢智阳郭壮涛

数字技术与应用 2020年10期

周宝昌 谢智阳 郭壮涛

摘要:采用Arduino2560单片机为控制核心,使用MUP6050传感器模块采集平衡小车的运动姿态信息,运用PID控制算法与卡尔曼滤波算法来控制小车的平衡性与稳定性;通过蓝牙无线传输方式,将平衡小车系统采集的角速度、角度、车轮转速等数据传送到上位机LabView显示界面,并对多个数据进行实时显示。实验表明,通过上位机LabView软件可直观地反映出系统数据的动态可视化,极大方便了对该系统的实验数据进行分析与研究,及缩短产品开发周期。

关键词:平衡车;Arduino;PID控制算法;LabView

中图分类号:TP23    文献标识码:A    文章编号:1007-9416(2020)10-0000-00

两轮自平衡小车类似一个倒立摆系统,是一个非线性不稳定系统,采用陀螺仪和加速度计传感器模块来采集角加速度和角度数据,以此获得车体当前姿态。当前,两轮自平衡小车系统硬件多数以MPU6050模块实时获取小车姿态,运用卡尔曼滤波算法滤除掉传感器带来的噪声,通过电机的正反转来实现小车自平衡[1-2]。两轮自平衡小车具有小巧、运动灵活等特点,在众多搬运机器人中占有一定的优势[3-4]。

以往,我们在调试小车控制系统时,通常根据经验和反复试验得到较好的实验效果,因传感器采集到车辆的准确信息没有实现可视化,此方法存在开发周期长、难度大等缺陷。基于此,本文提出通过蓝牙通信的方式,将小车的运行信息传送至采用LabView开发的上位机界面,对小车运行数据进行实时监控,为控制算法的开发提供了科学的调试依据,给算法的调试指明了方向,从而有效缩短算法的调试时间。

1系统总体结构设计

本系统由Arduino两轮自平衡小车和LabView上位机两部分组成[5-6]。如图1所示,平衡小车系统采用Arduino 2560单片机为控制核心,MUP6050传感器负责采集小车的姿态信息,并将姿态信息传输给Arduino控制器,控制器得到平衡小车当前的角速度和角度,并结合直流电机自带的编码器测得的轮速信息,最终计算输出控制信号准确控制小车的两个直流电机,以保持车体的平衡性,同时将平衡小车系统所采集到的角度、角速度和轮速等数据通过蓝牙模块传送至LabView上位机实时显示。

2 系统硬件电路设计

本系统由电源降压模块,Arduino2560、MPU6050、光电编码器、电机驱动模块、电机和蓝牙模块组成,见图2、3。DC电源12V通过降压模块降至7V为控制板供电,MPU6050读取车体姿态角数据通过IIC方式与Arduino2560进行通信;采用光电编码器获得直流电机的转速,并通过普通数字IO口反馈至Arduino2560,Arduino2560根据传感器采集到的信息,通过PID控制算法输出准确的PWM信号至电机驱动模块[7]。同时,控制器将传感器采集到的小车运动和姿态信息通过HC-05蓝牙模块发送实时数据至上位机接收端。上位机接收端由HC-05蓝牙模块、Arduino UNO控制板组成,蓝牙模块通过串口方式与Arduino UNO进行通信,再连接至PC端的LabView上位机。

2.1 Arduino2560控制板

Arduino 2560是一款基于ATMega2560微控器的开源硬件,带有54个数字IO,16路模拟输入,15路可输出PWM端口,4个UART串行通讯接口,16Mhz的晶体振荡器;同时它也有一个专属的开源软件平台Arduino IDE,软件自带多个开源库,与传统的51、STM32单片机相比,忽略底层开发信息,省略了许多对操纵寄存器的步骤,可缩短了项目开发时间,能快速完成产品原型的开发[8]。

2.2 MPU6050传感器模块

MPU6050传感器模块是两轮自平衡小车系统的核心部件之一,它整合了三轴陀螺仪和三轴加速度计,自带了数字运动处理(DMP),减少很多复杂的融合演算数据和姿态感应计算等的负荷,也可以选择通过读取原始数据再做姿态解算,芯片内置有16位AD转换器与16位数据输出。通过标准IIC通讯协议与Arduino2560传输数据,MPU6050采集数据中存在噪声数据,使用Arduino自带的卡尔曼滤波算法开源库,实现姿态解算,消除数据中的噪声,降低了本项目的代码编程与开发的难度。

2.3 直流电机驱动模块

系统采用带双H桥的直流电机驱动模块,可以同时驱动两台直流电机,每一路输出额定电流7A,峰值电流可达到50A,内部带有8片NCE6075.N沟道MOS管,具有很小的导通内阻,消耗能量较低,在实验前对所使用的直流电机进行测试,电机堵转电流可达5A,正反转瞬间电流达4A,因此此电机驱动模塊稳定符合使用要求;该直流电机驱动模块具有静电泄放电路,可有效抑制瞬态干扰脉冲和静电,带光耦隔离输入,单片机IO口可直接控制而不受信号干扰,可防止实验瞬间大电流击穿烧毁模块的欠压过流保护等特点。其驱动逻辑与L298相似,真值表见表1。

3 系统软件设计

在两轮自平衡小车控制系统中,系统内部的工作原理与运行实时流程见图4。对于MPU6050传感器、编码器的信号采集与处理、PWM控制信号,以及小车的直立环控制和速度环控制,它们都是对于软件的实时性都有较高的要求,需要精准时钟周期来执行,因此可以设置在每隔一个固定周期的定时中断中控制执行;而小车的数据输出打印显示不需要精准的时钟周期,所以可将其放置在loop( )主程序循环里。此程序主要分为中断服务程序和主循环程序两部分,只有少部分要求实时性较高的程序放在中断中,保证了程序整体的实时性。

4 LabView上位机无线采集数据与监测

LabView虚拟仪器是由美国仪器公司(简称“NI”)开发的软件工具,在国防、航天、计算机测控等领域有了很好的发展,其最大的特点是后台采用图形化编程,也称G语言。传统的测量仪器可视界面固定、单调,由厂家、开发商定义制造,而LabView软件对可视化界面提供了创新性和可自由设计的空间,用户可以根据自身实际需求来定义与制作,突破传统仪器的限制,丰富了数据的可视化,极具方便性与灵活性[4]。

本系統将下位机接收的数据通过蓝牙模块1无线传输到蓝牙模块2,蓝牙模块2连接Arduino UNO再由串口发送到PC端的LabView上位机读取并将数据可视化,整个信息的收发过程相当于一种“无线串口”传输数据。

LabView程序其程序流程图见图5,主要调用了NI-VISA命令,VISA是一种串口通讯的编程接口。在LabView程序框图中可分为三大部分:串口配置、数据读取和数据处理。

通过选择对应的端口、波特率、数据位和奇偶校验对串口完成初始化配置。数据读取部分引用“VISA读取”函数控件;VISA在指定的设备端口中读取一定数量的字节,并使数据返回至数据缓冲区。由于VIAS读取函数采集到的是一连串的字符串类型数据,所以先对字符串型的数据进行拆分。这里采用以空字符为界分割成多组字符串,然后再将分割后的字符串型数据进行类型转换。

整个系统上电后,等待蓝牙主从模块相互连接后,数据正常发送接收并可以直观的在LabView上位机上监测实时动态数据,其上位机显示界面见图6,将串口数据分别以图表形式显示。

5 实验结果分析

本系统实现了小车能够基本保持平衡,实验过程中小车稍微出现一丝前后摆动。完成对LabView上位机的开发,能够实现通过蓝牙无线传输显示各个数据的变化。整个系统模块化设计成本低、开发周期短。基于Arduino的两轮自平衡小车硬件方面基本能够满足本实验要求,由于时间和工具的限制,以及程序算法参数的整定上,存在着更好参数改进。多次实验发现,LabView程序能稳定读取字符到缓冲区,完成小车姿态信息实时显示的功能,极大方便了调试过程。

6 结论

两轮自平衡小车是一个非线性的复杂系统,本文运用开源硬件完成了两轮平衡小车的开发设计。采用NI的LabView,突破传统仪器对数据的处理与传送,能够提供测量多个数据通道与添加更多控制功能。整个系统中,对算法的研究和LabView数据可视化相结合,可以应用于教学平台展示,能更好地对数据进行分析,具有一定的研究意义。

参考文献

[1]路成强,曾洁,李千振.基于卡尔曼滤波的两轮自平衡遥控小车设计[J].自动化仪表,2017(9):44-47+52.

[2]夏鹏辉.两轮平衡车的强化学习控制算法研究[D].哈尔滨:哈尔滨工业大学,2018.

[3]采长涛.两轮小车自平衡控制系统的研究与设计[D].淮南:安徽理工大学,2018.

[4]毛灵伟.两轮自平衡电动车控制系统的设计[D].杭州:浙江大学,2017.

[5]王素青,熊维堂.基于STM32的两轮自平衡小车系统设计[J].实验室研究与探索,2016,35(5):146-150.

[6]靳培峰.智能双轮平衡车的设计[D].淮南:安徽理工大学,2017.

[7]乔纬国.一种采用双PID串级控制的双轮自平衡车的研制[D].长春:吉林大学,2017.

[8]符长友,李政,王铭亮,等.基于视觉的双轮竞速自平衡小车的设计[J].实验技术与管理,2019,36(4):161-164+171.

收稿日期:2020-08-28

基金项目:河源市工业机器人技术应用工程技术研究中心,编号:00007107,来源:河源市科技局。

作者简介:周宝昌(1987—),男,广东河源人,硕士,讲师,研究方向:工业机器人仿真技术,虚拟仿真、云计算。

通讯作者:谢智阳(1985—),男,广东河源人,硕士,讲师,研究方向:嵌入式产品设计、计算机视觉及生物特征识别。

Research on Two-wheeled Self-balancing Car System Based on Arduino and LabView

ZHOU Bao-chang1,XIE Zhi-yang1,2,GUO Zhuang-tao

(1.College of Mechanical and Electrical Engineering, Heyuan Polytechnic, Heyuan  Guangdong 517000;2.Heyuan Industrial Robot Technology Application Engineering Technology Research Center, Heyuan Guangdong  517000)

Abstract:Adopt Arduino2560 for microcomputer as the control core, to collect the movement posture information of the balance car use MUP6050 sensor module, and use PID control algorithm and Kalman filter algorithm to control the balance and stability of the car.Through the Bluetooth wireless transmission method, the angular velocity, angle, wheel speed and other data collected by the balance car system are transmitted to the LabView display interface of the host computer, and multiple data are displayed in real time. Experiments show that the LabView software of the host computer can intuitively reflect the dynamic visualization of the system data, which greatly facilitates the analysis and research of the experimental data of the system and shortens the product development cycle.

Key words:Balance car; Arduino; PID control algorithm; LabView