相敏检波原理及数字实现


前言

主要介绍了2022年江苏省大学生电子设计竞赛E题(声源定位跟踪系统)所用到的主要技术原理。


一、相敏检波的应用背景

请添加图片描述
如图所示,我们的目标是测量出乙、丙两地到甲地的距离差。
①但是我们是没有尺的,我们唯一能控制的是在甲地的一个喇叭,因此我们控制该喇叭发出声音的频率w。
②此时我们会在乙、丙两地收到两个同频,不同幅不同相的信号,之后通过测量两地的相位差,来达到测量距离差的目的。
③有了相位差delta_fai后,根据w=2paif,t=delta_fai/w,delta_d = v(声速)*t。即可求出距离差。

二、具体操作步骤

请添加图片描述
1.设置甲地喇叭的声音频率为1kHz,即f=1000,w=2paif。
设置采样频率为10kHz,这里满足了香农采样定理的实际应用,采样频率应是信号频率的八倍以上,以保证信号不失真,此时在一个声音的周期内可以采样10个点(f_采样=10f_信号)。
设乙地单片机采得信号为 A_1
sin(wt+fai_1) (1)
设丙地单片机采得信号为A_2*sin(wt+fai_2) (2)
此时我们还需人为在单片机产生两个理想信号
sinwt (3)
coswt (4)
用(1)×(3)得(5)
(1)×(4)得(6)
对(5)式累计200次后,可滤除其中的交流分量而只保留直流分量,同理对(6)式累计两百次。之后利用arctan函数即可求出fai_1.
之后再用(2)×(3),(2)×(4)可求出fai_2。
delta_fai = fai_2-fai_1

三、相敏检波数字实现

虽然原理比较简单,但是自己写起代码来还是有很多注意点的,下方主要粘贴了和本文相关的部分代码。
理想信号是利用matlab对sin函数和cos函数等分取了10个值产生的。
还有一点是计算相位差时是从第300个点开始取的,因为前70个(左右)取得点因为数字滤波器的原因是不稳定的,索性从第三百个点开始取。
下图是乙、丙两地采得的信号值(即两路adc值),解释了为什么从第三百个点开始计算。
在这里插入图片描述

/*----------------理想信号-------------------*/
float sinwt[10] = {0,0.5877853,0.9510565,0.9510564,0.5877850,0,-0.5877855,-0.9510566,-0.9510563,-0.5877847};//理想正弦信号
float coswt[10] = {1,0.8090169,0.3090168,-0.3090171,-0.8090171,-1,-0.8090167,-0.3090165,0.3090175,0.8090173};//理想余弦信号

	if(fai_i<300)
	{
		A0sinwt[fai_i] = data1;
		A1sinwt[fai_i] = data2;
		fai_i++;	
	}
		if((fai_i == 300) && (fai_j!=200))
	{
		for(fai_j = 0; fai_j<200; fai_j++)
		{
			X0wt[fai_j] = A0sinwt[fai_j+100] * sinwt[fai_j%10];
			Y0wt[fai_j] = A0sinwt[fai_j+100] * coswt[fai_j%10];
			X1wt[fai_j] = A1sinwt[fai_j+100] * sinwt[fai_j%10];
			Y1wt[fai_j] = A1sinwt[fai_j+100] * coswt[fai_j%10];
			X0_sum += X0wt[fai_j];
			Y0_sum += Y0wt[fai_j];
			X1_sum += X1wt[fai_j];
			Y1_sum += Y1wt[fai_j];
		}
		X0_ave = X0_sum/200;
		Y0_ave = Y0_sum/200;
		X1_ave = X1_sum/200;
		Y1_ave = Y1_sum/200;
		X0_sum = 0;
		Y0_sum = 0;
		X1_sum = 0;
		Y1_sum = 0;
		if(flag_adc == 1)
		{
			fai_0 = atan2(Y0_ave,X0_ave)*180/3.1415926;
			fai_1 = atan2(Y1_ave,X1_ave)*180/3.1415926;		
			delta_fai01 = fai_0-fai_1;
			flag = 1;
//			delta_fai01 = Ave_Delta_fai01(delta_fai01);
//			Delta_fai01_KLM(0);
			d_0 = delta_fai01 * 0.944444;			//单位mm,(fai0-fai1)*340*10e3(声速,单位mm)/(360 * 1000)	  d = v*t = v*delta_fai/(2pai*f)		 	
		}
	}
  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数字相敏检波是一种用于解调模拟信号的技术,可以将模拟信号转换为数字信号进行处理。FPGA(可编程逻辑门阵列)是一种可编程的电子器件,可以实现数字逻辑电路的功能。因此,可以使用FPGA来实现数字相敏检波实现数字相敏检波的过程可分为以下几个步骤: 1. 模拟信号采样:首先将模拟信号通过模拟转数字(ADC)转换器采样为数字信号。ADC的采样率要满足信号最大频率的两倍以上,以避免混叠现象的产生。 2. 数字均衡滤波:通过数字滤波器对采样的数字信号进行滤波。相敏检波需要使用带通滤波器,以选择感兴趣的频率范围内的信号,并滤除其他频率的干扰。 3. 相敏检波器设计:相敏检波器主要包含相位锁环电路和数字锁相环(PLL),用于提取模拟信号的相位和频率信息。相敏检波器的设计可以使用数字信号处理(DSP)算法或者硬件电路实现。 4. 数字解调:通过相敏检波器提取的相位和频率信息,对原始模拟信号进行解调。可以使用相位解调或频率解调算法,将数字信号恢复为模拟信号。 5. 数字滤波和重构:对解调后的信号进行数字滤波和重构,以恢复信号的原始频谱和波形。 通过在FPGA中实现上述步骤,可以完成数字相敏检波的功能。由于FPGA具有可编程性和并行运算能力,可以高效地实现数字信号处理算法和电路的功能。同时,FPGA也可以通过重新编程的方式进行性能优化和功能扩展,适应不同的应用需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值