#26 Re: Апаратні питання » Проблема с nrf24l01 » 2021-03-26 13:03:38

Усилитель сигнала может потреблять немалый ток. Вполне вероятно, что под нагрузкой схема питания не справляется и напряжение на входе какого-то элемента падает ниже допустимого (т.н. brown-out). Для диагностики попробуйте взять либо мощнее аккумулятор, либо подключите к тому, что есть, конденсатор на несколько сотен микрофарад.

Проблема на низких скоростях может быть в том, что приемнику сложно разобрать сигнал. На высокой скорости это может не ощущаться, потому что дистанция между пакетами достаточна. А на низкой скорости этоприблизительновыглядиткактекстбезпробелов. Возможно, имеет смысл поэкспериментировать с кодированием сигнала.

#27 Re: Програмування Arduino » Хто допоможе переробить прошивку на тахометр » 2020-12-11 15:58:16

renoshnik пише:

Не лучший ресурс вы выбрали ....   :-)

Вы имеете ввиду alexgyver.ru или forum.arduino.ua?

#28 Re: Апаратні питання » У кого есть мысли о синхронизации? » 2020-12-03 14:00:13

Batu пише:
Mishka пише:

Кстати, если подходит, dx можно не синхронизировать, а иметь изначально с запасом.

Запас ничего не меняет. Устройства не могут обмениваться между собой. контроллер STM 20Мгц.
Нужно конкретное предложение по приемнику и передатчику что б принять один байт, сравнить с собственным номером и выдать 1 на пин. Что б на всех устройствах максимально синхронно запустить другие устройства.

Собственно, запас по задержке как раз и нужен для того, чтобы получатели не обменивались информацией между собой. Единственное условие - размер задержки должен быть одинаковым на всех устройствах.

Радиомодуль может быть произвольный, потому что почти все современные устройства являются мультипротокольными и формируют пакеты программно. Для связи на 100 метров достаточно использовать модули 2.4ГГц. Тот же популярный nRF24 должен подойти прекрасно. Любые другие, включая 865 МГц или 433 МГц - тоже.

#29 Re: Апаратні питання » У кого есть мысли о синхронизации? » 2020-12-03 03:14:16

Кстати, если подходит, dx можно не синхронизировать, а иметь изначально с запасом. Например для случая выше поставить MAX_DX = 20. Но все равно вычислять его, чтобы понимать, когда требуемая задержка выросла до критически большой и текущее значение MAX_DX не подходит для того, чтобы все узлы работали синхронно.

#30 Re: Апаратні питання » У кого есть мысли о синхронизации? » 2020-12-03 03:09:58

Вообще говоря, 170 мкс - это уже неплохой результат.

Если рассуждать о теоретических пределах точности, то синхронность будет, наверное, зависеть от того, насколько одновременно все устройства смогут дешифровать и обработать широковещательный радио пакет. По идее это не зависит от модуляции или каких-то других вещей в радиоканале, но больше от скорости обработки в каждом отдельном устройстве. То есть не так важна длительность нуля или единицы, сколько время обработки фронтов и сборки готового пакета. Время между отправкой пакета до момента, когда пакет будет окончательно собран и вызвано соответствующее прерывание, можно считать емкостью канала между отправителем и получателем. Очевидно, что для разных устройств это время будет разное.

Например, устройство TX генерирует некоторый пакет, состоящий из преамбулы и четырех битов 0101. Его получают три устройства А, В и С. Они могут выполнять команды, которые синхронизированы по переднему фронту. При этом А и В работают на одной и той же частоте, но со смещением фаз генератора частоты, а С работает на частоте в два раза большей, чем у А и В. Из диаграммы видно, что время получения радио пакета будет плюс минус одинаковое. А вот время сборки пакета и вызов прерывания у С занимает времени меньше, чем у А или В:

tx-3rx.png

