«Черный ящик» своими руками

После каждой аварии своего радиоуправляемого самолета из потолочки (особенно если это была эпическая авария) — сам полет и причины аварии детально анализировались. Настоящая комиссия по расследованию авиакатастроф в составе Механика, Термита и Стратулы :) .  Но вот информации для анализа было весьма мало. Как правило это было внешнее/бортовое видео и правдивые показания пилота :) Это было в корне неправильно. Нужен был черный ящик. Кстати правильно это называется FDR — Flight data recorder — официальное название таких приборов. «Черный ящик» — распространенное ошибочное.

Бортовой регистратор полетных данных или «Черный ящик» своими руками

Идея пришла после того, как в одной из аварий я смог узнать скорость при крушении. Установленный в самолета GPS навигатор показал скорость 80км/ч, и хотя трек, записанный им, не отличался точностью (а высота правдоподобностью) — но идея записывать подобную информацию показалась мне весьма интересной. Конечно же, хотелось записывать все полетные данные: высота, перегрузки, положение в пространстве, угловые скорости, ориентацию, ток потребления, напряжение питания ну и конечно данные с приемника. Но… пришлось довольствоваться только регистрацией перегрузок и сигналов управления с радиоаппаратуры, потому что в наличии из датчиков был лишь трехосевой акселерометр.

Схема «Черного ящика»

В качестве процессора был выбран простой и дешевый Attiny2313. (Хотя, если бы выбрал Atmega8 — смог бы еще записывать напряжение на аккумуляторе). Задачей микроконтроллера была обработка данных и запись их в энергонезависимую память, в качестве которой была использована AT45DB161.

Схема работает при напряжении 3.3 вольта, поэтому нужен еще стабилизатор на 3.3 вольта, не показанный на схеме. Обойтись без него нельзя, так как акслереометр весьма требователен к нормальному питанию. Был использован LM1117 с низким падением напряжения. В качестве акселерометра использовался цифровой трехосевой ADXL345, с возможностью настройки точности и диапазона измеряемых ускорений. (Был использован полный диапазон, т.е. +/- 16g, что означает 16-ти кратную перегрузку).

Интерфейс управления черным ящиком: одна кнопка (старт/стоп записи) и два светодиода, показывающих текущее состояние (запись, простой, считывание). Считывание данных происходило по UART протоколу при помощи шнура связи аппаратуры радиоуправления с ПК. Приемник подключался при помощи простейшего самодельного разветвителя.

Плату разводил именно под использование маски, так как она позволяет использовать простейшые перемычки, которые паяються прямо поверх защитного слоя.Прошивка занимает практически 100% памяти микроконтроллера. Обработка данных (ШИМ сигналы) с приемника при помощи прерываний и запущенного 16-ти битного таймера, связь МК с акселерометром и памятью по программно реализованному протоколу SPI. Еле смог поместить в прошивку сервисные фишки, повышающие удобство пользования «черным ящиком». Фьюзы должны быть прошиты на использование внутреннего генератора 8МГц (CKSEL0 , CKSEL1, CKSEL3, SUT1 , SUT0)

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

Настройка и работа с бортовым регистратором(«Черным ящиком»)

Черный ящик работает в двух режимах: запись перегрузок и запись перегрузок одновременно с данными приемника. Иногда данные с каналов радиоуправления просто не нужны, и чтобы сэкономить память (всего 2Мб) была предусмотрена возможность отключения  их записи. 2Мб памяти хватает на 116 минут записи ускорений (три цифры по 2 байта с частотой 50 раз в секунду) и на 38 минут записи ускорений и данных с шести каналов радиоприемника.

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

Описание команд управления бортовым регистратором

Каждая команда — это символ, без символа перевода строки.

Z — стирание памяти (хотя данные не трогаются, просто сбивается на ноль адресный счетчик)

