发作品签到
专业版

三通道方波发生器电路

工程标签

915
0
0
0

简介

基于STM32做的可以产生一个1Hz-8MHz的可调频的三通道方波发生器。

简介:基于STM32做的可以产生一个1Hz-8MHz的可调频的三通道方波发生器。
复刻成本:55

开源协议

GPL 3.0

(未经作者授权,禁止转载)
创建时间:2024-08-24 04:10:48更新时间:2024-09-25 01:32:53

描述

前言

是嘉立创给的模版,我直接填写的,所以下面写作之间有前后重复描述、逻辑错误不怪我。(免责申明)

视频链接:

懒得上传B站了,所以直接去下面附件瞅瞅就行。

项目简介

基于STM32做的可以产生一个1Hz-8MHz的可调频的三通道方波发生器。
(实际上是燕山大学2024年电赛积分赛秋季赛题的题目,做完就扔上来了,屎一样的硬件,屎一样的代码)

项目功能

本设计是基于STM32单片机设计的PWM发生器;设置有三路单独的PWM输出,屏幕,按键面板。
功能分别根据按键输出需要的频率,启动输出,就能够自动输出对应的PWM。

项目参数

项目整体硬件设计难度不大,但是在主控芯片选择上很纠结,选主频高的芯片,价格昂贵;选便宜的芯片,主频不高。
纠结之下最终选用了极其便宜的芯片,如果想要在高频部分获得较小的误差请自行氪金!

  • 本设计采用STM32G030F6P6主控芯片,芯片小,便宜,所有引脚安排得当刚好够用;
  • 本设计采用0.96寸OLED液晶显示,三行对应三路输出;
  • 使用软件计算最优解,得到系统时钟不变的情况下的定时器分频系数、计数器最优解;

原理解析(硬件说明)

本项目由两块电路板和购买的0.96寸OLED组成。
0.96寸OLED购买链接可以直接去淘宝找(可以点击蓝字跳转)。

主控板

主控板由三部分组成:核心、外设、电源。

核心部分

核心部分的本质就是STM32G030F6P6的最小系统和引脚的规划。
先说引脚的规划,盘算了一下,外设的引脚有以下几个部分。

功能引脚数对应外设作用
芯片烧录接口2SWDIO程序烧录
芯片复位引脚1NRST程序复位
RF射频同轴连接器3PWM三路PWM输出
0.96寸OLED2I2C屏幕显示
LED3GPIO指示该端口是否输出PWM
键盘474HC165通信键盘输出
串口2USART上位机通信

加上两个电源引脚,正好19个引脚。STM32G030F6P6共20个引脚。
所以留给外部高速晶振的引脚只有一个了,也就是说必须使用STM32的BYPASS功能才行,所以使用有源晶振!

然后再去STM32CubeMX上简单的尝试一下就可以找出一种合适的引脚配置方法。以下是对应的电路图。
QQ_1727193907268.png

  • 晶振部分采用磁珠+电容的滤波方案,减小电源纹波对晶振精度的影响,后续测试发现实际的晶振频率精度在小数点后4位。
  • 烧录口只有三路,去除了3V3的供电引脚。因为明确,烧录时候会使用USB供电,不存在电源问题。
  • 添加四个M3螺丝孔,给铜柱,以支撑整体开发板。
  • 添加两个1*2P排母,作为按键板和控制板连接的结构件。

外设部分

涉及到的外设已经在上面主控部分列明了,所以此处不再赘述。
原理图如下:
QQ20240925-001319.png

  • 射频头直接和单片机引脚相连,没有做保护措施。(因为考核时候直接和示波器相连,所以应该噶不了,同时也减少退耦时候造成的信号衰减或延迟问题)

  • OLED使用1*4P排母,供电口使用0402的0Ω电阻作为选择电阻,旧版和新版的0.96寸OLED引脚顺序是不同的,这个地方需要使用者按购买的模块自行选择焊接。(直接焊锡短接就行,买0Ω电阻意义不大)

  • 按键板相连共10个引脚,2路供电、4路按键、3路指示灯、1路芯片复位。(其实没这一路也行,但是不方便复位)

  • 串口采用最经典的CH340N芯片,这个芯片也是USB转TTL最常见的芯片了,为了防止出意外,所以在USB电路的差分信号上添加了保护TVS管。

电源部分

电源采用两个TYPE-C接口作为供电输入,经过防电流反灌的二极管电路后,总开关控制通断。
总开关后接自恢复保险丝和电源滤波电容,以得到保护后的总输入电源。
由于外设全部使用3V3作为供电电源,因此总输入电源通过两个LDO,降至3V3。一路供给主控板上的模块,一块供给按键板的按键阵列。
其原理图如下:

QQ20240925-002248.png

  • USB2是16脚TYPE-C,可以在供电的同时和上位机通信;USB1是6脚TYPE-C,防止USB2焊不上去时候,没法给板子供电。两个USB连接器的CC引脚均加入5.1K下拉电阻,便于不同主机识别和配置。

  • D1、D3两个肖特基二极管构成防止电流反灌的电路。这样两路USB都插入,硬件自动选择电压较高的一路作为主电源输入。(肖特基二极管比普通二极管的管压降要低,开关速度要快)

  • F1是自恢复保险丝,正常使用是不会出问题的,为的是防止手工焊接的时候有笨蛋把后续电路焊短了。

  • LDO采用RT9013-33GB,芯片小,输出电流500mA左右,正好外设需要的电流也不大。

按键板

按键板的原理图如下所示:
QQ20240925-003445.png

  • 首先是信号输入的2*5P排针和作为固定结构的1*2P排针,这个对应核心板即可。

  • 键盘模块采用74HC165芯片级联构成,具体原理可以参考华秋商城的视频。按键采用10kΩ电阻上拉,并联10nF电容的方案,来做到硬件消抖。

  • LED和芯片复位就是基本的电路结构了,没什么好说了。(想要芯片复位直接短接信号输入的RESET和GND就可以做到)

软件代码

软件代码没什么可说的,各人有各人的编码方式,无可指摘。
本项目代码基于STM32CubeMX配置的HAL库代码改写而成。所有写的文件都放在Core文件夹中(建议直接在KEIL中查看比较直观)。

QQ20240925-004408.png
个人有改动的地方有(从底层到顶层):

文件名作用
oledfont.c0.96寸OLED屏幕字符驱动
oled.c0.96寸OLED屏幕显示驱动
74HC165.c键盘扫描驱动
pwm.cPWM输出驱动
oled_opa.cOLED菜单格式定义
button_opa.c按键操作函数定义
menu.c菜单状态机建立
main.c主函数

注意事项

16P的USB焊不上就别硬焊()

组装流程

焊好了你还不会组装吗??
看看实物图都懂了吧()
【嘲讽的嘴脸蚌埠住了】

实物图

IMG_20240925_004954_compressed.jpg
图1:核心板正面图
IMG_20240925_005008.jpg
图2:按键板正面图
IMG_20240925_005013.jpg
图3:按键板背面图
IMG_20240924_231831_compressed.png
图3:组装图

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

附件

序号文件名称下载次数
1
3-Channel-PWM.zip
179
2
VID_20240925_005833_compressed.mp4
20
克隆工程
添加到专辑
0
0
分享
侵权投诉

工程成员

评论

全部评论(1)
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航