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

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

Recommended Posts

Кстати, девайс реально можно заточить под пищалку, вытащив его из корпуса часов и смастерить к нему коробочку.

А может можно по беспроводному интерфейсу динамик подключить внешний?)

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


Ссылка на сообщение
Поделиться на других сайтах
зы Компилировал во этим http://mspgcc4.sourceforge.net/ Проблем особых не было.

а не особые какие были? ;)

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


Ссылка на сообщение
Поделиться на других сайтах
А может можно по беспроводному интерфейсу динамик подключить внешний?)

Если я не ошибаюсь, то вот эта хреновина нужна:

http://focus.ti.com/docs/toolsw/folders/pr...emk868-915.html

CC1111EMK868-915.jpg

На ее базе, судя по видео на ютубе, делают всякие примочки для радиоуправления всякого (двери отрывающиеся, управление светом, RC cars) Пищалку скорее всего, тоже сделать можно. стоит 50$ Вобщем, отличный инструмент для разработки.

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


Ссылка на сообщение
Поделиться на других сайтах
Компилировал во этим http://mspgcc4.sourceforge.net/ Проблем особых не было. а главное никаких ограничений.
а не особые какие были? ;)

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

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

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


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

как же я "люблю" эти "интуитивно понятные" ГНУсные компиляторы для железа... Ты пробовал компилировать этот проект с вариометром при помощи IAR или Code Composer Studio?

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


Ссылка на сообщение
Поделиться на других сайтах
как же я "люблю" эти "интуитивно понятные" ГНУсные компиляторы для железа... Ты пробовал компилировать этот проект с вариометром при помощи IAR или Code Composer Studio?

нет пока. в описании рекомендуют gcc. вот я и послушался

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


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

Ура! собрал с вариометром. Заодно, вроде, убрал фильтрацию, чтобы задержки отображения не было. Алгоритмы вычисления высоты не трогал. Увеличил таймаут пока до 3 часов.

Итого имеем высотник сверху и вариометр или часы снизу.

This fork adds a variometer, an instrument indicating vertical speed,
essentially for use in free flight (paragliding, hang gliding, ...).
Initially based on the vario source coded by dkm, I ended up rewriting
that module completely.
- Pressing the "v" (down) button cycles between displays as follows:
    * vario (in m/s)
      Displays a signed fractional value representing the ascent or
          descent speed in meters per second.
    * vario (in Pascal)
          Displays a signed integer value representing the ascent or
          descent speed in Pascal/second.
    * pressure (in hPa)
          Displays a signed fraction representing the pressure measured at
          the current altitude.
    * max Vz (in m/s)
          Displays the maximum vertical speed in meters/second.
    * min Vz (in m/s)
          Displays the minimum vertical speed in meters/second.  
- A long press on the "#" button performs a context sensitive function:    
    * during vario display, changes the vario sound mode:
      Off      (default, no symbol displayed)
      Ascent 0 (start beeping at 0.0m/s, beeper1 and beeper2 symbols
               displayed)
      Ascent 1 (start beeping at 0.1m/s, beeper1 symbol displayed)
      Both     (beep for up or down, beeper1 and beeper2 symbols
               displayed)
      Tone frequency, number and duration of beeps depend on climb rate.
    * during max/min Vz display, resets both the max and min values.
- The "record" icon is flashed at one second intervals, indicating that
  the watch is in vario mode and receiving pressure measurements.
  Note that the upper line must be in altimeter mode for the vario to
  work, as it relies on updates from the altimeter. If the altimeter
  is not active, the vario display shows "noAlt".

Сборка для 868Мгц версии

OpenChronos.rar

eZChronos.rar

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


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

wami,

Залил прошивку через Wireless-Updater на версию с 868 мГц, работает. Надо будет посмотреть алгоритмы расчёта высоты.

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


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

Ну вот, процесс пошел :)))

Напишу, чего сделал я и todo лист.

В стандартной прошивке менял следующее:

1) Отрубается сглаживание (все время передается FILTER_OFF).

2) Переписал драйвер датчика давления. Убрал старый алгоритм и ненужные функции. В результате сам алгоритм такой:

s16 conv_pa_to_meter(u32 p_meas, s16 altitude_offset)
{
    volatile s16 h;
    volatile float rawAltitude;
    volatile float fl_p_meas;
    volatile float pressureFactor = 1/5.25588;
    fl_p_meas = (float) p_meas;  
    rawAltitude = 44330 * (1 - pow((fl_p_meas/101325.0), pressureFactor));
    h=(s16)rawAltitude + altitude_offset;
    return (h);
}

