flybrain. передатчик + приемник + автопилот. powered by stm32

AlexSneg

вот текущая разработанная печатка. Как только картридж в принтере поменяют на след неделе, разу в печать и под ЛУТ

baychi
AlexSneg:

Так и в гироскопе есть. Только они меряют что? Температуру внутри кристалла. Мне нужна температура борта. Надо понимать на какой температуре закалиброван был аксель. Дрейф нуля от температуры есть во всех дата шитах.

Какая разница, где брать температуру? Дрейф зависит от относительного изменения, а не от абсолютной величины.

AlexSneg:
  1. откуда возьмутся помехи на 1,2 ГГЦ?

От видео на 1.2 ГГц. 😃
Кстати, наша GPS частота 1575 МГц. Или Вы можете военный L1 использовать. 😃

AlexSneg:

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

А почему не хотите апааратный детектор синхроимпульсов, тотже LM1881?

AlexSneg:

вот линк на схему.

Спасибо. Смотрю. Пока не вижу серьезных емкостей по питанию. +5В ведь от борта будте брать? А оно веьсма нестабильно. И понижать до 3.3 и 1.8 В LDO КРЕНКами?

Отдельная FLASHка для лога полета - это правильно! Сразу другой класс АП получается. 😃

AlexSneg:

вот текущая разработанная печатка

Обратите внимание на разводку кварца. Возвратую землю С7, С8 желательно привести на одну из GND ног проца. Это существенно улучшит стойкость к помехам.

AlexSneg
Drinker:

ДЦМ не устраивает?

Ресурсов у нас с запасом.

Мне не нравится DCM. DCM это компромис между производительностью и результатом.
В идеале я хочу полноценные кватернионы вращения относительно референсного начального положения. Это сразу снимает все проблемы с переворотами вверх тормашками и вырождением опорных плоскостей при определенных обстоятельствах. А кроме того я хочу чтобы ничего не зависело от того как плату соорентировали внутри самолета при установке. Кроме того вот кватернионы в паре с фильтром Кальмана мне абсолютно понятно как работают, а припарка типа DCM меня напрягает, особенно когда я в коде DCM вижу места с комментариями, что типа “все плохо, уперлись в какие-то ограничения…”, и дальше куча ИФов в попытке понять что произошло.

Более того, вот я уже написал СИ код для кватернионов и кальмана на VC++ погонял в тестах. В принципе меня устраивает. Но это теория, хочу практики. Как вариант, поскольку в моем камне памяти 1Мег, то сделаем опцию типа: DCM - 1, Кватернионы - 2, альфа-бэтта - 3 … Еще что-нибудь - 4. И у меня еще есть одна безумная мысль как отсечь с вектора гравитации вектор центростремительного ускорения. Но реально можно это только рабочей железке проверить.

Вооо, посылка с камнями пришла, только что с почты позвонили. УРА!!!. Теперь у меня в руках есть все детали. На следующей неделе буду паять. Блин уже прямо руки чешутся и сверло в …опе покоя не дает. Я этот проект уже пол года вынашиваю…По секрету приоткрою планы на будущее. Следующим шагом после автопилота будет добавление цифрового видеолинка, скорее всего на 2.4 ГГц и хотя бы 320x240, хотя бы 15 кадров в сек. Схемотехника для меня уже ясна в этой задаче. Но это планы дальние, пока только автопилот и все вместе собрать, хотя бы к летним полетам для тестов.

fmkit

пока не поздно поменяйте название а то можно перевести как “мозг мухи” 😃

у меня тоже похожее устройство - на самике одна плата, в руке одна плата (в нунчаке), а третья с LCD где угодно но чаще всего на висит на шее - телеметрия.

А ПАВ фильтр на приемнике планируется?

AlexSneg
baychi:

Кстати, наша GPS частота 1575 МГц.

Да 1,5ГГц, где-то так…😉

Я для себя видео планирую в районе 900Мгц, либо 2,4 или выше. но опять же никто не мешает GPS антенну отнести подальше если есть сомнения на эту тему. Но я думаю, что не должно мешать.

baychi:

LM1881

Смотрел, отмел. Там +5В, значит нужно будет согласование с STM и к тому же нет у меня +5В нигде. А STM входа, они хотя и 5V tolerant, но я не люблю кривизны. Значт придется полевики колхозить. К тому же ничего нового от 1881 мы не получим кроме синхры, а это я и так получу с компаратора. Кроме того, опорное для компаратора заведено с DAC1 выхода. Я тогда смогу в реал тайме подбирать порог срабатывания прямо на ходу. Мне кажется здесь будет преимущество.

