复刻stm32平衡小车(适合入门)

这篇具有很好参考价值的文章主要介绍了复刻stm32平衡小车(适合入门)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

前言:

1.硬件部分

1.1 STM32最小系统

1.2 电源

1.3 TB6612电机驱动模块

1.4 串口通信

1.5 OLED模块

1.6 蓝牙模块

1.7 LED灯模块

 1.8 MPU6050模块​编辑

1.9 硬件焊接与调试

1.10 组装

2.软件部分

2.1 代码

2.2 逻辑实现

2.2.1 control.c

2.2.2 usart.c

结尾


前言:

本文主要为复刻b站up主开源的平衡小车以及自己的学习过程,其中加入自己踩过的坑以及以及对该项目的理解,复刻这个项目的原因一来是自己希望能够通过做点小玩具加深对stm32的理解同时获得一点成就感让自己坚持走下去,二来是因为这个up主设计的太好看辣!!!,下面是教程希望对大家有一点帮助!!

有关文件我会放到网盘中,希望大家留下赞,谢谢!!!

我整理的资料有一些修改:链接:https://pan.baidu.com/s/1MOopSZY09zvE5uHRtji-WQ 提取码:yang

以下是up主的视频链接:【开源】STM32平衡小车_哔哩哔哩_bilibili

up主的资料:地址:https://gitee.com/WanDerFo/balance_car.git BGM: Far away from Home

话不多说,先来点实物图:

复刻stm32平衡小车(适合入门),stm32,单片机,嵌入式硬件

复刻stm32平衡小车(适合入门),stm32,单片机,嵌入式硬件

复刻stm32平衡小车(适合入门),stm32,单片机,嵌入式硬件

 下面进入正题

1.硬件部分

复刻stm32平衡小车(适合入门),stm32,单片机,嵌入式硬件

图1.原理图 

复刻stm32平衡小车(适合入门),stm32,单片机,嵌入式硬件

图2.PCB 

可以看到在原文件中已经将各个部分模块化,分为了STM32最小系统、电源、串口通信、电机驱动、MPU6050、蓝牙、LED、OLED等八个部分,下面对这八个部分进行逐一分解。

1.1 STM32最小系统

复刻stm32平衡小车(适合入门),stm32,单片机,嵌入式硬件

图3.stm32最小系统 

可以看到最小系统由stm32f103c8t6芯片以及外围电路组成:

其中烧录接口使用的是stlink接口进行代码的下载,去耦电容主要作用是滤除杂波,保证芯片的正常工作,在设计pcb时去耦电容应该尽量靠近芯片,复位电路主要用于复位,让芯片重新开始工作,晶振电路相当于芯片的心跳,不过stm32有内置72Mhz的晶振,具体使用到外置的需要进行配置。

1.2 电源

复刻stm32平衡小车(适合入门),stm32,单片机,嵌入式硬件图4.电源

电源电路主要用于给各个模块供电,在该项目中,使用的是两节18650的锂电池串联进行供电,所以输入的电压为3.7Vx2=6.4V,实际电压以测得为准。其中供电有三个主要电压,第一是原始的输入电压,由电池直接供电为6.4V主要用于电机的工作,第二为经过AMS1117-5.0芯片降压后的5V电压,主要用于TB6612电机驱动芯片和电机上的编码器工作,第三为经过AMS1117-3.3芯片降压后的3.3V电压,主要用于stm32主芯片、mpu6050、蓝牙还有一些其他的电路工作。

1.3 TB6612电机驱动模块

复刻stm32平衡小车(适合入门),stm32,单片机,嵌入式硬件

图5.电机驱动 

该模块主要用于电机的驱动,通过stm32f103c8t6发来的信号进行相应的PWM输出从而控制电机的运动,另外又通过电机上带的编码器进行电机运动状态的反馈从而进行相应的运算处理。

1.4 串口通信

复刻stm32平衡小车(适合入门),stm32,单片机,嵌入式硬件

 图6.串口通信

该模块通过type-c口与串口芯片CH340芯片可以与电脑进行连接调试,在小车启动过程会打印一些数据。

1.5 OLED模块

复刻stm32平衡小车(适合入门),stm32,单片机,嵌入式硬件

 图7.OLED模块

OLED模块主要用于小车运动过程中的角度信息、蓝牙的连接显示

1.6 蓝牙模块

复刻stm32平衡小车(适合入门),stm32,单片机,嵌入式硬件

 图8.蓝牙模块

蓝牙模块主要用于小程序与平衡小车的通信,可以通过蓝牙来控制小车的运动方式以及led灯的亮灭

1.7 LED灯模块

