[image]

"007 micro" регистратор данных

 
1 2 3 4 5 6

Yuran

опытный

Алгоритм работы такой.
1) Инициализация всех портов, регистров, установка прерваний таймера каждые 2 мс.

2) При поступлении прерывания INT0 от 1ой кнопки, осуществляется проверка статуса Флеша, зачитывается значение статусного регистра (0xAC если всё норамльно), затем зачитывается значние с альтиметра два байта, они объединяются по OR и сравниваются с нулём. Данный этап позволяет определить что все шлейфы хорошо соединены и устройство работает. Если всё нормально, то светодиод мигает 5 раз, если где то сбой то 2 раза.
Далее выставлется в "моём статусном" регистре битик который показывает что пришло время "грабить" данные во флешу. Предварительно в регистрах сохраняются начальное значение с ADC, это необходимо для дальнейшего определения начала взлёта.

3)Теперь по таймеру, каждые 2 мс, начинают грабиться данные.
Вот код обработчика

....
.org OC1addr
rjmp OC1addrPorc; Timer1 (16 bit) compare match interrupt
....

;//Compare 16 bit timer interupt, main working nuts
OC1addrPorc:
bst bFLAGS, PB0; (is record starting, must be set T flag)
brtc NoJob
rcall ReadADC ;Read ADC value
rcall FLIGHT_CONTROL_ROUTINE; Make some things with current value
rcall WriteWordToFlash ; Store it in Flash
NoJob:
reti

Всё предельно просто.
Процедура ReadADC читает в два регистра двухбайтовое значние с ADC, у меня это фактически метры.
Далее вызывается FLIGHT_CONTROL_ROUTINE которая должна детектить взлёт,
когда отсвтрелить парашют, подать сигнал на фотоаппарат, итд.

Затем текущее значние с ADC, записывается во флеш в процедуре WriteWordToFlash. Данная процедура пишет в один из незанятых буферов флеша и когда он заполняется выполняет запись в основную память.

Как работает FLIGHT_CONTROL_ROUTINE.
1) проверяется текущее значение с ADC меньше начального на 10м, если да то выставляется в статусном регистре бит, который символизирует начало взлёта.

2)Далее идёт определения максимальной высоты(минимального значнеия с ADC).
3)Проверяется если выставлен бит, который символизирует начало взлёта и текущее значние с ADC, больше чем максимальное на 6 м, то срабатывает "ключ", выставляется 1 на ногу отвечающую за воспламинитель.

Вот пример этой процедуры:
FLIGHT_CONTROL_ROUTINE:
;//////////////////////////

; если ключ уже активирован ничего не делать
bst bFLAGS, PB2
brts LIFTOF
;//////////////////////////

;If liftof not start yet
bst bFLAGS, PB3
brts WaitForDecent

;//If curent heigth more then 10 meters, set bit liftoff
cp ADCReadedValueL,InitialHeightValueL ;Compare low bytes
cpc ADCReadedValueH,InitialHeightValueH ;Compare high bytes
brge LIFTOF
mov temp, InitialHeightValueL
mov temp1, InitialHeightValueH
sub temp, ADCReadedValueL
sbc temp1, ADCReadedValueH
ldi temp2, 0x0A
ldi temp3, 0x0
;///Check if different more then 10
cp temp, temp2
cpc temp1, temp3
brge LiftOfStart
rjmp WaitForDecent

LiftOfStart:
ori bFLAGS, 0b00001000; Звдетекчен взлёт
mov FlashStartLiftPageL, FlashCurrentPageL
mov FlashStartLiftPageH, FlashCurrentPageH

WaitForDecent:
cp ADCReadedValueL,InitialHeightValueMAXL ;Compare low bytes
cpc ADCReadedValueH,InitialHeightValueMAXH ;Compare high bytes
brge IsDescentStart ;if ADCReadedValue >= InitialHeightValueMAX
mov InitialHeightValueMAXH, ADCReadedValueH
mov InitialHeightValueMAXL, ADCReadedValueL
rjmp LIFTOF

