
#训练营#简易小小示波器
简介
电子设备是如何通过无形的电流和电压来传递信息的?如何将这些看不见的信号转化为直观的图形? 答案就藏在数字示波器中,能够捕捉和分析电子信号的强大工具 完成这个项目,感受到电子制作带来的成就感(≖ᴗ≖)✧
简介:电子设备是如何通过无形的电流和电压来传递信息的?如何将这些看不见的信号转化为直观的图形? 答案就藏在数字示波器中,能够捕捉和分析电子信号的强大工具 完成这个项目,感受到电子制作带来的成就感(≖ᴗ≖)✧开源协议
:GPL 3.0
(未经作者授权,禁止转载)描述
前言
本工程复刻的是“立创训练营项目-简易数字示波器”,
首先感谢各位老师的教学和指导,还有讨论群里大佬们的热心帮助~
一、硬件设计
1、重要电路结构-内容整理
模拟前端电路:

为什么要加模拟前端处理电路,直接将输入信号接到单片机引脚不行吗?
模拟前端处理电路的主要目的是为了将实际的模拟信号转换为适合单片机处理的信号。直接将输入信号接到单片机引脚存在几个问题:
- 信号幅度匹配问题:实际信号的幅度可能过大或过小,不适合单片机的模拟输入范围。前端电路可以通过衰减电路来调整信号幅度。
- 信号类型匹配问题:单片机通常只能处理直流信号,而实际信号可能是交流的。交直流耦合切换电路可以将交流信号转换为适合单片机处理的直流信号。
- 抗干扰能力:直接连接可能会导致信号受到电磁干扰,影响测量结果的准确性。前端电路可以通过滤波器等组件提高信号的抗干扰能力。
- 信号保护:前端电路还可以提供过压保护,防止意外情况下的高电压损坏单片机。
输入信号处为什么要加一个电容,有什么作用?
在输入信号处加入电容主要有以下几个作用:
- 去耦:电容可以为电路提供瞬态电流,减少电源噪声对信号的影响,起到去耦作用。
- 滤波:电容与电阻配合可以形成RC滤波器,过滤高频噪声,平滑信号。
- 阻隔直流分量:如果输入信号是交流信号,而我们只关心其交流部分,那么电容可以阻隔直流分量,只允许交流信号通过。
- 信号耦合:在多级放大或处理电路中,电容可以实现信号的无损耗耦合,避免直流行信号对后续电路的影响。
信号调理电路的作用是什么,该如何设计?
信号调理电路的主要作用是对输入信号进行适当的处理,使其更适合后续的检测和处理。信号调理电路的设计需要考虑以下几个方面:
- 信号幅度调整:根据单片机的输入范围,设计适当的衰减电路,使信号幅度适中。
- 阻抗匹配:信号源和放大器之间的阻抗匹配对于信号的传输质量至关重要。设计时需要考虑输入阻抗和输出阻抗的匹配。
- 滤波与去噪:根据信号的特点和应用场景,设计合适的滤波器,如低通滤波器、高通滤波器或带通滤波器,以去除不需要的频率成分和噪声。
- 线性化处理:如果信号是非线性的,可能需要通过线性化电路来改善信号的质量。
- 增益调整:根据需要,可能还需要设计增益可调的放大器,以便对信号进行精确的控制和调整。
输入信号衰减电路
输入信号衰减电路是模拟前端处理电路中的一个重要组成部分,它允许示波器处理不同幅度范围的信号。通过掌握信号衰减电路的工作原理和设计方法,可以确保信号在不失真的情况下被准确测量。
衰减比例的计算:
开关控制:了解如何通过开关(如SW2、SW3)选择不同的衰减档位。在您的例子中,开关2和3接到一起时,信号直接流入后级的电压跟随器电路,没有衰减;而开关2和1接到一起时,信号经过电阻分压网络进行衰减。
信号幅值的测量:掌握如何根据衰减比例计算实际的输入信号幅值。根据您提供的资料,当SW2开关2和3接到一起时,可以测量的输入信号幅值为-1.6V到-5V;当SW2开关2和1接到一起时,可以测量的输入信号幅值为-80V到250V。
电路保护:了解如何利用衰减电路保护示波器的输入端。当不确定输入信号的幅值时,可以先使用高压档位进行测量,如果发现信号在低压档位的测量范围内,再切换到低压档位进行更为精确的测量。
滞回比较器电路:滞回比较器是一种特殊类型的电压比较器,它有两个阈值电压,一个用于触发输出高电平,另一个用于触发输出低电平。这种设计使得电路在输入信号的电压接近这两个阈值时,输出电压不会频繁地在高低电平之间切换,从而提高了电路的抗干扰能力。
2、PCB设计
-
直线走线原则:尽量保持走线为直线,这样可以减少信号的传播延迟和反射。如果需要拐弯,优先使用135°钝角或圆角,这样可以减少信号的不连续性和电磁干扰。避免使用直角,因为直角走线可能导致信号反射和阻抗不连续。
-
线宽选择:电源线由于承载较大的电流,因此线宽应该大于信号线,以减少电阻和电压降。在您的项目中,信号线走线宽度为15mil,电源走线为20mil。这样做可以确保电源稳定供应,同时减少信号损耗。
-
优先使用顶层走线:顶层走线便于观察和维修,当顶层走线遇到障碍时,可以通过过孔连接到底层继续走线。如果底层走线也不通,同样可以通过放置过孔切换回顶层。
-
地线处理:AGND(模拟地)和GND(数字地)应分别单独覆铜,并在0欧姆电阻处分界。这样做有助于减少模拟和数字部分之间的干扰。覆铜的范围需要根据PCB布局的实际情况进行调整。
-
消除飞线:覆铜完成后,如果存在未连接的飞线,可以通过在飞线位置放置对应网络的过孔、调整走线位置或者手动接线的方式进行消除。确保所有的网络都已经正确连接。
-
添加泪滴:走线完成后,可以在“工具”菜单栏选择添加泪滴,这样可以加强焊盘与走线的连接,提高焊接的可靠性。添加泪滴后再进行覆铜操作,如果对走线有移动调整,应使用快捷键Shift+B进行重建覆铜。
二、软件设计
1、主函数
-
按键扫描处理函数 (
Key_Handle(&oscilloscope)
): 这行代码调用了一个名为Key_Handle
的函数,该函数可能是用来检测和处理用户通过按键输入的指令。oscilloscope
可能是一个结构体,包含了示波器的状态信息和配置参数。 -
数据采集与转换: 当
oscilloscope.showbit
标志位为1时,表示ADC(模数转换器)已经采集到电压值,程序开始处理这些数据。首先将showbit
置为0,重置vpp
(峰峰值)为0。 然后,通过一个循环(for(i=0;i<300;i++)
),程序从ADC读取原始数据,并将其转换为电压值。这里使用了Get_ADC_Value(i)
函数来获取ADC的值,并乘以一个比例因子(3.3f/4096.0f)来得到实际的电压值。然后,使用一个公式(5-(2.0f*adcValue))
来计算实际的电压值,并存储在oscilloscope.voltageValue
数组中。 同时,程序会更新oscilloscope.vpp
,记录采集到的最大电压峰峰值。 -
触发水平和放大倍数的确定: 程序通过查找
voltageValue
数组中的值来确定触发位置(Trigger_number
),这是为了在屏幕上正确显示波形。如果vpp
小于0.3伏特,程序会停止采集数据。 如果vpp
大于0.3伏特,程序会计算放大倍数gainFactor
,以便在屏幕上以合适的比例显示波形。 -
波形显示: 在确定触发水平和放大倍数后,程序会显示波形。它通过一个循环显示
Trigger_number
位置之后的100个数据点。在循环中,它会检查按键是否被按下(KEYD
),如果是,则停止数据采集。 然后,根据电压值是否超过median
(中间值),程序会计算并存储调整后的电压值voltage
。这个调整后的值将用于drawCurve
函数,该函数负责在屏幕上绘制波形。 -
参数显示UI (
TFT_ShowUI(&oscilloscope)
): 最后,TFT_ShowUI
函数被调用来在触摸屏上显示示波器的用户界面,
三、免费打样(划重点٩(๑>◡<๑)۶ )以及实物测试
实物验证
- 波形显示:在1.8寸TFT屏幕上绘制波形。
- 缩放功能:通过旋钮调整波形的放大与缩小。
- 暂停显示:通过按键控制暂停波形的实时更新。
- 方波输出:能够输出1K、2K、4K等频率的方波信号,并在屏幕上显示。
- 占空比调整:通过按键调整方波的占空比。
- 频率测量:测量并显示输入信号的频率。
设计图

BOM


评论