Телеметрия (часть 1)

smalltim

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

Повертел таблички и так и сяк.
Аппроксимация логарифма в неких идеальных атмосферных условиях (0С, 101.3 кПа на земле) в диапазоне от 0 до 1000м дает максимальную погрешность в 0.11% на высоте 660м

Аппроксимация соотношения начального атмосферного давления и идеала (101.3 кПа) линейной функцией дает погрешность:

от -0.17% на высоте в 0м до 0.14% на высоте 1000м при давлении на земле в 105 кПа (788 мм рт ст)
от -0.17% на высоте в 0м до -0.28% на высоте 1000м при давлении на земле в 98 кПа (735 мм рт ст)

Изменение температуры воздуха дает погрешность только в математике. При использовании 16-битных вычислений этой погрешностью можно будет пренебречь.
Теперь дело за малым: вбить это в прошивку.

Для справки: текущий вариант вычислений дает максимальную погрешность в 5% на высоте 1000м, в идеальных условиях.
При полетах не при 0С, а при +27С, к этой погрешности прибавится 10% из-за отсутствия коррекции по температуре.

Dikoy
smalltim:

>1. Определитесь, что хотите - чистый USB или виртуальный СОМ порт. Я за второе, т.к. это позволит пользовать широкий круг терминалок для отладок/проверок, да и писать софт проще. Коды для AT90USB1287 у меня есть, могу поделиться.
Чистый USB, наверное, предпочтительнее - для софтовой реализации надо поддерживать строгие тайминги для USB, и на остальное может не хватить времени.
Или это не так?

Немного не так.
USB у атмела аппаратный, обмен с ним идёт через буфер, т.н. “эндпойнт”. Разница только в том, что USB говорит хосту при втыкивании. Если говорит “хочу быть виртуальным комом”, то бишь CDC, винда подсасывает соответствующий драйвер из своего набора. Драйвер тот глюкавый, но для НЕ реалтайм системы это не важно.
Чистый USB у нас тут пробовали завести… Процесс, конечно, творческий, но результата так и не дал. Слишком много ресурсов требует (человеческих), то есть нерентабелен. В итоге плюнули и сделали CDC.
Процесс энумерации USB отнимает ресурсы, но делать её необязательно. Можно поставить джампик, согласно которому энумерация будет делаться или не будет. Это поэкономит ресурсы.
Скорость при передаче по одному байту около 38400. Если сливать строками (до 64 байт за раз) доходит до мегабита.
Код и описание сброшу в мыло чуть позже, т.к. тут лазиют несколько нежелательных для меня читателей… 😊 Если кому интересно, пишите в личку запрос с емейлом. Тоже скину.

smalltim

Отправил заказ по датчикам в Терраэлектронику - удалось уйти в купный опт, цены получились очень хорошие. По стоимости кита (плата + мелочевка + датчики ) - см блог rcopen.com/blogs/15368?

pvp
smalltim:

На новой плате распаян стандартный атмеловский разъем программирования, даже проводков не надо - я просто втыкаю программатор и всё.

Может быть имеет смысл заливать bootloader (вполне рабочие примеры есть на сайте атмел’а, использую в своих проектах и крайне доволен), чтобы кадый, у кого нет программатора, мог без труда обновлять прошивку при помощи небольшой программки для PC и обычного кабеля (через USART или USB, либо через тот интерфейс, какой Вы, как разработчик ещё реализуете в своём устройстве)?

smalltim


Может быть имеет смысл заливать bootloader (вполне рабочие примеры есть на сайте атмел’а, использую в своих проектах и крайне доволен), чтобы кадый, у кого нет программатора, мог без труда обновлять прошивку при помощи небольшой программки для PC и обычного кабеля (через USART или USB, либо через тот интерфейс, какой Вы, как разработчик ещё реализуете в своём устройстве)?

Я за такой вариант двумя руками, поскольку проект постоянно развивается и появляются фиксы и новые фичи. Скачать новую прошивку и влить через USB - удобней некуда!
Только тему bootloader мне еще предстоит изучить. Когда придется, попрошу помощи, ничего?

