首页 > 其他分享 >基于GD32E230C8T6的数字示波器

基于GD32E230C8T6的数字示波器

时间:2024-03-24 23:03:28浏览次数:29  
标签:输出 基于 LED GD32E230C8T6 引脚 示波器 电路 信号 输入

基于GD32E230C8T6的数字示波器


文章目录


基于GD32E230C8T6的数字示波器

实物演示

在这里插入图片描述

在这里插入图片描述

https://www.bilibili.com/video/BV1qJ4m177jP

<iframe allowfullscreen="true" data-mediaembed="bilibili" frameborder="0" id="vI5LGzSL-1711177719331" src="https://player.bilibili.com/player.html?aid=1252170007"></iframe>

基于GD32E230C8T6的数字示波器

代码:https://download.csdn.net/download/weixin_52849254/88951435

电路原理

模拟前端处理电路

在整个示波器电路设计过程中,模拟前端处理电路是最为重要的,其中大量应用了模拟电路的知识,其中包括输入交直流耦合切换电路、输入信号衰减电路、以及信号调理电路所组成。

image.png

交直流耦合电路

信号类型可以分为直流信号和交流信号,现实中的信号往往都是都不是理想波形。比如直流电源信号应该是一条水平的直流信号,但都会存在电源纹波(交流信号);在采集交流信号时也可能混入直流信号对波形的峰峰值造成影响。

为了保障对输入交流信号的准确测量,利用电容通交隔直的特性,将电容串联到电路中就可以过滤到信号中的直流分量,这就是交流AC耦合的概念。而直流DC耦合就是不对输入信号做任何处理

image.png

image.png

电路中通过一个拨动开关SW2对输入交直流耦合信号进行切换,当开关2与1接到一起时为直流耦合,当开关2接到3时为交流耦合。

image.png

这里的电容如何选择大小呢?

要解决这个问题,那就需要了解电容的频率特性,理想状态下隔直电容的选择应该越大越好,但是由于不同容值的自谐振频率不同,低于自谐振频率时电容呈现容性状态,高于该频率时存在感性状态。电容越大,其自谐振频率越低,简单来说就是大电容通低频,小电容通高频。

如下图可知当瓷片电容为0,1uF(100nF)时,其自谐振频率为4Mhz,一般要求电容的截止频率fc=1/5*fo,其中fo为电路中工作频率。由此可知在该项目中100nF是足够应用的,但如果输入信号频率更高,就应该选择更小的电容。

image.png

信号经过交直流耦合选择电路后由开关SW3选择两个通道,开关2和3接到一起时,输入信号直接流入后级的电压跟随器电路;当开关2和1接到一起时,输入信号经过R7、R11、R14三个电阻构成的电阻分压网络后将信号衰减到了1/50倍,即

image.png

由此可知,当输入信号幅值较小时,可优先选择低压档位,如果测量时不确定输入信号幅值可先用高压档位测量后如满足低压范围内,可用低压档位测量以得到更为精准的测量结果,同时保护电路。

输入信号衰减电路

image.png

该项目中使用的探头为BNc转鳄鱼夹探头,非专业示波器探头,仅对电路进行简单分析,此处不进行展开说明更多关于探头选择与阻抗说明。如使用专业示波器的无源探头进行测量,由于探头上有一个×1和×10的档亻立选择,当档位为×10时可以通过调整探头上的衤卜偿电容或者是电路中的c10进行匹配已得到准确的测量效果,其中C10一般为可调电容,实际大小与各板间电容特性有关。

image.png

信号调理电路

在信号调理电路中包含了一个电压跟随器以及由运放构成的信号放大电路,在分析该这部分电路时需要掌握运放的虚断与虚短原理。

虚断:

理想运放的输入阻抗是无穷大,然而真实的运放输入阻抗却是有限的。如果给运放的输入端加一个电压,然后测量该输入端的电流会发现电流读数接近为0,感觉运放内部断开,没有电流流入一样,但实际又是连接的,这种现象称为虚断。

也可以用欧姆定律U=I*R来理解,当电压一定时,电流与电阻成反比,电阻无限大那电流也就无限小接近为0。

虚短:

在运放处于深度负反馈时会出现虚短现象,使两个输入端的电位相等,就象两个输入端短接到了一起,可以近似为v+=v-。

