51uwb 定位框架-高頻率高容量測試代碼


我們的51uwb 開源框架推出也有一段時間了,近期優化TWR定位,實現了TWR高容量高頻率定位。

測試發現,目前代碼算是TWR的極限了。

主要有以下幾個特點

1 高頻率,實際測試結果

A .一標簽對一基站,點對點測距頻率可以達到400Hz

B 一標簽對三基站,TWR定位頻率可以達到130Hz

從數據上可以看出,基本就是1s內可以實現400次測距,基站相當於一個分母,如果1標簽+10個基站,基本應該可以到40hz。

修改定位頻率代碼非常簡單,只需要改一個宏即可。例如下面,最大頻率為130hz。

#define MAX_FREQ_HZ 130  
#define MAX_TX_Node 20
#define  TIM3_ReLoad   (int)(10000/(MAX_FREQ_HZ*MAX_ANTHOR)) 

 2 大容量

為了實現大容量,我們用定時器方法,控制標簽發送。 標簽以固定間隔和每個基站測距。 為了解決標簽沖突,我們代碼增加了沖突處理機制,當發現沖突后,標簽進行隨機延時,重新啟動定時器,讓沖突節點錯開,以減小沖突。

主要代碼

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
    if (htim->Instance == htim3.Instance)
    {
        HAL_TIM_Base_Stop(&htim3);

        /* Toggle LED */
        if( Tag_receive_poll ==  0)
        {
            if(Dest_Address == DEST_BEGIN_ADDR)
            {
                HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4);
            }
            time_count = portGetTickCnt();
            dwt_forcetrxoff();
            BPhero_Distance_Measure_Specail_TAG();
            HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_8);
            TIM3->ARR = TIM3_ReLoad;
        }
        else
        {
            HAL_TIM_Base_Stop(&htim3);
            TIM3->ARR = TIM3_Delay_Step*((SHORT_ADDR%10)+1);//random delay
            Tag_receive_poll = 0;
        }
        HAL_TIM_Base_Start(&htim3);
    }
}

 

更多完整代碼,參考51uwb.cn論壇

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM