Обновить
32K+
213

Embedded SW/Firmware Engineer

106,4
Рейтинг
540
Подписчики
Отправить сообщение

здесь в статье не совсем понятен механизм контроля,

Всё просто. Подергал подтяжку, измерил напряжения на ADC, проанализировал два числа, сделал вывод.

“он и ударился о небесную твердь.”

еще говорят “зарылся в атмосфере”

И килобит в секунду — это про радио. То, что видит наш софт, совсем другое: поверх радио сидит MQTT грида со своими контрольными суммами, поверх него наша обвязка, и всё это по очереди, туда-сюда. Очень много уходит на повторы и контроль ошибок при помехах. В итоге лучшее, что мы получали в космосе, — около 45 байт протокола верхнего уровня (то есть значимых) в секунду. Сорок пять байт! В секунду!

Не рассматривали отечественные 200 Mbit/s Downlink трансиверы?

High-speed X-band Downlink Transmitter 200 Msymb/s
https://www.sait-ltd.com/_files/ugd/3473d8_0f49fffb76a84281b98a79d0085088d4.pdf?index=true

“Ну и пришлось искать, как рассчитывать TLE самим: экстраполировать, подбирать баллистические модели, с полным геморроем. Видимо, военное время, американцы решили не делиться. Почему именно так и почему сейчас — непонятно. ОКБ написали американским военным. Те вежливо ответили: «Спасибо за ваш запрос, мы займёмся вашей проблемой». И, естественно, ничем не занялись. Тогда ОКБ срочно подключили МГУ, где есть подразделение, которое занимается космическими исследованиями и у которого своя методика движения небесных тел. Привет мехмату, кстати! По их модели стали вручную пересчитывать и корректировать те данные, что есть в TLE. Сделали несколько пробных замеров, вроде получается.”

Если бы Ваш спутник посылал радио-тон, то его можно было бы обнаружить и вычислить орбиту по частоте доплеровского смещения тона.
https://habr.com/ru/articles/813461/

не понимаю суть конечного автомата в данной интерпретации (давно, сильно давно мы их в универе проходили).

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

Вот лишь малый перечень случаев, когда на практике пришлось проектировать FSM:

Обзор Протокола ISO-TP [ISO 15765-2] https://habr.com/ru/articles/798489/

Конечный Aвтомат Аппаратного I2C-Трансивера https://habr.com/ru/articles/856548/

Квантование на Триггерах Шмитта https://habr.com/ru/articles/1003262/

Конечный автомат инкрементного энкодера https://habr.com/ru/articles/1044930/

Принцип Определения Дальности Между UWB Трансиверами (Конечный Автомат Для DS-TWR) https://habr.com/ru/articles/723822/

Протокол TBFP https://habr.com/ru/articles/969948/

Пуск Беспроводной CLI на Микроконтроллере https://habr.com/ru/articles/929086/

Синтаксический разбор CSV строчек https://habr.com/ru/articles/765066/

Теория управления шаговым двигателем (или как вертеть PTZ камеру) https://habr.com/ru/articles/709500/

Техникум: Конечный Aвтомат Обработки Сигнала с Кнопки https://habr.com/ru/articles/760088/

Техникум: Распознавание Вещественного Числа из Строчки https://habr.com/ru/articles/757122/

Cross-Detect для Проверки Качества Пайки в Электронных Цепях https://habr.com/ru/articles/762142/

H-мост: Load Detect (или как выявлять вандализм) https://habr.com/ru/articles/709374/

Load-Detect для Проверки Качества Пайки https://habr.com/ru/articles/756572/

Что измеряют? Короткое замыкание - это токовый замер, обрыв - тоже токовый... Видимо стоит немного уточнить и дораскрыть тему.

load detect может преспокойно работать на измерениях напряжений. Измерять ток не обязательно.

