文章目录
前言
前几天在朋友圈看到面包板社区的小编发了个**晒板子的活动**,作为面包板社区的活跃用户,这个活动必须要参加一下!
说起分享自己画的板子,我首先想到的就是人生中设计的第一块PCB板子:基于STM32+MPU6050的两轮自平衡小车主控板,也是几年前读大学时的毕业设计。
思绪转到5年前,2017年的夏天,大三的暑假还没有结束,我就一人坐上了开往北京的列车,没想到,这一去,就是5年!
实习的工作不算复杂,样板焊接、样机调试,也会画一些简单的小板子。因为自己是双非普通本科出身,也深知自己的不足,平时白天干活,晚上回去就学习PCB,单片机开发。实习了有半年的时间,到了大四下学期,回校准备毕业设计,由于有了一些实习经历,毕业设计做起来就比较简单了。
主控板是自己设计的,小车底盘(轮胎+电机+编码器)和锂电池是购买的成品。
PCB板焊接、硬件调试、软件设计、调参,毕业论文,查重,答辩,一切都比较顺利!记得当时答辩现场,可能是因为我是独立设计、调试的,答辩老师们对我的设计很感兴趣,整个答辩过程都是在和老师们愉快的沟通中进行的!最终,我的毕业设计被所在的学院所收藏,毕业设计所花费的费用也找学校报销了,毕业设计也被评为了优秀!
哈哈,居然还能找到当时在某PCB板厂下的订单,含运费一共90元,现在都是免费了吧!
和主题无关的话说的有点多了,下面来详细介绍一下我当时画的这块处女板!
硬件设计
硬件电路主要包括以下几部分:
- STM32F103RET6,最小系统电路
- TB6612两路直流电机驱动,电机编码器检测
- 通过分压电阻方式实现的锂电池电压ADC检测
- 通过MOS管实现的锂电池防过放,欠压保护电路
- 板载MPU6050陀螺仪,用于获取实时姿态信息
- 一路红外接收头,预留OLED显示接口,板载HC-05蓝牙模块
- 一路复位按键,一路用户按键、两路用户LED
- 预留SWD、串口、BOOT配置接口
硬件电路设计上的考虑不周到,电机AB相编码器连接到了STM32的普通IO管脚, 而不是定时器的编码器管脚,所以软件控制效果不是太理想,哈哈,也可能是自己没调好参数!
软件设计
软件设计上,仅仅实现了直立环,即平衡车直立效果,没有实现速度环转向控制,也没有实现红外、蓝牙的遥控。
所以软件方面的工作也比较简单:
- STM32基本外设驱动,GPIO、UART、TIMER、ADC、DMA、中断等等。
- MPU6050姿态获取,使用官方DMP库
- PID控制算法实现,直立环,参数的整定
- 异常姿态检测算法,小车倒地后刹车,防止堵转造成电机和芯片烧坏。
再回首
现在,再回看自己当时设计的那块板子,发现还是有很多不足之处的:
- 控制软件方面不完美,仅仅实现了直立环,没有实现速度环、红外蓝牙遥控等。
- PCB布局布线不合理,导致过孔太多,走线比较混乱。
- 蓝牙模块射频天线部分没有预留净空区,可能会导致信号很弱。
- 没有在靠近电机驱动芯片的位置添加储能电容,导致烧了几次驱动芯片,后来加上才好点。
- 电机编码器管脚没有分配到定时器的编码器接口,只能通过GPIO中断方式测速,导致后续软件调起来比较费劲
如今,我已经毕业四年,工作时间算是五年。毕业设计的空板我还保留至今,剩下的都是回忆!
虽然时过多年,当时所学的专业也已经停止招生了,而我也不做单片机开发了,转向了另一种可编程器件FPGA的开发,但是当看到单片机相关的技术文章还是会仔细的研读一下。
富芮坤FR8016H开发板+ESP8266实现疫情监控
uFUN开发板+自己画的PCIe扩展板实现的联网时钟
血的教训,Mini PCIe板子的厚度1.0mm即可,锡手指切掉了一部分才刚好能插进去。
看起来还挺精致的
根据网上开源的资料做得JLink-OB下载器