Оглавление:
- Шаг 1: демонстрация
- Шаг 2. Используемые ресурсы
- Шаг 3: Wifi LoRa 32- Распиновка
- Шаг 4: ESC (электронная регулировка скорости)
- Шаг 5: Электронная регулировка скорости ESC (ESC)
- Шаг 6: управление серводвигателем с ШИМ
- Шаг 7: Аналоговый захват
- Шаг 8: Схема - Подключения
- Шаг 9: Исходный код
- Шаг 10: файлы
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
Сегодня мы обсуждаем двигатели для дронов, которые часто называют «бесщеточными». Они широко используются в авиамоделировании, в основном в дронах, из-за их мощности и высокой скорости вращения. Мы узнаем об управлении бесщеточным двигателем с помощью ESC и ESP32, выполнении аналогового срабатывания ESC с помощью внутреннего контроллера LED_PWM и использовании потенциометра для изменения скорости двигателя.
Шаг 1: демонстрация
Шаг 2. Используемые ресурсы
- Перемычки для подключения
- Wi-Fi LoRa 32
- ESC-30A
- Бесщеточный двигатель A2212 / 13t
- USB-кабель
- Потенциометр для управления
- Протоборд
- Источник питания
Шаг 3: Wifi LoRa 32- Распиновка
Шаг 4: ESC (электронная регулировка скорости)
- Электронный регулятор скорости
- Электронная схема для управления скоростью электродвигателя.
- Управляется стандартным сервоуправлением с ШИМ 50 Гц.
- Он изменяет скорость переключения сети полевых транзисторов (FET). Регулируя частоту переключения транзисторов, скорость двигателя изменяется. Скорость двигателя изменяется, регулируя синхронизацию импульсов тока, подаваемых на различные обмотки двигателя.
- Характеристики:
Выходной ток: 30 А непрерывный, 40 А в течение 10 секунд
Шаг 5: Электронная регулировка скорости 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: файлы
Скачайте файлы
Я НЕТ