在负反馈中,运放的输出信号的一部分被取出并反馈到输入端。这种反馈作用使得运放的两个输入端(正输入和负输入)的电压差趋近于零,、两个输入端的电压几乎相等。因为尽管运放的两个输入端在电气上并没有被直接短路、,但由于负反馈的作用,两个输入端的电压却几乎相等,就象它们被短路了一样,故称为虚短。

电压跟随器

电压跟随器的特点是输出的电压幅度和极性都与输入电压相同,且具有输入阻抗高,输出阻抗低的特点,常用于做缓冲级和隔离级。

image.png

由于运算放大器的虚短特性,V+=v-,由于Vin=V+,Vout=V-,所以Vin=Vout,即TP6测试点电压与TP7电压一致。

反相比例放大器

输入信号从运算放大器的反相输入端输入,具有输出极性相反且放大输入信号的功能。

image.png

当运放正向输入端接地,IJ+=OO此时构成反相比例放大电路,由运放的虚断特性可知反向输入引脚流入运放的电流为0,可以R13和R15可以看做串联,所以流经电流相同。由虚短特性可知v+=v-=0,i+=i-=0,由此可得.

image.png

推出反相比例放大器计算公式为

image.png

将Vi=1V,R13=20K,R15=10K带入得Vo=-0.5V

串联电路中电流相等,输出电压为-0.5伏。

同相比例放大器

输入信号从运算放大器的同相输入端输入,具有输出极性相同且放大输入信号的功能。

image.png

当运放反向输入端接地,U-=0。此时构成正相比例放大电路。由运放的虚断特性可知运算放大器两个输入引脚流过的电流为0,即流过R4的电流为0,Vin=V+。可以看做R13和R15串联,所以流过的电流也相同。由虚短特性可知两个输入引脚的电压相同,即V+=v-,所以有Vin=V+=V-。Vo与R13和R15构成回路,则流过的电流为·

image.png

单独对R13来看,流过的电流也等于它两端的电压除以它的电阻值,代入Vin=V+=V一得到以下公式:

image.png

由此可以推导出

image.png

将Vin=5/3V,人3=20K,RI5=10K带入得Vo=2.5V。

同向比例放大电路验证正确,输出电压为2.5伏。

综合电路:

将正相比例放大电路与反相比例放大电路结合起来共同分析:

当运放正相入端接地,U+=0时,

image.png

代入R15=10K,R13=20K,V1=-0.5Vi。

当运放反相输入端接地,U-=0时,

image.png

代入R15=10K,R13=20K,Vin=5/3V,V2=2.5V。

当两电路共同作用时vout=V2+V1=2.5+0.5Vin,整理可得·

image.png

image.png

Vo信号将直接接到单片机的ADC引脚,由于单片机采集到ADC的电压范围值为0、3,3V,由此可以计算出该示波器输入电压范围。

image.png

当输入信号Vin不衰减时,将Vo=0、vo=3.3V分别代入公式得,

image.png

当输入信号Vin衰减1/50时,将Vo=0、Vo=3。3V分别代入公式得.

image.png

得到以下结论·

.当开关5和3接到一起时,可以测量的输入信号幅值为-1.6-5v

.当SW5开关2和1接到一起时,可以测量的输入信号幅值为·80V一250V

比较器测频电路

为了实现频率检测的功能,将ADc输入信号通过一个滞回比较器对输入信号进行比较,实现频率的测量功能。滞回比较器是属于电压比较器中的一种,常规的电压比较器是一个单限比较器,电路中只有一个阈值电压,但在输入电压在阈值附近有微小变化时都会引起输出电压的越变。

为了增强电路的抗干扰能力,在单限比较器的基础上引入了正反馈,保障了在一定范围内信号的稳定性。通过滞回比较器电路后输出一个方波信号,使用单片机的定时器捕获功能计算出输入波形的周期大小。

image.png

滞回比较器电路的阈值电压需单独对运放输出结果进行分析,原始电路如下图所示:

当输出为高电平时,输出端上拉到高电平,这时等效电路如下中图,算得Uth=U+=2.214V。

当运放输出为低电平时,输出端接地,等效电路如下右图,算得Utl=U-=2.172V。

image.png

image.png

下图绿色线代表信号输入电压变化肩况,从0电位上升,初始输出状态为高电平,输入电压达到2,214V时,