М — изменить режим записи. Внимание! При смене режима обнуляеться адресный счетчик (т.е. выполняется команда Z). Это сделано для того, чтобы не путаться потом с записями разных режимов, ведь синхронизации никакой не предусмотрено. При выполнении команды «М» регистратор возвращает символ «1″ когда включен режим записи ускорений и данных приемника, и «0″ когда будут записываться только ускорения. По умолчанию включен режим «1″. Этот параметр сохраняется в энергонезависимую память и сохраняется при выключении питания (так же как и адресный счетчик).

R — команда считывания данных. После этой команды регистратор начинает посылать в СОМ порт записанные данные, разделяя цифры символом «;» Синхронизация данных осуществляется в программе. синхронизация происходит в программе. Одним из серьезных недостатков регистратора есть большое время считывания данных. Для полного объема оно достигает 40 минут.

Правила эксплуатации бортового полетного регистратора

Подключаем приемник и питание (питание можно брать прямо с приемника). Должен загореться зеленый светодиод. Чтобы начать запись данных — нажимаем кнопку — должен начать мигать красный светодиод. При следующем нажатии на кнопку запись данных останавливается. Если красный светодиод светиться постоянно — значит память переполнена и пользоваться черным ящиком невозможно.

Чтобы считать данные с регистратора нужно подать на него питание (приемник можно не отключать), подключить к нему шнурок UART<->USB, запустить программу, настроить параметры соединения (только первый раз — они потом запоминаются), нажать «Подключиться к FDR» и «Прочитать память». Кнопки «Стереть память» и «Режим» не трогайте! Подтверждения стирания памяти нет (так и не сделал :( ) — загубите данные.

После нажатия «Прочитать память» должна начаться загрузка данных на компьютер. На регистраторе должен при этом мигать зеленый светодиод. Как только данные загрузятся — сохраняем их в файл. Запускаем этот файл (должен открыться в Екселе) и проверяем — действительно ли мы загрузили все данные.

И только после этого стираем память!

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

 Советы по установке «Черного ящика» на летательные аппараты

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

Пример анализа одного из полетов

Анализировать буду полета ЛМ-07 над полем, когда у него от перегрузок переломилось крыло. Я тогда хотел побыстрее спустить самолет с большой высоты. Чтобы не погубить самолет перегрузками, наивно выключил движок, думая, что это поможет. И сразу же направил самолет вниз. На графиках это заметно — это 3050 отсчет. Синий пунктир ушел вниз — это график тяги. Красный пунктир тоже пошел вниз — это график тангажа. Сплошная синяя линия — моментально показала трехкратную вертикальную перегрузку. А потом на приблизительно 3150 отсчете (т.е. через три секунды — пятая секунда видео) я слишком резво взял ручку на себя. Вертикальная перегрузка вырастает до +4.3g и крыло не выдерживает. Начинается мельтешение графиков перегрузок :) И еще видно, что некоторое время я что-то пытался сделать с самолетом (красный и серый пунктир). Потом осознал ситуацию и отпустил управления (все пунктиры выровнялись в прямую линию, кроме синего — тяги).

Момента удара на графиках нет — потому что при ударе отвалилось питание. Все, что было в оперативном буфере микросхемы памяти — не успело записаться и пропало. К тому же в этой аварии — микросхема памяти отвалилась (ее что-то зацепило). Поэтому чтобы добыть этот график — мне пришлось ее припаивать обратно :)

В завершение статьи — архив с:

  • прошивкой
  • программой
  • примером данных
  • схемой
  • разводкой печатной платы в Sprint Layout 5.0

В целях справедливости хочу заметить, что статья писалась на конкурс Радиокота (и ему на день рожденья). (Ага, вошла в двадцатку :) )

 


«Черный ящик» своими руками: 6 комментариев

  1. Очень хорошая статья!

    Пишу диплом, можно у вас попросить несколько (2-10) примеров данных в excel, как в этой статье с уточнением какой столбик/цвет за что отвечает?)

  2. Добрый день. Возможно ли вместо приемника подключить оптопрерыватели чтобы он записывал длину и частоту импульсов? Для двух каналов. Или один оптопрерыватель и один тензодатчик?

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>