Introduction: Цифровой Измеритель Углов Атаки Своими Руками

About: Можно верить обществу, можно верить судьбе. Но если ты хочешь узнать Закон, ты узнаешь его в себе. Борис Гребенщиков.

Измеритель углов атаки предназначен для настройки автомата перекоса радиоуправляемых моделей вертолетов. Точно настроенная модель показывает значительно более высокие летные характеристики.

Цифровой измеритель углов атаки стоит в районе 3000 рублей, в то время как аналогичный прибор можно построить самостоятельно, немного дешевле. На мой взгляд главной мотивацией здесь вряд ли станет желание сэкономить. Основным положительным результатом станет то, что в процессе работы над проектом у вас появится возможность познакомиться с работой акселерометра, научиться писать несложный код, а так же освежить школьный курс тригонометрии.

Для работы над проектом нам понадобятся следующие изделия:

  1. Измеритель углов атаки (Pitch gauge). Он необходим для крепления акселерометра к лопасти вертолета.
  2. Любой цифровой акселерометр (я использовал стандартный модуль от Amperka)
  3. Любой контроллер, с которым вам удобно работать (я использовал Arduino Uno, так как он у меня был)
  4. Провода для подключения акселерометра к контроллеру (в моем случае шли в комплекте с модулем акселерометра)

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

Step 1: Строим Прибор

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

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

Для подключения акселерометра к контроллеру я использовал обычный трехпроводной шлейф и Troyka Sheild только по тому, что он у меня был. Кроме того, с применением этой платы отпала необходимость в пайке, так как платы просто вставляются друг в друга пинами.

Step 2: Программирование

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

Данная библиотека устроена так, что с помощью команды accel.readX_G() возвращает скалярную величину проекции гравитационной постоянной на ось X акселерометра.

accel.readY_G() - на ось Y,

accel.readZ_G() - ну вы догадались.

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

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

Полную версию кода привожу на следующей странице.

Step 3: Код Ардуино

// библитоека для работы I²C

#include // библиотека для работы с модулями IMU #include

// создаём объект для работы с акселерометром Accelerometer accel;

float x; float y; float z; float Beta; float Param;

void setup() { // открываем последовательный порт Serial.begin(9600);

// выводим сообщение о начале инициализации Serial.println("Begin init..."); // инициализация акселерометра accel.begin(); // выводим сообщение об удачной инициализации Serial.println("Init completed"); // устанавливаем чувствительность accel.setRange(RANGE_2); }

void loop() { x = accel.readX_G(); y = accel.readY_G(); z = accel.readZ_G();

Param = x/(sqrt(pow(y,2) + pow(z,2))); Beta = atan (Param) * 180 / 3.141592;

Serial.print(Beta); Serial.println(""); delay(500); }

Step 4: