БРЭО на основе датчика давления.

Устройство предназначено для измерения и записи данных, полученных во время полёта ракеты. Устройство так же предназначено для выпуска парашютов.

Технические характеристики:

Датчик давления MPXA6115A полоса измерения 15-115КПа

Микропроцессор Atmel Mega8(L).

64Кб памяти хватает на 3 мин полёта, частота измерений 170/с.

Точность измерения около 3.4 м.

БРЭО сконфигурирована для работы с 2 парашютами и 1 трассером.

Запалы зажигаются от основной батарейки или от внешнего питания

Запалы коммутируются через транзисторы IRF540N максимальный ток 33А

На плате также установлен инерциальный датчик (G-switch) для страхования основной системы.

Схема работает от батарейки 9В. Батарейка должна быть мощной пита Duracell или акамулятора.

Данные на компьютер передаются по RS-232 для дальнейшей (ручной) обработки.

Для передачи данных используйте любой преобразователей уровней типа MAX-232.

 

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

firmware 1.3

Теперь БРЭО работает с 64Кб памяти. Так-же немного подправил код для 11,0592М частоты.

firmware 1.2

Исправил пару грубых ошибок, в работе второго парашюта. Так-же изменил принцип раскрытия 2-го парашюта, теперь высота раскрытия парашюта указывается, в метрах, от земли (а не от апогея, как раньше). Вставил задержку после включения БРЭО.

firmware 1.1

В основном изменил управление воспламенителями, в этой версии воспламенители срабатывают в любом порядке, независемо друк от друга. Большая часть описания "Описание работы устройства" не действительна , для версии firmware 1.1. Сейчал любой запал срабатывает один раз и всё. Описание "Настройка Устройства" полностью действительно. Само сабой никаких изменений в "железную" часть вносить ненадо.

firmware 1.0

Схема устройства

Схема в Proteus 6.1 файл

Печатная плата

Печатная плата нарисованная в Eagle, без деталей схема

Готовая плата. Размер 117х36мм.

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

Фотографии готового устройства. Некоторые детали залил чёрным горячим клеем.

Верх

Верх2

Низ

Низ2

 

 

Первый вариант Устройства.

Описание работы устройства.

Для индикации работы устройства используются диоды D2,D3 и D4

D4 - Зелёный, индикатор передачи данных в COM порт.

D3 - Жёлтый, индикатор записи данных в память.

D2 - Красный, индикатор питания, обратите внимание, что диод будет гореть только при работающем микропроцессоре, а не просто от подачи напряжения!

Перед включением устройства надо установить переключатель "RW" в положение записи в память или передача данных в COM порт. После этого включаете переключатель "POWER" для подачи питания, загорится Красный и Зеленый или Жёлтый диод в зависимости от переключателя "RW". Положение переключателя "RW" важно только во время подачи питания. После выполнения поставленной задачи, запись в память или считывание из неё контроллер впадёт в "спячку" для экономии батарейки. После записи данных в память и выключения питания, будьте осторожны при повторном включении питания новые данные будут записаны поверх старых, без предупреждения !!! По этой же причине схема должна быть собранна ОЧЕНЬ надёжно, при дребезге переключателя питания контроллер перезагрузится и затрёт данные о полёте, так может случиться при не сильном ударе об землю.

Настройка Устройства.

Для конфигурирования программы устройства не плохо хоть немного знать ассемблер, но можно обойтись и без этого. Устройство делает по 32 измерения за раз, последний байт блока сравнивает с последним байтом из следующего блока и соответствующи реагирует. После включения БРЭО у ракеты стоящей на старте не сработает ни один запал, так как нету изменения давления, это удобно при не сработавшем запале и т.п. после замены запала хватает включить БРЭО заново.

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

Q3 - он же трассер.

Q2 - первый парашют

Q1 - второй парашют

Q3 - первый парашют от G-switch

Программа написана так что после срабатывания запала он не может сработать снова (кроме запала Q2 он срабатывает дважды, первый раз по датчику давления и второй раз от G-switch). Правда это также означает что если при не правильной настройки системы первым сработает запал Q2, то запал Q3 уже не сработает. Тесть более "старший" по срабатыванию запал исключает повторное зажигание себя и предыдущих запалов. После срабатывания запала Q3 от G-switch не сработает ни один запал !!!

Трассер - после запуска ракеты давление начинает уменьшатся, когда это случается 3 раза подряд (3 цикла программы) срабатывает транзистор Q3. Из-за большой скорости ракеты, после старта это случается на высоте 30-50м.

