查看:
14180
回复: 9 |
两轮平衡车自动跟随小车
|
|
发表于2019-02-26 19:19:18
|
显示全部楼层
1#
电梯直达
以C/C++等高级语言编程能够帮助开发者更加有效的设计两轮平衡车的控制系统。本文设计的平衡车系统是以C语言作为开发语言来设计软件程序的,选用意法半导体公司的STM32F103系列的微控制器作为本控制系统的主控芯片,使用惯性传感器MPU6050实时采集得到加速度的值及角速度的值,经过卡尔曼滤波算法融合加速度和角度计算出两轮平衡车系统的倾角,并通过PID控制器计算出控制PWM,通过PWM信号输出到电机驱动上,从而控制电机的速度和方向,从而控制平衡车的平衡和简单行走。 1.自动跟随原理介绍 要实现平衡车自动跟随的功能,需要选用能获取当前小车的位置和人的位置的传感器。本文选用单发单收的超声波模块进行测距,在车上的两端各安装一个单收超声波,人手持一个单发的超声波模块。这样左侧与右侧离人的距离就构成了一个三角形。简单示意图如下图2-3所示。当小车正对着人时,距离A=B,当人左拐时,A必定小于B,同理当人右拐时,A大于B。当人向前走时,A和B的距离必定大于设定距离。由此可获得人与车的距离以及人的行走路线,来实现小车的自动跟随功能。
图一 自动跟随原理简单示意图
2.系统的整体方案
图二 平衡车控制系统总体设计结构示意图 本平衡车控制系统的设计以STM32F103系列的MCU作为主控,通过惯性传感器MPU6050采集姿态数据,实现实时姿态的测量,用蓝牙完成遥控器或者超声波到平衡车的无线通信,使用TB6612FNG的电机驱动IC,然后再加入电源电路、按键控制电路以及LED指示灯电路组成最后的平衡车控制电路板。 图三 平衡车控制系统硬件结构示意图 4.硬件元器件:
核心芯片:STM32F103C8T6 链接:https://item.szlcsc.com/9243.html 图四 STM32F103C8T6实物图
核心芯片:MPU6050 链接:https://item.szlcsc.com/24852.html
图五 惯性传感器MPU6050电路图
图六 超声波电路设计
核心芯片:TB6612 链接:https://item.szlcsc.com/152848.html
图七 直流电机驱动电路图和实物图
图八 电池电压检测电路图
核心芯片:LM2596,ASM117 链接:https://item.szlcsc.com/220896.html https://item.szlcsc.com/176865.html
图3.9 电源稳压电路图
5.控制系统软件设计 由于平衡车的机械结构简单,所以将大部分复杂的处理都通过软件来完成,导致软件设计的难度较大,所以平衡车控制系统的软件设计是此次设计最为核心的部分。软件设计主要分为传感器数据采集极其数据处理、姿态解算、蓝牙数据通信、超声波数据通信、PID控制及PWM信号输出这个部分。由于模块化的设计,使得程序的思路非常清晰。 图九 控制系统软件总体流程图
其中系统模块初始化需要完成的工作就是初始化好主控的各个IO口,完成IIC、USART及ADC的初始化,然后再完成传感器、无线模块、超声波模块的初始化配置。 之后便进入整个控制系统的大循环体中依次执行相关的任务。 检测按键就是通过按键设置平衡车的工作模式,第一种是通过遥控器通过蓝牙通信,获得操控着对平衡车的操控命令,比如说加减速,前进后退等。第二种模式,小车自动跟随手上持有超声波发射器的人。 采集传感器数据第一个是主控芯片通过IIC总线与MPU6050惯性传感器通信,得到传感器采集的原始数据,然后在做一些滤波处理,给后续的姿态解算提供一个可靠的数据,第二个是主控芯片通过USART与蓝牙模块通信,为模式一提供数据。第三个是主控芯片通过USART与超声波模块通信,为模式二提供数据。 更新当前的姿态是主控根据传感器所采集到的有效数据计算出当前姿态的过程,这部分姿态解算程序的设计可以算得上是整个软件系统设计中最核心的部分,因为这部分的程序设计的好坏可以直接影响到最终平衡车行走的效果。 在解算出当前的姿态和得到操控者的控制命令后,就需要计算出相应的控制输出量,然后输出控制,以达到操控着的命令要求。 其实有上面这些步骤已经可以保证平衡车稳定运行,但是为了保证平衡车的安全性,还需要时刻检测电池电压的状态防止损坏小车以及电池过放。 出于对控制系统中对陀螺仪积分运算的要求,保证每次积分时间固定且可靠,要求程序主题循环每10ms执行一次,即积分时间为0.01s,姿态、控制的刷新频率为100Hz。
|
|