Ответы пользователя по тегу Arduino
  • Почему GPS выдает пустоту на Arduino?

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

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

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

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

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

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

    Kyodza
    @Kyodza
    Инженер по лётным испытаниям лёгких самолетов
    Насколько я знаю, навигаторы оперируют углом рыскания (угол отклонения от заданного путевого угла) и отсчитывают его в диапазоне +/-180°. У них и инерциальная навигационная система в этих углах работает, а для пилота лишь только делает пересчет в 0... 360°, для непонятливого, чтобы тот с магнитным компасом мог сравнить...
    Ответ написан
    Комментировать
  • Есть ли разумная альтернатива 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
    Ответ написан
    Комментировать
  • Как проверить АЦП на 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.
    Ответ написан
    Комментировать
  • Питание 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_...
    Ответ написан
    Комментировать
  • Как использовать фильтр Калмана для гироскопа на 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
    Инженер по лётным испытаниям лёгких самолетов
    Данный вопрос надо решать через прерывание. Возникло событие (нажатие кнопки) - останавливаем все вычисления, обрабатываем событие, складываем результат в специальную ячейку памяти и снова отдаем управление программе. Работает это настолько быстро, что остановка программы не замечается.

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