Принцип Определения Дальности Между UWB Трансиверами (Конечный Автомат для DS-TWR)
Существуют радио трансиверы, которые умеют измерять точное время отправки и приема бинарных радио пакетов. Под словом точно подразумевается, что с дискретизацией 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. Также на это влияют пассивные компоненты в аналоговой цепи антенны. Для учитывания этого и делают калибровку устройства.
Для калибровки запаздывания антенны необходимо собрать импровизированный стенд. Пришлось не только программировать, но и чертить, бегать по строительным рынкам, сверлить, затачивать и конечно же шкурить. В результате получилась такая установка.
Стенд для калибровки 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