IsDescentStart:
mov temp, ADCReadedValueL
mov temp1, ADCReadedValueH
sub temp, InitialHeightValueMAXL
sbc temp1, InitialHeightValueMAXH
ldi temp2, 0x6
ldi temp3, 0x0
;///Check if different more then 6, detec falling
cp temp, temp2
cpc temp1, temp3
brlt LIFTOF

bst bFLAGS, PB3
brts StartKey1
rjmp LIFTOF
;Here we power key1 when detecting descent
StartKey1:
ori bFLAGS, 0b00000100
sbi PORTB, PB6; Key1
sbi PORTD, PD0; Key3
LIFTOF:
ret
;//////////////////////////////////////////////
Если какие вопросы спрашивай B)




   

Yuran

опытный

Да забыл...
Про нажатии на 2 кнопку либо при достижении конца флеша запись останавливается в буфер флеша из флеша заливается нулевая страница в неё (в первые несколько байт)пишется начальное значание с adc, минимальнок значние с ADC и адрес страницы во флеше запись в которую поиходила в момент определения взлёта и записывается из буфера опять в память. Вот собственно и всё.
   
+
-
edit
 

Serge77

модератор

Yuran, 23.06.2004 10:59:52 :
Конечно я ещё очень плохо представляю как скажется давление потока при полёте ракеты на работу сенсора, буду делать как писал Сергей несколько небольших отверстий под головной частью ракеты чтобы воздух легко подходил к сенсору.
 


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

Yuran

опытный

Serge77, 01.07.2004 17:40:00 :
Yuran, 23.06.2004 10:59:52 :
Конечно я ещё очень плохо представляю как скажется давление потока при полёте ракеты на работу сенсора, буду делать как писал Сергей несколько небольших отверстий под головной частью ракеты чтобы воздух легко подходил к сенсору.
 


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


Вот засада в том, что девайс у меня находиться будет в обтекателе...
А примерно количество и диаметр дырок известен, может кто то из коллег уже запускал нечто подобное ? :huh:
   
+
-
edit
 

Serge77

модератор

> А примерно количество и диаметр дырок известен, может кто то из коллег уже запускал нечто подобное ? :huh:

Точно не знаю, но по тем фотографиям, которые я видел, на ракете диаметром 50-70 мм делают 4 отверстия на одной высоте друг напротив друга, диаметр примерно 3-5 мм.
   

Yuran

опытный

Serge77, 01.07.2004 18:18:14 :
Точно не знаю, но по тем фотографиям, которые я видел, на ракете диаметром 50-70 мм делают 4 отверстия на одной высоте друг напротив друга, диаметр примерно 3-5 мм.
 


значит сделаем также B)
   
RU termostat #13.05.2005 18:01
+
-
edit
 

termostat

аксакал

Решил продолжить работу, теперь уже над:

полетным компьтером "007".


Есть идея такого управления стартом.

Имеется ввиду большая ракета у которой воспламенитель интегрирован в РД.

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

Если неисправностей не обнаружено то МК подключает внутреннюю батарейку для своего питания и затем включает ключ (полевой транзистор) подающий внешнее напряжение на воспламенитель - происходит старт.

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

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

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


На земле, для чтения памяти с данными полета подключается внутренняя батарейка 007, МК определяет что нет внешнего напряжения старта и начинает гнать данные из памяти в rs232.
   
+
-
edit
 

Serge77

модератор

termostat> Если неисправностей не обнаружено то МК подключает внутреннюю батарейку для своего питания

А как он её подключает?
   
RU termostat #13.05.2005 19:40
+
-
edit
 

termostat

аксакал

внутренняя батарейка 007 плюсом постоянно подключена на вход стабилизатора питания МК 7805, а минус ее подключает к общему проводу схемы сам МК открывая транзисторный ключ. Паралельно транзистору есть кнопка, если ее нажать (так же и случайное или неосторожное включение этой батарейки = питания МК) то МК запустится и определит что отсутсвует внешнее напряжение старта, значит МК не будет ни чего тестировать а будет выводить данные из памяти на rs232.

   
Это сообщение редактировалось 14.05.2005 в 10:57
А не получится так, что подаешь напряжение, двигатель не запустится, а потом страшно подходить к ней будет - неизвестно ведь, чего там у МК внутри сейчас происходит.
   
