打印
[应用相关]

作品秀~DIY基于stm32的两轮平衡小车

[复制链接]
922|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
学习一种单片机最快的方式莫过于用它实际制作一个作品了,前些天看到有人在玩平衡小车,感觉非常有趣,于是就决定自己动手制作一个基于STM32的两轮平衡小车。从电路板设计,到程序编写,一步一步的,希望自己在这个过程中有一定的收获。
这篇先写最开始的电路设计,之后会更新后续的代码编写和小车调试。
电路设计的基本过程一般是这样的:需求分析——元件选型——原理图设计——PCB设计——焊接调试。
需求分析:在这里,主要是确定小车需要哪些模块、外设或接口。首先,stm32最小系统是必须的,这是小车控制的核心。然后小车的两个轮子需要两个H桥驱动和编码器接口。需要陀螺仪感知小车的姿态(包括倾角,转向角,角速度等)。需要一些调试和指示用的外设(蜂鸣器LED等)。需要电源电路为系统供电。需要电池电压采集电路来实时采集电池电压,做低压报警,防止电池过放。需要下载接口和调试用的串口。基本就是根据自己想要实现功能,然后确定需要那些部分的电路。
元件选型:为需要的各个部分电路选择元件,一般来说,主要是选择何种型号、什么封装的芯片,对于一些比较特殊的电路,即使是电阻电容这样常见的无源器件也需要认真选择,然而平衡小车的电路中并不需要一些高精度或很高速的电路部分,所以,下面主要介绍如何选择各个电路部分的主要芯片。
1.最小系统:考虑到小车的主控板可以作为今后做四轴或其他更高级的机器人的基础电 路,所以主控选择了stm32F405RGT6,这款主控是M3内核的,主频可以达到168M, 有丰富的外设资源可以使用,性能非常强悍,非常适合以后的开发和拓展。
2.电机驱动:小车的两个轮子电机需要两个H桥驱动。驱动的选择和电机的参数紧密相 关。我选用的电机的正常工作电流360mA,并且考虑到小车在正常情况下基本不会出 现赌转的情况,并且为了尽量减小PCB板的面积,所以选择了东芝的电机驱动芯片 TB6612,该芯片有两个集成的H桥,可以同时驱动两个电机,每个H桥可以持续输出 1.2A的电流,PWM频率可以到100kHz,芯片的供电电压最大可以到15V,适合用3S电池供电,并且芯片封装很小,节省PCB面积。
3.电源电路:主要考虑输入电压、输出电压、输出电流等。小车电池采用3S锂聚合物电 池,放电率25C,以后做四轴还能用。电池的满电电压12.6V左右,电路中需要5V和 3.3V的电源,因此需要选择两款款芯片将12V电压降压到5V,然后再将5V降压到 3.3V。12V-5V的芯片可以选择MPS公司的DCDC降压芯片MP2482,该芯片支持最大 5A电流输出,最大28V电压输入,0.8至25V可调电压输出,符合需求。5V-3.3V选用 常见的AMS1117-3.3。
4.陀螺仪:选用MPU6050模块,模块自带了软件滤波算法,采用串口对外输出数据, 在115200波特率的情况下,每秒钟可以输出100帧的数据。
原理图设计:
1.最小系统:包括stm32f405rgt6,晶振电路,复位电路。R2和R3用于配置启动方式。C9和C12是单片机内部电源变换部分的滤波电容。最小系统基本都是一样的,按照常用的电路设计一般没有错。那几个电容式芯片的去电容,注意一下,模拟电压、模拟地和数字电源、数字地之间用磁珠隔离,防止数字电路的高频噪声影响到模拟电路的精度。
2.电源电路:R22和R23将电池电压分压到1.2V,接到单片机内部的ADC引脚,监控电池电压,防止过放。
3.电机驱动和编码器电路:基本就是按照芯片datasheet上的参考电路设计的,注意做好电源去耦,因为电机的电压较高、电流较大,容易通过电源网络对其它电路产生影响。
4.陀螺仪:集成的模块,没啥好说的,把引脚连到单片机上就好了,简单在电源脚上并一个电容做一下电源去耦(不做也无妨,因为模块内部已经做了)。
5.can通信:在小车上并没有用到CAN通信,但是CAN通信在现在的机器人设计中应用的非常广泛。并且我们做小车本来就是要学东西的,加上调一下,多学习些知识,何乐而不为呢?CAN通信用的芯片是飞利浦的TJA1050,这是一个CAN收发器,stm32内部集成了can控制器。R4是阻抗匹配的电阻,在整个CAN通信网络中有且只有两个节点焊接此电阻,电阻阻值为120ohm。现在也还没有深入学习CAN通信相关的知识,在以后调试CAN通信的时候再详细学习吧。(^.^)
6.调试电路和其他的接口:SWD下载接口,USART调试串口,蓝牙接口(根据选择的蓝牙模块不同确定接口不同引脚的用途,比如使能脚、状态输入脚等,后面写蓝牙的时候详细描述)。蜂鸣器和双色LED灯用于调试和指示。另外又引出了几个定时器的引脚,可以留作拓展使用。
PCB设计:不详细说了吧,工程文件在附件里有。注意事项主要有电源去耦(具体做法可以参考我之前关于电源去耦的博文)、线宽控制(大电流的走线要尽量宽)、开关电源的布局布线(一般来说主要记住三点就好了:一是芯片的SW的信号是电压高,频率高的开关信号,会对其他电路产生严重的干扰,要尽量远离敏感的电路。二是反馈网络是很敏感的网络,尽量避免受干扰。三是电源的电流较大,注意线宽和过孔的数量、孔径等,保证有能力通过这么大的电流。注意了这三点,集成的DCDC电路一般没有问题)等。这里贴一下板子正反两面的3D效果图
焊接调试:也不多说了,平时多练练手,0603 QFP这些封装的元件就能轻松搞定了。焊接的时候先焊接电源部分,上电测试电源没有问题的话再焊接其他部分,否则一旦电源有问题,整板全白焊了。。下面贴一个焊接调试好了的实物图。
嗯,就先写这么些吧。上面写的比较啰嗦,也没有什么高大上的技术,差不多都是硬件电路设计需要的基础知识吧。只是希望将自己设计这块平衡小车电路板的过程比较系统和通俗的介绍一下,能将自己这实践过程中学到的只是和经验分享出来,没怎么接触过这方面的朋友可以将其当作参考,快速入门。同时希望各位高手和达人能多多指教。

