Перейти к содержимому
Форумы SkyCentre Прыжки с парашютом
Валера К

Программируем высотомер на основе TI eZ430 Chronos

Recommended Posts

Смотрите, какую штуку нашел. Отладочный набор в форм-факторе часов с возможностью заливки своей прошивки и програминга на микроконтроллере от Texas Instruments:

This tool features a 96 segment LCD display and provides an integrated pressure sensor and 3-axis accelerometer for motion sensitive control. The integrated wireless feature allows the Chronos to act as a central hub for nearby wireless sensors such as pedometers and heart rate monitors. The eZ430-Chronos offers temperature and battery voltage measurement and is complete with a USB-based CC1111 wireless interface to a PC.

Выглядит вот так:

eZ430-Chronos.gif

Стоит датчик давления: http://www.vti.fi/en/support/obsolete_prod...essure_sensors/, датчик ориентации-ускорения, термодатчик.

И самое главное: эта штука стоит 50 (пятьдесят) долларов США. По моему, надо брать.

Ссылка на описание: http://processors.wiki.ti.com/index.php/EZ430-Chronos

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Justas, что скажешь, их можно оптимизировать для скайдайва(заставить вести лог, скорость снижения и т.п.)?

Data Logger

The eZ430-Chronos can be used as a data logger. Heart rate, temperature, and altitude can be logged in user definable intervals of 1 to 255 seconds. 8kB of internal Flash memory is reserved for logging for several hours up to days, depending on the settings. The stored data can be transferred to a PC (in CSV format) and used for further analysis.

краткий ответ: да, там есть лог :)

И самое главное: эта штука стоит 50 (пятьдесят) долларов США. По моему, надо брать.

Если возьмеш - отпиши, пожалуйста, что, где и как. ;)

Здесь есть описание на русском:

http://e2e.ti.com/ru/wikis/ti_/ez430-chronos.aspx

В Украине можно приобрести также на "космодроме":

http://www.kosmodrom.com.ua/product.php?pa...%CF%EE%E8%F1%EA

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Почитал много всего интересного...

Лог есть, но почему-то всего 1Hz Флеш-памяти достаточно для скайдайва.

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

Пискля в них есть :)

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

Интересная статья, откуда я про них узнал: http://habrahabr.ru/blogs/controllers/114216/

PS: Сделал резерв в мск, стоит 2100 рублей (для не местных примерно 70 баксов в рознице). Надеюсь, моих навыков програмистских хватит, чтобы это освоить.

Поделиться сообщением


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

Отписываюсь :) У нас эти часы смели во всех магазинах после статьи на хабре. Но я взял из остатков за 2100 деревянных.

Итак в комплекте:

0) Сами часы (версия на 915 мегагерц). На 433 не берите, они беспонтовые - нет внешних датчиков).

1) отвертка

2) беспроводный передатчик в USB для заливки прошивки без разборки часов и считывания всяких данных/заливки настроек.

3) отладочная плата на USB (в нее втыкаем часы после разборки и отлаживаем прошивку)

Даже без всяких модификаций, похоже часы пригодны для скайдайва. Самое главное, чего не хватало в часах Sunto - это блокировка клавиш.

Здесь это есть прямо из коробки.

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

Из софта идет в коплекте урезанные IAR и CCS. Я начал с первого и с помощью него мне удалось покопаться в прошивке.

Самое интересное, это алгоритмы определения высоты. Я в них поковырялся, и выяснил вот что:

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

Формула такая: 0.2 * текущее_давление + 0.8*предыдущее давление.

1) Используется таблица стандартных высот-давлений. При внесении корректировки по высоте (для выставления 0) таблица пересчитывается.

2) Промежуточные значения аппроксимируются по неизвестному мне алгоритму с некими коэффициентами.

Подскажите плиз, где почитать про такие алгоритмы?

3) Результат пересчитывается с использованием температурной поправки.

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

С помощью IAR я смог откомпилить новую прошивку, но там возникли некоторые косяки по сравнению с уже откомпиленной. А конкретно перестали определяться отрицательные высоты. Скорее всего это связано с урезанностью IAR.

Еще остались некоторые непонятки со значиниями коррекций для датчиков. По умолчанию датчики сейчас (давление 1013 мбар, температура 24o C) показывают 1039 миллибар и температура около 40o C). Не очень понятно, как скомпенсированный датчик может давать такую погрешность, может он давление приводит к давлению на уровне моря? надо ковырять, короче.