baychi:

И понижать до 3.3 и 1.8 В LDO КРЕНКами

Питание я завожу от приемника, у меня там импульсник +5 - +18 до 3,3В. А приемник запитываентся напрямую от +12В. Питание +5 от регулятора я только в сервы напрямую пускаю. Оно у меня нигде не используется. Я может на выходных выложу схемотехнику передатчика и приемника готового. Там понятнее станет.

fmkit:

мозг мухи

Fly не только муха но и глагол летать.
Пусть будет FlyingBrain.

Необходимости в ПАВе я пока не увидел. Опыт людей с этого форума говорит о том, что 433 МГц это достаточно далеко от видео.

baychi:

Возвратую землю С7, С8 желательно привести на одну из GND ног проца

С7, С6. Сейчас посмотрел на плату. Они туда и идут на 63 пин проца.

У меня вот реальные сомнения насчет необходимости энерго независимых часов и кварца на 32Кгц. Так и сяк думал, но плюнул и решил не делать.

baychi:

Дрейф зависит от относительного изменения, а не от абсолютной величины

Мозгом я понимаю, что ты прав. Но тело не дает, убрать термометр с платы. Пусть будет. Буду хоть смотреть разницу в нагреве барометра, ядра STM, гиры и окружающей среды. Ну и + опция температуры для OSD уже встроенная будет.

baychi
AlexSneg:

Необходимости в ПАВе я пока не увидел. Опыт людей с этого форума говорит о том, что 433 МГц это достаточно далеко от видео.