Количество кода и функций сократилось раза в 3 :) Кроме того переделал поправку относительно земли.

3) Увеличил таймаут высотомера до 8 часов (изначально стоит 1 час, дальше высотомер отрубается и выводит на экран -----)

4) При включении выводит давление с датчика.

todo:

0) Нужно понять, достаточное ли быстродействие датчика. По умолчанию в регистр 0x03 пишется 0x0B, это режим ultra low power с обновлением примерно раз в секунду и потреблением 3 мА. Есть еще несколько режимов с 2Hz и 9Hz обновлением и потреблением 30 мА.

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

2) сделать округление показаний в зависимости от высоты

3) сделать автоматическое выставления 0 как в Viso

4) сделать возможность включать подсветку постоянно (для night jump)

PS: Комрады, у кого есть возможность сравнить абсолютные значения давления, выдаваемые датчиком с чем--нить еще? Например с Suunto.

У меня врет датчик на 20 милибар, хотя в даташите сказано, что погрешность всего +-150 паскалей. У меня такое чувство, что в эти отладочные комплекты ставят не прошедьшие по параметрам датчики за копейку :) Т.к. сам датчик у нас стоит 1000 р. :) На работу относительно земли это не влияет, но хотелось бы понять, это мне попался такой экземпляр, или это тенденция.

Чтобы сравнить, можно заменить в файле test.c строку

display_chars(LCD_SEG_L2_4_0, (u8 *) "CC430", SEG_ON);

на

start_altitude_measurement();

stop_altitude_measurement();

pressure=ps_get_pa();

str = int_to_array(pressure, 6, 6);

display_chars(LCD_SEG_L2_5_0, str, SEG_ON_BLINK_OFF);

Тогда они будут выводит вниз давление при каждом включении.

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


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

Кстати, девайс реально можно заточить под пищалку, вытащив его из корпуса часов и смастерить к нему коробочку.

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

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


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

сравнил показание давление одних из своих 430-х с суунто. разница около заводской погрешности (100-300 Pa) притом в Suunto давление выыводится в целых hPa. Завтра постараюсь вторые сравнить.

В прошивке которую собрал я давление тоже можно посмотреть в режиме вариометра пощелкав кнопку вниз.

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

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

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


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

Динамика там нет. Сверлить там ничего не надо, это не поможет. Там стоит пьезоэллемент и через пружинку колебания передаются на заднюю крышку. Соответственно когда она снята, то ничего не пищит. был не прав

сравнил показание давление одних из своих 430-х с суунто. разница около заводской погрешности (100-300 Pa) притом в Suunto давление выыводится в целых hPa.

Значит мне попался неудачный экземпляр. Не понятно только, как ты определил разницу в 100-300 Pa, если "Suunto давление выыводится в целых hPa."

Ты пробовал компилировать этот проект с вариометром при помощи IAR или Code Composer Studio?

Отвечу за него - не компилится :)

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


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

я использовал математическую модель RC-фильтра. Необходимый эффект сглаживания достигается подбором R, C параметров.

P.S. здесь формул готовых больше - выбирай любую :). Смотри раздел фильтр нижних частот, так как Тебе именно высокие частоты нужно отсечь.

http://www.skilldiagram.com/gl1-19.html

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


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

Значит мне попался неудачный экземпляр. Не понятно только, как ты определил разницу в 100-300 Pa, если "Suunto давление выыводится в целых hPa."

как определил: мои показывают 1003.45 suunto 1002

Динамик там есть. Это пьезоэллемент, приклеенный к крышке. Питание к нему по пружинке и корпусу. В прошивке OpenChronos какой-то косяк с аудио, вот оно и не работает. Надо будет разобраться. Ато я уже думал запорол динамик.

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


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

если известны уравнения движения, то использование интегратора не оптимально.

смотреть нужно в сторону фильтра кальмана, а поскольку известны еще и предельные ускорения, то в сторону constrained kalman filter.

Что получается (получалось у меня с реальными записями. кальман, учитывающий в уравнении движения члены до 3его порядка) здесь -

http://foto.mail.ru/mail/diwil/LMS

на картинке график с меткой 'real' это ручная аппроксимация smoothing spline, коротрая выглядит как живая, но совершенно не пригодна для реального времени.