Кстати, вчера вбил в код (прошивка v225, пока не выкладываю) следующие изменения:

  • вычисление тока с датчика тока. Очень красиво и компактно получилось, точность по АЦП с учетом оверсэмплинга - 3 мА, минимальная отображаемая величина тока - 10 мА, на экране будет показываться ХХ.ХХ А.

  • аккумулирование потраченных миллиамперчасов методом интегрирования: Каждые 0.16 секунды я умножаю полученную с датчика величину тока, умножаю на этот временной интервал, перевожу из ампер-секунд в миллиампер-часы и складываю в четырехбайтную переменную. Вывод на экран - ХХХХмАh.

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

  • при включении обнуление всех временных переменных в цикле вместо обнуления каждой в отдельности. Высвободилось дополднительно много места под код.

Что еще надо сделать:

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

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

Кстати, во вчерашнем заказе в Терраэлектронику забыл указать термодатчик AD22100 - не пинайте сильно. Сообщение в блоге сейчас обновлю.
Заказал 10 штук в Чипе-Дипе, поскольку в Терраэлектронике и в Митраконе или нет или цены дикие 😃.

Dikoy
smalltim:

Я за такой вариант двумя руками, поскольку проект постоянно развивается и появляются фиксы и новые фичи. Скачать новую прошивку и влить через USB - удобней некуда!
Только тему bootloader мне еще предстоит изучить. Когда придется, попрошу помощи, ничего?

А чего там изучать? На сайте атмела лежат готовые хексы. Заливаете в МК и всё. В дальнейшем перепрошивку делает сам контроллер через какой-то порт.
Есть два НО:

  1. Для запуска бутлодера нужна кнопка на ресете и некая кнопка HWB, чтобы после ресета бутлодер понял, что его хотят, и не передавал управление основному коду.
  2. Бутлодер в чип таки надо вливать внешним программатором 😦 Кроме того, атмельские бутлодеры любят иногда “слетать”, что требует переодической полной перепрошивки чипа.

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

smalltim

Э… а что за кей-то? Это готовое устройство?

pvp
smalltim:

Когда придется, попрошу помощи, ничего?

Чем смогу - помогу.

smalltim:

Кстати, вчера вбил в код (прошивка v225, пока не выкладываю) следующие изменения…

Просьба - раз проект открытый, то выкладывайте вместе с бинарником исходники к каждой версии, пожалуйста.

Dikoy:
  1. Для запуска бутлодера нужна кнопка на ресете и некая кнопка HWB, чтобы после ресета бутлодер понял, что его хотят, и не передавал управление основному коду.

А если сделать так: предусмотреть в программе парсинг некоторой команды (ну сделан же уже парсинг NMEA предложений, как я понимаю). Так вот - добавить какую нибудь команду, по приёму которой будет происходить сброс мк (с переходом на bootloader) - и никаких тебе кнопочек!

Dikoy
smalltim:

Э… а что за кей-то? Это готовое устройство?

Блин. Я уже раза два ссылку давал: http://www.atmel.com/dyn/products/tools_ca…mp;tool_id=3879
В москве он 1000р стОит, в той же тере есть.
AT90USBKey Hardware User Guide - там всё расписано с картинками.

pvp:

А если сделать так: предусмотреть в программе парсинг некоторой команды (ну сделан же уже парсинг NMEA предложений, как я понимаю). Так вот - добавить какую нибудь команду, по приёму которой будет происходить сброс мк (с переходом на bootloader) - и никаких тебе кнопочек!

Теоретически возможно. Оперативка AVR после ресета не ресетится, а сохраняет данные. Вполне можно поместить в ячейку байт (флажок) опосля чего вызвать ресет (вачдог + долгий цикл). Не помню, есть ли исходники бутлодеров на атмеле… Хексы точно есть.

Не, исходников нет 😦

lodeworx

Прошу прощения,никого не хотел обидеть, это я на радостях! Я же готов поделиться инфой по теме, а не звездами на крыльях меряться!

www.microsyl.com <- там bootloader есть неплохой, удобный, барометр и еще кое-че интересного.
ADP1111 - импульсник, к нему из довесков только дроссель нужен. Надоели 7805- греются, жгут батарейки!

  1. Почему видео по человечески на SPI не вывел? Нелюдь!
    Изначально SPI не рассматривался по причине молодости и неопытности, а сейчас он будет занят связью со второй платой.

А если 32-ю… Там TWI есче есть его то и соединять с ARM7 скажем. Круто?
ARM - необоснованно круто. И по цене, и по возможностям

SPI- на видео, TWI- на вторую плату!!!

ARM - не так уж и круто- кристаллы лепят все кому не лень. Ядра одинаковые, периферия разная, особенно реализация. Может быть такая кривая! (Кривее, чем у Texas Instr. не видел!)

