目录
前言
最近想做一个软硬结合的项目学习巩固之前学过的知识,在立创开源广场看到一个自制数字示波器项目非常不错,所以想复刻一遍。
学习设计和制作一个数字示波器对于个人综合能力的培养是非常有帮助的,通过完成这个项目可以学到很多东西,数字示波器项目包括单片机电路的设计与开发、信号调理电路的计算、人机交互的设计以及外壳模型的设计等内容,综合了模拟电路、单片机设计、电路与PCB设计、外壳设计等综合知识。
一、项目介绍
通过本次实验,可以自制一个简易数字示波器实现以下内容:
- 在1.8寸TFT屏幕上显示波形;
- 支持通过旋钮对波形进行放大与缩小查看;
- 支持暂停波形显示;
- 支持输出1K、2K、4K方波信号,能够被自身输入检测到并显示在示波器上;
- 支持通过按键调整占空比
- 支持频率测量;
图片示例:
二、前期准备
做一个简易示波器首先我们需要自己设计原理图,然后进行PCB绘制和打样,购买元器件自行焊接,最后编写代码实现功能。
核心板我们可以选用国产 GD32,或者 STM32 最小系统板为主控,在这里我选的是 STM32 最小系统板,可使用标准库或者HAL库进行编程。
1.原理图设计
2.PCB绘制
完成该项目只需掌握以下几点走线基本要求即可:
- 走线以直线为主,如需拐弯时拐角以135°钝角或圆角优先,减少直角的使用;
- 走线线宽电源线宽大于信号线,该项目中信号线走线宽度为15mil,电源走线为20mil,GND和AGND网络使用铺铜的方式连接;
- 建议优先使用顶层走线,走不通的地方使用过孔建立顶层和底层的连接后转到底层继续走,底层走不通同样可以放置过孔换到顶层连线;
- AGND和GND之间要通过一个0欧姆电阻进行连接,这样可以减少干扰
- 对AGND和GND需要以0欧姆电阻处为分界单独覆铜,这里需结合PCB布局情况来调整覆铜范围;
- 覆铜完成后如果还存在飞线,可通过在存在飞线的位置放置对应网络的过孔或者是调整走线位置使网络能够连接,也可以采用手动接线的方式消除飞线;
- 走线完成后可在“工具”菜单栏选择泪滴添加,加强焊盘与走线的连接,最后再进行覆铜操作,如果对走线有移动调整也应使用快捷键Shift+B进行重建覆铜。
3.BOM (Bill of Material) 物料清单
1 | 单片机模块 | GD32核心板 | 1 | GD32E230C8T6最小系统 | C20068939 |
2 | USB连接器 | TYPE-C-2P | 1 | USB-SMD_KH-TYPE-C-2P | C2919656 |
3 | 拨动开关 | 12E12-G5 | 3 | SW-TH_SK-12E12-G5 | C136720 |
4 | 电解电容 | 10uF | 3 | CAP-TH_BD5.0-P2.00-D0.8 | C503219 |
5 | 直插电阻 | 1kΩ | 4 | RES-TH_BD2.5-L6.5-P10.50 | C57435 |
6 | 发光二极管 | 3mm 红色 | 1 | LED_TH-3mm | C2895470 |
7 | 电源芯片 | XD7660 | 1 | DIP-8_L9.7-W6.4-P2.54 | C521200 |
8 | 二极管 | 1N4148 | 1 | DO-35_BD2.0-L4.2-P8.20 | C402212 |
9 | 瓷片电容 | 100nF | 5 | CAP-TH_L4.2-W3.8-P2.54 | C168753 |
10 | 连接器 | BNC接口 | 1 | ANT-TH_KH-BNC75-3511 | C2837587 |
11 | 直插电阻 | 510kΩ | 2 | RES-TH_BD2.3-L6.5-P10.50 | C119382 |
12 | 直插电阻 | 470kΩ | 1 | RES-TH_BD2.2-L6.5-P10.50 | C58640 |
13 | 直插电阻 | 20kΩ | 4 | RES-TH_BD2.3-L6.5-P10.50 | C119353 |
14 | 直插电阻 | 10kΩ | 4 | RES-TH_BD2.4-L6.3-P10.30 | C410695 |
15 | 瓷片电容 | 680pF/NC | 1 | CAP-TH_L5.5-W3.2-P5.00 | C377846 |
16 | 瓷片电容 | 10pF/NC | 1 | CAP-TH_L5.5-W2.5-P5.00 | C260724 |
17 | 运算放大器 | TL072IP | 1 | PDIP-8_L9.3-W6.4-P2.54 | C110329 |
18 | 比较器芯片 | LM393P | 1 | DIP-8_L10.1-W6.3-P2.54 | C725322 |
19 | 直插电阻 | 0Ω | 1 | RES-TH_BD2.5-L6.5-P10.50 | C410698 |
20 | 旋转编码器 | EC11 | 1 | SW-TH_4P-L6.0-W6.0 | C2991196 |
21 | 按键 | TC-6610-9-260G | 3 | SW-TH_4P-L5.0-W5.0-P4.50 | C2845257 |
22 | 发光二极管 | 3mm 绿色 | 2 | LED_TH-3mm | C2895477 |
23 | 排针 | B-2100S02P-A110 | 2 | HDR-TH_2P-P2.54-V-M-1 | C124375 |
24 | 显示屏 | 1.8 TFT | 1 | LCD-TH_8P-P2.54 | C9900080251 |
25 | M3螺丝 | M3 | 4 | M3螺丝接口 | EDA常用库 |
26 | 测试点 | TP-黄色测试点 | 1 | TESTPOINT-TH_BD3.2 | C9900007422 |
三、电路原理分析
数字示波器是一种用于显示电信号波形的仪器,主要由模拟前端处理电路、单片机电路、电源电路、控制电路、触发电路、校准电路等电路组成。由于该项目为示波器入门项目,在电路设计上选择了一些核心电路,帮助初学者更好的了解示波器的原理和设计方法,主要包括了以下电路:
(1)模拟前端处理电路:负责将输入的检测模拟信号进行处理后给单片机进行识别,具体电路包括了交直流耦合选择电路、电压衰减电路、信号处理电路以及频率检测电路,是整个电路的核心。
(2)电源电路:负责给运放提供正负电源以及系统供电,是保障电路正常运行的基础;
(3)单片机电路:给系统提供控制核心,负责对输入信号的采集与处理输出工作;
(4)人机交互电路:用于控制示波器功能,包括按键、旋钮、LED灯、显示屏以及其它输入输出接口,为示波器功能的开发提供基础。
一个优秀的数字示波器设计及工作原理非常复杂,其中还包含了许多细节和技术内容,各个电路相互配合,使得数字示波器能够准确地获取、存储和显示输入信号的波形。
1.模拟前端处理电路
在整个示波器电路设计过程中,模拟前端处理电路是最为重要的,其中大量应用了模拟电路的知识,其中包括输入交直流耦合切换电路、输入信号衰减电路、以及信号调理电路所组成,在讲解模拟输入采集电路前,我们来思考以下几个问题:
- 为什么要加这个电路,直接将输入信号接到单片机引脚不行吗?
- 输入信号处为什么要加一个电容,有什么作用?
- 信号调理电路的作用是什么,该如何设计?
(1)交直流耦合切换电路
信号类型可以分为直流信号和交流信号,现实中的信号往往都是都不是理想波形。比如直流电源信号应该是一条水平的直流信号,但都会存在电源纹波(交流信号);在采集交流信号时也可能混入直流信号对波形的峰峰值造成影响。为了保障对输入交流信号的准确测量,利用电容通交隔直的特性,将电容串联到电路中就可以过滤到信号中的直流分量,这就是交流耦合的概念。而直流耦合就是不对输入信号做任何处理。
举个例子:一个电压为1V的直流电平上叠加了一个1Vpp的正弦波信号,如果使用直流耦合模式,测试看到的是一个向上抬升1V的正弦波信号,但如果使用交流耦合模式,直流信号被滤除,则输出正弦波基准电压为0V。
电路中通过一个拨动开关SW2对输入交直流耦合信号进行切换,当开关2与1接到一起时为直流耦合,当开关2接到3时为交流耦合。那么问题来了,这里的电容该如何取值呢?是不是任意一个电容都行?
要解决这个问题,那就需要了解电容的频率特性,理想状态下隔直电容的选择应该越大越好,但是由于不同容值的自谐振频率不同,低于自谐振频率时电容呈现容性状态,高于该频率时存在感性状态。电容越大,其自谐振频率越低,简单来说就是大电容通低频,小电容通高频。如上右图可知当瓷片电容为0.1uF(100nF)时,其自谐振频率为4Mhz,一般要求电容的截止频率 fc = 1 / 5 * fo,其中 fo 为电路中工作频率。由此可知在该项目中100nF是足够应用的,但如果输入信号频率更高,就应该选择更小的电容。
(2)输入信号衰减电路
信号经过交直流耦合选择电路后由开关SW3选择两个通道,开关2和3接到一起时,输入信号直接流入后级的电压跟随器电路;当开关2和1接到一起时,输入信号经过R7、R11、R14三个电阻构成的电阻分压网络后将信号衰减到了1/50倍,即 20k / (510k + 470K + 20k) = 1 / 50。结合后面的信号调理电路计算可知:
- 当SW2开关2和3接到一起时,可以测量的输入信号幅值为-1.6V-5V
- 当SW2开关2和1接到一起时,可以测量的输入信号幅值为-80V-250V
由此可知,当输入信号幅值较小时,可优先选择低压档位,如果测量时不确定输入信号幅值可先用高压档位测量后如满足低压范围内,可用低压档位测量以得到更为精准的测量结果,同时保护电路。
补充说明:该项目中使用的探头为BNC转鳄鱼夹探头,非专业示波器探头,仅对电路进行简单分析,此处不进行展开说明更多关于探头选择与阻抗说明。如使用专业示波器的无源探头进行测量,由于探头上有一个x1和x10的档位选择,当档位为x10时可以通过调整探头上的补偿电容或者是电路中的C10进行匹配已得到准确的测量效果,其中C10一般为可调电容,实际大小与各板间电容特性有关。
(3)信号调理电路
在信号调理电路中包含了一个电压跟随器以及由运放构成的信号放大电路,在分析该这部分电路时需要掌握运放的虚断与虚短原理。
虚断:
理想运放的输入阻抗是无穷大,然而真实的运放输入阻抗却是有限的。如果给运放的输入端加一个电压,然后测量该输入端的电流会发现电流读数接近为0,感觉运放内部断开,没有电流流入一样,但实际又是连接的,这种现象称为虚断。
也可以用欧姆定律U = I * R来理解,当电压一定时,电流与电阻成反比,电阻无限大那电流也就无限小接近为0。
虚短:
在运放处于深度负反馈时会出现虚短现象,使两个输入端的电位相等,就好像两个输入端短接到了一起,可以近似为 V+ = V- 。
在负反馈中,运放的输出信号的一部分被取出并反馈到输入端。这种反馈作用使得运放的两个输入端(正输入和负输入)的电压差趋近于零,、两个输入端的电压几乎相等。因为尽管运放的两个输入端在电气上并没有被直接短路、,但由于负反馈的作用,两个输入端的电压却几乎相等,就好像它们被短路了一样,故称为虚短。
接下来我们用虚短和虚断的知识分析以下电路:
1)电压跟随器电路
在电路U5.2芯片中运放反向输入引脚2脚接到运放输出引脚1脚,结合运放的虚短特性,V+=V-=Vout。
根据虚断可知运算放大器的输入阻抗比较大,所以运算放大器正向输入电流很小,运放输出阻抗小所以输出的电流很大,说这里的电压跟随器起着一个阻抗匹配的作用。
2)比例放大电路
在对U5.1运放构成的电路进行分析时,可以将其拆解为一个同相比例放大电路和一个反相比例放大电路进行单独分析后合到一起。
假设运放正向输入端接地,构成反相比例放大电路,由运放的虚断特性可知反向输入引脚流入运放的电流为0,可以R13和R15可以看做串联,所以流经电流相同。由虚短特性可知V+=V-=0,由此可得:
将Vi=1V,R13=20K,R15=10K带入得Vo=-0.5V,与仿真结果一致。
假设运放反向输入端接地,构成正相比例放大电路,由运放的虚断特性可知运算放大器两个输入引脚流过的电流为0,即流过R4的电流为0,Vin=V+。可以看做R13和R15串联,所以流过的电流也相同。由虚短特性可知两个输入引脚的电压相同,即V+=V-,所以有Vin=V+=V-。Vo与R13和R15构成回路,则流过的电流为:
单独对R13来看,流过的电流也等于它两端的电压除以它的电阻值,代入Vin=V+=V-得到以下公式:
合并两公式可得出:
将以上两个公式合到一起,将Vin = 5/3V,R13 = 20K,R15 = 10K带入得Vo = 2.5V,与仿真结果一致。
将以上同相比例放大电路与反相比例放大电路结合起来得到以下公式 Vo = (5 - Vin) / 2,将Vin=1代入公式得Vo=2V,与仿真结果保持一致。
Vo信号将直接接到单片机的ADC引脚,由于单片机采集到ADC的电压范围值为0~3.3V,由此可以计算出该示波器输入电压范围。
当输入信号Vin不衰减时,将Vo=0、Vo=3.3V分别代入公式得:
当输入信号Vin衰减 1 / 50 时,将Vo=0、Vo=3.3V分别代入公式得:
得到以下结论:
- 低压档位测量范围:-1.6V~5V
- 高压档位测量范围:-80V~250V
(4)比较器测频电路
为了实现频率检测的功能,将ADC输入信号通过一个滞回比较器对输入信号进行比较,实现频率的测量功能。滞回比较器是属于电压比较器中的一种,常规的电压比较器是一个单限比较器,电路中只有一个阈值电压,但在输入电压在阈值附近有微小变化时都会引起输出电压的越变。为了增强电路的抗干扰能力,在单限比较器的基础上引入了正反馈,保障了在一定范围内信号的稳定性。通过滞回比较器电路后输出一个方波信号,使用单片机的定时器捕获功能计算出输入波形的周期大小。
滞回比较器电路的阈值电压需单独对运放输出结果进行分析,当输出为高电平时,输出端上拉到高电平,这时等效电路如下左图所示,算得Uth = U+ = 2.214V。当运放输出为低电平时,输出端接地,等效电路如下右图所示,算得Utl = U- = 2.172V。
下图绿色线代表信号输入电压变化情况,从0电位上升,初始输出状态为高电平,输入电压达到2.214V时,输出信号变成低电平,直到输入信号低于下限阈值2.172V时输出变为高电平。可以根据比较器当前的输出状态来确定下一个变化电平的阈值,当输出为高电平时使用的是高阈值Uth,输出为低电平时使用低阈值Ttl。之所以将阈值设置接近是为了避免信号干扰造成的误识别。
注意事项:此处阈值比较器运放正向输入信号为固定电平,若使用带有DAC输出的单片机,可自由配置该点电位大小,从而改变阈值电压,实现对触发模式的设置。
这里除了可以用DAC输出的方式自由配置外,还可以使用PWM转直流的方式进行自由配置。
2.电源控制电路
该项目可以使用 STM32 / GD32 最小系统板为核心,板载了5V转3.3V降压电路,所以在设计扩展板时只需要设计一个5V电源输入电路即可,这里选用了主流的Type-C为输入接口 ,且该接口只有两根线,插件封装,方便新手焊接学习,但需要注意的是这个Type-C接口仅用于供电,不能传输数据,如果需要使用传输数据,可以使用核心板上的Type-C接口。SW1为电源总开关、C1为输入滤波电容,R1是LED1的限流电阻。
除了电源输入电路以外,为保障运算放大器对于负电压的测量性能,使用了XD7660负压产生电路得到一个 负电压,该芯片外围电路简单,只需要两个电容和一个二极管即可工作,理论上输入电压为 +5V,也可以输出一个 -5V的电压,由于芯片内部存在一定压降及转换效率,实际测量负电压为 -4.3V左右,也能满足运算放大器的要求。
3.单片机电路
原项目使用了由立创开发板团队推出的GD32最小系统板为主控,这款开发板是由立创开发板团队联合兆易创新推出的一款全国产的开发板,板载CH340下载芯片,只需要一根数据线就可以对板子进行烧录与串口调试,同时兼容STM32最小系统板的尺寸与引脚配置,可以直接进行替换。
在配置核心板引脚与单片机功能时需结合引脚特性,比如SPI液晶屏驱动需要连接到对应的SPI引脚,ADC检测需要接到到ADC功能的引脚上,这里的引脚配置不唯一,可重新配置其他的方案,以数据手册中的引脚功能说明为准。
在这里我用的是STM32最小系统板作为主控,详细介绍可看:MCU最小系统电路设计(以STM32F103C8T6为例)_stm32f103c8t6最小系统电路-CSDN博客
4.人机交互电路
(1)液晶屏显示电路
1.8 TFT 是一款彩色显示屏,具有 128 x 160 个彩色像素,使用四线SPI通信方式与单片机进行连接,一共有八根引脚,模块引脚说明及与单片机连接情况如下所示:
(2)旋转编码器电路
旋转编码器属于一种特殊的按键,该项目使用的EC11旋转编码器有五个引脚,其中DE两个引脚类似于普通按键引脚,按下导通,松手断开,其余ABC三个引脚用于检测旋钮的转动方向,C脚为公共端,直接接地就行。
在旋转编码器时,A和B两个信号引脚存在相位差,也就是有一个引脚信号变化后另一个引脚信号再跟着变化,即两个引脚不同时变化,通过检测哪个引脚先变就能判断是正转还是反转功能。
(3)LED灯指示电路
LED指示电路设计比较简答,采用低电平驱动的方式,当单片机引脚输出为低电平时,LED两端存在电势差,LED点亮;当单片机引脚输出为高电平时,LED灯熄灭。
(4)按键输入检测电路
除了旋转编码器外,该项目还使用了三个独立按键对系统进行控制,三个按键一侧直接接地,另一侧连接到单片机引脚,当单片机引脚检测到按键按下时,单片机引脚直接接到GND接地,单片机收到该引脚接地信号的反馈后再去实现对应的功能,为节约硬件成本,可以在软件设计时引入消抖功能,避免机械按键抖动时的误触发。
(5)其他电路
除了示波器检测功能外,单独引出了一个PWM信号用于模拟一个简易的函数发生器功能,可以通过改变输出PWM的频率和占空比输出一个简易方波信号输出。
四、免费PCB打样
嘉立创自2019年起给全国电子工程师及爱好者普及PCB免费打样服务至今,伴随着电子工程师的成长,解决学习过程中打样贵、打样慢的问题。在完成PCB设计后我们可以大胆地将文件提交到嘉立创平台进行PCB的打样,每个月可以支持免费打样两次,每次可打一款板子,实际生产5片,重点是还全国包邮!
1.优惠券领取
在进行PCB下单前需要先领取一张免费打样券,打开嘉立创下单平台的优惠券领券专区页面,嘉立创下单的账号与嘉立创EDA的账号通用,登录账号后即可领取优惠券:嘉立创-领券专区 (jlc.com)
进入领券专区后,选择PCB+SMT喷锡免费券进行领取,每个月可领取两张,领取后30天内有效。这里的PCB+SMT的意思是可用于PCB和SMT而不是一定要用SMT才能用券,系统会随机抽取幸运儿,有极小概率抽中的话还可以免费体验工厂帮忙焊接元器件(SMT)的服务,如果能抽中那也是极好的!
2.生成制造文件
领取优惠券后回到PCB设计页面,点击顶部菜单栏中的“文件”,选择“导出”选项,在里面可以选择导出物料清单(BOM)、PCB制板文件(Gerber)以及坐标文件,这三个文件是实际PCB设计生产中常用到的文件。其中物料清单是用于元器件采购以及SMT贴片时物料选择、坐标文件是用于SMT贴片时器件位置定位,而里面的PCB制板文件(Gerber)文件就是PCB生产用的文件。
点击导出PCB制板文件(gerber),在选项中选择“导出Gerber”,这时系统会提醒先检查DRC再进行导出,这里需要点击“是,检查DRC”,当检查无误后才会导出Gerber文件下载到本地。然后再将Gerber文件上传到嘉立创下单系统即可完成下单。
在导出Gerber文件的窗口还有一个“PCB下单”的选型,直接点击PCB下单的话可以不需要下载文件直接跳转到嘉立创平台上进行PCB的打样操作,这里给PCB下单提供了更多的便利。点击自动下单后 同样需要对DRC进行检查,检查无误后系统会讲下单数据生产,点击“确认”按钮即可跳转到嘉立创下单平台页面进行下单。
3.下单页面介绍
(1)基本信息
- 板材类别:选择FR-4,另外FPC板材为柔性PCB、铝基板常用于做灯板、铜基板散热性较好、高频板用于设计制作多阻抗和信号要求较高的板子;
- 板子尺寸:默认会自动识别出来的,没有识别的话也可手动填写;
- 板子数量:免费打样数量为5片,如果多打需要自费;
- 板子层数:嘉立创现在支持1-4层的免费打样,板子设计是两层板,这里选择“2”;
- 产品类型:选择工业/消费/其他类电子产品,航空和医疗板精度设计要求较高;
- 确认生产稿:如果是批量生产那必须要确认生产稿,避免生产文件有误影响板子功能,免费打样则选择不需要生产稿即可。
(2)PCB工艺
PCB工艺选项里面内容较多,仅需关注下图中框选出来的几个选项:
- 拼板款数:在进行批量打样时常将多个PCB拼在一个板子上生产,这样成本更低。由于目前仅做免费打样,拼板数量应为1,出货方式为单片;
- 板子厚度:默认板子厚度为1.6mm,无特殊要求建议是默认1.6mm ,选择其他厚度和颜色匹配时容易选到冷门工艺会额外添加工艺费;
- 阻焊颜色:即板子的颜色,嘉立创支持七种不同的阻焊颜色,其中绿色的生产周期最快,最快48小时内发货,其他颜色最快是72小时发货,可结合自身喜好和板子的着急程度选择合适的阻焊颜色。
(3)个性化服务
个性化服务没有特殊需求选默认即可。
(4)交期
交期与所选颜色有关,嘉立创最快支持12小时加急,但需额外支付加急费。若无特殊需求,选用默认交期即可。
(5)SMT贴片与激光钢网
如需选择工厂代焊接元器件则在此选择需要SMT贴片,工厂生产PCB后会将元器件一同焊接好寄出,SMT属于收费服务,若不需要则选择不需要即可。钢网是用于SMT贴片刷锡膏用的,如果自己有贴片机,可在生产PCB时选择开钢网回来自己进行贴片焊接。
(6)开票与支付
嘉立创是支持开票的,下单前需填写开票税号,免费打样无需开票,开票信息填写个人即可。在确认订单方式推荐选择“系统自动扣款并确认”选项,避免个人疏忽忘记确认订单影响生产。
(7)发货与快递
在发货页面建议选择电子收据,发货方式可选不同交期是否一起发后,填写收货地址,下单联系人和技术联系人都可以填自己的联系方式,快递根据地区不同会由不同的快递显示,选择里面一个免费的快递即可。
(8)使用优惠券下单
填写完下单数据后,在右侧结算页面选择使用优惠券下单即可获得减免,这里注意下优惠前面额应该是20元,如果超过20那可能是选了某个特殊工艺,应修改回默认工艺后再使用优惠券下单。
提交订单后还需确认订单,系统可能会自动审核通过,也有可能会有人工审核参与,这时需等待审核通过后进行确认订单才可以进入生产环节,如果前面选了“系统自动扣款并确认选项”在有余额的前提下系统就自动确认并进入生产。
生产中的板子可在嘉立创下单平台的PCB订单中查看进度以及快递情况。
五、软件开发(基于STM32标准库)
在这里我用STM32标准库测试需要的功能,主要测试了:
- TFT屏幕
- LED
- 输出比较
- 输入捕获
- ADC采集
- KEY按键
由于测试代码太多了,在这里我就不呈现了,后续再把代码开源。
具体测试功能代码可以看:
STM32标准库基础知识_stm32标准库有什么内容-CSDN博客
后续有时间的话我再用HAL库复刻一遍,然后开源代码。
六、项目演示视频
数字示波器演示视频