да... верх - скорость, низ - высота. На этих примерах я моделировал ну совсем нереальные шумы (в высотах - +-300м) - путем добавления шума к записанным данным.

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

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


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

А можно для дурака, зачем нам в скайдайве фильтры? IMHO, что пришло с датчика, то и выводим вполне подходит :)

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


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

смотреть нужно в сторону фильтра кальмана, а поскольку известны еще и предельные ускорения, то в сторону constrained kalman filter.

Что получается (получалось у меня с реальными записями. кальман, учитывающий в уравнении движения члены до 3его порядка) здесь -

http://foto.mail.ru/mail/diwil/LMS

на картинке график с меткой 'real' это ручная аппроксимация smoothing spline, коротрая выглядит как живая, но совершенно не пригодна для реального времени.

да... верх - скорость, низ - высота. На этих примерах я моделировал ну совсем нереальные шумы (в высотах - +-300м) - путем добавления шума к записанным данным.

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

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

А можно для дурака, зачем нам в скайдайве фильтры? IMHO, что пришло с датчика, то и выводим вполне подходит :)

IMHO для высоты сгодится, а вот когда показания вариометра скачет +- 1,5 м/с не очень.

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


Ссылка на сообщение
Поделиться на других сайтах
0) Нужно понять, достаточное ли быстродействие датчика. По умолчанию в регистр 0x03 пишется 0x0B, это режим

PS: Комрады, у кого есть возможность сравнить абсолютные значения давления, выдаваемые датчиком с чем--нить еще? Например с Suunto.

датчик выдает данные в режиме Ultra low power с частотой 1Hz, поставь его врежим High Speed , тогда он будет выдавать данные с частотой 9Hz, это уже нормально, правда упадет точность измерения

в файле данные о подъеме-спуске, посчитанные по формуле которую ты использовал в программе

подъем до 3000 и прыжок, частота измерения 5Hz

5.xls

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


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

IMHO для высоты сгодится, а вот когда показания вариометра скачет +- 1,5 м/с не очень.

раз в секунду - это, очевидно, плохо. Помехи бывают ужасные. Я проверял :). Помеха может быть и нестационарной, тогда простой интегратор будет давать "веселенький" результат. LMS без сшивки вообще не годится, а с сшивкой _сильно_ зашумлен и имеет тенденцию отклоняться от истинного (хотя, кто знает, что такое истина) значения, ну, во всяком случае, по виду кривой.

на моих картинках данные с датчика intersema ms5534 - 20 раз в секунду: 4 давления, температура, 4 давления, температура,... для последующей обработки каждый 5й отсчет давления вычисленный.

P.S. я в свое время много датчиков и много различных способов фильтрации перепробовал. Лучше всего kalman constrained получился. Хотя, наверное, шумы сильно зависят от 'sensor housing'.

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


Ссылка на сообщение
Поделиться на других сайтах
датчик выдает данные в режиме Ultra low power с частотой 1Hz, поставь его врежим High Speed , тогда он будет выдавать данные с частотой 9Hz, это уже нормально, правда упадет точность измерения

Точность не упадет. В режиме high speed разрешение такое-же как и в ultra low power (15bit).

А вот потребление вырастет до 30 мА и это значит, что только датчик сожрет батарейку за примерно 7-8 часов.

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

в файле данные о подъеме-спуске, посчитанные по формуле которую ты использовал в программе

подъем до 3000 и прыжок, частота измерения 5Hz

Очень похоже, если в начале "0" выставить, спасибо за данные :)

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


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

при желании, думаю датчик давления можно поменять, на BMP085, при максимальной скорости работы, по I2C он выдает 100 Hz, по размерам он меньше чем тот который стоит в часах, конечно нужно будет повозиться с распайкой

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


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

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

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


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

Посмотрел исходники вариометра. Печально. Надо будет их заметно переделывать. Там вообще не учитывается температура и высота для преобразования изменения давления в вертикальную скорость.

И еще. Удалось один раз повесить часы. Правда только во время нажатяи кнопок. Так что пока бы не стал на 100% им доверяться.

PS для таких как я, кто не знал, как блокировать нажатия кнопок: зажать и удержать # и \/. также разблокировать.

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


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

Кто-нить пробовал установить CCS с диска, который идет в комплекте с часами?

...у меня не получается ни фига...

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


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

Качай с сайта TI последний. Да и с диска вроде ставилось...

http://focus.ti.com/docs/toolsw/folders/print/ccstudio.html

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


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

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

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

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

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

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

Войти

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

Войти сейчас

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