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

foxfly
Satelite:

готовый авиагоризонт…
правда стоит наверное … рублей… миллион… 😦

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

Satelite
foxfly:

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

вот чтоб этого небыло электронике нужно дать знать степень угрозы… по этому приемника 2…
железка знать будет на сколько рулить. 😉
от типа поверхности благо скорость звука не зависит… 😁
а значит, при достаточно мощном импульсе, эхо будет…
по этому передатчик отделен от приемника…

кто какие еще знает способы локации…

в теме на хбите что создал Dikoy, понасоветовали… мама дорогая 😁
каким-то макаром используя радиолокацию… доплеровский сдвиг…
разве используя доплеровский сдвиг… можно получить расстояние до цели?
или я чтото пропустил… или там не поняли вопроса…

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

foxfly
Satelite:

вот чтоб этого небыло электронике нужно дать знать степень угрозы… по этому приемника 2…
железка знать будет на сколько рулить. 😉

Ну, ну…
Ждем*с 😃

BigDaddy

Прикупил сегодня немного комплектухи и вот что вырисовывается:

В маркировке на шелкографии перепутаны местами конденсаторы С11,С13 и С12,С14. Но страшного ничего нет, номиналы у них совпадают. 😛

igorsd
Satelite:

готовый авиагоризонт…
правда стоит наверное … рублей… миллион… 😦

Про наши не знаю…
есть вот такой вот вариант:
www.vti.fi/en/products/…/inclinometers/
eicom.ru/catalogue/…/SCA100T-D01/

Тут ещё можно почитать обсуждение на тему датчиков (в т.ч. там и про инклинометры есть) для автопилота…
www.rcgroups.com/forums/showthread.php?t=627348

smalltim

Йэх… Полетал я тут еще со своей телеметрией, и понял, что линейная аппроксимация логарифма не катит. Но это еще ерунда, там погрешность <2% на высотах до 500м и 3.6 процента на 1000м.
Хуже другое. В исходной формуле Δh = 18400*(1 + а*t)*lg(p1 / p2) есть температура воздуха t в градусах цельсия. Вот ее я сейчас беру нулевой (в Цельсиях). А число “а” - это коэффициент теплового расширения воздуха, на который я в свое время почему-то положил болт. А коэффициент этот равен, как нетрудно догадаться, 1/273 градуса в минус первой степени. То есть, при полете в +27 градусов моя телеметрия недопокажет 10% высоты, что я и наблюдал вчера, сравнивая высоту по барометрическому датчику с высотой по GPS.

Так что ждите новую прошивку, буду теперь температуру воздуха не просто так мерять, а с пользой 😃

Dikoy
smalltim:

буду искать нужную панельку для Атмеги.

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

Satelite:

Всем привет.
если моя мысль(работа) интересна сообщству, докладываю.(если интересно, может другую тему создать? уже ОФ получается?)

обдумал концепцию ультразвукогого высотомера-радара-эхолота…

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

smalltim:

Вот со второй платой, где автопилот и т.д, наверное, помощь не помешала бы.

Что хочется сделать:

  1. Слив данных с датчиков на первой плате в память и отдача через USB на компук.
  2. Настройки телеметрии через компук с сохранением параметров в EEPROM первой и второй платы.
  3. Автопилот: обработка данных с датчиков первой платы, с GPS, с датчиков горизонта и формирование управляющих сигналов на сервомашинки - с этим мне будет проще всего
  4. Управляющая программа и драйвер USB девайса на компуке - с этим тоже будет не очень трудно.

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

  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 😉

BigDaddy

Видел я такую панельку-переходник для программатора вчера на радиорынке, когда комплектуху закупал. За 1470руб. Но рука не поднялась…
Проще (а главное дешевле) слепить шнурок для программирования через СОМ-порт и шить процессор прямо на плате. Благо разъемы там для подключения такого шнурка есть.

Dikoy
BigDaddy:

Проще (а главное дешевле) слепить шнурок для программирования через СОМ-порт и шить процессор прямо на плате. Благо разъемы там для подключения такого шнурка есть.

+1

SGordon
smalltim:

Так что ждите новую прошивку, буду теперь температуру воздуха не просто так мерять, а с пользой 😃

Хотел спросить, со старой платой это мало поможет, ведь плата не всегда на открытом воздухе а там термодатчик впаян?

smalltim

>Проще (а главное дешевле) слепить шнурок для программирования через СОМ-порт и шить процессор прямо на плате. Благо разъемы там для подключения такого шнурка есть.

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

>Где лучше советовать, тут или где-то ещё?
Тут, конечно.

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

>3. Вдруг полезно Код управления таймерами для руления машинок:
Спасибо.

>Хотел спросить, со старой платой это мало поможет, ведь плата не всегда на открытом воздухе а там термодатчик впаян?
Термодатчик лучше выпаять и на проводке сделать, а то он от самой платы подогреваться будет.

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