+
-
edit
 

termostat

аксакал

GOGI> А не получится так, что подаешь напряжение, двигатель не запустится, а потом страшно подходить к ней будет - неизвестно ведь, чего там у МК внутри сейчас происходит. [»]
 


Я поэтому и пропогандирую самостоятельное написание программы для полетного компутера, или хотябы учится читать используемую чужую, чтоб понимать, НЕТ! даже точно ЗНАТЬ! алгоритм работы той "черной коробочки" к которой подключил несколько пироустройств. Я думаю это есть в правилах ТБ.

тоже относится к устройствам и без МК.


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

Или послушать Ж-свич.

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

т.е. все в наших руках - как напишем так и поедем, если правильно напишем...



   
UA Serge77 #14.05.2005 12:18  @termostat#14.05.2005 11:38
+
-
edit
 

Serge77

модератор

termostat> как напишем так и поедем, если правильно напишем... [»]

Вот это ЕСЛИ как раз всё и портит. Не хочется умереть от ошибки в программе.

А полностью оттестировать такую программу, как предлагается, простому любителю практически нереально.
   
RU termostat #14.05.2005 12:27
+
-
edit
 

termostat

аксакал

Дык чтоб не умереть я и предлагаю не ковыряться у ракеты с включеным питанием как делают американцы на видео, а подвать напряжение из удаленного места.
   
+
-
edit
 

Serge77

модератор

А я имею в виду случай, о котором пишет GOGI. Да и мало ли ещё каких случаев может быть. Проблема ведь как раз в том, что мы принципиально не можем предугадать АБСОЛЮТНО ВСЕ возможные случаи.
   
RU termostat #14.05.2005 13:00
+
-
edit
 

termostat

аксакал

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


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

Все это и навело меня на мысль что разрешение стартовать нужно увязать с диагностикой разных "пимпочек".

А сложность устройства и алгоритма КОНЕЧНО должна соответствовать сложности объекта которым оно управляет.
   
+
-
edit
 

Yuran

опытный

termostat>> что "электроника на МК работала так как надо, но вот блин! забыл понимаешь перед стартом за пумпочку потянуть..." [»]

Для этого и существует инструкция =) Можно написать такую для каждого конкретного случая и отмечать галочкой что сделал что нет.
   
Это сообщение редактировалось 14.05.2005 в 14:51
+
-
edit
 

Serge77

модератор

termostat> Да конечно, но это же не значит что не нужно вообще ни чего проверять перед стартом

Я совсем не об этом. Я имею в виду, что старт ракеты нельзя доверять электронике. Провод и батарея - вот и все дела.

А всякие проверки в программе - это конечно дело нужное.
   
RU termostat #14.05.2005 15:39
+
-
edit
 

termostat

аксакал

> Serge77
Я имею в виду, что старт ракеты нельзя доверять электронике.
Провод и батарея - вот и все дела.
 


Да! и я так считаю. И именно об этом написал в первом посте! выше...


> termostat
При подаче от стартового стола 9-12 вольт на внешние контакты ракеты,
- от этого напряжения запускается МК,
- он определяет наличие этого напряжения,
- затем проверяет нужные цепи и сигналы по стартовому чек листу,
...
- Если неисправностей не обнаружено то МК подключает внутреннюю батарейку для своего питания

- затем включает ключ (полевой транзистор) подающий внешнее напряжение на воспламенитель - происходит старт.
 


Т.е. внутренний источник питания ни как не может запитать стартовый воспламенитель, даже если МК сойдет сума - этот источник НЕ соединен со стартовым воспламенителем!

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