Я вижу по какому пути ты идешь и даже могу представить следующие шаги! (2 одинаковых по производительности кристалла, SPI между ними) НЕ ХОДИ ТУДА!!! Я там уже был- там ничего нет!
Megой всётаки лучше дату собирать, и первичную обработку делать. Если делать автопилот, то ARM! Навскидку даже не смогу периферию перичислить всю на борту- так там много всего. А если ты на меге клепаешь- то и с ARM проблем не будет! “лучше день потерять, потом за пять минут долететь”
Согласитесь, что лучше сразу иметь на кристалле весь запас по памяти и периферии-заниматься только математикой без ограничений, чем лепить на борту интернет!?
128-я на мой взгляд недалеко от 32-й уходит(вообще с трудом могу представить как заполнить 128к чистым кодом) как вариант 406- там аппаратура есть для Li-xx обслуживания.
А зачем вообще USB тут нужен?(бытовой интерфейс- нельзя ему доверять- ибо непонятно во сколько ты дату получишь- вечная проблема).
Мой ноутбук-не самый- самый- на солнце не видно, да и аккумулятора на час всего хватает.
В моем варианте LCD графический подкл к борту+ 4 кнопки(войти, выйти,+,-)<-- маленькое все и не жалко, а как на солнце видно хорошо!

Dikoy:

А чего там изучать? На сайте атмела лежат готовые хексы. Заливаете в МК и всё. В дальнейшем перепрошивку делает сам контроллер через какой-то порт.
Есть два НО:

  1. Для запуска бутлодера нужна кнопка на ресете и некая кнопка HWB, чтобы после ресета бутлодер понял, что его хотят, и не передавал управление основному коду.
  2. Бутлодер в чип таки надо вливать внешним программатором 😦 Кроме того, атмельские бутлодеры любят иногда “слетать”, что требует переодической полной перепрошивки чипа.

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

Чтоб не слетали- BLB10-BLB12=0

Dikoy:

Блин. Я уже раза два ссылку давал: http://www.atmel.com/dyn/products/tools_ca…mp;tool_id=3879
В москве он 1000р стОит, в той же тере есть.
AT90USBKey Hardware User Guide - там всё расписано с картинками.

Теоретически возможно. Оперативка AVR после ресета не ресетится, а сохраняет данные. Вполне можно поместить в ячейку байт (флажок) опосля чего вызвать ресет (вачдог + долгий цикл). Не помню, есть ли исходники бутлодеров на атмеле… Хексы точно есть.

Не, исходников нет 😦

См. www.microsyl.com

lodeworx
Satelite:

ну значит нас обманули, пишут безинерционные… и можно ставить на подвижные обьекты…

пока лазил читал про них нашел 4 вида констркции.
гироскоп
продвинутый акселометр
жидкость
магнитный вектор(не понял как работает)

эхх… интересно былобы в руках повертеть…

С гироскопом понятно наверное!
Акселерометрический считает исходя из земного ускорения свободного падения (измеряет по XY, или XYZ) вектор перпендикулярен поверхности. (ADXL серия AnalogDevices)
Магнитный- та же байда, “только в профиль” линии напряженности магнитного поля, в идеале, параллельны поверхности земли(HMC-xxxx HONEYWELL)
жидкость- пузырек с маслом, плавает зеркальце, на него светодиодики светят. Оптическая мышь утопилась!
По отдельности это все редко используется- только в комплексе.(HONEYWELL, DYNON EFIS-EICAS)
Вообщем на HONEYWELL зачитаться можно- рекомендую!

lodeworx

МОИ ВОПРОСЫ!!!

А есть тут кто на вертолетах летающий?
Исходя из моих познаний в самолетовождении, компас нужен полюбасу. Самолет не может не двигаться-можно GPS использовать, на вертолет надо ставить что-то. Я схемку накидал на HMC1021- чегой-то слишком все серьезно получилось- одних деталек на тыщу р. и паять лень такое хозяйство. Опять- же в комплекс надо ADXL завязывать (акселерометр XY).
Есть предложения?

Кто может сдизайнить приборы в поле 128х128?
Я анимировать и засунуть могу- только дизайнер из меня никакой 😦

На закуску выписка:
"В любом полете должны соблюдаться общие правила самолётовождения, их три:

  1. Постоянный контроль за курсом, скоростью, высотой и временем полёта, остатком топлива;
  2. сохранение ориентировки в любом полете, в том числе и при наведении с земли;
  3. своевременное исправление отклонений от линии заданного пути."

вражеский GPS- не нужен 😎

