【平衡小车制作】(一)硬件原理图讲解(超详解)-程序员宅基地

技术标签: stm32  芯片  pid  蓝牙  嵌入式  

  大家好,我是小政。之后的一系列文章我将介绍我玩平衡小车的过程以及遇到的一些问题,将这些内容记录下来分享给大家,也让大家少走一些弯路。接下来我将从硬件框架选择、软件编程、PID算法、PID调参、蓝牙遥控这五个部分向大家讲解平衡小车的制作过程。
  本系列平衡小车文章适合于刚刚学习STM32但感觉没有玩透,想找个项目练练手,那么平衡小车绝对适合你。同时也适合于对于平衡小车感兴趣但编程和硬件基础较差,没有关系,跟随小政将让你轻松学会制作一个属于自己的平衡小车。
  第一篇文章我会首先介绍平衡小车的硬件组成,对硬件原理图进行详解。

一、硬件结构

1. 主控板:主控芯片(STM32F103C8T6)+电机驱动芯片(TB6612FNG),利用AD20画的PCB并进行打板。
2. 小车框架:平衡车底盘、电机、轮子(某宝有售)
3. 电池:狮子航模电池2200mAh11.1V35C,T母头
4. DC-DC降压模块:MP1584EN,3A可调降压稳压电源模块
5. 陀螺仪:MPU6050,检测倾斜角度
6. OLED:4线I2C OLED显示屏
7. 超声波模块:HC-SR04
8. 蓝牙:HC-05

二、硬件原理图

  硬件原理图我利用Altium Designer 20画的,并进行了PCB打板。想要获取原理图的小伙伴可以去我的百度网盘下载。
网址:https://pan.baidu.com/s/12LstSbIAEuiyO8rI9XfSFg
提取码:rddh
在这里插入图片描述

图1 平衡小车硬件原理图

  上图中的串口电路存在问题,各位参考下图的串口电路:
在这里插入图片描述

在这里插入图片描述

图2 平衡小车3D视图PCB

三、硬件框架讲解

(1)STM32F103C8T6

主控芯片及周围电路结构如下:
1)STM32F103C8T6(48脚芯片)
2)8M晶振(STM32内部倍频至72MHz,产生供系统正常工作的稳定的脉冲信号),
3)复位电路(RST)
4)启动模式选择电路(BOOT0和BOOT1)
5)去耦电容(3.3V与GND之间加几个104电容)
6)烧写电路(SW)
在这里插入图片描述

图3 主控芯片及周围电路

(2)电源电路

   电源采用11.1V锂电池供电,通过DC-DC降压模块获取5V电压,在通过AMS1117降至3.3V。图中电解电容主要目的是滤低频纹波,瓷片电容主要目的是抑制高频噪声,需靠近管脚。
在这里插入图片描述

图4 DC-DC降压模块

在这里插入图片描述

图5 AMS1117转3.3V

(3)编码器

作用:实时检测电机速度
编码器1——PA0/PA1——TIM2
编码器2——PB6/PB7——TIM4
在这里插入图片描述

图6 编码器引脚(TIM2,TIM4)

(4)电机驱动芯片TB6612FNG

作用:驱动电机正常运行
PWM1——PA8
PWM2——PA11
电机1——PB12/PB13
电机2——PB14/PB15
在这里插入图片描述

图7 TB6612FNG(TIM3)

(5)陀螺仪MPU6050

作用:检测倾斜角
MPU6050中断引脚——PB5
MPU6050所用I2C——PB3/PB4
在这里插入图片描述

图8 陀螺仪MPU6050(I2C)

四、实物展示

在这里插入图片描述

图9 平衡小车实物图

在这里插入图片描述

图10 平衡小车实物图

在这里插入图片描述

图11 平衡小车实物图

  以上就是硬件结构的讲解,接下来的文章将对软件的编程和算法设计进行详解。平衡小车系列文章作者在持续更新中。文章中出现错误或者小伙伴对以上内容有所疑问,欢迎大家在评论区留言,小政看到后会尽快回复大家!
【平衡小车制作】(二)电机驱动(超详解)https://blog.csdn.net/weixin_44270218/article/details/113276624

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44270218/article/details/113186002

智能推荐

链路追踪 SkyWalking 源码分析 —— Collector Storage 存储组件-程序员宅基地

文章浏览阅读857次。点击上方“芋道源码”,选择“设为星标”做积极的人,而不是积极废人!源码精品专栏中文详细注释的开源项目RPC 框架 Dubbo 源码解析网络应用框架 Netty 源码解析..._writerequest.refreshpolicy.immediate save

Error creating bean with name ‘dataSource‘ defined in class path resource [applicationContext.xml]_error creating bean with name 'datasource' defined-程序员宅基地