После калибровки высоту отображают до одного метра, если опустить/поднять руку, все меняется как надо :)

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я тестил все это на бесплатном IAR Embedded Workbench for MSP430 v5.20, там есть ограничения, но в принципе работает. Как я уже сказал, прошивка из него немного глючит (тут я не разобрался, это у меня руки кривые или компилятор. Сейчас хочу попробовать вот это:

http://rutracker.org/forum/viewtopic.php?t=2975395

А вот, кстати, и от Ti Code Composer Studio

http://rutracker.org/forum/viewtopic.php?t=3184872

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Я тестил все это на бесплатном IAR Embedded Workbench for MSP430 v5.20, там есть ограничения, но в принципе работает. Как я уже сказал, прошивка из него немного глючит (тут я не разобрался, это у меня руки кривые или компилятор. Сейчас хочу попробовать вот это:

http://rutracker.org/forum/viewtopic.php?t=2975395

Отпишись, пожалуйста, о результатах - исчезнут глюки после компиляции полной версией или нет?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Выяснил вот что:

Полные версии от неполных отличаются размером генерируемого кода. В неполных - ограничение 2/4/8 килобайт. Чтобы обойти это ограничение, TI поставляет 2 вида исходников - полные и для урезанных версий. Для урезанных версию отличаются тем, что некоторые системные функции (в основном, драйверы) уже скомпилены, и соответственно не участвуют в ограничению по размеру кода.

Если это перевести на русский, то в принципе достаточно урезанных версий.

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

Короче, после установки урезанной Code Composer Studio все глюки исчезли.

Что касается полных версий - я так и не нашел ничего :( Если припрет, есть полная версия на 30 дней, дальше или сбрасывать триал, или ставить в виртуальную машину.

==============

Еще интересная тема: Построил ради прикола в Mathcad графики вычисления высоты от давления по разным методам:

1) Приближенная формула

2) По таблице стандартной международной атмосферы

3) По алгоритму драйвера датчика давления (там тоже таблица и между точками линейная аппроксимация)

Все 3 графика почти сошлись с точностью до 10 метров на участке -300 - 10000 метров. Еще осталось понять, как на них влияет температурная поправка и внесение офсета (смезения) давления на высоте 0.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

в файле расчет зависимости давления от температуры для датчиков от TI 1.xls

лучше конечно использовать датчики давления с тепературной коррекцией,

но TI конечно сдесь сэкономила

упрощенная формула расчета высоты

k1 = 11390 - p/10;

ALT = (((745 * k1) / 256 + 46597) * k1) / 65536 - 966;

подходит для рачета высоты до 5000м, точность +/- 2м

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Судя по даташиту датчик выдает давление учитывая температуру (т.е. скомпенсированный).

спасибо за формулу :)

я считал и сравнивал стандартную атмосферу с такой формулой:

9660d5bd071be4b29ac9c9ff4bfb5701.jpg

тут пунктирная линия - формула, синие точки - данные из таблицы драйвера, желтые - стандартная атмосфера ICAO, бирюзовые точки-тире - упрощенная формула

Но в общем то в наших делах точность в 10 метров вполне достаточна. Главное, чтобы высота обновлялась быстро (я отключил скглаживание, так что теперь выводит как есть на данный момент). Думаю, в дальнейшем можно вообще сделать на высоте чтобы округляло до 50 метров а при снижении до 10.

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

UPD:Обновил картинку с упрощенной формулой от Лелик. Действительно, ло 4-х км сходится с точностью до 10 м.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Главное, чтобы высота обновлялась быстро (я отключил скглаживание, так что теперь выводит как есть на данный момент)
Круто а может вообще привести по реперным точкам к тому же ВИЗО?)

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

Хочу такой девайс себе!

в магазах не осталось, где заказать напомните пжл)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Осталась одна головоломка - придумать алгоритм выставления нуля, как в Viso, чтобы не руками поправку вводить перед стартом.

ну это очень просто.

атмосферное давление изменяется с небольшой скоростью, соответственно

программа измеряет давление за определенный промежуток времени округляет его,

и принимает за 0.

также, программа контролирует скороподъемность, и если скорость подъема

резко увеличивается, значит начинается подъем ЛА, вот значение принятое за 0

перед подъемом можно считать давлением у земли.

это конечно в общих чертах, есть еще куча ньюансов

точная формула расчета высоты, у меня получилась точность до 20см:

FLOAT pressureFactor = 1/5.255;

rawAltitude = 4433000 * (1 - pow(p/101325.0, pressureFactor))

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

формулы с плавающей точкой

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
точная формула расчета высоты, у меня получилась точность до 20см:

FLOAT pressureFactor = 1/5.255;

rawAltitude = 4433000 * (1 - pow(p/101325.0, pressureFactor))

У меня есть формула такого-же типа (на картинке слева вверху). Тут вопрос не в плавающей точке (она точно есть), а в возведении в произвольную степень. Я так понимаю, в микроконтроллерах ввиду иеньшей производительности и объема памяти такие вещи стараются заменять уже вычисленными значениями (таблицей) с аппроксимацией линейной между точками. Хотя тут 16 мегагерц, может и будет приемлемая производительность, я в этом не спец.

