Опишу в этой статье какие компоненты понадобятся для сборки, как их соединить и приложу текст программы.
Пишу эту статью чтобы самому не забыть как собирать, если вдруг мой высотомер сломается, а он скорее всего сломается, так как ему предстоят нелегкие испытания :)
Принцип действия
Наверное все и так знают, но на всякий случай напомню, что атмосферное давление зависит от высоты над уровнем моря. Замеряя изменение давления, можно определить изменение высоты.
Конечно атмосферное давление - это штука не стабильная и само меняется со временем, но на небольших промежутках времени подходит для определения высоты.
На графике приведены не совсем точные значения, просто хотел показать, что зависимость не линейная. До высоты 2000 метров, можно принять, что за каждые 12 метров подъёма атмосферное давление уменьшается на 1 мм. рт. ст., на практике это хорошо работает.
Наш датчик измеряет давление в Паскалях. Я произвел небольшие вычисления и у меня получилось, что при изменении высоты на 1 метр давление меняется примерно на 11,110197 Па.
Необходимые детали
- Микроконтроллер STM32F103C8T6 или STM32F103C6T6. Во втором в два раза меньше памяти и нет некоторых таймеров, а это для нас не критично, зато и в два раза дешевле (купить).
- Датчик атмосферного давления и температуры BMP280. Или датчик атмосферного давления, температуры и влажности BME280. Нас интересует только давление, так что без разницы какой из них (купить).
- Стабилизатор напряжения на 3.3 В. Можно и на 5 В, но тогда его нужно подключать к выводу 5V (купить).
Схема соединения
Первое значение контакты BME280, после дефиса контакты STM32F103C8T6:
VCC - 3.3
GND - G
SCK/SCL - B6
SDA/SDI - B7
CSB - не используется
SDO - не используется
Первое значение - контакты SSD1306, после дефиса контакты STM32F103C8T6:
GND - G
VCC - 3.3
D0 - A5
D1 - A7
RES - A1
DC - A3
CS - A2
Код программы
Написал в Coocox IDE.
Скачать архив можно здесь.
Фотки
Видео
Видео первой версии на проводочках:
Видео второй версии на монтажной плате и испытание прочности:
Выводы
Получившийся вариант меня не совсем устраивает. Недостатки следующие:
- При запуске очень часто начальное давление получается некорректное. Приходится нажимать на контроллере кнопку перезагрузки, тогда давление получается нормальное. Скорее всего проблема в программе, надо разбираться.
- Батарейка быстро сажается. Это скорее всего из-за стабилизатора напряжения. Надо поставить нормальный DC-DC преобразователь.
- Пару раз было зависание программы, при котором значения давления не обновлялись. Надо разбираться в коде программы.
- Сильно не хватает записи значений давлений на флешку. Надо добавить картридер.
В дальнейшем собираюсь доработать схему исправив недочеты, подключив, карту памяти, силовые модули, видеокамеру, гироскоп, акселерометр и магнитометр чтобы можно было её использовать как полетный контроллер в моих будущих космических кораблях. Да, вот такие Наполеоновские планы. Надеюсь все получится...