说明:本文章适用于STM32初学者,想完成一个好玩且有深度的项目但不知道从何下手的同学。 平衡车是我入门STM32的第一个实战项目,前前后后和我搭硬件的队友路总(硬件大佬,专注于PCB画板)搭了有七八版。从第一版V1.0手焊版到嘉立创PCB打板到最终的无线充电平衡车,我们碰到了几乎所有可能出现的问题,熬了几天夜硬着头皮解决,功能也是一项一项的添加,最终在学校的电赛选拔赛上拿到了一等奖,也是不负众望。毕竟经历过,所以写这篇文章的目的是让大家少走弯路,能够快速的、有目的性的做出属于自己的那个DIY平衡车,从实战中学习到知识才是最有效率最能检验你对知识的掌握程度。所以跟着我,三天让车站起来,不是梦!
任务需求
我们要做一个东西必须要清楚我们的目的是什么?这个东西要干什么,有什么作用,最终我们理想的效果是什么?在此我罗列一下我们做出来的平衡车所应达到的效果需求.如下所示:
- 平衡车能够实现基本的直立平衡;
- 平衡车相对静止时,前后抖动的距离不超过1cm;前后的倾斜角度不超过3度;
- 相对较强的抗干扰能力,收到外力干扰后能迅速调整到原来状态;
- 使用手机APP通过蓝牙可在一定范围内对小车的运动状态进行无线自由控制;
任务分析
首先呢,平衡车平衡车,第一要素是要平衡即就是能够立起来,立不起来其他的要求都白搭。我们要平衡,实际上是角度平衡那么我们就要有检测角度的模块。我们要对车轮速度进行控制,我们就要检测速度。通过实际角度的测量与平衡时的角度对比从而控制电机的前进或后退的速度从而达到平衡的目的。这就引出了我们的控制原理:PID闭环控制 所以说非常考验我们的代码能力就是我们要把控制原理转化成代码从而实现MCU对硬件的控制。 材料(基础部分)
材料(拓展部分)
模块使用方法(硬件连接)
众所周知,硬件和软件是相辅相成的,硬件的接线是跟着软件部分的,例如我们驱动模块所需要的PWM波,stm32测速所需要开的定时器等等,所以我们在软件部分要有一个提前规划。 硬件框图
TB6612电机驱动
AIN1 AIN2 接单片机的I/O口,通过置高置低来控制电机旋转方向 真值表: AIN1 0 0 1 AIN2 0 1 0 停止 正传 反转
HC-05蓝牙模块 使用前要先在AT模式进行配置。配置蓝牙名称、密码、波特率、主从机等(AT指令),蓝牙模块指示灯快闪是普通模式,慢闪是进入AT模式。 我们拿到蓝牙模块后 (1)通过杜邦线将蓝牙模块的VCC,GND,TX,RX分别接入USB TO TTL模块(串口)的VCC,GND,RX,TX引脚。
(2)打开串口上位机软件本人使用的是正点原子配套的XCOM,先按住蓝牙模块上的黑色按键在上电,我们可以看到蓝牙模块上的指示灯开始慢闪,这样我们就进入了AT模式。???注意:以这种方式进入AT模式,我们在串口上位机中波特率要设置为38400才能保持正常通信。 (3)在上位机中发送AT注意要以回车结尾,若收到OK,说明通信成功之后就可以设置其他内容了。我们可以查询手册,去发送相关指令,我只提咱们常用的几个指令:以下若配置成功则返回OK;
AT+NAME =Beijing\r\n ——设置模块设备名为:“Beijing” AT+NAME?\r\n ——查询模块设备名
(4)设置波特率为115200;密码,名称随便设随自己心意;这样我们就配置好了,到时候接单片机串口通信的管脚就好(随程序而定)
MPU6050陀螺仪
原理大家有兴趣的可以百度,我就不在此赘述。 简言之,这个模块自带DMP可以解算出欧拉角,MPU6050得出来的姿态角有三种:PITCH(俯仰角)、ROLL(横滚角)、YAW(航向角)。我们安装时,要平放着放在车上。那么我们的车要立起来,要么是俯仰角要么是横滚角,航向角是Z轴上的我们暂时不用。 SCL和SDA是连接MCU的IIC接口,MCU通过这个IIC接口来控制MPU6050,INT是中断触发接口,陀螺仪每成功捕捉到一次数据,INT引脚的电平就会拉低触发外部中断。如果接GND,则MPU6050的IIC地址是:0X68,如果接VDD,则是0X69,我们默认接地。 我们所用到的管脚: VCC,GND,SCL,SDA,AD0,INT(关键) ???陀螺仪要水平放置不然可能会自检过不了,从而无法使用。 电源部分 我们使用12V航模电池或者三节18650电池串联构成一个电压12V的电源,12V的电直接接入TB6612电机驱动模块的VM引脚,之后再通过LM2596降压(通过调节降压模块的电位器来控制电压降到5V)给单片机供电。所以设计时要在电源线路中加入开关,来控制开启和关闭。 OLED显示以及编码电机测速我放在软件部分来说 至此我们所需要的模块就可以焊接了。至于搭建一层还是两层大家自己可以选择,一层的话重心低程序好调,二层难度稍大。可以发动脑筋想一想其他新颖的布局,焊接时可以加几个按键,以备之后PID调参或模式的切换。建议先手焊或杜邦线连接,之后熟练了可以学习画PCB,打板制作更精美的平衡车。
硬件效果展示
第一版1?? 第二版2?? 最终版3??
搭建一个好的硬件是最终效果良好的一个保障,也能让我们的程序调参变得简单,我们只有再动手之后才能有提升。提升自己的动手能力,焊接能力,设计能力等等。 希望大家都能设计出属于自己的那个小车车。加油!奥里给!
|