UWB-DW1000的天线延迟补偿和发射功率调节(二)

1.造成天线延迟的原因

要说UWB的天线延迟,我们就得知道发送时间戳和接收时间戳,时间戳和 UWB传输数据的协议IEEE 802.15.4有关,我们先看一下帧格式
在这里插入图片描述
这个帧格式的具体内容我们后面文章再详细说明,先看一下发送时间戳和接收时间戳。

发送时间戳:DW1000芯片发送PHR部分的第一位时记录下的时间。
接收时间戳:DW1000芯片接收到PHR部分的第一位时记录的时间。

发送到接收的过程是发送端的DW1000把帧发送到天线,然后天线发到接收端的天线,然后再到接收端的DW1000。
在这里插入图片描述从图中我们可以看出,两个设备之间的距离在传输电磁波所需时间是T2,但是时间戳记录的时间却多了T1和T3,且T2是在空气中传播,T1和T3是在固体中传播。

电磁波在空气中的传播速度接近光速(c0=299792458m/s),所以我们在测距的时候是以光速来计算距离。而电磁波在固体中传播的速度却比在空气中小得多,而且会根据芯片温度,发射和接收功率等的影响。

假设T1和T3总计才用了0.1us的时间,但是距离误差已经是 299792458 * (1*10^(-7) ) = 29.979米
这已经不是误差了,已经到了没有办法测距的地步。所以必须进行天线的延迟校准。

2.天线延迟校准

为了精确测量距离,需要精确计算时间戳,所以天线延迟必须是已知的。所以校准就要实际测试去调试。比如实际距离是10米,UWB测的距离是12米,则天线延迟就改大。天线延迟数值改大,则测量距离变小,天线延迟数值改小,则测量距离变大。

#define TX_ANT_DLY 16436 
#define RX_ANT_DLY 16436  //分别进行发送和接收的天线延时

#define TX_ANT_DLY 0
#define RX_ANT_DLY 32950  //全部加到接收天线延时或者也可以全部加到发送天线延时

dwt_setrxantennadelay(RX_ANT_DLY); 
dwt_settxantennadelay(TX_ANT_DLY);

//延时发送
final_tx_time = (resp_rx_ts + (RESP_RX_TO_FINAL_TX_DLY_UUS * UUS_TO_DWT_TIME)) >> 8;
dwt_setdelayedtrxtime(final_tx_time);
final_tx_ts = (((uint64)(final_tx_time & 0xFFFFFFFE)) << 8) + TX_ANT_DLY;//需要加发送延迟
dwt_starttx(DWT_START_TX_DELAYED | DWT_RESPONSE_EXPECTED );

本来天线延迟可以和并到一起,就是把T1 和 T3 和并到一起。这样校准比较方便。如果没有用到延时发送,到无所谓,但是用到延时发送时,延时发送时间里面有 TX_ANT_DLY,这样就会导致时间戳不对,从而影响测距。所以天线延迟校准最好分开校准。以免造成不必要的误差。

为了在校准过程中达到最高精度,建议使用接收机的功率输入来校准天线延迟,参数级别如下

如果发送机设置为-41.3dBm /MHz,(最大值,使用时一般都用此值)并且使用0 dBi 天线,则发射天线和接收天线的距离会根据表格中的参数来进行校准。

通过选择距离(或者接收功率)来校准组合的发射机和接收机的天线延迟,用于校准和修改接收机的天线延迟,直到设备给出误差允许的范围读数为止。

3 接收功率和发射功率
3.1 接收功率

可以使用公式计算接收功率的估计值(dBm)

C: 是 CIR_PWR 中报告的通道脉冲响应功率值,这是一个16位的值,报告来自信道估计的最高功率部分的累加器大小的平方和,这与接收信号功率有关,该值可用于评估接收信号的质量和,或者LDE算法产生的接收时间戳。
A: PRF为 16 MHz 时 A为 113.77 ,PRF为 64 MHz 时 A为 121.74。
N: 是 RXPACC中报告的序文累积计数值,这可以用来估计接收到的TX前导的长度,也可以在诊断期间作为解释累加器数据的辅助。

