Высотомер для ракеты на Digispark

Несмотря на «некоторую недоразвитость» модуля Digispark, его удобно использовать там, где требуются малые размеры и невысокая вычислительная мощность. В качестве примера, ранее был описан высотомер/барограф для легкой модели ракеты, позволяющий регистрировать высоту ее полета. При использовании готового модуля датчика давления BMP280, конструкция получилась весьма компактной: в ней даже не пришлось делать отдельную плату для радиоэлементов.Однако, за пару лет эксплуатации регистратора, он претерпел несколько изменений, о которых ниже…
Принципиальная схема обновленного барографа:Модуль DD1 — это Digispark, на схеме условно показаны только разъемы c линиями портов X3 и питания X2. Модуль датчика давления BMP280 (DD2) подключается к микроконтроллеру через интерфейс SPI (программно реализован).

Питание модуля несколько занижено: на выходе стабилизатора напряжения DA1 благодаря резистору R1 выставлено напряжение 3,8 В. Его достаточно для Digispark и оно не слишком высокое для BMP280 (при норме 3,3В). Литиевого аккумулятора подходящего размера не было под рукой, поэтому для питания используются две батарейки CR2016 — их установка является выключателем…

Оставшийся свободным от SPI вывод Р1 используется для реализации нескольких функций:

  • На плате модуля к выводу подключен светодиод, поэтому первая функция вывода — индикация режима работы и состояния программы
  • Вместе со световой индикацией с помощью пьезоизлучателя BF1 реализована звуковая индикация состояния модуля.
  • С помощью разъема (и перемычки) Х4 осуществляется сброс параметров регистрации (признаки старта, полета и др.) Необходимость установки R2 неожиданно проявилась «на практике» — далеко не всегда в отсутствие перемычки Х4 на выводе считывался уровень «нуля» (казалось бы — светодиод внутри модуля катодом на землю подключен! ан — нет — все равно HIGH считывается иногда).
  • Четвертая функция вывода — подключение модуля передатчика оставлена «на перспективу».
  • Пятой функцией является вывод данных по последовательному интерфейсу (только линия Тх). При питании выше 4В через него идет вывод содержимого EEPROM.

Скетч для барографа представлен в файле DigBmp91.zip. Алгоритм программы во многом совпадает с прототипом. Отличия связаны с отсутствием в ATtiny85 аппаратной возможности управлять периферией по SPI. Также ресурсов ATtiny не хватило для реализации вычисления экспоненциальной функции при определении относительной высоты по измеренному значению давления, поэтому в EEPROM микроконтроллера записывается значение измеренного давления в Паскалях (со смещением -80000 для комфортной «упаковки» результата в двухбайтовую ячейку). Также в программу добавлен вывод содержимого EEPROM через вывод Р1 со скоростью 4800 бит/сек.

Описание работы: установка батареек GB1 в Х1 производится непосредственно перед стартом ракеты. Программа после проверки питания, при условии, что оно ниже четырех вольт, производит проверку уровня на входе Р1. Если уровень высокий, производится обнуление признаков полета и программа останавливается в бесконечном цикле. (Обнуление признаков необходимо после «ложного старта». Признаки полета проверяются программой для устранения перезаписи данных при сбое питания).

Если уровень низкий (отсутствует перемычка Х4), производится инициализации датчика давления и программа микроконтроллера переходит к алгоритму определения старта: уменьшению значения давления более чем на 60 Па (что примерно соответствует пяти метрам увеличения высоты). После старта в EEPROM микроконтроллера с периодом 100 мс записываются измеренные значения давления. После заполнения памяти (512 байт хватает примерно на 25 секунд измерений), программа «останавливается» в бесконечном цикле с гашением контрольного светодиода модуля Digispark.

Для считывания данных из Digispark, его необходимо вынуть из разъемов Х2 и Х3. Вход преобразователя USB-UART Rx подключить к Р1; питание 5В с этого преобразователя подать на Х2. Воткнуть USB-UART в USB порт компьютера и считать на скорости 4800 данные с Digispark в мониторе порта Arduino IDE.

Данные идут восьмиричными символами (по 3 цифры на байт) с разделителями «;» — сначала адрес ячейки (6 цифр, два байта), затем содержимое — также два байта.
Затем считанные данные сохраняются в текстовый файл с расширением CSV. Этот файл обрабатывается в Excel: по значениям давления вычисляется относительная высота ракеты по формуле (использованы функции из пакета MS Office — Microsoft Excel) H = 44330 * (1 — СТЕПЕНЬ((X + 80000)/101325;0,1903)) (где Х — значение ячейки с измеренным давлением) и строится график полета.

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