亲爱的工程师朋友和喜爱电子的朋友,大家好,我是zero,一名热爱diy的在校学生,很高兴能来到这个平台分享自己做的产品,来这个平台的目的最主要想跟大家分享一下自己做东西的时候遇到的问题和理解,想让大家一起进步。
本期我做的是平衡车,平衡车大家应该很熟悉不过了,很多相关专业的学生或者工程师一般都应该有所了解,或者自己也动手做过,但是我想把我做的过程分享出来,我想把我的心得和体会也分享给大家,希望对大家有所帮助,以下如果有讲的不对的地方还望大家提出来,我也随着一起进步。
为了节省大家时间,我主要讲一下我接下来要给大家讲的,以及可能对大家有帮助的地方;
1.平衡车的硬件搭建。
2.平衡车的程序编写。
3.平衡车的PID调节。(主要讲一下,我想把我的pid调节心得给大家,绝对好用)
4.机械外壳制作。(主要是如何将自己制作的pcb结合建模软件制作外壳)
5.拓展功能。(应该是没有时间做了,但是我会给大家流出来程序接口,供大家拓展)
6.我下面主要解释一下,上面我说的这几点;
我想在接下来的过程当中主要给大家讲一讲如何处理mpu6050的数据,如果大家在实际当中可能遇到过mpu6050的应该了解,有一种现成的处理方式叫做DMP,我们不采用这种,采用四元数解算出欧拉角的方式。
我会告诉大家过程中应该注意的事项,以及滤波算法选择等等应该注意的事项,其中我会结合matlab给大家更直观的分析数据,证明我们的滤波算法选择的可行性,不是空谈。
最主要想给大家讲讲PID的调节,PID一直都是我们比较头疼的问题,我想把我遇到以及自己的经验告诉给大家,希望在以后的diy过程中会有所用途。
(其中这个过程当中很多是我自己的理解,如果有不对的地方,也希望大家给提出来。)
最后我会跟大家简单说一下,如何将自己制作的pcb导入到3d建模软件中,制作自己的产品的外壳。
我会把我制作过程中的代码分成两种一种是非操作系统的(先写的),一种freeRTOS操作系统的供大家参考(后改的),还有其他所有制作过程中所需要的软件等;
7.最后祝大家都能学到知识,都成为大佬。
好啦,第一期就唠嗑到这里啦,接下来,我将陆续分享“基于STM32来DIY一款炫酷的mini平衡车”项目的各个步骤的内容,如果对这个项目感兴趣,想深入了解和沟通,请在右栏浮动模块中扫码申请加入“来实战技术交流群”(Q群)。
欢迎点击下方【收藏按钮】收藏本项目,持续更新中,敬请关注...
步骤一:初步设计方案
本期我们主要是简单陈述一下平衡车的总体概况,包括我们需要什么软件,平衡车的总体框架是什么,这为我们下一步电路绘制和程序编写起到铺垫作用,因为我们设计了什么样的电路,也就意味着以后的功能的局限性。
图1:平衡车的总体框架
图2:OLED显示模块
图3:电机
图4:编码器接线方法
硬件方面
首先先说一下我为什么选择stm32f103tu这块芯片,最主要原因它是f10x系列最小的stm32芯片,而且最主要原因它是QFN封装的,在我们非机器焊接的时候遇到最难的也就是QFN封装,stm32的球体封装一般厂商难以做出来,工艺太高,做出来也是高层板和高价格,对于我们来说那就是给我们自己找麻烦。所以这样可以锻炼我们焊接的基本功,在我们日常的DIY过程中,难免会遇到硬件软件一起抓,芯片选型等等一系列的工作,所以不要让焊接功底成为我们的拦路虎。
软件方面
视频中只是给大家介绍了一下我在制作过程中所用到的软件,不限于别的软件。接下来的视频中大家可以留意一下J-scope的使用,真的很好用,如果不喜欢的同学亦可以使用自带的蓝牙模块使用透传,电脑端使用串口调试助手来实现。
安装方面
所有的视频我并不讲软件的安装方式,伸手党很可耻,我们动动小手都能搞定。
PS:在过程中可能会遇到很多同学没听明白或者不清楚,都可以留言,在一段时间内我都回答大家的问题,如果我没有及时回复大家,大家可以度娘搜索关键词,一般都可以搞定。最后我想说的是,在录制视频的时候一直很紧张,录了很多遍都一样,所以大家请谅解。
如果有不明白的可以给我留言,我会及时回复的。
预告:下一期主要讲讲电路图架构,为了节省大家的时间我会把所有的电路和原理图绘制完成,最后给大家讲讲中间应该注意的问题。我们下一期见!
步骤二:硬件系统设计
本期我们主要讲如何设计硬件原理图和PCB制图,在我们做之前我们要想好我们想要什么功能,这涉及到我们设计硬件原理图的时候要将这些功能添加进去,我们在DIY过程中,一定要把我们想实现的功能想周全,这样后期就不会因为设计前想的不周到而造成自己想要实现功能却无法实现。
图1:电路板3D图
图2:电路板反面布线图
图3:电路板正面布线图
首先我们先把我们的电源,最小系统,蓝牙,oled和电机驱动电路一部分一部分的画好,我们在设计的过程中还要检查一遍,我们设计的原理图是不是有问题,硬件原理不能出现问题,这时候我们可以选择芯片的datasheet,在芯片资料中会明确说明每个引脚的作用,有的芯片还会给出参考的最小系统设计,我们完全可以按照它给定的和规定的设计,这样也是对我们设计的原理图的一种纠错,确认没有任何错误之后我们就可以进行下一步PCB制图的制作。
图4:电路板面3D图
图5:电路板整体SW图
在PCB制图之前我们要先得到我们pcb板子的大小和形状,这时候我们就需要SW了,我们在SW中建好相应元器件的模型,我们将这些模型堆砌到一起,最后由我们自己确定最后的电路板板框图,导出板框图,我们的电路最终就在电路板的板框图上绘制。在绘制过程中,我们可以按照实际当中电路的需要而实时更改电路的原理图,以便我们能更好地布线,布的更美观,在布线当中我们要分清信号线和电源线,电源线我们要加粗处理,以防载流值不够烧坏电路板,注意其中我们设计的螺丝孔,不要忘记它的周围不要放元器件,在铜皮上写logo的时候不要忘记加上阻焊层,画好之后我们最终用3D图功能看一下我们的电路板,以防我们在设计当中出现错误能及时发现。最后我们将电路板打样,此阶段完成。
PS:我在视频当中有口误的地方,这时候大家不要听我说的,可以看我的操作,最后说一下,下期我将更新平衡车的软件部分(程序编写)。
步骤三:软件系统设计
软件模块的程序编写主要是依据硬件设计来的,我们主要设计的硬件功能有OLED显示模块,蓝牙模块,陀螺仪模块,电机驱动模块,和RGB显示模块和电压采集模块。
1、OLED显示模块
主要的人机交互模块,驱动方式我们选择的是软件IIC,没有选择硬件IIC,因为STM32的硬件IIC有BUG,咱们索性也就不用了吧,驱动见程序源码。我们主要完成的功能是把我们想要显示的内容通过屏幕显示出来,由于我没有过多的显示出内容,只是显示出来了平衡车的LOGO,更多功能大家可以自己自定义去实现。
2、蓝牙模块
蓝牙模块传输原理就是蓝牙透传模式,也就是我们电脑或者手机连上蓝牙的时候不用专门写驱动,我们可以通过串口的方式将我们的数据读取出来。由于我并不用蓝牙来调试主要是为了后续加入手机APP的功能而加入的,在程序中我们就正常初始化STM32的串口功能,TX,RX相反链接就可以了。
3、陀螺仪模块
我们平衡车当中最重要的一部分,我们主要依靠陀螺仪确定平衡车的姿态。陀螺仪也是用的软件IIC。具体源码见程序源码。
4、电机驱动
电机驱动如果想驱动电机我们必须用至少一路pwm和两个GPIO,所以我们在程序中初始化一个定时器为pwm模式,剩下我们可以任意找两个IO口当作方向。
5、电压采集和RGB灯光
电压采集我们主要用的STM32的硬件外设ADC来完成,我们通过外部设计电路将电压用电阻分压的方式分到3.3V以下,这个时候我们就可以用内置的ADC采集电压,之后当ADC采集完成,我们再按照比例反推回去,我们就可以知道电源的电压了。RGB模块其实就是一个LED灯里面同时装了红、蓝、绿三种颜色的灯珠,我们可以将RGB模块当作正常的灯珠使用就好,注意的是当同时点亮两个或者三个的时候会有混光。
PS:软件设计完成差不多我们的项目也就完成,最后我会给大家演示一下平衡车平衡,希望大家学到。
步骤四:实物制作+项目总结
最后跟大家说一下软件版本:
1、AD 16
2、KEIL-MDK 5.20以上
3、SW 2016
4、CAD 2010
如果大家下载下来的开源包都是好用的,大家可以尽情下载,下载方式SWD,不支持JTAG下载,我在程序中给禁用了,焊接温度最好保持在220度左右。
版权声明:本文内容为电路城原创内容,未经授权禁止转载,侵权必究!