ПАВ не от видео нужен а от мощной помехи внутри диапазона. Представте, что летите досттоно далеко, сигнал на уровне -100 дБ. А тут на соседнем канале далнобойщик рацию включил и уровень -50 дБ, всего-то. А RFM уже в ауте:(

AlexSneg:

С7, С6. Сейчас посмотрел на плату. Они туда и идут на 63 пин проца.

Sorry, С6 с JPEG на бумаге нечетко выходит. 😦 Но проблеммв в том, что возвратная земля идет через GND нескольких других элеметов. Лучше бы напрямую и уже полсе ножки проца - куда либо еще.
Кстати, платка ведь не четырехслойная? Лучше сразу 4-х слойку закладвать - цена копейки, а всяких помех на порядок меньше при грамотной разводке…

AlexSneg:

тело не дает, убрать термометр с платы. Пусть будет

Больше не меньше. Можно ведь и не запаивать. 😃

AlexSneg:

реальные сомнения насчет необходимости энерго независимых часов и кварца на 32Кгц. Так и сяк думал, но плюнул и решил не делать.

И правильно! До полета он нафиг не нужен, а в процессе GPS время будет. 😃

Drinker
AlexSneg:

олее того, вот я уже написал СИ код для кватернионов и кальмана на VC++ погонял в тестах.

Подробнее про тесты можно?

И предлагаю делать это всё под управлением многозадачки. Чтобы в лопах не запутаццо.

AlexSneg
baychi:

А RFM уже в ауте

А ну так я не все сказал. У меня реальный FHSS реализован. Передатчик меняет синхронно частоту с приемником 25 раз в секунду. + еще 2 запасных failsafe канала, заранее отнесенных подальше от раций.

baychi:

Лучше сразу 4-х слойку закладвать - цена копейки, а всяких помех на порядок меньше при грамотной разводке…

Двухслойка. Я при помощи лазера и утюга. Для прототипа - нормал. Второй вариант работы над ошибками все равно будет. Сейчас и это сойдет.

baychi:

До полета он нафиг не нужен, а в процессе GPS время будет

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

baychi
AlexSneg:

А ну так я не все сказал. У меня реальный FHSS реализован. Передатчик меняет синхронно частоту с приемником 25 раз в секунду. + еще 2 запасных failsafe канала, заранее отнесенных подольше от раций.

Так не поможет все это! Максиммум 45-50 дБ избирательности, а потом затыкается RFM-ка. С другой стороны и PAW при FHSS как собаке пятая нога…
Кстати, любопытны подробности Вашей FHSS реализации на 433. Сколько каналов? Какая длительность пакета/паузы? Точность PWM кодирования и количество сигналов?

AlexSneg:

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

Лог то все равно писать будете 1-5 раз в сек. Признак “в полете” ввести и можно много понять…

AlexSneg:

В проце есть 2кб энергонезависимого ОЗУ. но нужно батарейку 3В разводить на плату

Не обязательно батарейку. Ионистор на 0.25-1 Ф, дает несколько недель храннения данных. Тантал на 200 мКф - несколько часов…

Еще несколько мелочей по схеме:

  1. C15 470 нФ. Типоразмер 0805. Требуется 10% точность и хороший ТКС. Найти в столь малом корпусе с диэлектриком не Z5U весьма проблематично. Советую в след. раз ставить 1206 или вообще не SMD.
AlexSneg
baychi:

Кстати, любопытны подробности Вашей FHSS реализации на 433

1 секунда делится на 50 частей (тайм слоты). 1 пакет передается внутри одного тайм слота. Пакеты нумеруются. Нечетные шлет передатчик на борт. Четные шлет приемник на передатчик. То есть имеем 25 раз в секунду передачу в каждую сторону. 1 пакет тащит на себе 9 полезных байт. 4 джойстика (8 бит на джойстик) + 2 нагрузочных байта под всякое разное, дискретные переключатели + 1 байт команда от передатчика для частотных переходов. Если передатчик решает сменить частотную сетку, то он передает в течение 1 сек, новую частотную сетку, затем отдает команду о переходе. Приемник подтверждает прием частотной сетки и применяет ее на следующей секунде. То есть в принципе можно на ходу сканить каналы и если какой-то один портится, то переходить на другой. Я это сделал, полетал. Потом забил болт на это дело. Взял тупо сделал меню для забивки 25 разных частот и двух запасных для failsafe. Ну просто не увидел больших плюсов. Опять же функционально это работает, сделать это или реализовать любые фантазии на эту тему можно в любой момент, но сейчас не хочется на мелочи отвлекаться.

По поводу PWM. Сейчас использую 8 бит на джойстик. А приемник все PWM на сервы формирует аппаратно от таймеров. У меня таймеров на борту камня штук10. Мне их девать не куда 😃 Я прямо с точностью до 1 мкс длиной импульса таймера управляю и засылаю его на серву. То есть, там точность позиционирования серв кварцованая. Китайские синие сервы стоят мертвяком, где поставили. Дерганье отсутствует как понятие. Я пробовал и 16бит но я реально не вижу разницы. А 255 положений джойстика и так за глаза. Там сам резистор джойстика не позволят даже такое разрешение использовать. Но у меня еще пульт - говно китайское от дешевой игрушки. Но даже с ним такие результаты достигнуты.

Опять же я сейчас в канале выставил скорость 4800 бит/сек. Ее запросто до 9600 можно поднять, гнать например 16 байт в пакете. Но это опять же бантики, которые сейчас на фиг не нужны. Ну буду доводить это дело до стадии production, так продумаем это дело и реализуем, проблем то ведь нет.

А для совсем параноиков, можно SIM900 запроектировать в production вариант. И прямо гнать DTMF частоты для управления на борт. Такая мысль у меня тоже была, но я себя вовремя отговорил.

baychi:

Лог то все равно писать будете 1-5 раз в сек

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

baychi:

C15 470 нФ

тоже согласен, моя лажа мелкая. Не подумал. Если поместится параллельно добавлю еще кондер с 1206 принт футом. Либо тот, либо другой кондер воткну, какой найду поточнее.

baychi
AlexSneg:

Приемник подтверждает прием частотной сетки и применяет ее на следующей секунде.

А если подтверждение не дойдет?

AlexSneg:

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

Вот и я всегда говорил: cимплексные системы (не требующие обратной связи) всегда надежнее полудуплексных. 😃

AlexSneg:

255 положений джойстика и так за глаза. Там сам резистор джойстика не позволят даже такое разрешение использовать.

Для FPV носителей может и без разницы, но хорошие пульты 2048 дискрет от 256 отличить позволяют.

AlexSneg:

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

Зачем DTFM? - масло маслянное - надежности канала двухчаcтотное кодирование не улучшит. И там и там, по сути, ЧМ прием а пропускная способность одна. Вот автокорелляционное кодировани (типа кода Баркера), реальная альтернатива, но эффективность не очевидна.

AlexSneg
baychi:

А если подтверждение не дойдет?

Ну как оно не дойдет? Оно пытается 25 раз его передать на разных частотах. Ну если не дойдет, еще через 1 сек будет failsafe там они найдут друг друга все равно. Опять же не обязательно менять всю сетку сказу. Можно постепенно частоты заменять.

baychi:

Вот и я всегда говорил: cимплексные системы

В чем-то да, а в чем-то нет. Летать на цифре без обратной связи и не видя RSSI на стороне приема, очень опасно. Нет уж, пусть будет дуплекс.

baychi:

хорошие пульты 2048 дискрет от 256 отличить позволяют.

Мой не позволяет 😉 ни при каких обстоятельствах. Это все “бантики” добавить дискретности всегда можно. +4 бита погоды не сделают. Мы ничем не ограничены в этом вопросе.

baychi:

Вот автокорелляционное кодировани (типа кода Баркера), реальная альтернатива, но эффективность не очевидна.

Я думал о настоящем SpreadStectrum’e это интересная тема. Я нашел проект одного немца. Он на одном смесителе и точном гетеродине сделал чисто софтовый GPS приемник, причем пребразование у него прямое, а АЦП 2вух битное, далее он это засунул на com порт PC и чисто софтово ищет корреляции. за 10 секунд он накапливает статистику, находит сигналы и считает координаты. Самое засадное в данной теме для меня - это балансный смеситель качественный и миниатюрный. Я сколько не мотал это дело, все фигня получалась. Если удастся найти источник заполучения этих компонентов, хотябы Mimicircits производителя, то можно реально работать ниже уровня шума. Вводить коды баркера или N-последовательности как в CDMA. Я придумал как изготовить цифровой управляемый стабильный гетеродин на одном кристале, стоимость будет 200руб. А если все это заработает, то мы вообще все будем в шоколаде и все кипятком будут писать не только на этом форуме. Я уже молчу про коммерческую ценность такой разработки. Представь сколько можно отжать дальности на минимальной мощности. И ведь никто не поймает и хрен заглушит. Но тему честного SS я не готов тянуть один. Я могу участвовать всеми силами, но не один.

2 шт STM32F405RGT6 у меня в руках. Посмотри по схеме нет ли еще каких принципиальных плюшек, а то у меня глаз уже реально замылился. Я буду на выходных печатку гладить и травить.

Drinker:

Подробнее про тесты можно?

Чисто математическая модель. Просто отлажен код, который работает. Генерятся показания гироскопа и акселя, подмешивается шум, подается на вход тестового кода, потом сравнивается. Это чисто теоретические исследования.

baychi
AlexSneg:

Нет уж, пусть будет дуплекс.

Передавать телеметрию на землю - кто-ж против. Я возражаю только в плане использования обратного канала для перестройки параметров связи на лету. Уже много раз доказывал и готов доказать еще раз: алгоритмы построенные на принципах “договора в процессе” позволяют оптимизировать лишь энергетику линии связи, но ВСЕГДА будут иметь худшую надежность, чем алгоритмы, где логика перестройки каналов известна заранее и не требует подтверждений в стророну земли.
Даже учитиывая, что по известным причинам обратныый канал для летающей модели как правило надежнее прямого, нельзя гарантировать что не услышав ответа приемник и передатчик окажуться в разных сетках. 😦

AlexSneg:

Посмотри по схеме нет ли еще каких принципиальных плюшек

Посмотрю еще, надо даташиты на MEMSы докурить.
Есть одно возражение иделогического плана. У Вас все завязано на приемник Вашей разработки. Между тем добавление 4-6 PWM выходов и одного PPM входа позволить подключать к АП большинство современных приемников и сделает данный модуль пригодным для многих авиамоделистов.

AlexSneg
baychi:

Между тем добавление 4-6 PWM выходов и одного PPM входа позволить подключать

Я этого ждал:)
Приемник стандартно имеет универсальный один PPM выход с инфой обо всех каналах?
Согласен на 6 PWM выходов, но как вариант расширения. Изначально добиваюсь работы для своей архитектуры. Меня ломает занимать место на плате 6-ю здоровыми разъемами. К тому же планирую иметь модификацию совсем совмещенного варианта на одной плате: приемник+автопилот.
Если есть вариант разводки с микроразъемом, чтобы совсем мало места заняли эти PWM выхода и не торчали, то будет совсем хорошо.