Обычно в собранный пакет добавляется время, и если его значение берется на начало сборки пакета, то во всех трех случаях оно будет практически совпадать - фазовые расхождения обычно игнорируют (ну только разве что если не требуется что-то экстра, типа АоА). Этот штамп времени можно использовать для того, чтобы точно синхронизировать часы между устройствами и затем выполнять синхронизацию по самому медленному устройству. Обработка прерываний и уж тем более вычисление времени в приложении может сильно повлиять на вычисление точного времени получения пакета, поэтому задача тут в том, чтобы получить это значение на как более раннем этапе, то есть в идеале при сборке пакета.

Например, такой подход реализован в протоколе RBS - Reference Broadcast Synchronization. Один из узлов рассылает специальный пакет, затем каждый узел отмечает время его получения и после этого все узлы неспешно обмениваются этим значением времени, чтобы настроить свои часы относительно друг друга. Протокол можно несколько подправить для данной задачи и вместо того, чтобы обмениваться собственно временем, можно обменяться задержкой от момента получения пакета до момента, когда требуется выполнить некий код синхронно на всех устройствах. Самая большая задержка из всех устройств будет определять задержку на остальных, более быстрых устройствах. Если время реакции суть не так важно, то можно вообще иметь постоянную задержку, достаточно большую, чтобы любое устройство успело обработать все, что необходимо, и синхронно со всеми начать выполнять нужный код после того, как был получен нужный пакет.

В случае, когда нет возможности получить прецизионный штамп времени, предлагаю пойти другим путем. Идея в том, что если ни отправитель, ни получатель не имеют возможности точно сказать, сколько понадобится времени на формирование, отправку и получение пакета, то снимая статистику можно все равно приблизительно вычислить разницу между часами отправителя и конкретного получателя. Она будет равна минимальной разнице во времени среди всех полученных пакетов. Задержка, которую при этом должен иметь получатель, чтобы синхронно с остальными получателями выполнить какое-то действие, должна быть максимальной разницей среди всех получателей.

Например, отправитель высылает пакеты и добавляет в них свое время (на уровне приложения). Пакеты уходят c такими значениями:

X = 120 140 160 180 200

В свою очередь получатели А и В имеют задержку +75 мкс (время опережает Х) и -45 мкс (время отстает от Х) и по факту принимают пакеты в такое время:

A = 204 221 243 260 276
B = 71  92  116 134 151

Разница, соответственно, составляет:

A - X = 84 81 83 80 76,       da = min(A - X) =  76
B - X = -49 -48 -44 -46 -49,  db = max(B - X) = -44

При этом da и db посчитаны почти правильно. Это значит, что в тот момент, когда отправитель Х высылал свои пакеты, время на А и В на самом деле было почти таким:

A* = X + da = 196 216 236 256 276
B* = X + db =  76  96 116 136 156

Далее, максимальная задержка составила:

dx = max(abs([A - X] - da), abs([B - X] - db)) = max(8, 5) = 8

Это значит, что, после того, как и А, и В обменяются этим значением задержки в 8 мкс, если бы они снова получили эти же самые пакеты от Х, они должны были бы совершить синхронное действие в следующие моменты времени:

X =                 120 140 160 180 200
A** = X + da + dx = 204 224 244 264 284
B** = X + db + dx = 84  104 124 144 164

Математически это разница между часами А и В относительно Х:

A** - B** = X + da + dx - (X + db + dx) = da - db

Выполняя алгоритм в потоке, синхронизация будет становится точнее и точнее. Однако нужно отметить, что если таймер на А или Б будет систематически отставать или спешить, ошибка может начать накапливаться и dx начнет расти. Одним из решений можно предложить время от времени синхронизировать таймеры между собой. Еще одно решение - регулярно сбрасывать da и db, а вернее учитывать при их расчете только N последних значений. Тогда окно dx будет все время относительно небольшим.

#31 Re: Апаратні питання » У кого есть мысли о синхронизации? » 2020-12-02 18:29:13

Можно уточнить, сколько  всего устройств, какая требуется точность, и какое допустимое время реакции на событие?

#33 Re: Проекти » Собрать складской робот. » 2020-11-05 00:10:52

Batu пише:
Mishka пише:

Для того, чтобы точно обнаружить местоположение объекта, нужно будет провести триангуляцию.

