• Почему GPS выдает пустоту на Arduino?

    Kyodza
    @Kyodza
    Инженер по лётным испытаниям лёгких самолетов
    Как выше сказали - раз пакеты вы видите, то значит соединение UART настроено правильно и информация от приемника к контроллеру передается и правильно интерпретируется. Уже хорошо.

    У приемников СНС* есть такое понятие холодный и горячий старт. Понятие условное. Время старта определяется как много прошло времени о последнего включения и как сильно поменялся состав спутников и их параметры. Понятное дело, что чем больше времени прошло, тем больше изменений надо учесть. Кроме своих личных сигналов все спутники передают альманах и эфемериды - информацию об изменении состава спутников, их орбит и других поправок. Эту информацию приемник должен принять и запомнить. Даже если приемник лежит в чистом поле, откуда будут видны все спутники, то пока он принимает эфемериды, какой-то спутник уйдет за горизонт. Через несколько часов он снова появится, но вам пользы от этого никакой, вам нужно здесь и сейчас. Поэтому как правильно сказали - для ускорения старта хорошо бы вынести приемник на максимально открытое место и дать ему поработать.

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

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

    У меня однажды холодный старт в условиях города длился 1,5 ч. Пришлось ждать, тут ничего нельзя поделать.

    * спутниковой навигационной системы или GNSS (eng). Это общее название, потому что сейчас приемники не только c конкретной одной системой работают, GPS например, но и сразу с двумя-тремя другими, которые увидят - GLONASS, Galileo, BeiDou и т.д.
    Ответ написан
    Комментировать
  • Как написать код или логику удержания направления на Arduino?

    Kyodza
    @Kyodza
    Инженер по лётным испытаниям лёгких самолетов
    Насколько я знаю, навигаторы оперируют углом рыскания (угол отклонения от заданного путевого угла) и отсчитывают его в диапазоне +/-180°. У них и инерциальная навигационная система в этих углах работает, а для пилота лишь только делает пересчет в 0... 360°, для непонятливого, чтобы тот с магнитным компасом мог сравнить...
    Ответ написан
    Комментировать
  • Как скомпенсировать отклонение угла при вращении гироскопа?

    Kyodza
    @Kyodza
    Инженер по лётным испытаниям лёгких самолетов
    Присоединюсь к предыдущему оратору - слишком мало условий.

    Если речь идет об уходе гироскопа на 15°/час, то это нормально - вы наблюдаете вращение планеты. Если еще по каким то условиям, то озвучьте их. Или ссылаясь на "если ось вращения расположена между осями X и Y." имеете ввиду что то совсем другое?

    С суточным уходом гироскопа борются путем введения коррекции разными способами, и опять же в зависимости от условий эксплуатации, назначения и места применения. Если речь идет о дроне, то используют достаточно банальные методы - курсовой угол исчисляемый по ГНСС, или по магнитометру, так как там время работы исчисляется несколькими 10 минут. Если требуется до нескольких часов, то все равно точность работы ИНС как источника навигации очень низка и используют другие методы навигации. Если в ваших условиях "другие" методы не приемлимы, то тогда опять же - коррекция по имеющимся в доступе источникам, а ими может выступать что угодно. От радиостанции "Маяк" и базовых станций вышек сотовой связи до звезд и Луны.
    Ответ написан
  • Есть ли разумная альтернатива NRF24 или Lora для Arduino?

    Kyodza
    @Kyodza
    Инженер по лётным испытаниям лёгких самолетов
    Я авиамоделист, но в меньшей степени электронщик.

    Сервоприводы работают по сигналу ШИМ модуляции по ширине импульса от 1000 до 2000 мксек, следующих с периодом 20 мсек. При количестве 8 каналов и упаковке всех их в пакет PPM ширина пакета получается 18 мсек.

    Есть еще цифровые протоколы передачи данных. Можете найти описание. Самый распространенный и понятный - это SBUS. По сути это UART на нестандартной частоте 100 000 мбит/сек, да еще и инвертированный. Мы с ним по работе очень легко общаемся и записываем на бортовой регистратор.

    Радиоканал сейчас в основном используется на частоте 2,4 Ггц, и устроен он так же, как и WiFI - скачкообразное псевдослучайное изменение частоты. Там еще могут быть свои корпоративные стандарты, но большинство готовых приемников позволяют использовать их в режиме черного ящика - подали на вход модуля передатчика нужный вам сигнал, на приемнике приняли его же. Какая вам разница, как это работает, по большому счету? Многие достойные модули приема-передачи поддерживают тот самый SBUS (=UART), что упрощает использование этих систем.

    И еще, даже если и есть какие то задержки, то динамика самолета такова, что лаг в наших системах до 0,1 сек никакого влияния на управление не оказывает. Это я вам уже как инженер по динамике полета гарантирую.
    Ответ написан
    Комментировать
  • Можно ли питать серво от 18650?

    Kyodza
    @Kyodza
    Инженер по лётным испытаниям лёгких самолетов
    Можно, но не все.

    Я 10 лет в авиамодельном кружке эксплуатирую 5 г серво приводы типа SG-50 с Али с питанием от одной секции Ли-По (на 8 фото вверху, и текст). Они без проблем работают до 2.8 В.

    Пробуйте свои. Отказ по питанию распознаете сразу - либо начнется джигиннк ("дергунец") либо они начнут уходить в крайнее положение и замирать там на какое то время. А вообще выше все верно написали - поставьте повышающий DС/DС преобразователь. Ему цена 150 руб, а то и меньше.

    6544d1b6621ac654579004.jpeg
    Ответ написан
    Комментировать
  • Почему не работает ELRS приемник?

    Kyodza
    @Kyodza
    Инженер по лётным испытаниям лёгких самолетов
    Похоже на то, что где то проблема (если и не замыкание, то просто очень большое потребление). Блок питания это преодолевавает.

    У меня так было. Перегрузил встроенную на контроллере LM1117 внешними устройствами. Она умерла, но не полностью. Все в точности, как описываете - работало только на столе от блока питания, от акку на борту почему то не хватало напряжения и оно на входе с 5,1В (BEC Castle, который гвоздь может пережечь) просаживалось до 4,0 В.
    Ответ написан
    Комментировать
  • Как проверить АЦП на Arduino МЕГА 2560?

    Kyodza
    @Kyodza
    Инженер по лётным испытаниям лёгких самолетов
    Чтоб много наводящих вопросов про 4,13 В не задавать, расскажу с чем я боролся только что сам. Ночью, под фонариком, в фургоне грузовика в исследуемом объекте менял плату Меги2560 на другую.

    Есть у меня некое устройство на Меге2560, задача которого опрашивать несколько контроллеров Нано и Про Микро по i2c, смотреть на часы DS3221 и писать всю информацию на микроСД кард. Регистратор одним словом.

    И вдруг начали исчезать куски записи, потом начались зависания. При замере напряжения питания оказалось, что питание на контроллерах опустилось до 3,00В. Поотключал всякие подтяжки, вроде бы поднялось до 4,04 В. Схемотехнически питание у меня сделано так - 8,4В подается на Мегу, на вход Vin, а с нее сделан красивый шлеф с выходами GND-5V-SDL-SDA, на котором сидят все контроллеры.

    В общем, оказалось, что умер стабилизатор LM1117-5.0, который распаян на плате Меги. Вот так они странно умирают. - не отключаются, а проседают до какого то напряжения под нагрузкой. Без нагрузки или под малой нагрузкой он у меня показывал 4,98 В. Похоже, перегрузил я LM1117, надо по другому организовывать питание.

    Ну еще и проверьте свою схему питания, потому как написано везде, а ошибка живет веками - Vin - это для питания Меги и периферии через собственный линейный источник питания LM1117-5.0, и подавать на него надо не менее 6,5 В. Если питаете Мегу сразу 5 В, то это и должно быть 5 В, и подается оно на вход 5 V, а не через USB или еще как то. Одновременно эти питания - USB, 5V и Vin подавать не рекомендуют. Может вот так погореть LM.
    Ответ написан
    Комментировать
  • Одноплатник работает в режиме 24/7. Почему спешат/отстают часы?

    Kyodza
    @Kyodza
    Инженер по лётным испытаниям лёгких самолетов
    Мы сделали бортовой регистратор данных для движущегося объекта. Оказалось, что за минуту набегает ошибка до 0.8 сек. Для анализа динамики движения это очень много, если даже простейшие GPS уже умеют выдавать данные через 0.1 сек.

    Все дело в кварце и убогом процессоре, который обрабатывает системное время через аппаратное прерывание Таймера 1. Как только нагрузили процессор вычислениями по полной, так и побежало отставание.

    Решили проблему коррекцией времени через сигнал PPS от приемника GPS. Но тоже не здорово - еще отбираем мощность у процессора на обработку прерываний.

    Сейчас заказал Arduino Uno R4 прямо с сайта Arduino.cc (у меня есть возможность). 25 евро, не дорого. У нее встроенные часы, хороший кварц и частота процессора уже 48 МГц.
    Ответ написан
    8 комментариев
  • Какую выбрать тему диплома бакалавра?

    Kyodza
    @Kyodza
    Инженер по лётным испытаниям лёгких самолетов
    Я год назад работал в далеке от дома, поэтому каждое воскресенье ехал на работу 450 км, а в пятницу обратно. И все это по двухполосным региональным дорогам, преимущественно в темноте (Россия же, у нас светло только 22 июня, ± 1 месяц). И вот о чем мне мечталось, как авиационному инженеру + авиамоделисту по хобби.

    Очень хочется знать, сколько, куда и с какой скоростью машин едут в радиусе 1 км от меня. По типу прибора TCAS для самолета. Не сложно увязать этот прибор с GPS и с картой на открытой платформе (любой платформы, но я лично Яндекс.Карты/Навигатор люблю). Смысл такой, что формально по этим дорогам можно ехать 110 км/ч (90 +20 км/ч). Фуры сейчас запросто едут 95 км/ч. Региональные дороги с кодом Р имеют качество обустройства значительно ниже, чем дороги с кодом М - невыровненный рельеф (непроглядываемые холмы и спуски), закрытые повороты, лес вплотную к дороге и т.д. Для повышения безопасности хотелось бы знать - есть ли кто то за этим поворотом и как быстро по прогнозу я с ним могу встретиться.

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

    В конце-концов подобную систему можно сделать и на сигналах регистрации местных сотовых вышек и триангуляции телефонов граждан. В этом случае доступной инфы - тонна. Марка мобильника ( = цена = статус), скорость движения, откуда и куда едете (по истории регистрации на станциях). Можно это сделать даже как платную услугу, предоставляемую оператором связи. Цель все та же - видеть приближающиеся автомобили, если они могут влиять на мою безопасность движения. Личная информация из их телефонов мне не нужна.
    Ответ написан
    Комментировать
  • Питание arduino от ~3В, возможно?

    Kyodza
    @Kyodza
    Инженер по лётным испытаниям лёгких самолетов
    Купил на днях ESP8266 с вайфай и припаянным экраном 0,91. Изначально рассчитана на 3,3 В, прекрасно работает от 1 Li-Io 3.6В с последующей просадкой до 2,8В.

    Я сейчас работаю не дома, поэтому ссылка только такая https://www.amazon.fr/dp/B07V2JBSCP?psc=1&ref=ppx_...
    Ответ написан
    Комментировать
  • Как подключить Ленинград-2 к телевизору?

    Kyodza
    @Kyodza
    Инженер по лётным испытаниям лёгких самолетов
    1. В СКАРТе есть все - и компонентный видеовход и композитный.
    2. Желтый тюльпан - композитный видеовход.
    3. VGA - компонентный цифровой видеовход приведенный к уровню TTL (а комп как раз его и выдает) и цифровая шина типа I2C. Есть нюанс - у VGA раздельный строчный (p.13) и кадровый (p.14) синхроимпульс, но пин 13 может принять и композитный синхроимпульс (H-SYNC+V-SYNC), в вашей схеме это сигнал VIDEO. Правда слишком яркий видеосигнал в нем может кратковременно восприниматься как синхроимпульс и тогда возникнет подергивание экрана. Лечится понижением уровня сигнала через делящие резисторы (см. схемы ниже) или RC цепочки, если умеете.
    4. HDMI/DPort - чистый цифровой последовательный интерфейс, не ваш случай.
    5. С антенным сигналом я бы не рекомендовал связываться - качество очень низкое. Этим занимались
    вынужденно, потому что тогда только-только вошли в жизнь компьютеры и видеомагнитофоны, и не у всех еще телевизоров был хотя бы композитный видеовыход, не говоря о СКАРТ.

    R+G+B - это видеосигнал (яркость), только разделенный по цветам, SYNC - кадровые и строчные синхроимпульсы. VIDEO - синхроимпульсы + яркость, можно подключать даже к ЧБ телевизору. За давностью лет (последний Ленинград-2 я собрал в 1994 г) схему на память не вспомню, но точно могу сказать - если просто объединить RGB через резисторы 1К0, то получившийся композитный сигнал подключается и в СКАРТ и в желтый тюльпан телевизора. С номиналом могу ошибаться, но то что все так просто - ручаюсь. Поищите схему Pentagona-128, вроде бы там был эта часть схемы.

    64410e0dce121582249722.jpeg

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

    Или вот, готовое решение. Транзистор можно не ставить, если у вас не ламповый телевизор:
    64410fa8d8544630542907.jpeg

    Или вот готовое для СКАРТ:
    64411312b5d22710385799.jpeg
    Ответ написан
    Комментировать
  • Как использовать фильтр Калмана для гироскопа на arduino?

    Kyodza
    @Kyodza
    Инженер по лётным испытаниям лёгких самолетов
    Меня учили, что фильтр Калмана - это адаптивный фильтр. Адаптация заключается в том, что надо иметь мат.модель процесса, который вы сглаживаете. То есть полученное замеренное значение сравнивается с прогнозом и на основании разницы к нему применяется поправка. Разумеется, что уравнения движения могут содержать и X, и Y, и Z и остальные буквы латинского и русского алфавита.

    Например, уравнение движения самолета состоит минимум из 6 диф.ур. А если есть автоматические устройства, которые живут совместной жизнью и самолёт летит в реальной атмосфере, то количество уравнений доходит до 40.

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

    Один знакомый математик сказал, что ф.К. это не формула, а метод, реализаций которых можно наизобретать бесчисленное кол-во.

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

    П.С. Есть готовый авиагоризонт WT901B со встроенным ф.К. В последних реализациях его сделали с настраиваемым частотным фильтром, 6 значений частот фильтрации. Мы этот авиагоризонт используем уже очень давно, с 2017 г. Продается на Али, 3000 руб примерно. Выдает весь спектр сигналов по 3 осям - перегрузки - угловые скорости - магнитное поле - пространственные углы. Плюс давление, абсолютная барометрическая высота и температура на плате (=воды в районе Сочи). Рекомендую взять еще и отладочную плату на USB-C, удобно. Общаемся с этим модулем с Mega 2560 R3 по I2C, так удобнее, чем по UART.

    П.С.С.: https://habr.com/ru/post/255661/ В приложении к статье готовый код ф. К. и огромный список литературы на эту тему.

    Можно применить несколько Ардуин обмениваться между ними данными по I2C. У меня сейчас в работе конструкция, в которой основной контроллер Мега 2560, и две вспомогательных Ардуино Pro Micro. Одна общается с GPS другая измеряет длительность сигнала. Так оказалось проще, чем нагрузить всю работу на одну Мегу.
    Ответ написан
    Комментировать
  • Что возвращает gps модуль neo-6m?

    Kyodza
    @Kyodza
    Инженер по лётным испытаниям лёгких самолетов
    Протокол NMEA-0183 (на современных уже ....-2000, но у Вас древнее изделие). Вполне гуглится:
    https://wiki.iarduino.ru/page/NMEA-0183/

    Очень легко разбирается и читается.
    Ответ написан
    Комментировать
  • Как сделать какую-нибудь многозадачность на ардуино?

    Kyodza
    @Kyodza
    Инженер по лётным испытаниям лёгких самолетов
    В своем устройстве я просто понаставил много Ардуинок Про Микро (3 шт). Они маленькие и дешевые (как Нано, только лучше), и по сути получился многоядерный процессор. Информация ходит только в одну сторону, от вспомогательных к основной (Арду Мега 2560), но можно и в обе стороны и между собой, так как все присоединены к IIC основного контроллера.
    Ответ написан
    Комментировать
  • Как отклеить деталь (вентилятор) склеенным секундным клеем?

    Kyodza
    @Kyodza
    Инженер по лётным испытаниям лёгких самолетов
    Если бы был металл к пластмассе, то металл погреть можно. Бывает что и расклеивается.
    Ответ написан
    Комментировать
  • Какую выбрать плату управления шаговыми двигателями, для управления с компьютера?

    Kyodza
    @Kyodza
    Инженер по лётным испытаниям лёгких самолетов
    Вы можете управлять моторами сами, без 3D принтера, если вам не важно, как перемещаться из точки в точку.
    В 3D принтере есть два важных момента, которые для вам могут быть не так важны.

    1. Интерполяция. В CNC устройствах раньше было отдельное устройство, которое так и называлось - интерполятор. Сейчас все умещается даже в Ардуино. Его задача рассчитать, как подавать импульсы на 3 мотора, так чтобы движение шло равномерно по всем осям (линия) или наоборот неравномерно (окружность в нужной плоскости). Если вам это не важно, то проще написать свою программу последовательного перемещения по каждой из осей - сначала Х, потом У, затем Z.

    2. Ускорения. Вторая головная боль для CNC. Нужно учитывать механику и инерцию конкретной конструкции, для того что бы быстро разогнать, а потом затормозить все оси. Да так, чтобы не поломать интерполяцию, потому что...

    2а. ... в дешевых CNC датчиков обратной связи нет (кроме концевых выключателей). Если начнутся пропуски шагов, то для любого CNC устройства это катастрофа - понимание местоположения головы будет не достоверным. Для 3D принтера или гравера - это искажение геометрии изготовляемой детали, что не приемлемо. Для вас это может быть не критично - сначала грубое перемещение в заданную область, а затем, если нужно - точное прицеливание (ой, это я из другой своей работы...)
    Ответ написан
    Комментировать
  • Нужно, чтобы программа ожидала нажатия кнопки, как это реализовать?

    Kyodza
    @Kyodza
    Инженер по лётным испытаниям лёгких самолетов
    Данный вопрос надо решать через прерывание. Возникло событие (нажатие кнопки) - останавливаем все вычисления, обрабатываем событие, складываем результат в специальную ячейку памяти и снова отдаем управление программе. Работает это настолько быстро, что остановка программы не замечается.

    У Алекса Гайвера хорошие уроки на эту тему. Например, о прерываниях и о клавиатурах. Скачайте готовую библиотеку, пример, отладьте его до рабочего состояния, а потом модифицируйте под себя.
    Ответ написан
    Комментировать