baychi:

Я возражаю только в плане использования обратного канала для перестройки параметров связи на лету

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

baychi:

сделает данный модуль пригодным для многих авиамоделистов.

У меня реально большие сомнения, что широкая аудитория сумеет запаять такие форм факторы чипов даже на заводские платы 😃
Production вариант будет по максимуму small size optimized. Хочу, чтобы было максимально мелко и плотно и занимало мало места.

baychi
AlexSneg:

Приемник стандартно имеет универсальный один PPM выход с инфой обо всех каналах?

Те которые вообще имеют PPM выход - да. К сожалению, не все это имеют, но по крайней мере популярные здесь LRS - имеют.
Для остальных остается несложное решение encoder - преобразователь PWM-ов в PPM.

AlexSneg:

К тому же планирую иметь модификацию совсем совмещенного варианта на одной плате: приемник+автопилот.

Только хотел спросить, почему сразу не добавили MEMSы в приемник? 😃

Еще по идеологии, можно отметить полезность выноса MEMSов и компаса на отдельной миниплатке - для удобства установки на модели. Но это уже в “идеальном варианте” . 😃

Кстати, по телеметрии с приемника: Вы силовой ток меряете? И если да, то чем?

Вопросы по схеме:

  1. STM-ка поддерживат 3 I2C интерфейса. Почему Вы посадили все MEMSы и т.п. на один интерфейс?
  2. Все-же смущает меня такая экономия на электролитах! В даташите на LSM303 явно указан 100 мкФ по питанию, не спроста ведь. 😃