复刻stm32平衡小车(适合入门),stm32,单片机,嵌入式硬件

 图9.LED灯模块

LED灯模块主要为了指示系统运行是否正常以及添加外观效果

  1.8 MPU6050模块

  图10.MPU6050模块

MPU6050模块主要用于获取小车的姿态,通过获取到的姿态进行反馈到stm32f103c8t6主芯片中进行运算,若发现运动角度发生偏差则对电机进行控制从而调整小车的平衡。

1.9 硬件焊接与调试

 焊接工具:电烙铁、热风枪、焊锡、洗板水等

为方便调试以免后面出了问题找不出来,首先进行电源、串口、最小系统的焊接(焊工有限,轻点喷,意见全不接受,建议全部接受)

复刻stm32平衡小车(适合入门),stm32,单片机,嵌入式硬件

图11.pcb板

在这部分焊接的时候注意芯片与usb口的引脚不要连接到一起,否则有可能无法正常工作。

在焊接完成后用万用表进行测试电源正负,保证电路不要短路,保证电路不要短路,保证电路不要短路,否则可能烧芯片。

在焊接完成后进行代码的下载,下载到板子上后给板子插上串口与电脑相连,打开串口调试工具然后按下复位。(记得对板子进行供电,使用电池或者stlink接3.3V,USB本身不供电)

进行代码编译时发现会报错(有OS版本),这时需要把这几个文件添加到CORE文件夹中

复刻stm32平衡小车(适合入门),stm32,单片机,嵌入式硬件

有以下界面那么恭喜你,你目前的电路是没有问题的。

复刻stm32平衡小车(适合入门),stm32,单片机,嵌入式硬件

图12.串口调试界面 

 如果没有呢,那也别着急,咋们好好检查以下是不是焊错了、连锡了、还是芯片用错了,特别是usb口那里(好难焊,我好菜)!!

那么到这离成功还远咋们继续。

把剩下的器件全部焊完

复刻stm32平衡小车(适合入门),stm32,单片机,嵌入式硬件

图13.pcb板

复刻stm32平衡小车(适合入门),stm32,单片机,嵌入式硬件

图14.反面pcb 

焊完了pcb板,有条件的用洗板水对板子进行清洗,去除掉焊接残余的松香和小焊锡,要是没有条件的小朋友呢,那就将就一下检查检查有没短路吧,当然焊完也要记得测测有没短路噢!!

到这你可以选择重新下载一次代码,也可以不下载(我重新下了)

再次进行串口的连接测试,显示下图内容:

复刻stm32平衡小车(适合入门),stm32,单片机,嵌入式硬件

 图15.串口测试界面

要是你还是显示上次的Initialization failed!那就不正常了,要好好仔细检查你焊的电路了,这里我调试了有些时间,还去问了up,没想到居然回我了!!感动!!!!再次实名感谢

复刻stm32平衡小车(适合入门),stm32,单片机,嵌入式硬件

 所以啊,焊工该练练了!!!

另外我还发现了个问题,我的炫酷LED等它不亮,这可不行啊,于是我仔细看了电路图,我发现我买的5730LED灯,它的中间引脚居然是和正极相连的,它不同颜色中间引脚的极性不一样。对此新的知识又增长了,不要惯性的认为所有的LED散热焊盘都是连地的。所以PCB这里需要进行修改把中间的焊盘连接线给去掉,什么都别连。就能无论买到什么颜色都可以用了。

修改后的PCB板放在网盘中!!!

当然,我焊都焊了那么久了怎么可能放弃这块板,于是我在中间垫了一张纸,给隔开了(哈哈),能正常使用。(不要试图把线割开,板子上打了过孔,连到了另外一层)

复刻stm32平衡小车(适合入门),stm32,单片机,嵌入式硬件

  图16.LED BUG

记得四个LED都需要改。

1.10 组装

在板子调试没有问题后就开始进行组装。我再次发现了BUG,按照up做的底板电池盒好像装不下需要稍微倾斜,才能放下。对于我这种强迫症后期选手来说也太难受了,于是我加宽了底板(我用的PCB板来当底板),让它能容下电池盒。

复刻stm32平衡小车(适合入门),stm32,单片机,嵌入式硬件

图17.电池盒与电机固定器位置冲突

修改后如下图明显胖了一圈,但是它能放下电池盒呀,且不影响使用。(温馨提示:嘉立创可以白嫖)

复刻stm32平衡小车(适合入门),stm32,单片机,嵌入式硬件

 图18.修改后底板图

装好后硬件部分就基本完成了,如果有哪些地方觉得不协调可以自己调整一下