После сборки устройства, покрасьте порты выходов в разные цвета это поможет вам не перепутать запалы (а то будет вот так http://www.shark.eurowing.org/Filght/Barakuda2/Barakuda2-5.avi). Идеально было бы применение разных комплектов "пап-мам" разъемов. Изменить задержку зажигания трассера можно изменив в процедуре

shut:

cpi R19, 3
sbrs R22,2
breq shut3

значение 3

на большее или меньшее (если значение больше 9 переведите его в HEX'ы). Число 3 указывает на то что после уменьшения давления 3 раза подряд срабатывает запал Q3. Не устанавливайте значение меньше 3, так как ADC имеет шум в 1 бит, ( шум зависит от качества сборки и частоты опроса ADC) задержка менее 3 тактов может привести к самопроизвольному срабатыванию !!!

Далее транзистор Q3 остаётся "замкнутым" на протяжении нескольких циклов программы

off_proc2:

subi tmp,0x05

значение 0x05 указывает на количество циклов. Помните что один цикл ~ 0,5сек при кварце ~4,2Mhz и частоте опроса ADC 68 раз в секунду, при изменении этих параметров наверняка надо будет корректировать код !!! Для эффективного срабатывания запала хватает 0,5-1сек. Некоторые из вас скажут, зачем так мудрить с задержкой запала, ведь можно просто использовать процедуру типа LongDelay: , тогда в своём графике полёта вы будете иметь дыры с аналогичной задержкой в 0,5-1,5сек.

Первый парашют - настройка аналогична настройкам трассера, только программа реагирует на увеличение давления (падения ракеты).

Настройка количества циклов срабатывания

shut:

cpi R21, 3
sbrs R22,0
breq shut1

Здесь менять 3. Обратите внимания на R21, не путайте его с трассером R19.

Время работы запала:

off_proc:

subi tmp,0x04

Второй парашют - настройка аналогична настройкам трассера, только программа реагирует на увеличение давления (падения ракеты)

Настройка количества циклов срабатывания

shut:

cpi R21, 7
sbrs R22,1
breq shut2

Здесь менять 7.

Время работы запала:

off_proc2:

subi tmp,0x05

Здесь менять 0x05.

 

И инерциальный датчик (G-Switch) - инерциальный датчик состоит из полого цилиндра внутри которого свободно двигается металлический цилиндр, замыкая и размыкая контакты. В ракету G-Switch надо установить так чтобы в положении старта ракеты датчик был разомкнут. После взлёта ракеты внутренний цилиндр прижимается ко дну корпуса датчика, но как только двигатель перестаёт работать внутренний цилиндр двигается вверх и замыкает контакты, (новички не путайте с переворотом ракеты это разные вещи). С момента замыкания контактов включается таймер по истечению которого срабатывает Q3.

Задержку таймера можно изменить в процедуре

g_sw:

в строчке

ldi tmp,23

Число 23 это циклы программы, а не секунды.

Таймер настраивается так "Время полёта ракеты до апогея"-"Работа двигателя"+"несколько секунд (для срабатывания парашютов 1 и 2)" . Вообще настройка таймера "тонкая штука". Если поставить слишком маленькую задержку парашют раскроется по пути на верх (смотри ссылку выше). Парашют может раскрыться и после апогея, но до того как сработали Парашут1 и Парашут2, тогда я зря писал код для Парашут1 и Парашут2 (также при использовании Парашута2 он не сработает ). Если поставить слишком большую задержку может быть слишком поздно, парашют оторвёт и чем больше вес ракеты, тем раньше это "поздно". Попробую дать несколько советов по настройке таймера:

Летайте только с хорошо проверенным двигателем. Реальная работа движка должна быть максимальна, приближенна к данным движка по SRM.XLS . Добейтесь хорошей воспроизводимости движков.

Дальше легче, используйте EzAlt.xls для расчёта высоты и время полёта.

Смоделируйте полёт ракеты у себя в голове, не упускайте никаких мелочей. На следующий день НЕПЕЙТЕ пива, смоделируйте полёт ракеты ещё раз, сравните результаты :)

 

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

Serge77 - http://airbase.ru/users/serge77/index.htm

Termostat - http://avr123.nm.ru/

Yuran - просто Юран ;)

Rimas Valikonis - мой напарник помог рисовать и проектировать схемы.