输出信号变成低电平,直到输入信号低于下限阈值2,172V时输出变为高电平。可以根据比较器当前的输出状

态来确定下一个变化电平的阈值,当输出为高电平时使用的是高阈值Uth,输出为低电平时使用低阈值Tt|。

之所以将阈值设置接近是为了避免信号干扰造成的误识另刂。

image.png

下图绿色线代表信号输入电压变化肩况,从0电位上升,初始输出状态为高电平,输入电压达到2,214V时,AAAAAAAAAAAA输出信号变成低电平,直到输入信号低于下限阈值2.172V时输出变为高电平。可以根据比较器当前的输出状态来确定下一个变化电平的阈值,当输出为高电平时使用的是高阈值Uth,输出为低电平时使用低阈值Ttl。之所以将阈值设置接近是为了避免信号干扰造成的误识别。

image.png

注意事顶:

此处阈值比较器运放正向输入信号为固定电平,若使用带有DAC输出的单片机,可自由配置该点电位大小,从而改变直电压,实现对触发模式的设置。

电源电路

USB电源输入

该项目使用GD32最小系统板为核心,板载亍5V转33V降压电路,所以在设计扩展板时只需要设计一个5V电源输入电路即可,这里选用了主流的type-c为输入接口,且该接口只有两根线,插件封装,方便新手焊接学习,但需要注意的是这个pe·c接口仅用于供电,不能传输数据,如果需要使用传输数据,可以使用核心板上的Type–接口。sw1为电源总开关、C1为输入滤波电容,RI是LED1的限流电阻。

image.png

负电压产生电路

除了电源输入电路为,为保障运算放大器对于负电压的测量性能,使用了XD7660负压产生电路得到一个负电压,该芯片夕卜围电路简单,只需要两个电容和一个二极管即可工作,理论上输入电压为+5V,也可以输出一个5V的电压,由于芯片内部存在一定压降及转换效率,实际测量负电压为还3V左右,也能满足运算放大器的要求。

image.png

单片机电路

该项目使用了由立创开发板团队推出的GD32最小系统板为主控,这款开发板是由立创开发板团队联合兆易创新推出的一款全国产的开发板,板载CH340下载芯片,只需要一根数据线就可以对板子进行烧录与串口调试,同时兼容STM32最小系统板的尺寸与引脚配置,可以直接进行替换。

image.png

人机交互电路

液晶屏显示电路

1.8TFT是一款彩色显示屏,具有128×160个彩色像素,使用四线spI通信方式与单片机进行连接,一共有八根引脚,模块引脚说明及与单片机连接情况如下所示:

屏幕购买链接:

https://item.taobao.com/item.htm?_u=n34jmok8fa2c&id=709270273013&spm=a1z09.2.0.0.67002e8dxYMtHQ

高清SPI TFT显示彩屏0.96寸1.3寸1.44寸1.8寸 OLED液晶屏 st7735-淘宝网 (taobao.com)

image.png

image.png

旋转编码器电路

旋转编码器属于一种特殊的按键,该项目使用的ECII旋转编码器有五个引脚,其中DE两个引脚类似于普通按键引脚,按下导通,松手断开,其余ABC三个引脚用于检测旋钮的转动方向,c脚为公共端,直接接地就行。

在旋转编码器时,A和B两个信号引脚存在相位差,也就是有一个引脚信号变化后另一个引脚信号再跟着变化,即两个引脚不同时变化,通过检测哪个引脚先变就能判断是正转还是反转功能。

image.png

LED灯指示电路

LED指示电路设计比较简答,采用低电平驱动的方式,当单片机引脚输出为低电平时,LED两端存在电势x差,LED点亮;当单片机引脚输出为高电平时,LED灯熄灭。

image.png

按键控制电路

除了旋转编码器外,该项目还使用了三个独立按键对系统进行控制,三个按键一侧直接接地,另一侧连接到单片机引脚,当单片机引脚检测到按键按下时,单片机引脚直接接到GND接地,单片机收到该引脚接地信号的反馈后再去实现对应的功能,为节约硬件成本,可以在软件设计时引入消抖功能,避免机械按键抖动时的误触发。

image.png

波形输出接口

除了示波器检测功能夕卜,单独引出了一个pwM信号用于模拟一个简易的函数发生器功能,可以通过改变输出PWM的频率和占空比输出一个简易方波信号输出。

image.png

PCB设计

