自动衰减器工作流程

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

相关文章

深入浅出Spring中的@Autowired自动注入的工作原理及实践应用

《深入浅出Spring中的@Autowired自动注入的工作原理及实践应用》在Spring框架的学习旅程中,@Autowired无疑是一个高频出现却又让初学者头疼的注解,它看似简单,却蕴含着Sprin... 目录深入浅出Spring中的@Autowired:自动注入的奥秘什么是依赖注入?@Autowired

redis-sentinel基础概念及部署流程

《redis-sentinel基础概念及部署流程》RedisSentinel是Redis的高可用解决方案,通过监控主从节点、自动故障转移、通知机制及配置提供,实现集群故障恢复与服务持续可用,核心组件包... 目录一. 引言二. 核心功能三. 核心组件四. 故障转移流程五. 服务部署六. sentinel部署

SpringBoot集成XXL-JOB实现任务管理全流程

《SpringBoot集成XXL-JOB实现任务管理全流程》XXL-JOB是一款轻量级分布式任务调度平台,功能丰富、界面简洁、易于扩展,本文介绍如何通过SpringBoot项目,使用RestTempl... 目录一、前言二、项目结构简述三、Maven 依赖四、Controller 代码详解五、Service

基于Redis自动过期的流处理暂停机制

《基于Redis自动过期的流处理暂停机制》基于Redis自动过期的流处理暂停机制是一种高效、可靠且易于实现的解决方案,防止延时过大的数据影响实时处理自动恢复处理,以避免积压的数据影响实时性,下面就来详... 目录核心思路代码实现1. 初始化Redis连接和键前缀2. 接收数据时检查暂停状态3. 检测到延时过

Python中的filter() 函数的工作原理及应用技巧

《Python中的filter()函数的工作原理及应用技巧》Python的filter()函数用于筛选序列元素,返回迭代器,适合函数式编程,相比列表推导式,内存更优,尤其适用于大数据集,结合lamb... 目录前言一、基本概念基本语法二、使用方式1. 使用 lambda 函数2. 使用普通函数3. 使用 N

MySQL 临时表与复制表操作全流程案例

《MySQL临时表与复制表操作全流程案例》本文介绍MySQL临时表与复制表的区别与使用,涵盖生命周期、存储机制、操作限制、创建方法及常见问题,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随小... 目录一、mysql 临时表(一)核心特性拓展(二)操作全流程案例1. 复杂查询中的临时表应用2. 临时

MySQL 升级到8.4版本的完整流程及操作方法

《MySQL升级到8.4版本的完整流程及操作方法》本文详细说明了MySQL升级至8.4的完整流程,涵盖升级前准备(备份、兼容性检查)、支持路径(原地、逻辑导出、复制)、关键变更(空间索引、保留关键字... 目录一、升级前准备 (3.1 Before You Begin)二、升级路径 (3.2 Upgrade

setsid 命令工作原理和使用案例介绍

《setsid命令工作原理和使用案例介绍》setsid命令在Linux中创建独立会话,使进程脱离终端运行,适用于守护进程和后台任务,通过重定向输出和确保权限,可有效管理长时间运行的进程,本文给大家介... 目录setsid 命令介绍和使用案例基本介绍基本语法主要特点命令参数使用案例1. 在后台运行命令2.

SpringBoot实现RSA+AES自动接口解密的实战指南

《SpringBoot实现RSA+AES自动接口解密的实战指南》在当今数据泄露频发的网络环境中,接口安全已成为开发者不可忽视的核心议题,RSA+AES混合加密方案因其安全性高、性能优越而被广泛采用,本... 目录一、项目依赖与环境准备1.1 Maven依赖配置1.2 密钥生成与配置二、加密工具类实现2.1

Python使用Tenacity一行代码实现自动重试详解

《Python使用Tenacity一行代码实现自动重试详解》tenacity是一个专为Python设计的通用重试库,它的核心理念就是用简单、清晰的方式,为任何可能失败的操作添加重试能力,下面我们就来看... 目录一切始于一个简单的 API 调用Tenacity 入门:一行代码实现优雅重试精细控制:让重试按我