ESP32 Управляемый LoRa Drone Engine: 10 шагов
ESP32 Управляемый LoRa Drone Engine: 10 шагов
Anonim
Image
Image
Демонстрация
Демонстрация

Сегодня мы обсуждаем двигатели для дронов, которые часто называют «бесщеточными». Они широко используются в авиамоделировании, в основном в дронах, из-за их мощности и высокой скорости вращения. Мы узнаем об управлении бесщеточным двигателем с помощью ESC и ESP32, выполнении аналогового срабатывания ESC с помощью внутреннего контроллера LED_PWM и использовании потенциометра для изменения скорости двигателя.

Шаг 1: демонстрация

Шаг 2. Используемые ресурсы

Используемые ресурсы
Используемые ресурсы
  • Перемычки для подключения
  • Wi-Fi LoRa 32
  • ESC-30A
  • Бесщеточный двигатель A2212 / 13t
  • USB-кабель
  • Потенциометр для управления
  • Протоборд
  • Источник питания

Шаг 3: Wifi LoRa 32- Распиновка

Wifi LoRa 32 - Распиновка
Wifi LoRa 32 - Распиновка

Шаг 4: ESC (электронная регулировка скорости)

ESC (Электронная регулировка скорости)
ESC (Электронная регулировка скорости)
ESC (Электронная регулировка скорости)
ESC (Электронная регулировка скорости)
  • Электронный регулятор скорости
  • Электронная схема для управления скоростью электродвигателя.
  • Управляется стандартным сервоуправлением с ШИМ 50 Гц.
  • Он изменяет скорость переключения сети полевых транзисторов (FET). Регулируя частоту переключения транзисторов, скорость двигателя изменяется. Скорость двигателя изменяется, регулируя синхронизацию импульсов тока, подаваемых на различные обмотки двигателя.
  • Характеристики:

Выходной ток: 30 А непрерывный, 40 А в течение 10 секунд

Шаг 5: Электронная регулировка скорости ESC (ESC)

Электронная регулировка скорости ESC (ESC)
Электронная регулировка скорости ESC (ESC)

Шаг 6: управление серводвигателем с ШИМ

ШИМ управление серводвигателем
ШИМ управление серводвигателем

Мы создадим сервопривод PWM для воздействия на ввод данных ESC, направив канал 0 LED_PWM для GPIO13, и будем использовать потенциометр для управления модуляцией.

Для захвата мы будем использовать потенциометр 10k в качестве делителя напряжения. Захват будет производиться на канале ADC2_5, доступном через GPIO12.

Шаг 7: Аналоговый захват

Аналоговый захват
Аналоговый захват
Аналоговый захват
Аналоговый захват

Аналого-цифровое преобразование

Преобразуем значения AD в ШИМ.

ШИМ сервопривода составляет 50 Гц, поэтому период импульса составляет 1/50 = 0,02 секунды или 20 миллисекунд.

Нам нужно действовать как минимум за 1-2 миллисекунды.

Когда ШИМ находится на уровне 4095, ширина импульса составляет 20 миллисекунд, что означает, что мы должны достичь максимума на 4095/10, чтобы достичь 2 миллисекунд, поэтому ШИМ должен получить 410 *.

И, по крайней мере, через 1 миллисекунду, следовательно, 409/2 (или 4095/20), ШИМ должен получить 205 *.

* Значения должны быть целыми числами.

Шаг 8: Схема - Подключения

Схема - Подключения
Схема - Подключения

Шаг 9: Исходный код

Заголовок

#include // Необходимое условие для Arduino 1.6.5 и последующее # include "SSD1306.h" // или сообщение #include "SSD1306Wire.h" // OLED_SDA - GPIO4 // OLED_SCL - GPIO15 // OLED_RST - GPIO16 #define SDA 4 #define SCL 15 #define RST 16 Дисплей SSD1306 (0x3c, SDA, SCL, RST); // Установка и установка изображения для объекта "display"

Переменные

const int freq = 50; const int canal_A = 0; const int resolucao = 12; const int pin_Atuacao_A = 13; const int Leitura_A = 12; int Potencia = 0; int leitura = 0; int ciclo_A = 0;

Настраивать

void setup () {pinMode (pin_Atuacao_A, ВЫХОД); ledcSetup (canal_A, freq, resolucao); ledcAttachPin (pin_Atuacao_A, canal_A); ledcWrite (canal_A, ciclo_A); display.init (); display.flipScreenVertical (); // Выполнить вертикальное отображение display.clear (); // установить или изменить настройки display.setTextAlignment (TEXT_ALIGN_LEFT); // установить шрифт для Arial 16 display.setFont (ArialMT_Plain_16); }

Петля

void loop () {leitura = analogRead (Leitura_A); ciclo_A = карта (лейтура, 0, 4095, 205, 410); ledcWrite (canal_A, ciclo_A); Potencia = map (leitura, 0, 4095, 0, 100); display.clear (); // ограничить буфер do display display.drawString (0, 0, String ("AD:")); display.drawString (32, 0, String (leitura)); display.drawString (0, 18, String ("ШИМ:")); display.drawString (48, 18, String (ciclo_A)); display.drawString (0, 36, String ("Potência:")); display.drawString (72, 36, String (потенция)); display.drawString (98, 36, String ("%")); display.display (); // почти нет отображения}

Шаг 10: файлы

Скачайте файлы

Я НЕТ

PDF

Рекомендуемые: