Существуют радио трансиверы, которые умеют измерять точное время отправки и приема бинарных радио пакетов. Под словом точно подразумевается, что с дискретизацией 15ps. В качестве примера можно привести ASIC DW1000. Эта очень полезная функция так как открывает дорогу для измерения расстояния между трансиверами.

Про чип DW1000 можно почитать тут.

Однако сам по себе чип DW1000 на аппаратном уровне не умеет вычислять TOF, которое фигурирует в формуле вычисления расстояние между трансиверами.

Вычисление TOF это чисто программная работа которая должна осуществляться на уровне Firmware.

Про принцип измерения дальности между двумя радио трансиверами уже был текст тут.

Но тот метод SS-TWR дает низкую точность измерений так как не учитывает нестабильность кварцевых резонаторов. Для компенсации нестабильности кварцевого резонатора на двух экземплярах UWB трансиверов применяют технологию DS-TWR.

Про вывод формулы вычисления дальности с учетом компенсации нестабильноси частоты кварцевых резонаторов есть вот этот текст.

Формула вычисления времени распространения радиоволны
Формула вычисления времени распространения радиоволны

Вот временная диаграмма одной сессии измерения дальности при протоколе DS-TWR.

DS-TWR сессия состоит из двух симметричных SS-TWR фаз (phase1, phase2). Каждая фаза это по сути обыкновенный SS TWR.

Как реализовать протокол DS-TWR в коде? Тут просто напрашивается конечно автоматная методология разработки ПО.

Вот так выглядит конечный автомат для управления сессией измерения дальности.

Толстой линией показан успешный цикл выполнения конечного автомата.

Если запустить протокол DS-TWR на чипах DW1000 прямо из коробки, то алгоритм показывает расстояние больше, чем есть на самом деле. Порядка 155 метров, когда как на самом деле расстояние порядка 2 метров. В спеке сказано, что трансиверы DW1000 надо калибровать. Стоит отметить, что измеренный ToF содержит в себе время запаздывания распространения сигнала в антенне при отправке и при приеме. Поэтому при пересчете измеренного ToF в метры и получится большое число метров. Трудность в том, что это внутреннее время распространения еще и варьируется между экземплярами чипов DW1000. Также на это влияют пассивные компоненты в аналоговой цепи антенны. Для учитывания этого и делают калибровку устройства.

Для калибровки запаздывания антенны необходимо собрать импровизированный стенд. Пришлось не только программировать, но и чертить, бегать по строительным рынкам, клеить, сверлить, затачивать рашпилем углы металла и конечно же шкурить. Подробнее по изготовление механики написано тут https://habr.com/ru/articles/709932/
В результате получилась такая установка.

Стенд для калибровки UWB. Расстояние между антеннами 0.89 m
Стенд для калибровки UWB. Расстояние между антеннами 0.89 m



После первых экспериментов с измерением дальности по UWB получилась точность измерения порядка +-0,3...0,45м.

Вывод

Если трансивер позволяет определять время отправки и приема радиосигнала, то можно вычислить расстояние между радио трансиверами прибегнув к протоколу DS-TWR. На модулях DW1000 удается измерять расстояние с точностью порядка -+45см.

Словарь

Акроним

Расшифровка

DS TWR

Double Side Two Way Ranging

SS TWR

Single Side Two Way Ranging

ПО

Программное обеспечение

UWB

Ultra-wideband

ASIC

Application-specific integrated circuit

TOF

Time-of-flight

TWR

Two-Way Ranging

Links

https://habr.com/ru/post/723594/
https://habr.com/ru/post/719542/

https://www.qorvo.com/products/p/DW1000

https://habr.com/ru/articles/709932/

Комментарии (12)


  1. Fangaro
    18.04.2023 21:35
    +3

    Не только не работал с DW1000, но и не слышал ранее про TOF.

    Для меня трансивер, это FT-990, TS-790, IC-721...

    Чернокнижник. )


    1. aabzel Автор
      18.04.2023 21:35
      +1

      Тут речь идет об ASIC трансиверах, которые умеют передавать бинарные данные.


  1. nick-for-habr
    18.04.2023 21:35
    +2

    У вас в заголовке "для" написано с маленькой буквы, непорядок. Вообще конечно лучше всё капсом писать - так заметнее всего, но и все слова с заглавных - то же хорошо смотрится.


  1. kipar
    18.04.2023 21:35
    +1

    Работал, получалась погрешность полметра-метр, а если есть препятствия то и больше, для нашей задачи это было многовато, так что проект пришлось отложить.

    Хотя вот этой формулы я не припомню, так что погрешность кварца не компенсировалась.


    1. aabzel Автор
      18.04.2023 21:35

      для нашей задачи это было многовато

      Что у Вас была за задача?


      1. kipar
        18.04.2023 21:35
        +1

        Наводить театральный прожектор на актера. Задумка была поставить 4-5 датчиков по углам сцены, актеру дать брелок, в нем чип Decawave для статического положения и MEMS-акселерометр\гироскоп для уточнения при быстрых перемещениях.

        Выяснилось, что MEMS (во всяком случае, тот что на плате stm32f3discovery) годится для определения угловой ориентации, но уж никак не для получения линейной скорости и тем более позиции. Ну а Decawave при заявленной точности в сантиметры мог и на метр ошибиться. Теоретически если поставить много датчиков то точность можно было бы улучшить, но в целом проект стал выглядеть сомнительно.


  1. lampa
    18.04.2023 21:35
    +1

    Цена на эти модули кусачая, но с другой стороны какие здесь аналоги? Я в своё время пытался с десяток esp32 подружить между с собой с помощью RSSI, но на практике это не работает, определить кто на каком расстоянии +-10м сложно


    1. aabzel Автор
      18.04.2023 21:35


    1. aabzel Автор
      18.04.2023 21:35


      1. lampa
        18.04.2023 21:35
        +1

        да, но по сравнению с отладочными платами esp32 за 150-250рэ - разница существенная, уже не получится взять и купить 10-20 штучек поиграть)


    1. aabzel Автор
      18.04.2023 21:35

      Цена на эти модули кусачая, но с другой стороны какие здесь аналоги?

      Ультразвуком еще можно indoor навигацию делать. https://marvelmind.com/


  1. wigneddoom
    18.04.2023 21:35
    +1

    Тоже делал в своё время подобное. Ну и ещё был nanotron nanoloc с sds-twr, но там аппаратно. Основная беда, что долго замеры делать для триангуляции при большом количестве устройств. Интересно как TOA на dwm1000 сделано.