foxfly:

Покритиковать- это всегда пожалуйста: в широко известном (в узких кругах) Micropilot 2028, который продается уже лет 5, используется УЗ высотомер до 20 ft (6м).
Сделан он на одной “таблетке”, надо думать: и передатчики и приемник.
Но посадка с его применением- душераздирающее зрелище : видел живьем один раз- до сих пор трясет 😃
Порывчик ветра, камушек- любая помеха : самолет в починку.
Тупая электроника не может адекватно угрозе (то есть чуть- чуть) “сыграть” рулями.
И садиться в этом режиме можно только на поверхность класса F1, желательно- помытую шампунем 😃
Кроме того- показания УЗ высотомера очень будут зависеть не только от температуры, но и от характера поверхности (трава- один коэффициент отражения, асфальт- совсем другой )

Ага, согласен полностью! Видел тут кино про X47 Boeing`а, который они учат на авианосец садиться. Там один из создателей дико ругался по поводу “бесстрашности” компьютеров- не боятся они ничего!

smalltim

>Я вижу по какому пути ты идешь и даже могу представить следующие шаги! (2 одинаковых по производительности кристалла, SPI между ними) НЕ ХОДИ ТУДА!!! Я там уже был- там ничего нет!

Да прям уж 😃 Чего там страшного? Пропускной способности не хватит? Трудности в реализации?

>Megой всётаки лучше дату собирать, и первичную обработку делать.

Ну, так и делается.

>Если делать автопилот, то ARM! Навскидку даже не смогу периферию перичислить всю на борту- так там много всего. А если ты на меге клепаешь- то и с ARM проблем не будет! “лучше день потерять, потом за пять минут долететь”

Ну правда, не дорос я еще до ARM. Зачем таскать на борту полноценный 32-битный компук?

>Согласитесь, что лучше сразу иметь на кристалле весь запас по памяти и периферии-заниматься только математикой без ограничений, чем лепить на борту интернет!?
128-я на мой взгляд недалеко от 32-й уходит(вообще с трудом могу представить как заполнить 128к чистым кодом) как вариант 406- там аппаратура есть для Li-xx обслуживания.

128й (ее аналога с аппаратным USB-) с запасом хватит для написания нормальной математики с плавающей точкой на Сях, неужели не так? 😃

>А зачем вообще USB тут нужен?(бытовой интерфейс- нельзя ему доверять- ибо непонятно во сколько ты дату получишь- вечная проблема).
Мой ноутбук-не самый- самый- на солнце не видно, да и аккумулятора на час всего хватает.

USB нужен для связи с компуком. Компук (НЕ ОБЯЗАТЕЛЬНО В ПОЛЕ!) удобен по многим причинам:

  1. Удобное обновление прошивки
  2. Конфигурирование телеметрии
  3. Расстановка контрольных точек по карте для автопилота (а вдруг и до этого доживем? 😃 )
  4. Слив всех логов со всех датчиков после полетного дня.
lodeworx
smalltim:

>Я вижу по какому пути ты идешь и даже могу представить следующие шаги! (2 одинаковых по производительности кристалла, SPI между ними) НЕ ХОДИ ТУДА!!! Я там уже был- там ничего нет!

Да прям уж 😃 Чего там страшного? Пропускной способности не хватит? Трудности в реализации?

>Megой всётаки лучше дату собирать, и первичную обработку делать.

Ну, так и делается.

>Если делать автопилот, то ARM! Навскидку даже не смогу периферию перичислить всю на борту- так там много всего. А если ты на меге клепаешь- то и с ARM проблем не будет! “лучше день потерять, потом за пять минут долететь”

Ну правда, не дорос я еще до ARM. Зачем таскать на борту полноценный 32-битный компук?

>Согласитесь, что лучше сразу иметь на кристалле весь запас по памяти и периферии-заниматься только математикой без ограничений, чем лепить на борту интернет!?
128-я на мой взгляд недалеко от 32-й уходит(вообще с трудом могу представить как заполнить 128к чистым кодом) как вариант 406- там аппаратура есть для Li-xx обслуживания.

128й (ее аналога с аппаратным USB-) с запасом хватит для написания нормальной математики с плавающей точкой на Сях, неужели не так? 😃

USB нужен для связи с компуком. Компук (НЕ ОБЯЗАТЕЛЬНО В ПОЛЕ!) удобен по многим причинам:

  1. Удобное обновление прошивки
  2. Конфигурирование телеметрии
  3. Расстановка контрольных точек по карте для автопилота (а вдруг и до этого доживем? 😃 )
  4. Слив всех логов со всех датчиков после полетного дня.

А ты логи хочешь в дополнительной оперативке хранить, а с каким разрешением, дельту? Может C-FLASH?
Зря ты про “не дорос”! Я так тоже думал(вопрос недели, посидеть, репу почесать). Аппетит приходит во время еды! Мне вот снится в “слюнявых” снах висение над… белой буквой “H” (не пинайте) т.е. видео надо будет построчно(поблочно) обрабатывать. У меня вот такие коробочки получаются:
Первая:
2хMPX4115- барометрия
GYROSTAR MURATA- гироскоп(на Z-YAW)
ADXL2010-10g по XY(как индикатор скольжения+калибровка магнитометра)
HMC1021-магнитометр на XY (компас, расчет ветра)
HMC1001- на Z(в планах для SWEEPDEV- отдельная тема)
DS18xx-градусники
RS-485 (на USB даже с метровым кабелем проблемы будут) Megaload с ним работает вроде.
Проявляется благодаря этому форуму:
OSD
4 сервовхода от приемника(2 точных 2 неточных)
4 сервовыхода (2 точных 2 неточных)
(главное, чтоб мега не задымилась)
Вторая:
железяка на ARM!(GPS+ всякая хрень, требующая другой ветки для обсуждения)
есть два варианта даже…
казалось бы-ARM(lpc2148)- жирный, все есть, а сам себя не может перешивать-тоскливо 😦
Про floatingpoint calcz ещё поговорим! Меня чего- то к lookuptables тянет последнее время, к самонастраиваемым! Оказывается формулы только в учебниках красиво выглядят. А в наших приложениях все сводится к умножению “попугаев” на чего-нить еще, так? Прикинь как все красиво получается, если тот-же синус не FP считать встроенным в 32bit, а массивчик одномерный 180byte допустим (unsigned int x 0-90 градусов) + смотрелка на ассемблере. Короче, математика нужна математикам, но не компьютерам! во какая глубокая мысля.
А до автопилота точно доживем

smalltim

>А ты логи хочешь в дополнительной оперативке хранить, а с каким разрешением, дельту? Может C-FLASH?

Маленькая serial flash, разрешение - как отображается на экране, дельта - секунда,

>2хMPX4115- барометрия

Почему два?

>Прикинь как все красиво получается, если тот-же синус не FP считать встроенным в 32bit, а массивчик одномерный 180byte допустим (unsigned int x 0-90 градусов) + смотрелка на ассемблере.

Ну, я именно так, например, использую двухбайтовый целый косинус для перевода координат на плоскость из сферических с GPSa

>Короче, математика нужна математикам, но не компьютерам! во какая глубокая мысля.

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

lodeworx
Dikoy:

Ох и стОить же она будет… 😃

Я в пятницу EZ0 купил, опробую доложу. Тоже полезно будет, ИМХО.
Вообще, эхолот на стадии посадки по приборам, штука нужная и полезная.

Где лучше советовать, тут или где-то ещё? 😃

  1. Определитесь, что хотите - чистый USB или виртуальный СОМ порт. Я за второе, т.к. это позволит пользовать широкий круг терминалок для отладок/проверок, да и писать софт проще. Коды для AT90USB1287 у меня есть, могу поделиться.
  2. На Си проще репы: __eeprom char buf[100]; И всё… Но проще структуру, конечно. Удобней.
  3. Вдруг полезно 😃 Код управления таймерами для руления машинок:
//TIMER1 initialize - prescale:8
// WGM: 10) PWM phz correct, TOP= ICRn
// desired value: 50Hz
// actual value: 50,000Hz (0,0%)

TCCR1B = 0x00; //stop

TCNT1H = 0xF6; //setup
TCNT1L = 0x3C;

/* в OCR1х вписывать нужную величину ШИМ.

	Причём вписываемая величина соответствует длине импульса в мкС!


*/

 //  ICR1 = 20000  это ШИМ  100%  равный периоду в 20000 мкС
ICR1H  = 0x4E;
ICR1L  = 0x20;


OCR1AH = 0x05;   //старшие 8 бит
OCR1AL = 0x78;

OCR1BH = 0x05;   //старшие 8 бит
OCR1BL = 0x78;

OCR1CH = 0x05;   //старшие 8 бит
OCR1CL = 0x78;


TCCR1A = 0xAA;
TCCR1B = 0x12;   //start Timer

Это для ATmega128, легко переводится на USB1287. Кварц 16 мег. Т.к. будет пользоваться USB, то квар по-любому должен быть либо 8, либо 16 😉

Может не надо всё-таки нам автогенов этих кривых

//TIMER1 initialize - prescale:8
// WGM: 10) PWM phz correct, TOP= ICRn_________<—Режим не тот- задаешь ____________________________________________длительность только для половины импульса-Dual Slope, blin!

// desired value: 50Hz
// actual value: 50,000Hz (0,0%)

TCCR1B = 0x00; //stop

TCNT1H = 0xF6; //setup_____________________<----Setup ЧЕГО??? Вообще не понятно зачем прилипает в ICC
TCNT1L = 0x3C;

/* в OCR1х вписывать нужную величину ШИМ. ____________только на 2 поделим!

Причём вписываемая величина соответствует длине импульса в мкС!<— Ага! Minvalue for mode ten is 3, means 3x2=6usec- негусто…

*/

// ICR1 = 20000 это ШИМ 100% равный периоду в 20000 мкС__________<—?! ICR и есть пол-периода!
ICR1H = 0x4E; ____________________T=2*8*ICR/16000000 (8-prescaler)
ICR1L = 0x20;

OCR1AH = 0x05; //старшие 8 бит____<—А это че? Знаешь что у тебя получается 0х578*2=2800usec. Понимаешь в
OCR1AL = 0x78;___________________каком положении серво окажется!

TCCR1A = 0xAA;
TCCR1B = 0x12; //start Timer

а где настройка портов на вывод ???

Может так:
Something like proper C:

PWM_Init () {
  DDRx|=bit_set(OC1Apin,OC1Bpin,OC1Cpin); //настроим ножки на вывод. Для 128 DDRB
	TCCR1B=bit_set(WGM12,WGM13);// Timer stopped, mode14
		TCCR1A=bit_set(COM1A1,COM1B1,COM1C1,WGM11); //noninverting fastPWM mode14 set
		  ICR1=0x9C3F=39999;  //для 16 mhz 20000usec period
					 TCCR1B=bit_set(CS11);  //Timer start with prescaler=8
}

SERVO_MOVE(aservo,bservo,cservo){
// 1=0.5usec т.е. например серво в центре это 1.5msec длительность импульса
// 1500usec*2=3000=0xBB8 --> имеем на ход серво(250usec) разрешение 500!
// например: OCR1A=0xBB7;  -Servo Neutral

   OCR1A=aservo;
   OCR1B=bservo;
   OCR1C=cservo;
}

А режим фазкорректной модуляции вааще для других целей!!! Вот так вот.
Ребята, давайте сами все писать, вручную, без автогенов-они кривые.
Я вообще за стандартный RS232-485. То есть, я против USB!
Ну да, и терминал любой можно. У меня так уже давно сделано. Хочешь данные выводи, хочешь команды вводи вручную как на модеме и выглядит загадочно. Если хочется, всегда можно под винду форточку с кнопками забабахать. Я так в Matlab дату загоняю. Тем более JTAGmk1, скажем не синхронизируется через USB-COM!
Думаю, если нет его на чипе аппаратной реализации- и не надо. Есть- нет вопросов.

lodeworx
smalltim:

>А ты логи хочешь в дополнительной оперативке хранить, а с каким разрешением, дельту? Может C-FLASH?

Маленькая serial flash, разрешение - как отображается на экране, дельта - секунда,

>2хMPX4115- барометрия

Почему два?

>Прикинь как все красиво получается, если тот-же синус не FP считать встроенным в 32bit, а массивчик одномерный 180byte допустим (unsigned int x 0-90 градусов) + смотрелка на ассемблере.

Ну, я именно так, например, использую двухбайтовый целый косинус для перевода координат на плоскость из сферических с GPSa

>Короче, математика нужна математикам, но не компьютерам! во какая глубокая мысля.

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

“Дельта” я имел ввиду компрессию. Т.е. не сохраняешь каждую секунду одно и то-же, а пишешь только во-сколько и насколько поменялось, если поменялось.
Высота, возд. скорость, верт. скорость.
Респект за косинус!- всегда живой.
Ну вообщем да. Хотя для вертолёта такая концепция не подойдет 😃

Ну ты, можно сказать, архитектурно в ноль повторяешь мой 2-х проц. девайс. Правда на более высоком уровне- прогресс!(у меня 2х8051 стояли, программный PWM для стрелочных индикаторов, ADC через SPI,протокол через SPI, LCD уродский на 16 символов) И задачи слегка разные, но грабли будут те- же.
P.S.
От 8051 к AVR, c AVR на ARM!- авиалозунг тридцатых!

Dikoy
lodeworx:

схемку накидал на HMC1021-

Зачем этот анахронизм? 1052 (1055) и любой МК с диф-входами. Есть готовая и обкатаная схема с кодами. Датчик + АЦП + транзистор + МК. Всё. Точность 0,25 градуса без шумов и фильтрации.

lodeworx:

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

Проблема только в том, что на этом коде самолёт летает уже год как и даже не подозревает, что код кривой… В этом кривом коде 1024 точки на канальный импульс 2 мс. Больше машинки всё равно не понимают.
Про порты - а самому догадаться никак? 😃

smalltim

>“Дельта” я имел ввиду компрессию. Т.е. не сохраняешь каждую секунду одно и то-же, а пишешь только во-сколько и насколько поменялось, если поменялось.

Ну посчитаем. 10 параметров по 2 байта раз в секунду - 72000 байт в час. Зачем жать? Мегабитной флешки на полжизни хватит.

>И задачи слегка разные, но грабли будут те- же.

А про эти грабли можно подробнее? 😃 А то тут каждый второй в форуме граблями грозит. 😈 Собрать эти грабли и раздать студентам - до Урала можно порядок в стране навести.

>Зачем этот анахронизм? 1052 (1055) и любой МК с диф-входами. Есть готовая и обкатаная схема с кодами. Датчик + АЦП + транзистор + МК. Всё. Точность 0,25 градуса без шумов и фильтрации.

Компас - хочу 😦 Вкусно и нужно, но на первую плату уже абсолютно точно не влезет 😦

Dikoy

Насчёт арм согласен, уже сейчас цена арма приближается к атмегам, а возможностей больше. Я следующий автопилот на нём буду делать.

Насчёт двухчиповости - мои чипы объединены через интерфейс внешней памяти 😉 Сегмент памяти воторого чипа является общим. передача байта - два тика. Доступ как и к оперативе, через указатель.

smalltim:

Компас - хочу 😦 Вкусно и нужно, но на первую плату уже абсолютно точно не влезет 😦

Осей сколько? Если есть стабилизатор, достаточно двух в плоскости. Я так сделал. Можно трёхосевой, но он чуть сложнее. Впрочем, у меня есть абочие варианты под оба случая. Если нужно, скину в мыло. После выходных 😃

lodeworx:

www.microsyl.com <- там bootloader есть неплохой, удобный, барометр и еще кое-че интересного.
ADP1111 - импульсник, к нему из довесков только дроссель нужен. Надоели 7805- греются, жгут батарейки!

ADP1111 - 75 кГц. Дроссель будет огромным!
У той же АДи есть 1610, 1611 на 1,2 МГц. Я их пользовал - супер и всё мелкое 😉

lodeworx
smalltim:

>“Дельта” я имел ввиду компрессию. Т.е. не сохраняешь каждую секунду одно и то-же, а пишешь только во-сколько и насколько поменялось, если поменялось.

Ну посчитаем. 10 параметров по 2 байта раз в секунду - 72000 байт в час. Зачем жать? Мегабитной флешки на полжизни хватит.

>И задачи слегка разные, но грабли будут те- же.

А про эти грабли можно подробнее? 😃 А то тут каждый второй в форуме граблями грозит. 😈 Собрать эти грабли и раздать студентам - до Урала можно порядок в стране навести.

>Зачем этот анахронизм? 1052 (1055) и любой МК с диф-входами. Есть готовая и обкатаная схема с кодами. Датчик + АЦП + транзистор + МК. Всё. Точность 0,25 градуса без шумов и фильтрации.

Компас - хочу 😦 Вкусно и нужно, но на первую плату уже абсолютно точно не влезет 😦

Лично для моих целей надо 10фреймов минимум, мне не подходит раз в секунду.(для Matlab)
И вертикальную скорость в таком случае получаешь не раньше, чем через секунду.
Ну, про мои грабли: Все чудесно отлаживалось и работало по отдельности на одном чипе. Достаточно скоро, как ни странно, все оказалось забито softpwm и расчетом высоты и вертикалки. Встал вопрос: че делать? Новый чип? Второй чип? Новый чип осваивать побоялся из- за недостатка времени. Влепил второй. Через месяц я понял, что вместо того, чтобы не забивая себе голову, писать софтину, занимаюсь хренью, типа межпроцессорного протокола, распараллеливания и т.п. + проблемы стали расти в геометрической прогрессии х 2!(типа, код нада в двух местах обновлять) Понимаешь примерно? Сделать можно, и работать все будет у меня на полке стоит двухпроцессорный “барометр” прецизионный-теперь жалко разбирать(время потрачено немеряно! 8252 шьется минут 8!). Перешел на AVR- влегкую забабахал все то-же за один день в 2к памяти- никаких проблем с производительностью.
Короче, основные ГРАБЛИ: намучаешься с отладкой, времени потратишь(в то время, как все прогрессивное человечество…)- лучше его на освоение ARM пустить и не париться потом 😉
Лучше на тракторах порядок наводить, чем граблями!

Dikoy:

Осей сколько? Если есть стабилизатор, достаточно двух в плоскости. Я так сделал. Можно трёхосевой, но он чуть сложнее. Впрочем, у меня есть абочие варианты под оба случая. Если нужно, скину в мыло. После выходных 😃

ADP1111 - 75 кГц. Дроссель будет огромным!
У той же АДи есть 1610, 1611 на 1,2 МГц. Я их пользовал - супер и всё мелкое 😉

Ну вот, есть прогресс! Молодец! А мне компас можно?

lodeworx
Dikoy:

Зачем этот анахронизм? 1052 (1055) и любой МК с диф-входами. Есть готовая и обкатаная схема с кодами. Датчик + АЦП + транзистор + МК. Всё. Точность 0,25 градуса без шумов и фильтрации.

Проблема только в том, что на этом коде самолёт летает уже год как и даже не подозревает, что код кривой… В этом кривом коде 1024 точки на канальный импульс 2 мс. Больше машинки всё равно не понимают.
Про порты - а самому догадаться никак? 😃

Согласен, что анахронизм (схеме третий год пошел) потому и не стал лепить сейчас и выкладывать на обозрение.
С удовольсвием использовал- бы твои наработки по компасу!!!
То, что самолет летает- как раз не есть проблема! Просто не очень понятно ПОЧЕМУ?? именно зтот режим?
И зачем выкладывать код, если тут все и так сразу обо всем догадываются?! (на машине можно задним ходом до Питера доехать!)
Сорри плиз! Я просто максималист и критиковать люблю, но это КОНСТРУКТИВ!
(не бывает некривого софта! Мой ненамного прямее 😁 )

lodeworx

ДЛЯ SmallTim!
Еще грабли… Смотри, получается 1 фрейм твой будет занимать секунд …СЕМЬ!! 😌 В первую получаешь дату и делаешь с ней первичные преобразования, на вторую она уходит(не забудь про OSD). Дальше, смотри, чтобы поиметь летные данные, тебе надо это проделать минимум три раза: 1.скорость, высота 2.вертикальная скорость 3.тренд вертикальной скорости. Седьмую перебираешь матрицы(где только начитался?! или друзья- профессионалы едят вкусные-синие таблетки?! шутка…) и-и-и-и-и наконец в самом начале восьмой секунды твои серво совершают какое- то движение- не факт, что правильное(ибо обратный лооп и создан для компенсации)…хрясь…Я тебе как практик говорю- проверено на собственной заднице… 😃
P.S.
X47 реагирует 100 раз в секунду!

lodeworx
Dikoy:

Осей сколько? Если есть стабилизатор, достаточно двух в плоскости. Я так сделал. Можно трёхосевой, но он чуть сложнее. Впрочем, у меня есть абочие варианты под оба случая. Если нужно, скину в мыло. После выходных 😃

ADP1111 - 75 кГц. Дроссель будет огромным!
У той же АДи есть 1610, 1611 на 1,2 МГц. Я их пользовал - супер и всё мелкое 😉

1610-1611 ( www.analog.com/en/power-management/…/index.html )- это step-up converter! Из 5---->12v?! С трудом представляю, где на борту использовать… Посмотри, он и стоит в 2 раза дешевше… Если дело в частоте- ADP3050. Дроссель, даже на 70к будет меньше любого линейного регулятора. От его индуктивности(размеров) зависит, в конкретной аппликации, только отдаваемый ток. Или на 1А у вас регулятор расчитан, что дроссель не помещается.

drweb

Приветствую всех из Баку,

Вот и плата сделанная по утюжно-принтерной технологии,

Спасибо SmallTimу и всем кто участвует в этом и помогает