自动衰减器工作流程

2023-12-17 14:50
文章标签 流程 工作 自动 衰减器

本文主要是介绍自动衰减器工作流程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

自动衰减器工作流程

衰减器介绍

  衰减器顾名思义,就是用来衰减信号强度的,他与放大器对信号的作用是相反的。那么为什么我们需要用到衰减器呢?如下图:
衰减图示
假如有一个信号90dBuV,没有进过衰减,我们前端处理信号能的极限是50dBuV,那么我们得到的信号参数就失真了,是一个模糊的值。如果经过衰减器呢,情况就如下图:
信号失真
我们完整的得到了整个信号的信息。那衰减之后不是变小了吗?这个我们这在后期处理的时候补偿不就可以了。

  衰减器在硬件电路中的位置在tuner的前面,保证进入tuner的信号是在其极限范围内,如下图:
硬件电路图

手动调节衰减器

  硬件预留给软件这边可调衰减器范围是45dB,通过频谱模块的MCU进行控制。我们软件主程序通过spi跟频谱模块的MCU相互通信,这块这里就不细讲解spi通信的实现了(上图中cpu与MCU之间连线上面写的spi,即他们使用spi相互通信)。通过spi给MCU发送需要调节的衰减器的值就可以做到手动控制调节衰减器了。如上图中的硬件电路图中的-15dB的两个衰减器和右上角的PE4314这个衰减器可以控制0-30dB。

  在三个显示模式中的options选项菜单中,有一个衰减模式选择项,其中有一个自动衰减模式和一个手动衰减模式。选择手动衰减模式时,下面的衰减器设置选项就从隐藏不可选状态恢复正常,即可以手动更改衰减器的值达到手动设置衰减器的目的。除此之外,在meter显示模式中的频谱小窗口以及频谱显示模式中可以通过上下按键手动调节。

自动调节衰减器

基本原理

  有了前面手动衰减器的基本概念,那么怎么才能做到自动调节衰减器呢?首先一点,我们调节衰减器是为了让RF进来的信号到tuner时不要超过tuner的极限范围。tuner处理信号的范围现在是0-50dBuV,加上我们的衰减器最大60dB,也就是可以达到110dBuV的理论极限范围。下面有三张图,看看如果让你选,你觉得那种比较舒服看上去。
demo1


demo2


demo3

不用说第二幅,相比于第一幅不会丢失内容导致参数失真;相比于第三幅屏幅全部利用到了,细节显示更好。
  介绍几个名词,ref这个就是我们频谱的显示坐标轴纵坐标的最大值,noise底噪是我们频谱的显示坐标轴纵坐标的最小值,频谱的显示范围固定为ref-noise=60dB。(其实理论上我们的noise就等于衰减器值,除了noise=50dB时,衰减器还是45dB之外)
  那怎么做到让所有的信号进来都能达到第二幅的效果呢,
  1.我们的做法是设置两个阈值,上阈值 = noise + 55dB,下阈值 = noise + 40dB。
  2.采样频谱数据,获取这次频谱数据中最大值
  3.将频谱数据的最大值与上下阈值对比,如果比上阈值大衰减器加5dB,如果比下阈值小衰减器加5dB。
  这样稳定下来的频谱采样数据,最大值应该一直在上下阈值之间波动,即保证了信号超过极限范围导致失真,又能保证显示更多细节。

算法

  用到的算法不多也不难,主要是思路比较重要。
  1.获取频谱采样数据的最大值,这个就是一个简单的循环比较函数就可以搞定
  2.阈值的计算,衰减器值只是在noise为50dB不一样,做一个判断处理,其他情况相等,所以保存衰减器值就可以计算出每次的阈值了。