Т.е. есть кнопка "старт" в укрытии есть провода и еще одна "кнопка" (полевой транзистор") которая замыкается при выполнении двух условий: нажатии кнопки "старт" и исправности оборудования. Но во всей этой цепи источник питания то ОДИН! он в окопе! не в ракете.

А проверка оборудования в ракете для МК это несколько милиСекунд. Но даже если секунда, не вижу ни чего страшного.


> Serge77
Подходишь, например, к ракете, которая почему-то не стартовала под управлением МК, всё нормально, красная лампочка не горит, которая означает, что напряжение на воспламенитель подано. А когда уже подошёл вплотную, она и загорелась. И поехали...
 


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

Я просто считал это само-собой разумеющимся и вытекающим из правил ТБ и поэтому не написал:

"Если ракета не полетела, уберите УЖЕ палец с кнопки "старт" и отсоедините и убирите в карман батерейку от которой происходит старт".
   
Ну если МК служит только кнопкой и не как не дотянется до батареи, которая питает воспламенитель, то тогда еще ничего.
Но вышибным зарядом в лоб все равно может :-)
А вообще пусть это будет вспомогательная система тестирования, и пару лампочек там типа можно или нельзя лететь. Ну и на экранчик причину. Чтобы человек мог принять решение о пуске основываясь только на одном источнике информации.
   
Это сообщение редактировалось 14.05.2005 в 16:14
+
-
edit
 

Serge77

модератор

termostat> Т.е. внутренний источник питания ни как не может запитать стартовый воспламенитель, даже если МК сойдет сума - этот источник НЕ соединен со стартовым воспламенителем!

Ааа... Понятно.

Тогда зачем вообще всё так сложно? Чтобы МК делал свои проверки, когда люди вдалеке? Ну так поставь задержку в программу на 30 секунд, чтобы проверка начиналась, когда все отошли.

А проверять, когда уже нажат старт - это даже плохо. Все приготовились, настал хороший момент, а тут проверка что-то обнаружила. Лучше, если это обнаружится раньше.
   

Serge77

модератор

GOGI> Но вышибным зарядом в лоб все равно может :-) [»]

Так это во всех бортовых устройствах так. Поднёс намагниченную железяку к магнитному датчику - получил в лоб. Дунул в отверстие, за которым барометрический высотомер - получил в лоб. Вот от таких случайных, но предсказуемых срабатываний программа должна защищать.
   
RU termostat #14.05.2005 18:15
+
-
edit
 

termostat

аксакал


> Serge77
Тогда зачем вообще всё так сложно? Чтобы МК делал свои проверки, когда люди вдалеке?
 



> GOGI
Чтобы человек мог принять решение о пуске основываясь только на одном источнике информации.
 


Так сложно (мне кажется что для МК это не сложно) чтоб НЕПОЗВОЛИТЬ человеку запустить ракету если есть обнаруженная неисправность. Конечно МК слабоумен и все неисправности ему не подсилу отыскать, ну хоть те о которых помнил разработчик.

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




> Serge77
Ну так поставь задержку в программу на 30 секунд, чтобы проверка начиналась, когда все отошли.
 


Интересено... а ведь чуть выше высказывались опасения что ни кому не известно точно, что в МК происходит, дак откуда увереность что он потерпит эти 30 сек?

Я кстати в МК уверен. Потому что считаю возможным многократно на земле испытать все заменив воспламенители лампами и датчики потенциометрами или сигналами со звуковой карты имит. датчики или в VMLAB'e - там тоже можно задать аналоговые сигналы с датчиков по диаграммам аналогичных ракет или по расчетным данным.



> Serge77
А проверять, когда уже нажат старт - это даже плохо. Все приготовились, настал хороший момент, а тут проверка что-то обнаружила. Лучше, если это обнаружится раньше.
 


Чем раньше тем лучше конечно.

Я не предлагал же не проводить проверок и тестирований до старта, я просто предлагаю способ старта не позволяющий его провести при неполадках.

На каждом этапе конечно должен быть контроль качества.