文章浏览阅读5.1k次。分析:异常信息提示错误出在C3P0连接池,检查applicationContext.xml后发现并没有什么错误,于是我们可以锁定问题出在 jar 库依赖,问题的出现可能就是 jar 库冲突,选择性地删掉一个就OK了。严重: 在路径为[/SSH02-SpringWebPojo]的上下文中,servlet[servlets.RegisterServlet]的Servlet.service()引发异常org.springframework.beans.factory.BeanCreationException_error creating bean with name 'datasource' defined in class path resource [c

kafka参数auto.offset.reset与消失丢失_kafka auto.offset.reset 找不到配置-程序员宅基地

文章浏览阅读218次。kafka一种极端的的消息丢失。_kafka auto.offset.reset 找不到配置

在OpenCV中利用卷积进行图像滤波_卷积如何实现滤波的功能-程序员宅基地

文章浏览阅读1.5k次,点赞4次,收藏14次。简 介: 本文首先讨论了卷积核的概念,以及如何用于对图像进行滤波。然后通过他们对图像进行数学运算来实现特定的效果,比如平和和锐化。展示了如何在OpenCV中实现2D滤波。 在等同卷积卷积核之后,我们创建了更多定制的核,用在OpenCV中的 filter2D()函数中。 介绍了OpenCV中的重要内置函数MediaBlur(),GaussianBlur()。 最后展示了 OpenCV中的 bilateralFilter()函数,是如何在保留图片中清晰边缘的同时又平滑了图像。关键词: 中值滤波,平滑滤波,.._卷积如何实现滤波的功能

CentOS 7中文输入法安装教程_centos7安装中文输入法-程序员宅基地

文章浏览阅读4.9k次,点赞11次,收藏21次。*第四步:**双击 “汉语(中国)” >汉语(lntelligent Pinyin) > 添加。> 单击选中 “汉语(lntelligent Pinyin)” > 恭喜你成功啦 嘻嘻嘻。**第三步:**点击 “Region & Language” 接着点击 **“+”**号。**第二步:**打开 “系统工具” 下的 “设置”**第五步:**返回到桌面,在右上角单击。**第一步:**打开左上方应用程序。_centos7安装中文输入法

【数据结构之索引】-程序员宅基地

文章浏览阅读734次,点赞7次,收藏6次。索引是一种数据结构,数据库存储数据使用该结构,可以帮助我们高速的查询数据索引类似字典开头的目录,可以帮我们快速的定位到某些数据。

随便推点

Windows批处理脚本:ffmpeg转换b站m4n视频_ffmpeg批处理脚本-程序员宅基地

文章浏览阅读437次。(3)将下载到的M4S文件拖到.bat文件上即可作为参数执行,转为MP3需要一个音频文件,转为MP4需要音频文件和视频文件两个一起拖到.bat上。(1)上面的代码两段set是用于修改下载到的文件的后缀名,从m4s改为MP3或者MP4。的是延迟变量,~n是取出文件的文件名,~x是取出文件的扩展名。(2)修改文件后缀名,将.txt改为.bat。(1)创建文本文件,并将需要代码复制进去。_ffmpeg批处理脚本

搜集的游戏引擎-程序员宅基地

文章浏览阅读130次。从Gist上发现的,挺全的IMPORTANT! Remember to check out the wiki page at https://github.com/bebraw/jswiki/wiki/Game-Engines for the most up to date version. There's also a "notes" column in the table but it s...

网易2018校园招聘编程题真题集合(一)_小易准备去魔法王国采购魔法神器购买魔法神器需要使用魔法币但是小易现在一枚魔-程序员宅基地

文章浏览阅读255次。1、答案及运行结果:递归(逆推):直接或者间接地调用自身递归算法解决问题的特点:(1) 递归就是在过程或函数里调用自身。(2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。(3) 递归算法解题通常显得很简洁,但递归算法解题的运行效率较低。所以一般不提倡用递归算法设计程序。(4) 在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等。所以一..._小易准备去魔法王国采购魔法神器购买魔法神器需要使用魔法币但是小易现在一枚魔

hashcode详解-程序员宅基地

文章浏览阅读2k次。HashCode是在Java中用于获取对象的唯一标识符的方法。它是根据对象的内容生成的一个整数值。对象的hashCode()方法被调用时,它返回的是对象的哈希码。哈希码可以用于在哈希表等数据结构中快速定位对象。在Java中,hashCode()方法是被Object类定义的,所有的对象都可以调用该方法。默认情况下,hashCode()方法返回的是对象的内存地址的哈希码表示。通常情况下,如果两个对象的equals()方法返回true,那么它们的hashCode()方法应该返回相同的值。_hashcode

java计算机毕业设计(附源码)英语单词学习软件app(ssm+mysql+maven+LW文档)-程序员宅基地

文章浏览阅读231次,点赞5次,收藏6次。其次,通过智能化的学习算法,软件能够根据用户的学习进度和记忆能力,提供定制化的学习计划和复习提醒,从而确保学习效果的最大化。此外,软件中的互动元素和游戏化设计,增加了学习的趣味性,激发了用户的学习动力。最后,随着用户词汇量的增加,他们将更加自信地运用英语进行沟通和表达,这不仅有助于个人职业发展,也促进了跨文化交流,增进了不同文化之间的理解和尊重。因此,英语单词学习软件APP的开发和应用,不仅是技术进步的体现,更是推动语言学习和文化交流的重要力量。随着科技的发展和移动设备的普及,学习英语的方式也在不断进化。

_004_jspAndServlet_Servlet3.0的异步_hasoriginalrequestandresponse-程序员宅基地

文章浏览阅读127次。来自https://www.cnblogs.com/zr520/p/6103410.html,感谢作者的无私分享。servlet之前的操作同时同步的,就是按照这样的一个流程来走的:1.请求根据一个路径路由到一个servlet中,2.servlet获取一系列的参数3.执行一系列的逻辑(花费时间所占的比重也更大)4.返回结果上面的问题出现在这一系列的操作都是同步的,所以这个请求必定是堵塞到所以任务都完..._hasoriginalrequestandresponse

推荐文章

热门文章

相关标签