复刻stm32平衡小车(适合入门),stm32,单片机,嵌入式硬件

图19.组装完成后图

 对于物料更新也会放到BOM表中,BOM表我里加上俺购买物料的连接,省下你的小钱钱。

2.软件部分

2.1 代码

对于软件部分,可能需要一点代码基础(对于我这种小新人来说理解起来有点吃力),其实代码Up主已经注释的很清楚了,但在两个版本中有两套代码,一套是裸机开发,一套是搭载了freerots系统。相对来说搭载了操作系统的代码会稳定一些,当然先看裸机代码来理解其中的逻辑会相对容易一些。

复刻stm32平衡小车(适合入门),stm32,单片机,嵌入式硬件

 图20.代码

想看懂搭载了FreeRTOS的代码,必须要去了解一下什么是FreeRTOS,我是看了韦东山老师的课,对才对FreeRTOS有了一个大致的了解,课程连接如下:韦东山freeRTOS快速入门视频教程_哔哩哔哩_bilibili

复刻stm32平衡小车(适合入门),stm32,单片机,嵌入式硬件

  图21.主函数

简单来说FreeRTOS是一个实时操作系统,采用嵌入式实时操作系统(RTOS)可以更合理、更有效地利用CPU的资源,简化应用软件的设计,缩短系统开发时间,更好地保证系统的实时性和可靠性。根据任务的调度方法使任务分成很多个碎片来轮换执行,从而实现多任务的实时性。(老师讲的比较明白,我还需要进一步学习,建议看课去)

2.2 逻辑实现

我是先看了搭载系统的代码后觉得不是很明白然后从裸机代码开始重新看的,大致明白了其中的逻辑(不对的地方欢迎指正)

相关代码我也做了自己的注释方便理解,都在网盘中,咋们挑重要的讲,我觉得比较重要的几个头文件是control.c 、usart.c

2.2.1 control.c

复刻stm32平衡小车(适合入门),stm32,单片机,嵌入式硬件

   图21.control.c

从结论出发,可以从名字看出该函数主要是用于控制,通过Mpu6050的INT数据更新进行中断的触发进入函数

void EXTI9_5_IRQHandler(void),该函数主要功能是:

1.获取mpu6050传回的角度信息 

2.通过收到的蓝牙信息进行相应设置     

3.约束极限速度

4.设置转向约束

5.将获取到的角度传到PID控制器中进行控制,其中分为角度、速度、转向

6.根据蓝牙数据选择是否执行三角形、矩形运动

7.拿起与放下检测

8.侧立运动

关于上面的功能我都有相应注释

复刻stm32平衡小车(适合入门),stm32,单片机,嵌入式硬件

 图22.EXTI9_5_IRQHandler

当然最最最重要的还是PID控制啦,简单来说PID控制就是输入的变量通过一定计算输出向目标变量靠近的值,使电机朝着这个值进行运动,这句话看不懂可以多看几遍。下面是我的理解:

例如你输入一个目标速度,一个当前速度,然后pid算法就会根据你输入的速度值进行计算,然后输出的pwm值可以使你的电机快速的达到这个速度,并保持稳定。好了PID差不多就是这样,我们根据这个道理把它反应到角度上来,使我们的小车维持在一个平衡的角度,如果向前倾斜了电机就根据pid的到的pwm值向前运动,使小车回到平衡状态,这就是其中最重要的逻辑。通过这个逻辑我们实现了角度、速度、角度综合的一个pwm,使小车的运动达到我们想要的效果。

复刻stm32平衡小车(适合入门),stm32,单片机,嵌入式硬件

 图23.PID控制

2.2.2 usart.c

复刻stm32平衡小车(适合入门),stm32,单片机,嵌入式硬件

 图23.usart.c

usart.c主要功能是接收蓝牙发送的数据并进行处理,相关指令功能up主均已给出详细的解释如下图:

复刻stm32平衡小车(适合入门),stm32,单片机,嵌入式硬件

  图24.指令解析

结尾

好了差不多到这,算是近期学习总结吧,有小作品才会有继续前进的动力,自己还有许多的不足,如果有什么我写的不对的地方欢迎大家指正,希望都能复刻成功,谢谢!!!文章来源地址https://www.toymoban.com/news/detail-548176.html