Для управления движением мало знать местоположение. надо знать и углы. В общем случае необходимо знать кроме координат еще и три угла. Т.е. 6 параметров. Тогда можно планировать движение. И всякие элементы движения. По прямой, вращение, повороты и т.п.

Простите, не совсем понял, углы между чем и чем?

Если речь идет о степенях свободы, то для тележки они ограничены тем, что она стоит параллельно земле. Таким образом возможны всего три степени свободы: две для координат на местности и одна для угла поворота.

Задача интересна тем, что для ее решения нет необходимости разворачивать отдельную систему позиционирования по координатам - изучив местность, и робот и так будет знать, где он находится (так же, как это делает, например, робот-пылесос), и человек. Если робот точно знает, как он ориентирован в пространстве, то установленная на нем антенная решетка позволит определить направление, с которого был получен сигнал от человека (AoA). Далее, развернуться и двигаться в нужную сторону не составит труда. Позвать такого робота сможет буквально каждый сотрудник. Причем брелок-поводок у человека стоит копейки или же вообще может быть встроен в мобильный телефон, а стоимость модуля для робота уложится до сотни долларов, что вполне согласуется с ценой самого робота.

Direction Finding не отменяет ничего из того, что есть у современного робота - напротив, добавляет ряд интересных возможностей.

#34 Re: Проекти » Собрать складской робот. » 2020-11-04 18:04:01

Direction Finidng может только указать направление. При наличии антенной решетки, расположенной на одной линии - в плоскости. При использовании двухмерной решетки - в пространстве. Однако расстояние до объекта будет неизвестным, и его можно только приближенно получить через RSSI. Для того, чтобы точно обнаружить местоположение объекта, нужно будет провести триангуляцию.

Что касается следования за человеком, то да, Direction Finding можно использовать, как вектор направления, а обход препятствий можно реализовать через другие датчики - ультразвук, IR, LIDAR, и пр. По сути это будут готовые входные данные для алгоритма поиска A*, где цель может свободно перемещаться.

Batu, так ИИ достаточно много? ;-)

#35 Re: Проекти » Собрать складской робот. » 2020-11-04 16:17:59

SFT пише:

Берем))) Но нужно сказать навигация по грядкам дело не простое. И GPS тут врядли сильно поможет. В Украине, кстати, есть определенный интерес к подобным разработкам.

Давайте попробуем сделать на Bluetooth Direction Finding. Точность - несколько сантиметров.

#36 Re: Програмування Arduino » Потрібна допомога » 2020-11-02 15:49:36

Судя по всему, когда выполняется delay(), весь остальной код просто останавливается и ждет возврата из функции, которая вызвала delay(). Чтобы blinker() работал, как ожидается, вся программа должна быть переписана в виде обработчиков асинхронных прерываний, тогда delay() может быть прерван в любой момент.

Вместо этого предлагается управлять светодиодом, синхронизировав его с часами, которые идут независимо от delay(). Таким образом каждый раз loop() будет иметь возможность оценить значение таймера и принять решение, как переключить светодиод. Например, если таймер меньше значения X, то светодиод зажечь. Если больше - погасить. Подробнее:

https://www.arduino.cc/en/Tutorial/Buil … thoutDelay

Для воспроизведения более сложной последовательности можно запомнить время начала этой последовательности, а затем зажигать или гасить светодиод по прошествии определенного времени относительно начала. При этом сам код переключения светодиода должен выполняться при каждом цикле loop():

#define BLINKER_NOTIME -1

void()
{
    unsigned long currentms = millis();
    long long blinkerstartms;

    // ... some blinker related event happened ...

    switch (event) {
    case BLINKER_ON_EVT:
        // engage the blinker()
        blinkerstartms = currentms;
        break;

    case BLINKER_OFF_EVT:
        blinkerstartms = BLINKER_NOTIME;
        break;

    default:
        // nothing to do
    }

    if (blinkerstartms != BLINKER_NOTIME)
        blinkerstartms = blinker(blinkerstartms, currentms);
}

