Прошивка: что она делает и как

Полётный компьютер на RP2040: запуск, рули, парашют, спасение от встречи

Из чего состоит

Прошивка живёт на плате RP2040 (Raspberry Pi Pico) — это микроконтроллер за пару сотен рублей. Он выбран не случайно: под Linux (а Raspberry Pi Zero 2 W работает под Linux) планировщик, SD-карта и WiFi дают дрожание шага в миллисекунды, а контуру стабилизации нужен ровный шаг 250 раз в секунду. Raspberry считает медленное — курс по солнцу, снос ветром, картинку, — а рули держит микроконтроллер.

ФайлЧто делаетСтрок
control.pyКонтуры управления: курс, крен, тангаж. Считает отклонение рулей из момента, инерции и скоростного напора, а не «на глаз»664
imu.pyДрайвер гироскопа и акселерометра по I2C, включая калибровку ухода101
sequencer.pyСистема запуска: запал, выдержка 0,5 с, катапульта, распознавание отказа двигателя250
system.pyАвтоматический парашют: барометр, акселерометр, таймер, двойной выпуск340
flight_computer.pyСобирает всё вместе и принимает решения. Здесь же спасение от случайной встречи300
servo_loop.pyПростой вариант: только рули и стабилизация, без запуска и парашюта200

Что происходит от нажатия до посадки

ВремяСобытиеЧем подтверждается
−3 сВзвод: тумблер включёнцелостность цепи запала
0,0 сЗапал поданодна команда, без повторов
+0,5 сКатапульта отпускаетстрого по таймеру, датчики не участвуют
+0,3 сСход с направляющейперегрузка выше 1,5 g
+0,5 сРули берут курскурс от Raspberry по солнцу
апогейВыпуск вытяжного куполавертикальная скорость около нуля 0,2 с
150 мВыпуск основного куполавысота по барометру
посадкаАппарат селвысота ниже 3 м
Почему выдержка именно 0,5 секунды. Твёрдотопливный двигатель выходит на тягу не мгновенно: от запала до полной тяги проходит 0,2–0,5 с. Отпусти раньше — ракета сойдёт на скорости одних резинок и потратит направляющую зря. Держи дольше — ракета стоит с работающим двигателем, а это опасно для расчёта. 0,5 с — середина.

Камера просит, плата решает

Спасение от случайной встречи устроено так: камера на Raspberry присылает просьбу «в кадре крупный объект», а выпускает купол плата, и только если прошли все проверки. Это принципиально: камера видит крупный объект постоянно — землю при подъёме, облако, птицу, руку при запуске, — поэтому у неё совещательный голос, а не решающий.

ПроверкаЧто отсекает
Система взведена, аппарат в полётеложные просьбы на столе
Прошло не меньше 3 секунд после стартавыпуск, когда ракета ещё рядом с расчётом
Высота выше 25 мвыпуск купола под ногами
Скорость ниже 35 м/сразрыв купола
Просьба держится 0,2 смигание одного кадра, блик, облако
Что важно знать про эту функцию. Расчёт показывает: от птицы и мелкого дрона спастись нельзя — камера видит их как «крупный объект» только с 11–19 метров, а при 50 м/с это 0,2–0,4 секунды, купол за это время не раскроется. Спасает от крупного: дерево, дом, земля. И второе: автоматический выпуск в апогее перекрывается с этим спасением — к моменту, когда скорость безопасна, купол уже в воздухе.

Как считаются отклонения рулей

Рули не «крутят ручку на минус-плюс». Сила рулей растёт как скоростной напор: на малой скорости они почти ничего не могут, на большой — переворачивают аппарат за десятые доли секунды. Поэтому регулятор каждый раз считает, какое отклонение даст нужное угловое ускорение:

момент на радиан отклонения   M = q · S · CN · L
угловое ускорение на радиан   a = M / I
нужное ускорение              a = w0² · ошибка − 2·z·w0 · скорость
отклонение                    d = a / a_нужное

Здесь q — скоростной напор, S — площадь рулей, CN — их эффективность, L — плечо, I — момент инерции, w0 — желаемая частота контура. Такой регулятор одинаково работает и на старте, и на разгоне, и на спуске.

Проверено: стенд даёт 9 проверок из 9, включая проверку знака коррекции — самая коварная ошибка, которую в полёте не видно.

Предохранители

Что проверено, а что нет

Проверено на компьютереНе проверено
  • Контуры рулей: 9 проверок из 9
  • Запуск, включая отказ двигателя: 9 из 9
  • Парашют, включая отказы датчиков: 11 из 11
  • Вся связка вместе: 6 из 7
  • Ошибки, которые ловились: неверный знак коррекции, порог старта 3 g вместо 1,5 g, ошибка курса через синус вместо угла
  • На самой плате прошивка не запускалась
  • Числа регистров датчиков взяты из описания
  • Пиротехническая часть не отрабатывалась
  • Нет управления тангажом: руль высоты в нейтрали
  • Нет журнала на флешку

Дальше

Как установить прошивку — пошагово