AlexSneg
baychi:

но по крайней мере популярные здесь LRS - имеют.

Ну тогда сделаем при доводке до финала.

baychi:

Только хотел спросить, почему сразу не добавили MEMSы в приемник?

Хочу иметь две модификации. Приемник + автопилот совмещенный и приемник с автопилотом модульно. Не всегда же FPV надо.
Схемотехнически и софтово это будет максимально одинаково, просто либо две платы, либо все на одной плате.

baychi:

Еще по идеологии, можно отметить полезность выноса MEMSов и компаса на отдельной миниплатке

Ну не знаю, здесь у меня много сомнений. В первую очередь длина I2C. Я ее гоняю на 400кГц. Я уже попробовал и запаял LSM303 на отдельной платке и отнес на разъеме на расстояние 20 см. Я задолбался глюки ловить. Неделю проблему не мог понять. Как убрал разъемы и длинные провода, все как часы заработало. Так что не думаю…

baychi:

Почему Вы посадили все MEMSы и т.п. на один интерфейс?

А почему бы и нет? Мне с точки зрения разводки это место экономит. Опять же I2C пины могут занимать что-то другое нужное. Читать я буду по прерываниям от устройства. Не вижу причин лишние проводники на плате разводить. А разнос устройств по разным шинам ничего к функционалу не добавит.

baychi:

В даташите на LSM303

Я уже LSM попробовал. Все работает. Глобально 3,3В вырабатывается на импульснике, там достаточно микрофорадов стоит. Если мы хотим ВЧ помехи снять в точке питания, то зачем все глобально микрофорадами обвешивать. Даташит еще не повод всю конструкцию электролитами загромождать. В этом же даташите написано и во всех апноутах нарисовано, что I2C должно от 1,8в работать + колхоз из транзисторов чтобы согласовать двунаправленную I2C с микроконтроллером. Так вот - вранье. Я это уже проверил, все там от 3,3 пашет без всяких согласований.

baychi:

Кстати, по телеметрии с приемника: Вы силовой ток меряете?

ACS712ELCTR-30A-T прямо в разрыв, ближе к разъему аккумулятора.
Еще есть модель до 40 - 60 ампер. Но мне и этого достаточно.

Drinker
AlexSneg:

Чисто математическая модель. Просто отлажен код, который работает. Генерятся показания гироскопа и акселя, подмешивается шум, подается на вход тестового кода, потом сравнивается. Это чисто теоретические исследования.

А я думал макет трясся - вертелся - ускорялся.
Тады ждем реальных опытов. Как положение тела будет отслежывацца.

albertr
AlexSneg:


Fly не только муха но и глагол летать.
Пусть будет FlyingBrain.

А почему такое название? “МозГ” в названии - имхо вообше как-то двусмысленно звучит, а ешё с приставкой “улётный”… 😃

Может обьявить конкурс на этом форуме на лучшее название?

-albertr

AlexSneg
albertr:

Может обьявить конкурс

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

albertr

Если подразумевается, что все исходники будут открытыми, то я бы использовал приставку “Open”.
“OpenLRS” уже занято, но есть куча других вариантов, например: OpenFPV, OpenPilot, OpenRC…

-albertr

AlexSneg

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

Еще раз хочу подчеркнуть обязательно будет первоначальный релиз, в котором в основном весь автопилотный код будет не мой и я на него не претендую. Я НЕ БУДУ изобретать колеса. Главная цель - уйти от печальной системной ошибки всех более менее работающих открытых проектов - убогость и хилость архитектуры микроконтроллера на котором они строятся. Тема Mega 128 должна отмереть. Надо набрать воздуха в грудь и сделать шаг вперед уже.

Теперь по названию. Хотелось бы уйти от стереотипных штампов в принципе и названий типа Open SomeThing… в частности.
MegaPirat звучит классно, но оно уже занято. Предлагаю не торопиться и проявить больше фантазии и накидать больше разнообразных вариантов.