Насчет нуля... как обычно дьявол в нюансах... Я могу запоминать несколько последних значений давления и потом вносить коррекцию, но самолет тоже может лететь на одной высоте по давлению достаточно долго. Поэтому нужно делать какие-то флаги и таймауты... Т.е. пока на земле - давление плавно меняется, выставляем 0. Как начался резкий набор, выставляем флаг - типа в полете и лочим коррекцию. Как спустились до высоты <300 метров, сбрасываем флаг. Как-то так.

А я вот наоборот хочу простой цифровой высотнег/пищалку которую обнулил перед взлетом и летай хоть улетайсо в каких угодно салонах и по каким угодно графикам - ноль не уйдет)

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Насчет нуля... как обычно дьявол в нюансах... Я могу запоминать несколько последних значений давления и потом вносить коррекцию, но самолет тоже может лететь на одной высоте по давлению достаточно долго. Поэтому нужно делать какие-то флаги и таймауты... Т.е. пока на земле - давление плавно меняется, выставляем 0. Как начался резкий набор, выставляем флаг - типа в полете и лочим коррекцию. Как спустились до высоты <300 метров, сбрасываем флаг. Как-то так.

ньюансов много) я алгоритм не один месяц вылизывал)

для экпериментов нужна вакуумная камера

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
для экпериментов нужна вакуумная камера

Компрессор для аквариума и трехлитровая банка с засунутым внутрь нептуном в качестве эталонного измерителя:)

Заказал себе дивайс. С удовольствием поучаствую в проекте - опыт программирования по железу есть. Ну был, по крайней мере, лет 10 назад :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Хочу такой девайс себе!

в магазах не осталось, где заказать напомните пжл)

Я тут заказал, вроде есть ещё пока:

http://www.terraelectronica.ru/catalog.php...e=2&PageS=1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Сами часы (версия на 915 мегагерц). На 433 не берите, они беспонтовые - нет внешних датчиков).

Европейская версия на 868 мегагерц по датчикам идентичная американской на 915?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Европейская версия на 868 мегагерц по датчикам идентичная американской на 915?

В вики написано, что да. Причем не только по датчикам, а и вообще. Отличается только резистором настроечным, я так понял.

Я тут заказал, вроде есть ещё пока:

http://www.terraelectronica...

Передавайте привет Аннне, они там вешаются уже :) Хабраэффект в действии :)))

2Justas

Урезанная версия CCS от Ti вполне функциональная. Уже откомпиленные драйверы можно включить в проект и менять как захочется. Версия работает до 4 килобайт кода, у меня сейчас с измененным драйвером прошивка занимает 2990 кб. Т.е. запас большой. Все глюки были от IAR, там ограничение почему-то всего 2к и вообще у меня сложилось впечатление, что он кривой какой-то. Т.е. даже стандартная прошивка без ошибок не собирается.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2Justas

Урезанная версия CCS от Ti вполне функциональная. Уже откомпиленные драйверы можно включить в проект и менять как захочется. Версия работает до 4 килобайт кода, у меня сейчас с измененным драйвером прошивка занимает 2990 кб. Т.е. запас большой. Все глюки были от IAR, там ограничение почему-то всего 2к и вообще у меня сложилось впечатление, что он кривой какой-то. Т.е. даже стандартная прошивка без ошибок не собирается.

огромное спасиБо за ответ! :)

в ближайшее время постараюсь уточнить у моего учителя насчет альтернативных компиляторов для TI. Он со многими камнями дело имел. Если чо - тоже поделюсь. :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Интересная тема, вроде нормальный высотник можно смострячить

нашел, что часы эти можно купить у самих TI за 50$ с доставкой. Попробую заказать.

https://estore.ti.com/eZ430-Chronos-868-eZ4...Tool-P1735.aspx

PS может есть смысл ez430 вынести в отдельную тему?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вопрос есть к общественности из разряда психологии и восприятия.

Имеем экран с 4-мя большими цифрами сверху и запятой посередине, выглядит так: "88,54".

Вопрос такой: как лучше и нужно ли округлять и отображать цифры?

Варианты для размышлений:

отображаем высоту как есть без всяких округлений: 8854 метра

на высоте больше километра отображаем с заменой последних цифр нулями: 8800, 8900 и т.д. метров

нули не выводим, делаем как в визо: 8,8 (ниже километра 0,84)

Не буду говорить, какой мне нравится вариант пока :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
делаем как в визо: 8,8
+

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

IMHO до километра округляем до ста метров (3900, 3800), ниже без округления

А еще лучше, (если исходники будут открытыми) реализавать все варианты, и выбирать их при компиляции.

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

может есть смысл присоединиться к этому проекту https://github.com/poelzi/OpenChronos/

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я бы не изменял никак - чай не для хомячков, а для себя девайс делаешь))

Дмаю сможешь основную инфу с высотника считать даже при беглом взгляде... и "лишние" цыфры не помешают, а нужные больше (яснее видимы) все равно не станут

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

3 поста 3 мнения ))

еще в список пожеланий, ниже километра в нижней строке вариометр ;)

как придут мои часики, присоединюсь к разработке

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×
×
  • Создать...