本项目由梁山派(GD32F470ZGT6)做为主控,通过前级调理电路实现周期信号的测量,功能类似于示波器,但是由于是GD32F470的内置ADC,所以测量的范围没有市面上专业的示波器宽广,此项目由我带大家进行单片机ADC采样的学习以及对于电赛题分析,希望大家能在本工程中有所收获,同时笔者有不对的地方也可以私信,请勿引战!
示波器参数:
测量电压范围 :0-25V
测量频率范围:0-200Khz
测量精度:+-1%
测量采样率:2.6MSPS
哔哩哔哩视频链接:https://www.bilibili.com/video/BV1ox4y1c7oE/?vd_source=2115628cb2ad4920fc2783689dd43b85
请大家动动发财的小手指点赞加收藏!!!私聊我进入技术交流群
您的鼓励是小学妹进步的动力,下一期带来小学妹的新作品
GPL3.0
基于GD32F470ZGT6的内置2MSPS ADC,通过前级调理电路可采集0-10V,1HZ-100KHz的正弦波,三角波,方波,并可显示波形类型,如正锯齿波,反锯齿波,冲激波等波形。同时可以语音播报周期信号的参数。
本项目为首次公开,为本人原创项目。项目未曾在别的比赛中获奖。同时项目是基于本人在2021年全国大学生电子设计竞赛中获奖的作品改进制作而成。
整体项目用时7天,元器件费用主要是TFT显示屏,开发板以及物料,一共300元左右,有兴趣的朋友可以参考我的BOM购买。
整体系统框架
一共分为主控电路和模拟前级调理电路两部分
梁山派的主控有一个非常好的优点,自带DAP下载器,同时下载器上集成串口功能,可以更加方便的下载和调试程序,更快定位程序所存在的问题。
这个电路为前级主要电路,通过一片运放,实现了多个功能。首先进来的就是交直流耦合,接着就是电压跟随器接着就是三个运放,一个是负责将信号放大10倍,一个是负责将信号缩小两倍,另外一个是将信号缩小5倍U6是CD4051,负责将信号选择到后级电路,默认状态下是选择放大10倍,由后级电路检测到放大10倍,如超过阈值,切换到二档,直通,如果直通信号还很大,那么就切换到缩小两倍的,最后在再切换到缩小5倍。以上切换,是要根据信号的幅度来切换,由后级电路检测。这里我们应该注意,电阻的选择,必须要是高精度电阻,否则会影响放大倍数。
本设计需要采集的电压峰峰值范围是0.05V至10V,相对误差的绝对值不大于1%。由于ADC的输入电压为0-2.5V,因此测量信号应限制在该范围内。考虑到信号调理电路和ADC的线性度在中间区域会更好,在两端较差,可以选择2V作为它的上限测量边界,此时下限测量边界可以选200mV,这样可以使低电压区域的电压放大后能够和中电压区域做到无缝切换。同时,高压通道的最大电压为10V,将其缩小5倍后为2V,可以与中电压区域无缝切换
首先后期处理部分分为电压抬升部分,过零检测部分,以及保护部分,将输入的正电压转换为负电压,再输到加法电路里面。两个负信号相加,得到正信号过零检测电路,检测输入信号到正电压时输出一个信号给单片机,从而得到信号的频率。准确的来说是电平抬升电路,否则单片机采集不到负信号。
我们这里要注意的是,单片机只能采集到2.495v,所以我们得加二极管进行保护。从而保护单片机不被损坏,为什么这里要采用反比例放大呢?因为反比例放大可以消除共模干扰,所以一般电路最好采用反相比例放大。
这里我们需要调节反相电压抬升的定位器,使电压达到一个在2.5V以下,0V以上的一个状态,如下图示波器所示
屏幕选择的是TFT2.8寸屏幕,采用ILI9341芯片驱动,屏幕资料比较多,同时显示的内容也比较丰富,采用软排线与单片机连接。
电源部分就非常的有讲究,因为我们的ADC对于噪声非常敏感,所以我们给整个电路的供电必须得低纹波,所以得不惜成本加入π型滤波,同时数字地与模拟地用0欧姆电阻隔离,达到一个抑制噪声的作用,我们负电压由SGM3204将5V转换成-5V,其他部分的电源由AMS1117提供。
由我们单片机来直接测量周期信号的频率不是很精准,由专业的高速比较器,将比较器反相接地,同相接输入信号,即可以通过单片机的PCA输入捕获来得到一个比较精准的信号频率以及占空比
由于我们的输入信号范围是0-10V我们需要将它变换成0-2.5V的电压,所以我们得使用74HC4051 这种多路模拟开关,由于模拟开关在不同输入频率的导通电阻不一样,所以我们要分档位校正我们的采集电压,以达到最佳效果。
以上为幅度检测电路,也就是一个比较器,通过进行比较,从而得知输入信号的幅度,如果输入信号大于阈值,输出一个低电平信号给单片机,如果输入信号小于阈值,则输出高电平信号给单片机。从而检测输入信号的幅度是否符合单片机的采样范围以内。
语音模块直接是购买淘宝上的成品,只需要我们将固定的语音下载到SD卡里,用程序来控制他播放相应的语音文件就行了。
以上是整个软件的程序框架
7.2.1定时器
程序里有两个定时器都在主函数下面
7.2.2输入线性回归
由于每个人的ADC采样都不一样,所以我们要在OSC.c函数里有输入信息的一个处理,整个后面需要我们进行校正参数,改变数值电压就会变化。
7.2.3系统文件构成
7.2.4 波形识别算法
以上为波形识别算法,算法的输入为480位的ADC数组,最大电压最小电压,占空比
波形识别原理:
7.2.5 显示程序
以上为波形显示程序,由两个数组组成,程序内有注释,还可以设置移动波形。
1月11日程序改进:由于高频直流的矩形波有较大谐波成分,所以在1K以上的矩形波将采用交流耦合
在使用外置的基准电压时要卸下单片机上的一个电阻3.3和AVCC3.3之间连接的电阻,具体参考梁山派的原理图 https://lckfb.com/
使用的程序例程在GD官网上有下载:https://www.gigadevice.com/
哔哩哔哩视频链接:https://www.bilibili.com/video/BV1ox4y1c7oE/?vd_source=2115628cb2ad4920fc2783689dd43b85
高清哔哩哔哩演示视频链接https://www.bilibili.com/video/BV1cW4y137Cy/
!注意:请使用浏览器自带下载,迅雷等下载软件可能无法下载到有效资源。
欢迎加入EEWorld参考设计群,也许能碰到搞同一个设计的小伙伴,群聊设计经验和难点。 入群方式:微信搜索“helloeeworld”或者扫描二维码,备注:参考设计,即可被拉入群。 另外,如您在下载此设计遇到问题,也可以微信添加“helloeeworld”及时沟通。
EEWorld Datasheet 技术支持