频谱以外显示模式的处理

  上面所说的各种原理和思路都是基于频谱的,那么在其他显示模式中,没有频谱怎么办?
  在这里介绍一下,我们专业meter对dBuV值要求特别高,而专业meter的dBuV值计算就是通过频谱计算出来的,这里就详细介绍频谱计算公式。频谱的一点点误差,运算出来的dBuV值就会有较大误差,而且考虑到我们在播放节目和解析信号参数的同时能够实时显示dBuV值,就必须两路分开处理信号。
  从上面电路图可以看出,我们的meter处理信号这块有两路,一路是正常我们锁信号播节目,一路是专门获取频谱。有一个频谱单片机在后台实时获取频谱数据的,我们通过spi可以跟频谱的mcu通信获取到频谱数据,从而计算出我们想要的dBuV值或者显示出频谱。所以在我们计算dBuV值的时候就可以利用频谱数据做前面频谱模式中的自动衰减的处理了。

这篇关于自动衰减器工作流程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/504782

相关文章

SpringBoot中封装Cors自动配置方式

《SpringBoot中封装Cors自动配置方式》:本文主要介绍SpringBoot中封装Cors自动配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot封装Cors自动配置背景实现步骤1. 创建 GlobalCorsProperties

idea中创建新类时自动添加注释的实现

《idea中创建新类时自动添加注释的实现》在每次使用idea创建一个新类时,过了一段时间发现看不懂这个类是用来干嘛的,为了解决这个问题,我们可以设置在创建一个新类时自动添加注释,帮助我们理解这个类的用... 目录前言:详细操作:步骤一:点击上方的 文件(File),点击&nbmyHIgsp;设置(Setti

一文详解SQL Server如何跟踪自动统计信息更新

《一文详解SQLServer如何跟踪自动统计信息更新》SQLServer数据库中,我们都清楚统计信息对于优化器来说非常重要,所以本文就来和大家简单聊一聊SQLServer如何跟踪自动统计信息更新吧... SQL Server数据库中,我们都清楚统计信息对于优化器来说非常重要。一般情况下,我们会开启"自动更新

Spring AI ectorStore的使用流程

《SpringAIectorStore的使用流程》SpringAI中的VectorStore是一种用于存储和检索高维向量数据的数据库或存储解决方案,它在AI应用中发挥着至关重要的作用,本文给大家介... 目录一、VectorStore的基本概念二、VectorStore的核心接口三、VectorStore的

python之流程控制语句match-case详解

《python之流程控制语句match-case详解》:本文主要介绍python之流程控制语句match-case使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录match-case 语法详解与实战一、基础值匹配(类似 switch-case)二、数据结构解构匹

Flask 验证码自动生成的实现示例

《Flask验证码自动生成的实现示例》本文主要介绍了Flask验证码自动生成的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习... 目录生成图片以及结果处理验证码蓝图html页面展示想必验证码大家都有所了解,但是可以自己定义图片验证码

kotlin中的模块化结构组件及工作原理

《kotlin中的模块化结构组件及工作原理》本文介绍了Kotlin中模块化结构组件,包括ViewModel、LiveData、Room和Navigation的工作原理和基础使用,本文通过实例代码给大家... 目录ViewModel 工作原理LiveData 工作原理Room 工作原理Navigation 工

Python Excel实现自动添加编号

《PythonExcel实现自动添加编号》这篇文章主要为大家详细介绍了如何使用Python在Excel中实现自动添加编号效果,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、背景介绍2、库的安装3、核心代码4、完整代码1、背景介绍简单的说,就是在Excel中有一列h=会有重复

在VSCode中本地运行DeepSeek的流程步骤

《在VSCode中本地运行DeepSeek的流程步骤》本文详细介绍了如何在本地VSCode中安装和配置Ollama和CodeGPT,以使用DeepSeek进行AI编码辅助,无需依赖云服务,需要的朋友可... 目录步骤 1:在 VSCode 中安装 Ollama 和 CodeGPT安装Ollama下载Olla

Springboot的自动配置是什么及注意事项

《Springboot的自动配置是什么及注意事项》SpringBoot的自动配置(Auto-configuration)是指框架根据项目的依赖和应用程序的环境自动配置Spring应用上下文中的Bean... 目录核心概念:自动配置的关键特点:自动配置工作原理:示例:需要注意的点1.默认配置可能不适合所有场景