使用特权

评论回复
沙发
真爱吴迪迪| | 2020-9-2 18:28 | 只看该作者
这个太赞了,楼主真的是高手,我一直找软件进行仿真。

使用特权

评论回复
板凳
jackcat| | 2022-12-6 17:08 | 只看该作者
做平衡车主要是计算姿态的。              

使用特权

评论回复
地板
wilhelmina2| | 2022-12-10 10:56 | 只看该作者
stm32单片机的使用,电机PID算法,陀螺仪的使用及滤波算法都得学习。

使用特权

评论回复
5
1988020566| | 2022-12-10 21:14 | 只看该作者
stm32平衡小车供电分开可以吗

使用特权

评论回复
6
51xlf| | 2022-12-12 09:32 | 只看该作者
计算姿态的时候可以使用哪些算法?

使用特权

评论回复
7
pentruman| | 2022-12-12 21:12 | 只看该作者
是开源的 设计作品的吗?              

使用特权

评论回复
8
kkzz| | 2022-12-17 12:37 | 只看该作者
stm32的两轮平衡车怎么实现方向控制

使用特权

评论回复
9
Undshing| | 2022-12-17 16:33 | 只看该作者
电机PID参数调起来真是痛苦啊

使用特权

评论回复
10
cashrwood| | 2022-12-17 17:33 | 只看该作者
用步进电机做的自平衡小车 电机怎么控制

使用特权

评论回复
11
timfordlare| | 2022-12-18 21:58 | 只看该作者
这个没有完整的工程代码可以学习的 。

使用特权

评论回复
12
小小蚂蚁举千斤| | 2022-12-20 10:12 | 只看该作者
楼主,方便把相关资料能发一下附件嘛

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

681

主题

1534

帖子

7

粉丝