
STC32F 5通道玩具示波器(配上位机)
简介
使用STC32F做的玩具示波器 持续采样速度250KSa/S,峰值采样速度750KSa/S,峰值采样储存深度1.5K(未来可能会提高到3K)12位ADC
简介:使用STC32F做的玩具示波器 持续采样速度250KSa/S,峰值采样速度750KSa/S,峰值采样储存深度1.5K(未来可能会提高到3K)12位ADC开源协议
:CC BY-NC-SA 4.0
描述
项目背景
经常使用示波器的朋友都知道,示波器,和示波器上的探头,就像打火机一样,很容易一转眼就没了。显然,在我们公司,这个情况也经常发生,示波器和示波器上的探头、示波器上的两脚电源线,经常会被研发、驻场供应商拿走,一年半载下来,示波器的探头十不存一,现在每天上班8小时,一个小时都是在找仪器,很容易把人气死。
鱼逝,经过2.5个星期的开发,做出了这款玩具示波器。
材料费用(基础3通道2+1)
- STC32F12K54 ¥3.4
- CH343P ¥3.5
- RS624XQ ¥1.4
- HLK-B0505S ¥2.2
- π122M31 ¥1.5
- SMA-KWE ¥1.33
- BNC座子 ¥1.48 X 2
- 8种0603电阻 ¥0.35(10个) X 8
- 加上其他零零散散 ¥10(大约)
总计大概30的样子,如果是满配(4+1)的话,要再加五六块钱加两个BNC座子和一个运放,然后得再配一个外壳(或者改电路板,直接4个BNC都加上)
硬件介绍
- MCU:STC32F12K54 内部IRC振荡器的频率: 48.036MHz(用晶振反而还不太能通信上) 串口波特率6M
- USB转串口芯片:CH343P
- 运放:RS624XQ(简简单单做了个放大)
- 1~4通道输入衰减固定为10(板上只有1、2通道,3、4通道为预留外扩),放大倍率档位有1(0~40.96V 分辨率10mV)、3(0~13.65V 分辨率3.3mV)、6(0~6.82V 分辨率1.6mV)、8(0~5.12V 分辨率1.25mV)四挡,只能输入正向电压
- 通道5为差分输入,范围为-20V~+20V,分辨率为10mV
- 使用隔离电源+数据隔离芯片,保护电脑不爆炸
- 使用某宝¥16.5的探头
- 预留了逻辑分析仪的功能,但没有开发,深度不够存不了啥
MCU:STC32F12K54,使用内部IRC振荡器的频率: 48MHz左右,反复下载调整最后主频在48.036MHz左右时丢包率很低,用晶振倍频到正好48M,很准,反而容易接受不到,主要是单片机接收丢包,发送的时候从来没丢过,有点神奇,波形看了也没啥问题。两个复位按钮,正面一个背面一个,装壳的建议焊背面的,裸奔的焊正面的
通道1~4放大:使用RS624XQ,简单做了一个放大,也没考虑这么多,可以通过单片机选择量程,3、4通道如果不需要就不用焊接,34通道设计时是搭配外壳,BNC扭到壳上,然后引信到板子上的
通道5差分放大:使用RS624XQ,简单做了一个差分放大,固定衰减1/10,设计的时候用来测量比较大的交流信号,量程-20~+20V,SMA座子是为了方便我外扩别的东西,有需要的话可以换成别的
USB转串口:STC32F本身支持USB通信,但我之前使用HID实测可能最快只能达到200K还是300K左右,忘了,一个点是两个字节,最快速度可能在100~150KSa/s左右,所以用了一个CH343做中转,最高6M的速度(CH340是2M),6M波特率可以满足500K的传输速度,所以目前持续采样只能做到250KSa/s
隔离:使用隔离电源供电,避免测量端地不小心碰到高压。随机带走你或者你的电脑
BNC输入:输入添加了过压保护,钳位二极管使用一个稳压管,因为我把我手头的管子都装上去试了一次,就这个管子漏电流最小,你们要是有其好的管子也可以换上,如果你测量的电压没有太高的话可以不加这个二极管
探头输入固定位x10,电阻9MΩ,和板子上的1MΩ形成1/10的分压,千位不要调到x1,x1档位电阻只有120Ω左右,万一不小心量到一个18V,又没有焊接钳位二极管,那就真的寄了
采样介绍
本项目采用轮询采样的方式,所以在上位机显示的同一时间刻度的不同通道的点,实际上每个通道回比上一个通道延迟 1/总采样率 的时间,通道内两个点的理论间隔时间为 (1/总采样率)×打开的通道总数。所以实际只能观察比较低频的波形,但对我工作上已经足够了
通信介绍
本项通信协议遵从部分Modbus-RTU协议,从机地址上电默认为0XAC,支持连读连写,但写寄存器时不回复(怕打乱采样)
采样回传数据为3000B(16位数据,1500个点)一包,打开的通道会按顺序在指定的采样间隔轮流往包里填充数据,填完3000就发送。
上位机介绍
首先先要感谢我的好兄弟sdonc,完成了上位机的底层构建,也帮我解决了上层开发的很多问题,然后我再用学了2.5天的C#乱写一通,完成了上位机的基础开发,由于我代码写的稀烂,上位机就不开源了。
使用上位机最大的好处就是,波形数据都能保存下来!!坏消息是要费点内存,高速模式是11秒需要100M内存
上位机采用老二刺猿背景,可切换深色和浅色主题
自动识别下位机并自动连接,连接完成后,可以获取下位机配置,可以通过界面选择开启通道,或者调整通道倍率,高速模式开启时,只能采集打开的且数字最小的通道
非高速模式会一直按照采样率采集,开启高速模式后,1~4通道要高于量程的1/8才会开始采集一包数据,通道5会在电压大于或者小于零点1V(可调)的时候开始采集一包数据
输入50KHz 0~5V的正弦波,使用高速测量,对比示波器测量结果,频率差点意思,周期均方根的统计结果还行:
输入50KHz 0~5V的多音频,使用高速测量,对比示波器测量结果,频率还是差点意思,周期均方根的统计结果还行,但波形已经比较失真:
输入15KHz 0~5V的多音频,使用高速测量,效果就好一些:
所以如果要看细节的话基本上只能做到15K以下了,15K以上的话基本上就听个响
输入15KHz 0~5V 50%方波:
控台这里可以调整通道的缩放和垂直位置:
可以将波形导出或者导入,以便观赏:
可以打开5KHz方波测试信号,用于探头的辅助校正:
可以微调通道的增益,使用探头测量板上4096mV基准源,测出一段时间的均方根,与理论值比较,算出补偿系数:
界面使用鼠标滚轮缩放,按住鼠标滚轮平移,波形刷新方向从左到右,但如果使用相机跟随功能时,波形顶到屏幕右边后,会自动整体向左移动,保持最新的波形在最右边,和示波器的滚动功能一样
遇到不对劲的问题,重启软件,复位下位机就可以了
烧录
先焊接主芯片那一块,不要焊接别的,根据下图烧录器设置,然后通过预留烧录口把程序先烧录进去,之后就可以使用C口进行下载了
IRC频率键盘输入48,下载之后尝试使用上位机进行控制,如果丢包严重的话,再下载几次,每次会自动微调主频,直到丢包不高为止
当调整完主频,确认效果可以的话,以后改程序,需要将“本次下载需要修改硬件选项”的勾去掉,不要再调整之前试好的主频
附件说明
上位机分两个压缩包(上传单个包不能大于50M),一定要下载完两个,解包001那个才能完整解包,解包好之后,进到目录,找到启动文件发送快捷方式到桌面就好了
最后
总之这个东西已经满足我的工作需要的,以后基本上是不会有太大改动了,最多就等STC新的芯片出来换个更强的芯片,把速度跑满
设计图

BOM


评论