走线长度尽量短,走线沿焊盘方向引出

PCB设计尽量避免产生锐角和直角,产生不必要的辐射干扰

走线过程中不允许出现一端浮空走线,避免天线效应

电源滤波去耦电容走线时保证电流先流过电容滤波再给器件供电

在设计走线时,保证信号其回路面积尽可能小,即最小回路原则PCB走线时尽量加宽电源与地线宽度,地线>电源线>信号线宽度

走线以直线为主,如需拐弯时拐角以135。钝角或圆角优先,减少直角的使用,

走线线宽电源线宽大于信号线,该项目中信号线走线宽度为15mil,电源走线为20mil,GND和AGND网络使用铺铜的方式连接;

建议优先使用顶层走线,走不通的地方使用过孔建立顶层和底层的连接后转到底层继续走,底层走不通同样可以放置过孔换到顶层连线,

对AGND和GND需要以0欧姆电阻处为分界单独覆铜铜,这里需结合PCB布局情况来调整覆铜范围,

覆铜完成后如果还存在飞线,可通过在存在飞线的位置放置对应网络的过孔或者是调整走线位置网络能够连接,也可以采用手动接线的方式消除飞线。

走线完成后可在"工具"菜单栏选择泪滴添加,加强焊盘与走线的连接,最后再进行覆铜操作,如果对走线有移动调整也应使用快捷键shift+B进行重建覆铜。

软件

LED

LED灯发光原理

LED灯内部是一个半导体晶片,一半是P

型半导体,另一半是N型半导体。这两种半导体连接起来时,就形成了P一N结,当电流通过导线作用于这个晶片时,电子就会被推向P区,在P区里电子跟空穴复合,然后就会以光的形式发出能量,这就是LED灯发光的原理。

LED灯驱动原理

驱动LED灯,也就是使LED灯点亮,首先查看原理图,查看LED灯引脚的连接关系,可通过对应单片机引脚输出高低电平,从而改变LED灯两侧电势差形成电流回路,点亮LED

示波器板led原理图

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

/*
*   函数内容:初始化LED引脚
*   函数参数:无
*   返回值:  无
*/
void Init_LED_GPIO(void)
{
    //使能时钟
    rcu_periph_clock_enable(RCU_GPIOC);
    //设置输出模式,不上下拉
    gpio_mode_set(GPIOC, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_14);
    //设置输出模式,不上下拉
    gpio_mode_set(GPIOC, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_15);
    //设置输出类型,推挽输出,50Mhz
    gpio_output_options_set(GPIOC, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_14);
    //设置输出类型,推挽输出,50Mhz
    gpio_output_options_set(GPIOC, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_15);
    //默认不开灯
    CLose_LED(led2);
    CLose_LED(led3);
}

/*
*   函数内容:打开对应LED灯
*   函数参数:无
*   返回值:  无
*/
void Open_LED(uint8_t value)
{
    switch(value)
    {
        case 1:
            gpio_bit_reset(GPIOC,GPIO_PIN_14);
            break;
        case 2:
            gpio_bit_reset(GPIOC,GPIO_PIN_15);
            break;
        default:
            break;
    }
}

/*
*   函数内容:关闭对应LED灯
*   函数参数:无
*   返回值:  无
*/
void CLose_LED(uint8_t value)
{
    switch(value)
    {
        case 1:
            gpio_bit_set(GPIOC,GPIO_PIN_14);
            break;
        case 2:
            gpio_bit_set(GPIOC,GPIO_PIN_15);
            break;
        default:
            break;
    }
}
  1. Init_LED_GPIO 函数:
    • 这个函数用于初始化LED灯所连接的GPIO引脚。
    • 首先,它使能了GPIOC的时钟。
    • 然后,它设置了GPIOC的两个引脚(PIN_14和PIN_15)为输出模式,并且没有启用上拉或下拉电阻。
    • 接着,它设置了这两个引脚的输出类型为推挽输出,并且输出速度为50MHz。
    • 最后,它调用CLose_LED函数来关闭LED灯(即初始化时LED灯是关闭的)。
  1. Open_LED 函数:
    • 这个函数用于打开LED灯。
    • 它接收一个参数value,这个参数的值决定了哪个LED灯被打开。
    • 如果

标签:输出,基于,LED,GD32E230C8T6,引脚,示波器,电路,信号,输入
From: https://blog.csdn.net/weixin_52849254/article/details/136967914