所以计算接收功率时,需要读出寄存器 ID 为 0x12 中的 CIR_PWR 值 和 寄存器 ID 为 0x10 的 RXPACC 值,根据上面公式进行计算。
由此得到的接收功率的估计值,该值非常接近低功率时候的实际接收功率,但低于高功率时候的实际接收功率。下面的图显示了实际接收功率和该估计值的功率之间的关系

3.2 发射功率


如图所示,增益控制范围为33.5 dB,由32个0.5 dB的细(混频器增益)控制步长(低5位),和7个3dB的粗(DA增益)步长组成(高3位),为了获得最佳的谱形,应首先调整粗增益,再用细增益进行微调。发射功率由 ID 为 0x1E 的寄存器来控制。
为了获得最佳性能,制造商必须校准每个单元的TX功率,以考虑IC到IC的变化以及不同IC到天线的损耗。通常TX功率设置为光谱发射法规允许的最大值(-41.3 dBm/MHz),并且不超过其他带外限制。
发射功率越高,发射距离越远,但是功率太高会对人或者其他造成危害或影响,所以对发射功率进行限制,不过如果是那种很短的帧,1ms 以内可以发射完,并且在同1Ms内 不再进行发送,则发射功率可以超过 -41.3 dBm 的限制。为了利用这一点,DW1000包含了智能发射功率控制功能,当帧短时自动提高传输的TX功率。
为了防止测量范围外其他UWB信号的干扰,可以对不同距离进行设置不同的发射功率。只要把该发射功率设置到可以到达该距离的功率就行,不仅减小其他UWB 设备的干扰,还减少了功耗。

u8 SetUwbTxPowerWithDis(u8 Dis)
{
	double TxPower = 30;

	if(Dis == 0 || Dis > 200)
		return ERROR;
	
	//大功率模块
	if(HardWareVer == HG_HIGH_POWER_A)
	{
		if(Dis <= 5)
			TxPower = 10;
		else if(Dis <= 10)
			TxPower=20;
		else if(Dis <= 15)
			TxPower=25;
		else if(Dis <= 35)
			TxPower=30;
		else
			TxPower=33.5;	
	}
	else
	{
		if(Dis <= 5)
			TxPower=20;
		else if(Dis <= 10)
			TxPower=25;
		else if(Dis <= 15)
			TxPower=30;
		else
			TxPower=33.5;
	}
	
	dBToTxPowerRegValue(TxPower,&TXpowerSetRegValue);
	dwt_write32bitreg(TX_POWER_ID, TXpowerSetRegValue);		//把发射功率恢复到进入数传模式之前的值
	//printf("Txpower anto Set to %.1lf %08x\n",TxPower,TXpowerSetRegValue);

	return SUCCESS;
}

//dB值转换成四字节重复的设置值
u8 dBToTxPowerRegValue(double dB,u32 *TxpowerRegValue)
{
	double CoarsedBValue,FinedBValue;
	u8 CoarseRegValue,FineRegValue;
	u8 RegValue;
	
	if(dB > 33.5)
		return ERROR;
	
	CoarsedBValue = (u8)(dB/3)*3;
	if(CoarsedBValue > 18)
		CoarsedBValue = 18;
	//printf("CoarsedBValue = %lf\n",CoarsedBValue);
	
	FinedBValue = dB - CoarsedBValue;
	if(FinedBValue > 15.5)
		FinedBValue = 15.5;

	//printf("FinedBValue = %lf\n",FinedBValue);

	CoarseRegValue = 0x00 + ((18 - (u8)CoarsedBValue)/3)*2;
	FineRegValue = (u8)(FinedBValue/0.5);

	//printf("CoarseRegValue = %d\n",CoarseRegValue);
	//printf("FineRegValue = %d\n",FineRegValue);
	
	RegValue = (CoarseRegValue<<4) + FineRegValue;
	//printf("RegValue = %x\n",RegValue);

	
	*TxpowerRegValue = (u32)RegValue;
	*TxpowerRegValue += (u32)RegValue<<8;
	*TxpowerRegValue += (u32)RegValue<<16;
	*TxpowerRegValue += (u32)RegValue<<24;

	return SUCCESS;
	
	
}

  • 4
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值