long long
blinker(unsigned long startms, currentms)
{
    // defined as offsets cumulative 0 + 8000 + 5000 + 8000 + 10000 + 18000
    unsigned int blinkms[] = {0, 8000, 13000, 21000, 31000, 49000};

    if (startms < 0)
        return BLINKER_NOTIME;

    // invert the blinker every time it reaches the next blinkms value
    for (i = 0; i < sizeof(blinkms)/sizeof(blinkms[0]); i++) {
        // TODO: handle the timer overflows
        if (blinkms[i] >= startms - currentms) {
            digitalWrite(LED_ADDR, i % 2 ? LOW : HIGH);
            return startms;
    }

    // we're done with the blinkms[] array - shut the blinker down
    return BLINKER_NOTIME;
}

Извините, никогда не писал для Ардуино, но идею, надеюсь, передать удалось.

#37 Re: Різне » AT-09, HM-10, BLE 4.0 нарадьте » 2020-10-23 00:37:28

VVV пише:

nRF52 - варіант цікавий, розглядав, але він занадто габаритний, ціна, не являється низько енергозатратним - так як і esp + з мінусів - сканується мережа, CR2032 - не потягне, а на Li-po - суттєве збільшення конструкції брелока.

Цена колеблется от 2 до 30 долларов за модуль.

А вот в остальном позволю себе с Вами не согласиться. Потребление nRF52 в режиме ожидания - менее 1 мкА. В режиме передачи - около 10 мА. Если вы включаете брелок кнопкой и делаете это всего несколько раз в день, то от CR2032 такой брелок проработает больше пяти лет.

Микросхема nRF52 занимает размеры от 2.5х2.5 мм до 7x7 мм (в зависимости от модели), и вместе с антенной может уместится в размеры одной монеты. Известны устройства, которые одеваются на зуб, и при этом содержат и батарейку, и датчик для измерения кислотности в полости рта.

Недавно для похожих целей мне пришлось сделать модуль прямо с держателем батареи CR2032. Он имеет диаметр 25 мм (как 5 копеек) и содержит две кнопки на борту, RGB светодиод, а так же разъем, к которому на двусторонний скотч можно присоединить свой собственный модуль (у меня есть готовый инерционный модуль на 9 осей, и солнечная зарядка для аккумулятора ML2032, чтобы можно было его оставить в труднодоступном месте):

raybeacon%20-%203.jpg

Торчащие "уши" - это крепление и разъем Tag-Connect для подключения отладчика. Оба можно смело отрезать в случае ненадобности.

#38 Re: Різне » AT-09, HM-10, BLE 4.0 нарадьте » 2020-10-21 22:57:18

Попробуйте один из модулей nRF52. Они не совместимы с Arduino, но c SoftDevice вы получите до двадцати одновременных ролей в каждом модуле. Возможно, Zephyr может поддерживать больше, пока не разбирался.

Также интересно, почему не подходит ESP32?

#39 Re: Різне » Продам носимые контроллеры nRF52 » 2020-10-19 23:02:27

Модуль nRF52832

Основные параметры:

  • Размер 20х20 мм, диагональ 1 дюйм.[/]

  • Работает от одной батарейки CR2032 / CR2025 (напряжение 1.8V - 3.6V)

  • MCU nRF52832: Cortex-M4F 64МГц, 512KB flash, 64KB RAM, Bluetooth® 5.0

  • Транзитный разъем Hirose DF40 30 выводов. Высота стека сверху 1.5 мм. Высота стека снизу от 1.5 до 3.5 мм.

  • 17хGPIO, из которых 4 вывода 12-бит АЦП,  2 вывода для NFC, 3 вывода SWD, питание 3V, питание 5V, батарея, земля

  • Один оранжевый светодиод

  • Площадка для аппаратного сброса контроллера

В комплекте модуль для батарейки CR2032.

В наличии одна штука.

EjwEPEWWAAAudM_?format=jpg

#40 Re: Проекти » Мишени для лазерного тира » 2020-10-19 15:58:49

Игорь, подскажете, пожалуйста, это в формате тренировок IPSC / IDPA или для развлекательного тира, типа лазертаг?

#41 Re: Апаратні питання » Синхронная работа 8 ардуино Мега » 2020-10-19 15:41:25

Источником нарушения синхронизации могут выступать разные причины. Часы реального времени, скорее всего, имеют относительно высокую точность хода, поэтому смещение сигналов будет наблюдаться лишь по прошествии нескольких часов, а то и дней. Хотя если и кварцы, и сами часы на разных модулях разные, то это может стать заметным в несколько быстрее.

Скорее всего проблема в задержках обусловлена обработкой прерываний от радио части. Особенно это будет заметно, если код написан на основе delay() или usleep(). Радио протокол, будь то WiFi или BLE подразумевает достаточно жесткий тайминг: если в него не успевать вкладываться, то задержки будут приводить к сбоям в соединении. Поэтому эти прерывания имеют обычно самый высокий приоритет, и delay() будет вынужден ждать, пока не закончится обработка такого прерывания.

Чтобы решить эту задачу, включение светодиодов можно синхронизировать с одним из аппаратных таймеров (RTC вполне подходит). Если сигнал строго периодический, то достаточно выровнять фазу включения по некоторому опорному значению таймера. Например, если светодиод должен зажигаться каждую секунду, а значение таймера измеряется в миллисекундах, то достаточно выполнять проверку остатка от деления значения таймера на 1000. Однако при этом нужно учесть, что в момент, когда значение таймера станет кратным 1000, может выполняться обработка другого, более приоритетного прерывания. Поэтому, вероятно, имеет смысл предусмотреть эту возможную задержку и "догонять" реальное время, например, как-то так (извините, код не совместим с Ардуино):

#define TRIGGER_TIME 1000

void
on_rtc_evt()
{
    /* the trigger counter follows RTC, but incremented in steps of TRIGGER_TIME */
    static uint32_t trigger_counter = 0;

    /* how many triggers were overdued and needed to be consumed */
    static uint16_t trigger_overdue = 0;

    if (RTC->COUNTER - trigger_counter + trigger_bias >= TRIGGER_TIME) {
        trigger_overdue += (RTC->COUNTER - trigger_counter) / TRIGGER_TIME;
        trigger_counter = RTC->COUNTER - RTC->COUNTER % TRIGGER_TIME;
    };

    /* XXX the following code is usually better to keep out of an interrupt handler */
    while (trigger_overdue-- > 0) {
        ledctl(...);
    }
}

Здесь глобальная переменная trigger_bias задает смещение в диапазоне (0; TRIGGER_TIME-1) и устанавливается в соответствии с неким распределенным протоколом синхронизации времени между устройствами. Для этого проекта, как мне думается, протокол может быть достаточно простым, на манер RBS: время от времени высылается серия широковещательных пакетов, и часы всех распределенных устройств подстраиваются под эту рассылку. Можно сделать так, чтобы рассылку осуществлял любой узел сети, но он должен это делать строго в момент срабатывания триггера - необходимо иметь референтное время, чтобы все устройства, которые получили этот пакет, понимали, как их таймер смещен относительно часов передатчика.

#42 Re: Проекти » Crane Scale + Bluetooth » 2020-08-18 14:02:33

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

#43 Re: Проекти » Crane Scale + Bluetooth » 2020-08-18 13:50:59

Я думаю, что, конечно же, можно. Тем не менее остается вопрос о соотношении цены и целесообразности.

Заменить электронику в подобных весах может оказаться недешевым удовольствием. Есть вероятность, что модули Ардуино, радио, и обвязка не влезут в корпус и придется разрабатывать отдельную печатную плату. Хотя это и не сложно, но это увеличит стоимость изделия. Разработка ПО и для телефона, и для устройства тоже повлечет за собой определенные затраты. Таким образом, система с промышленным тензодатчиком и модулями Ардуино, как на видео, может стать вполне себе хорошим и недорогим решением. Кроме того, похоже, что нет никакой необходимости иметь беспроводное соединение с телефоном и достаточно просто отображать результат на табло, и это также делает разработку проще.

С другой стороны, возможно вы захотите снимать большее количество показателей. Например, не только силу тяги, но и учитывать вектор, время удержания, и даже вибрации напряженной руки, которые могут говорить о перегрузке или недоработке. Также, если этот снаряд будет завязан на мобильные телефоны спортсменов, то они могли бы иметь персональный план тренировок, исходя из своего роста и веса. То есть можно было бы поставить цель, например, в 70 кг, и тренироваться именно на нее. В этом случае, если вы можете найти устройство, которое отвечает вашим задачам механически, заменить в нем электронику не составит большого труда.

#44 Re: Проекти » Тестер кабелів. » 2020-08-18 12:19:16

Виктор, эти все линии заведены в кросс или это просто свободный конец кабеля?

#45 Re: Проекти » Crane Scale + Bluetooth » 2020-08-15 15:31:50

Можно заменить электронику, которая будет делать то, что необходимо. Кроме того, есть небольшой шанс перепрошить сами весы, которые, судя по всему, снимают статистику, чтобы посчитать средний вес. Но тогда в них не будет поддержки Bluetooth.

Нужно изменить всего одни весы или же планируется партия?

#46 Re: Апаратні питання » плата » 2020-08-12 15:26:08

AISLER производит платы в Германии и США и высылает по всему миру бесплатно, включая Украину (DHL, TNT, FedEx, до 4-х недель). Прототипы выпускаются в количестве кратном трем: 3, 6, 9, ...

Производство небольшой (5х5 см) двусторонней или четырехслойной платы обойдется где-то в 15 евро.

Детальнее https://aisler.net/

#47 Re: Апаратні питання » Векторный анализатор цепей » 2020-07-24 02:11:04

Настройка монопольной антенны выполняется простым подрезанием вибратора до нужной длины с последующим изгибом, чтобы подобрать нужную резонансную частоту. В данном случае за пару минут можно сварганить, как говорится, из говна и палок антенну на 868 МГц.

EdpTImqXYAA8HbD?format=jpg&name=4096x4096

С учетом КСВ < 2.0 можно сказать, что эта перевернутая L-образная антенна (ILA) работает в диапазоне 820-920МГц. При этом минимальный КСВ составил 1.05, обратные потери RL < -32Дб, а коэффициент отражения Г = 0.025. Даже с учетом крайне низкого качества антенны, этого должно быть достаточно для временного использования в полевых условиях.

Кстати, антенна сделана из обрезка того самого коаксиального кабеля без изоляции, который тестировался ранее. Длина вибратора - 72 мм.

#48 Re: Апаратні питання » Векторный анализатор цепей » 2020-07-17 15:47:40

Для настройки антенны необходимо впаиваться в радиотракт между антенной и трансивером, и для этих целей нужен высококачественный кабель малого диаметра, до 2 мм. Один из вариантов - это RG178. Еще один вариант - Molex Temp-Flex.

На днях я поехал на местный радиобазар в надежде купить что-нибудь подходящее. Однако, к моему сожалению, того, чего нужно, там нет и в помине. Наиболее близкий вариант - это RG-174 (сопротивление 50 Ом, толщина 2.8 мм). Хоть он и не подходит для моих целей, я все же купил для тестов метр кабеля Cabletech RG-174 (10 гривень). Мне объяснили, что его часто ставят на WIFI или GSM. Кроме того, для интереса взял метр какого-то неизвестного коаксиального кабеля без изоляции или, как его называют, "провод в экране" (цена 5 грн), а также разъемы SMA (по 25 грн за штуку).

Разъемы, скажу сразу, пришлось выкинуть и купить другие. Те, что на базаре, просто не работают. При сборке я стабильно получаю короткое замыкание. Собрали три штуки - все выкинули. Еще один остался на память, чтобы знать, как выглядит и больше не покупать:
EdIEDxsX0AccK5C?format=jpg&name=360x360

Пришлось отдельно заехать в "Радиомаг" и купить другие разъемы, на этот раз по 15 грн, но они оказались намного лучше. Собрал вот таких два кабеля, каждый по 1 м:

EdF5YLbXsAI7KmK?format=jpg&name=small

Итак, имеем два кабеля: кабель А и кабель Б.

Первый тест: кабель подключается к порту VNA, на другом конце устанавливается терминатор 50 Ом. При такой схеме включения коэффициент стоячей волны для идеального кабеля, рассчитанного на импеданс 50 Ом, должен быть равен единице, поскольку он определяется качеством согласования нагрузки и линии связи. По общему признанию, если кабель возбуждает стоячую волну с КСВ больше 1.22, то его использовать нежелательно. На графиках ниже отображено фактическое состояние дел; красный график - КСВ, синий график - импеданс.

Очевидно, что кабель Б имеет явно меньший КСВ и, следовательно, вносит меньше искажений. Кабель А при этом достаточно сносно работает до частоты 1.5 ГГц, но при этом бросается в глаза явное смещение импеданса с повышением частоты. Видимо, кабель А имеет слишком большую индуктивную составляющую.

EdF6jUQWAAIzOAZ?format=png&name=900x900 EdF6wK9WkAA8hb-?format=png&name=900x900

Следующий тест проверяет то, насколько качественно собраны эти два кабеля. Геометрическая форма влияет не только на импеданс, но и на фазовые задержки. Это может быть важным моментом, если используются несколько подобных кабелей одновременно, например, для нескольких антенн MIMO или Bluetooth 5.1. Для эксперимента, кабелем соединяются два порта VNA и после этого выполняется калибровка VNA. После калибровки фазовая задержка принимается равной нулю. После этого, кабель нужно подвигать, поскручивать, подергать и снова посмотреть на фазовую задержку. Идеальный кабель не меняет своей формы и новых задержек вносить не будет.

EdHxM9FXoAAhDM7?format=png&name=medium

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

И последний тест, самый очевидный - это вносимые потери. Для этого кабель подключается к двум портам VNA и оценивается уровень сигнала после прохождения через кабель. Потери отображаются на графике. Для сравнения, неплохой кабель будет иметь это значение порядка 80 дБ на 100 метров длины, хороший - около 60 Дб на 100 метров. Оба моих кабеля длиной один метр:

EdHiGVBXkAAbefx?format=png&name=900x900

Похоже, что оба кабеля и разъемы очень невысокого качества. Что касается импеданса и вносимых помех (КСВ), кабель Б имеет явно более стабильную характеристику, однако при этом он хуже сделан физически: после скручивания он создает явно выраженную фазовую задержку. Также, для частот больших 500МГц я бы воздержался от использования кабеля Б длиннее одного метра.

В свою очередь по сравнению с Б кабель А вносит намного меньшие затухания на высокой частоте. Нужно, тем не менее, отметить, что это аж 1.5 Дб на метр на частоте 2.4 ГГц. Все-таки, кабель больше подходит для частот до 1 ГГц, где он ведет себя и стабильнее, и вносит не такие высокие потери.

#49 Re: Апаратні питання » Векторный анализатор цепей » 2020-07-15 14:49:18

Не совсем про NanoVNA v2, но про очередную штуку, которую можно делать на VNA - измерение длины кабелей.

Если перейти от частотной области во временную, то становятся видны уровни и импеданс в зависимости от времени прохождения сигнала до разных участков радиотракта, а, значит, и от расстояния до них.

Для эксперимента я подключил на первый порт один из SMA кабелей, которые шли в комплекте. На красном графике ниже, который отображает КСВ по времени, всплеск наблюдается через приблизительно 3 наносекунды. Это соответствует сигналу, отраженному от места обрыва кабеля, где болтается свободный конец. Если учесть, что за это время (3 нс) сигнал должен пройти до конца и обратно, и скорость света в кабеле SS405 (я не знаю, но похоже, что это он) составляет приблизительно на 0.7 от скорости света в вакууме, то можно посчитать расстояние до обрыва:

3(нс) * 0.3(м/нс) * 0.7 / 2 = 0.315 м = 31.5 см

Ec7UijQWsAEkdbA?format=png

Ec9iIFKXkAAGmjD?format=jpg&name=small

#50 Re: Апаратні питання » Векторный анализатор цепей » 2020-07-14 04:13:29

Кабели, что шли в комплекте расширенной поставки, похоже, тоже не так уж и плохи, тем более за эти деньги. На моем приборе коэффициент стоячей волны не превышал 1.15, а контрольный замер показал и того меньше:

Ec2T1VpXkAAi-j1?format=png

Підвал форуму