相关文章

  • 这次真的一看就懂!基于投影统计的电力系统鲁棒状态估计方法程序代码!
    前言首先举一个简单明了的例子,物体的立体组成个数估计:三维立体投影的启示!由上图可知,要想知道一堆立方体中有多少个小立方体组成,必须通过其三视图(主视图、俯视图、左视图)来判断,少了任何一维,都会产生误差!类比而来,电力系统是一个n维的高阶复杂系统,忽略了任何一维都会带来相应......
  • 基于 HttpRunner + Django + Vue + Element UI 的接口自动化测试平台,生产可用
    LunarLink平台简介基于HttpRunner+Django+Vue+ElementUI的接口自动化测试平台,生产可用。此外,非常感谢花菜。没有AnotherFasterRunner就不会有LunarLink......
  • 基于PyTorch深度学习实战入门系列-PyTorch基础全
    Torch的基本使用判断GPU是否可用torch.cuda.is_available()张量Torch定义了10种张量类型,包括CPU和GPU形式,如下表所示:数据类型dtypeCPU张量GPU张量32位浮点数torch.float32、torch.floattorch.FloatTensortorch.cuda.FloatTensor64位浮点数torch.float64、t......
  • ra6m3之adc踩坑日志(基于rt-thread )
    问题描述1.已经用fsp工具正确配置Pins2.已经用fsp工具正确配置Stacks3.问题是根本没有在RT-ThreadStudio看到HAL相关的ADC代码,也没看到Settings里边的ADC配置选项问题分析RT-Thread跟Linux内核一样,采用Kconfig来配置驱动和组件,既然没有看到有ADC选项,可以考虑自己添加一个......
  • 阿里云-零基础入门NLP【基于深度学习的文本分类3-BERT】
    文章目录学习过程赛题理解学习目标赛题数据数据标签评测指标解题思路BERT代码学习过程20年当时自身功底是比较零基础(会写些基础的Python[三个科学计算包]数据分析),一开始看这块其实挺懵的,不会就去问百度或其他人,当时遇见困难挺害怕的,但22后面开始力扣题【目前已刷......
  • (毕设)基于Java+Vue+Mysql的WMS仓库管理系统
          前言: WMS(WarehouseManagementSystem)仓库管理系统是一个用于优化仓库操作、提高效率和准确性的软件解决方案。以下是针对列出的WMS仓库管理系统的各个部分的简要描述:1.订单管理订单管理是WMS的核心功能之一,涉及处理、跟踪和完成客户订单。这包括:订单录入:......
  • (毕设)基于Java+SpringBoot+Vue+Mysql的智慧园区管理系统
        前言:智慧园区管理系统是一个集成了园区管理、缴费服务、退款功能、缴费提醒、抄表功能、打印功能、统计报表和协同办公等多个模块的综合性系统。以下是对每个模块及其子功能的简要说明:园区管理:园区管理:对整个园区进行宏观管理,包括园区的基本信息、资源配置、设施维......
  • (毕设)基于Java+Vue+Mysql的门店管理系统
        前言:门店管理系统是一个综合性的软件解决方案,旨在帮助门店高效地管理日常运营、提升服务质量、优化资源配置和增强决策能力。以下是您提到的各个管理模块的简要概述:门店管理:门店信息管理:记录门店的基本信息,如门店名称、地址、联系方式、营业时间等。门店布局管理:定......
  • 8. 基于51单片机的感应震动&按键&超声波&蜂鸣器开关盖桶
    项目概述功能描述检测靠近时,垃圾桶自动开盖并伴随滴一声,2秒后关盖发生震动时,垃圾桶自动开盖并伴随滴一声,2秒后关盖按下按键时,垃圾桶自动开盖并伴随滴一声,2秒后关盖硬件说明SG90舵机,超声波模块,震动传感器,蜂鸣器链接:7.PWM开发SG90(手把手教会)链接:6.超声波测距的使......
  • 基于官方外设开发
    目录1.wiringPi外设SDK安装 2.修改vim的默认缩进 3.蜂鸣器的使用 4.写一个简易的shell脚本来编译文件5.超声波测距的使用 5.1Linux时间函数5.2超声波代码的实现6.sg90舵机1.wiringPi外设SDK安装方式一:gitclonehttps://github.com/orangepi-......