Ну дак в тех двух случаях "забывчивости" человек ведь собирал ракету, устанавливал на старт, что-то проверял, отошел на расстояние и наверно был УВЕРЕН что все в порядке нажимая кнопку старт. А оказывалось что не все было в порядке.


Вот ДухБех. давно делает большой проект, наверняка будет волнение перед стартом и может бы он протестировал все перед стартом, да забыл подключить выброс одного из парашутов например или визуально все подключено а контакта гдето нет (не дай бог!) - и что лучше будет если его ракета улетит с нерабочим парашутом чем если просто при нажатии "старт" появится сигнал - неисправность.


Я ж говорю нужно соответсвие сложности устройств, если ракета сделана быстренько из бумаги под настроение, то наверно достаточно МРД с замедлителем и электроника вообще не нужна.



> Serge77
Поднёс намагниченную железяку к магнитному датчику - получил в лоб.
Дунул в отверстие, за которым барометрический высотомер - получил в лоб.
Вот от таких случайных, но предсказуемых срабатываний
программа должна защищать.
 


Да алгоритм должен анализировать показания всех датчиков и выдавать команды - на МК это сделать проще чем без него.

Сколько железякой не махай ни чего не будет так как есть высотомер и акселерометр.
Что б барометр не показывал тоже ноль эмоций если по акселерометру высоты не наинтегрировано.
Можно и учесть реальность показаний барометра по времени.
   
+
-
edit
 

Serge77

модератор

termostat> Так сложно (мне кажется что для МК это не сложно) чтоб НЕПОЗВОЛИТЬ человеку запустить ракету если есть обнаруженная неисправность.

Да, это конечно хорошо.
Но нужна и возможность провести проверку всех систем и отдельно от кнопки Пуск.

termostat> Интересено... а ведь чуть выше высказывались опасения что ни кому не известно точно, что в МК происходит, дак откуда увереность что он потерпит эти 30 сек?

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

termostat> Я кстати в МК уверен. Потому что считаю возможным многократно на земле испытать все

Проверить можно только то, о чём ты можешь додуматься заранее. А ошибка может быть "мерцающая", т.е. появляющаяся иногда, как в моём магнитном датчике. Вот если бы я его проверил раза 3-4 и поставил на ракету, то случайное срабатывание заметил бы уже на стартовой площадке.
   
RU termostat #24.05.2005 14:36
+
-
edit
 

termostat

аксакал


termostat: НЕПОЗВОЛИТЬ человеку запустить ракету если есть обнаруженная неисправность.

Serge77: Но нужна и возможность провести проверку всех систем и отдельно от кнопки Пуск.

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


Я-жишь и написал в пред. сообщении:

termostat> Я не предлагал не проводить проверок и тестирований до старта, я просто предлагаю способ старта не позволяющий его провести при неполадках.

На каждом этапе конечно должен быть контроль качества.
 




termostat: ... не известно точно, что в МК происходит, дак откуда увереность что он потерпит эти 30 сек?

Serge77: Уверенности нет. Но цена ошибки разная. ... Одно я могу допустить, а второе нет.
 


Дак и я про тоже! Это ты ж предложил ввести задержку в программе 30 сек. А я и говорю - откуда увереность что прога написана правильно и МК подождет эти 30 сек? ее нет. Опять таки здесь были посты что нет уверености в проге.

Вот я и предлагаю когда ракета уже ЗАРЯЖЕНА по настоящему, отойти в сторонку и тестировать из далека. А не обнимая ее.

У нас на форуме уже о серьезных калибрах речь пошла.

Кстати на касете ЛДРС чувак какойто навернулся с пускового устройства - он наверно полез тестить или "взводить" установленую ракету.
   
AD Реклама Google — средство выживания форумов :)
+
-
edit
 

Serge77

модератор

Вообще-то мне больше нравятся ракеты, в которых нет ничего, что может стрельнуть в лоб при случайном срабатывании электроники. Поэтому я не люблю запуск двигателей электроникой и вышибные заряды. Ну нервный я и в электронике не разбираюсь, что поделаешь.
   
1 2 3 4 5 6

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru