自动衰减器工作流程

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 Security中用户名和密码的验证完整流程

《SpringSecurity中用户名和密码的验证完整流程》本文给大家介绍SpringSecurity中用户名和密码的验证完整流程,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定... 首先创建了一个UsernamePasswordAuthenticationTChina编程oken对象,这是S

浏览器插件cursor实现自动注册、续杯的详细过程

《浏览器插件cursor实现自动注册、续杯的详细过程》Cursor简易注册助手脚本通过自动化邮箱填写和验证码获取流程,大大简化了Cursor的注册过程,它不仅提高了注册效率,还通过友好的用户界面和详细... 目录前言功能概述使用方法安装脚本使用流程邮箱输入页面验证码页面实战演示技术实现核心功能实现1. 随机

SpringBoot集成LiteFlow工作流引擎的完整指南

《SpringBoot集成LiteFlow工作流引擎的完整指南》LiteFlow作为一款国产轻量级规则引擎/流程引擎,以其零学习成本、高可扩展性和极致性能成为微服务架构下的理想选择,本文将详细讲解Sp... 目录一、LiteFlow核心优势二、SpringBoot集成实战三、高级特性应用1. 异步并行执行2

Android ViewBinding使用流程

《AndroidViewBinding使用流程》AndroidViewBinding是Jetpack组件,替代findViewById,提供类型安全、空安全和编译时检查,代码简洁且性能优化,相比Da... 目录一、核心概念二、ViewBinding优点三、使用流程1. 启用 ViewBinding (模块级

HTML5实现的移动端购物车自动结算功能示例代码

《HTML5实现的移动端购物车自动结算功能示例代码》本文介绍HTML5实现移动端购物车自动结算,通过WebStorage、事件监听、DOM操作等技术,确保实时更新与数据同步,优化性能及无障碍性,提升用... 目录1. 移动端购物车自动结算概述2. 数据存储与状态保存机制2.1 浏览器端的数据存储方式2.1.

Spring @Scheduled注解及工作原理

《Spring@Scheduled注解及工作原理》Spring的@Scheduled注解用于标记定时任务,无需额外库,需配置@EnableScheduling,设置fixedRate、fixedDe... 目录1.@Scheduled注解定义2.配置 @Scheduled2.1 开启定时任务支持2.2 创建

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2

SpringBoot整合Flowable实现工作流的详细流程

《SpringBoot整合Flowable实现工作流的详细流程》Flowable是一个使用Java编写的轻量级业务流程引擎,Flowable流程引擎可用于部署BPMN2.0流程定义,创建这些流程定义的... 目录1、流程引擎介绍2、创建项目3、画流程图4、开发接口4.1 Java 类梳理4.2 查看流程图4

LiteFlow轻量级工作流引擎使用示例详解

《LiteFlow轻量级工作流引擎使用示例详解》:本文主要介绍LiteFlow是一个灵活、简洁且轻量的工作流引擎,适合用于中小型项目和微服务架构中的流程编排,本文给大家介绍LiteFlow轻量级工... 目录1. LiteFlow 主要特点2. 工作流定义方式3. LiteFlow 流程示例4. LiteF

java Long 与long之间的转换流程

《javaLong与long之间的转换流程》Long类提供了一些方法,用于在long和其他数据类型(如String)之间进行转换,本文将详细介绍如何在Java中实现Long和long之间的转换,感... 目录概述流程步骤1:将long转换为Long对象步骤2:将Longhttp://www.cppcns.c