到了这里,关于复刻stm32平衡小车(适合入门)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32单片机PWM控制实现电机调速度(小车运动,STM32F103C8T6&TB6612&TT电机)

    作者:公子易平 时间:2023/6/6 前段时间做一个智能小车的相关项目时,发现很少有人能够将STM32的PWM控制讲清楚,故而书此文,希望对后来的学习者有所帮助。 STM32F103C8T6最小系统板 直流TT电机 电机驱动芯片(TB6612) 杜邦线若干 接线情况: TB6612引脚说明: STM32主控芯片与TB6612接

    2024年02月15日
    浏览(45)
  • 基于stm32的平衡小车

    目录 前言 一、电机驱动部分 1、TB6612FNG电机驱动模块接线方式: 2、代码使用定时器2的4路输出pwm 3、gpio引脚初始化,以及前进,后退引脚设置 二、MPU6050陀螺仪部分 三、编码器捕获部分 四、pid部分 1、直立环KD 2、速度环KI 3、转向环(PD) 五、蓝牙通信部分 总结 经过几天对

    2024年02月09日
    浏览(37)
  • 100、基于STM32单片机自动跟随小车 红外遥控控制小车避障模式 跟随模式设计(程序+原理图+PCB源文件+流程图+硬件设计资料+元器件清单等)

    智能小车通过各种感应器获得外部环境信息和内部运动状态,实现在复杂环境背景下的自主运动,从而完成具有特定功能的机器人系统。而随着智能化电器时代的到来,它们在为人们提供的舒适的生活环境的同时,也提高了制造智能化电器对于人才要求的门槛。智能小车是集

    2024年02月15日
    浏览(72)
  • 初学者入门:认识STM32单片机

    本教程含有较多专业词汇,大部分时候,不完全理解并不影响继续往下阅读,大家只需要了解大致的概念即可。当然,也鼓励大家多查百度和多问chatgpt,让自己学会的更多。 什么是单片机? 单片机,就是把中央处理器CPU、存储器、等计算机的功能部件,和定时器、I/0(输入

    2024年02月07日
    浏览(54)
  • 初识stm32单片机(小白入门指南)

    当你看到这篇博客时不知道是否已经了解过C51单片机,如果你没了解过它。这里有一份指南(C51教程)让你入门单片机,作为初学者从功能相对简单的单片机入手更有利于打好基础。虽然stm32在性能上更为强大,但stm32开发从它的配置和代码量上来讲比C51开发更复杂,缺少点乐

    2024年02月17日
    浏览(44)
  • STM32两轮平衡小车原理详解(开源)

    关于STM32两轮平衡车的设计,我想在读者阅读本文之前应该已经有所了解,所以本文的重点是代码的分享和分析。至于具体的原理,我觉得读者不必阅读长篇大论的文章,只需按照本文分享的代码自己亲手制作一辆平衡车,其原理并不言而喻了。 源完整代码工程在文章末尾百

    2024年02月05日
    浏览(51)
  • 基于STM32-F401的平衡小车

    目录 一、控制系统设计 1.1机械结构设计 1.2传感系统设计 1.3执行器设计 1.4控制算法设计 二、控制系统的制作与调试 2.1机械结构的制作与调试 2.2电路系统的制作与调试 2.3控制程序的编写与调试 三、控制系统的测试与分析 3.1测试方法 3.2测试数据与现象 3.3结果分析 一个系统

    2024年02月06日
    浏览(46)
  • STM32 蓝牙平衡小车(一)硬件原理图

    第一篇文章首先介绍平衡小车的硬件组成,对硬件原理图进行详解。   1. 主控板:主控芯片(STM32F103C8T6)+电机驱动芯片(TB6612FNG)。 2. 小车框架:平衡车底盘、带编码器的电机、轮子 3. 电池:狮子航模电池2200mAh11.1V35C,T母头 4. DC-DC降压模块:MP1584EN,3A可调降压稳压电源模

    2024年02月14日
    浏览(38)
  • STM32/51单片机编程入门(点亮LED)

    目录 一、Proteus电路仿真软件上的C51程序设计及仿真 1.原理图绘制 2.Keil5上的51程序编写 3.仿真 二、安装mdk5软件和stm32包,完成一个stm32的简单程序 1.mdk5软件中编写程序 2.stm32仿真程序调试 三、STM32F103系列芯片的地址映射和寄存器映射原理,GPIO端口的初始化设置的一般步骤

    2024年02月02日
    浏览(56)
  • STM32单片机入门学习笔记——MPU6050

    笔记整理自B站UP主江科大自化协教程《[10-2] MPU6050简介_哔哩哔哩_bilibili》,所用单片机也为教程推荐单片机。 如果芯片里再集成一个3轴的磁场传感器,测量XYZ轴的磁场强度,那就叫做9轴姿态传感器,如果再集成一个气压传感器,测量气压大小,那就叫做10轴姿态传感器,一

    2024年02月08日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包