1、简单易用,可快速上手
2、流畅支持300个器件或1000个焊盘以下的设计规模
3、支持简单的电路仿真
4、面向学生、老师、创客
1、全新的交互和界面
2、流畅支持超过3w器件或10w焊盘的设计规模,支持面板和外壳设计
3、更严谨的设计约束,更规范的流程
4、面向企业、更专业的用户
专业版 #训练营#简易小小示波器
简介:电子设备是如何通过无形的电流和电压来传递信息的?如何将这些看不见的信号转化为直观的图形? 答案就藏在数字示波器中,能够捕捉和分析电子信号的强大工具 完成这个项目,感受到电子制作带来的成就感(≖ᴗ≖)✧
开源协议: GPL 3.0
(未经作者授权,禁止转载)
已参加:简易数字示波器训练营
本工程复刻的是“立创训练营项目-简易数字示波器”,
首先感谢各位老师的教学和指导,还有讨论群里大佬们的热心帮助~
模拟前端电路:
模拟前端处理电路的主要目的是为了将实际的模拟信号转换为适合单片机处理的信号。直接将输入信号接到单片机引脚存在几个问题:
在输入信号处加入电容主要有以下几个作用:
信号调理电路的主要作用是对输入信号进行适当的处理,使其更适合后续的检测和处理。信号调理电路的设计需要考虑以下几个方面:
输入信号衰减电路
输入信号衰减电路是模拟前端处理电路中的一个重要组成部分,它允许示波器处理不同幅度范围的信号。通过掌握信号衰减电路的工作原理和设计方法,可以确保信号在不失真的情况下被准确测量。
衰减比例的计算:
开关控制:了解如何通过开关(如SW2、SW3)选择不同的衰减档位。在您的例子中,开关2和3接到一起时,信号直接流入后级的电压跟随器电路,没有衰减;而开关2和1接到一起时,信号经过电阻分压网络进行衰减。
信号幅值的测量:掌握如何根据衰减比例计算实际的输入信号幅值。根据您提供的资料,当SW2开关2和3接到一起时,可以测量的输入信号幅值为-1.6V到-5V;当SW2开关2和1接到一起时,可以测量的输入信号幅值为-80V到250V。
电路保护:了解如何利用衰减电路保护示波器的输入端。当不确定输入信号的幅值时,可以先使用高压档位进行测量,如果发现信号在低压档位的测量范围内,再切换到低压档位进行更为精确的测量。
滞回比较器电路:滞回比较器是一种特殊类型的电压比较器,它有两个阈值电压,一个用于触发输出高电平,另一个用于触发输出低电平。这种设计使得电路在输入信号的电压接近这两个阈值时,输出电压不会频繁地在高低电平之间切换,从而提高了电路的抗干扰能力。
直线走线原则:尽量保持走线为直线,这样可以减少信号的传播延迟和反射。如果需要拐弯,优先使用135°钝角或圆角,这样可以减少信号的不连续性和电磁干扰。避免使用直角,因为直角走线可能导致信号反射和阻抗不连续。
线宽选择:电源线由于承载较大的电流,因此线宽应该大于信号线,以减少电阻和电压降。在您的项目中,信号线走线宽度为15mil,电源走线为20mil。这样做可以确保电源稳定供应,同时减少信号损耗。
优先使用顶层走线:顶层走线便于观察和维修,当顶层走线遇到障碍时,可以通过过孔连接到底层继续走线。如果底层走线也不通,同样可以通过放置过孔切换回顶层。
地线处理:AGND(模拟地)和GND(数字地)应分别单独覆铜,并在0欧姆电阻处分界。这样做有助于减少模拟和数字部分之间的干扰。覆铜的范围需要根据PCB布局的实际情况进行调整。
消除飞线:覆铜完成后,如果存在未连接的飞线,可以通过在飞线位置放置对应网络的过孔、调整走线位置或者手动接线的方式进行消除。确保所有的网络都已经正确连接。
添加泪滴:走线完成后,可以在“工具”菜单栏选择添加泪滴,这样可以加强焊盘与走线的连接,提高焊接的可靠性。添加泪滴后再进行覆铜操作,如果对走线有移动调整,应使用快捷键Shift+B进行重建覆铜。
按键扫描处理函数 (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
函数被调用来在触摸屏上显示示波器的用户界面,
加载中...
是否需要添加此工程到专辑?