迪文科技论坛

 找回密码
 立即注册
搜索
查看: 24|回复: 0

【分享】陈锦威周睿志 简易示波器

[复制链接]

1

主题

0

回帖

20

积分

新手上路

Rank: 1

积分
20
发表于 4 天前 | 显示全部楼层 |阅读模式
一、作品简介
我们设计了一款基于STM32F103主控和迪文屏的简易数字示波器,主要为了解决传统台式示波器体积大、成本高的问题,满足嵌入式开发和现场测试的便携需求。这个作品能够实时采集并显示正弦波、方波、三角波和脉冲等多种波形,测量信号的峰峰值电压和频率,还通过迪文屏做了简单的交互界面,支持波形冻结和单次触发。
二、工作原理
工作原理方面,我们利用了STM32F103内部的12位ADC,配合定时器触发和DMA搬运,实现了约47.6kHz的采样率(ADC时钟12MHz,采样周期239.5+12.5,单次转换21微秒)。采集到的原始ADC值(0~4095)先经过动态直流分量消除算法:遍历300个采样点找到最大值和最小值,取平均值作为直流偏置,然后把所有采样点减去这个偏置并加上2048(ADC中值),这样可以有效避免硬件削顶失真。接着根据极值计算峰峰值和频率,再将ADC值映射到迪文屏波形显示区域(0~1000),并通过串口按照自定义协议(帧头5A A5,指令82,波形绘制子码)批量发送数据点,迪文屏完成描点绘图。
三、设计原理
硬件上:
硬件上我们用了STM32F103C8T6,直接连接迪文屏的串口,信号输入范围0~3.3V(前级可以根据需要加衰减或偏置电路),另外加了一个独立按键用于波形冻结和单次触发。软件部分主要分成系统初始化、ADC+DMA连续采样、数据处理计算(直流分量、峰峰值、频率、增益系数)、发送到迪文屏以及按键检测这几个步骤。有意思的是,我们还加入了一个自适应增益算法:根据波形中点到边界的距离动态调整显示增益,让波形在屏幕上始终显示在合适的幅度范围。按键逻辑是长按冻结波形和频率,短按实现单次触发。
软件上:
迪文屏的界面我们设计了开机画面和示波器主界面,通过地址分配在指定位置实时显示电压和频率数值,波形绘制区域则用迪文屏的绘图指令完成。我们做了PCB打板验证,整体框架没有问题。实际测试中,输入1Vpp、57kHz正弦波,测量得到1.00V和58.45kHz(频率误差约2.5%);输入5kHz方波,测得1.02V和5.01kHz(电压误差2%,频率误差0.2%);三角波和脉冲波也基本正常,只有不等距脉冲的频率误差稍大(33.6%),后续可以进一步优化触发算法。

演示视频:
通过网盘分享的文件:24e6e5c3b5e5391a8b4b720b52d54d71.mp4
链接: https://pan.baidu.com/s/116O_TDKeas92p7Q-4taCvw?pwd=1234 提取码: 1234

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2026-6-19 16:45 , Processed in 0.047171 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表