Подключается или не подключается нагрузка (фара, фонарь, насос и так далее, диагностируется ошибка и выдаётся в виде кода ошибки или просто ничего не происходит?

Ну вот что-то мы выяснили, а потом...?

На прошлой работе у нас load-detect инициировал отправку на смартфон водителю автобуса push уведомления , если вандалы откручивали лампочки из фары.

Вовсе нет. Обыкновенная практическая задача и ее решение.

мы не можем определить КЗ в нагрузке. Нужен контроль тока.

Да. Однако некоторые экземпляры микросхем драйверов hi-side ключей обладают встроеннным амперметром. Например VNQ7E100AJ (Analog feedback of load current with high precision proportional current mirror).

Однако я не рекомендовал бы VNQ7E100AJ, так как он сигнал тока мультиплексирует с сигналом об ошибках.

Обычно нагрузки имеют малое сопротивление. Десятки ом. Поэтому при исправной нагрузке будет то же, что при коротком замыкании на GND.

Если можно через FFT, зачем FIR с n*n умножениями? 

Добавил и возможность вычислять свертку через FFT.
Получилось в 13 раз быстрее чем FIR фильтром!

bool sonar_fft_convolution(const char* const pulse_file_name, 
                           const char* const rec_file_name)

https://github.com/aabzel/trunk/blob/main/source/applications/sonar/sonar.c

Лог отработки программы

Ну и виртуозы!

Можно попробовать собрать can медиа конвертор. Вообще без микроконтроллера. Просто взять два чипа физики CAN трансивера и соединить их rx в tx. Подать питание.

Если можно через FFT, зачем FIR с n*n умножениями? Нужна низкая задержка?

Ответ тут.

https://docs.google.com/document/d/1dn7XiD1gflNLa3Fa8uzHeuW7kcJkWXkZej6qxXRT84k/edit?tab=t.0

Пока не получается.

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

И вычислить свертку по этой формуле

iDFT{    DFT( принятый сигнал) * [     комплексное сопряжение(  DFT(импульсный ЛЧМ-сигнал)   )    ]    }

Как и указано в формуле я предварительно сделал сопряжение комплексных чисел в спектре зондирующего импульса.

Опорный сигнал у меня:961 семплов 
Входная запись эхо:52800 семплов 
Я выровнял два сигнала до длины 53760 семплов
Как и было сказано в учебника Стивена Смитта “Цифровая Обработка Сигналов “

Количество гармоник, которые я рассчитываю равно 53759.

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

Однако на выходе iDFT я получил совсем не похожий результат на ту первоначальную светку, которую я предварительно на тех же данных рассчитал при помощи обыкновенного коррелятора.
Коррелограмма вычисленная при помощи преобразования Фурье совсем не совпадает с коррелограммой вычисленной при помощи коррелятора. FIR-фильтр работал, а DFT-метод нет.

Вот код вычисления DFT
https://github.com/aabzel/trunk/blob/main/source/computing/dsp/dft/dft.c

Вот функция sonar_dft_convolution вычисления свертка через DFT
https://github.com/aabzel/trunk/blob/main/source/applications/sonar/sonar.c
Где же ошибка?

а кстати кто нибуть знает готовые модули/блоки CAN репитеров без лишнего ?

У нас на работе есть свое внутренне решение.
Отличный переходник с USB на два CAN-а.
Прибор можно запрограммировать, как CAN-повторитель для удлинения мегабитной шины. Но я не знаю про то хотят или будут ли его делать на продажу для этого.
@0xdefec8ed

готовые модули/блоки CAN репитеров 

Можно запрограммировать на отладочное плате JZ-F407VET6 
https://habr.com/ru/articles/988494/

Любую техническую систему не стоит загружать больше чем на 70 процентов .

Свёртку с нулевой задержкой можно делать через FFT - для этого есть специальные алгоритмы. 

Я тут посмотрел теорему о свёртке, посмотрел формулу обратного дискретного преобразования Фурье и увидел, что результат операции iDFT -  это массив комплексных чисел. Ибо умножение комплексного числа на комплексное число это, в общем случае, тоже комплексное число.

https://ru.dsplib.org/content/dft/dft.html

формула (21)

Одновременно с этим, по определению свертка двух функций -  это функция одной переменной. То есть массив действительных чисел. 

И как же мне после iDFT получить свёртку в виде массива действительных чисел?

1—выбрать действительную часть от от результата  iDFT
2—выбрать мнимую  часть от от результата  iDFT
3—выбрать модуль  от от результата  iDFT
4—выбрать аргумент от от результата  iDFT

5—другое

(адреса нужно назначать, легко возникает путаница, можно придумать каку нибуть автоматизацию раздачи адресов, но оно тоже может глючить).

Протокол DHCP для CAN.

Или как -то вручную прописывать J1939 адрес в NVRAM.

ISO-TP может передаваться поверх 1939, никаких ограничений на это нет.

Да. Мультиплексирование между ISO-TP или J1939 происходит как раз в структуре CAN-ID двумя битами (24 и 25): Extended Data Page (bit 25) и Data Page (bit 24) .

https://habr.com/ru/articles/798489/
Обзор Протокола ISO-TP [ISO 15765-2]

1
23 ...

Информация

В рейтинге
55-й
Откуда
Москва, Москва и Московская обл., Россия
Зарегистрирован
Активность

Специализация

Инженер встраиваемых систем, DevOps-инженер
Старший
Git
Bash
CI/CD
C
Встраиваемая система
Программирование микроконтроллеров
Разработка программного обеспечения
Алгоритмы и структуры данных
Системное программирование
Разработка драйверов