Мазмуну:

ESP32 LoRa башкарылган учкучсуз кыймылдаткыч: 10 кадам
ESP32 LoRa башкарылган учкучсуз кыймылдаткыч: 10 кадам

Video: ESP32 LoRa башкарылган учкучсуз кыймылдаткыч: 10 кадам

Video: ESP32 LoRa башкарылган учкучсуз кыймылдаткыч: 10 кадам
Video: ESP32 with LoRa using Arduino IDE – Getting Started 2024, Ноябрь
Anonim
Image
Image
Демонстрация
Демонстрация

Бүгүн биз пилотсуз кыймылдаткычтарды талкуулайбыз, көбүнчө "щеткасыз" моторлор. Аэродромдо кеңири колдонулат, негизинен дрондордо, анткени алардын күчү жана жогорку айлануусу. Биз щеткасыз моторду ESC жана ESP32 аркылуу башкарууну, ички LED_PWM контроллерин колдонуп ESC боюнча аналогдук аткарууну жана мотор ылдамдыгын өзгөртүү үчүн потенциометрди колдонууну үйрөнөбүз.

1 -кадам: Демонстрация

2 -кадам: Колдонулган ресурстар

Колдонулган ресурстар
Колдонулган ресурстар
  • Байланыш үчүн секиргичтер
  • Wifi LoRa 32
  • ESC-30A
  • Brushless A2212 / 13t Engine
  • USB кабели
  • Контролдоо үчүн потенциометр
  • Protoboard
  • Электр камсыздоо

3-кадам: Wifi LoRa 32- Pinout

Wifi LoRa 32- Pinout
Wifi LoRa 32- Pinout

4 -кадам: ESC (Электрондук ылдамдыкты көзөмөлдөө)

Электрондук ылдамдыкты көзөмөлдөө (ESC)
Электрондук ылдамдыкты көзөмөлдөө (ESC)
Электрондук ылдамдыкты көзөмөлдөө (ESC)
Электрондук ылдамдыкты көзөмөлдөө (ESC)
  • Электрондук ылдамдыкты жөнгө салуучу
  • Электр кыймылдаткычынын ылдамдыгын көзөмөлдөө үчүн электрондук схема.
  • Стандарттык 50 Гц PWM серво көзөмөлүнөн көзөмөлдөнөт.
  • Бул талаа эффект транзисторлорунун (FETs) тармагынын которулуу ылдамдыгын өзгөртөт. Транзисторлордун которуштуруу жыштыгын тууралоо менен мотор ылдамдыгы өзгөрөт. Мотордун ылдамдыгы мотордун ар кандай оромдоруна берилген учурдагы импульс убактысын тууралоо аркылуу өзгөрөт.
  • Мүнөздөмөлөр:

Чыгуу агымы: 30А үзгүлтүксүз, 40А 10 секунд

5 -кадам: ESC электрондук ылдамдыкты көзөмөлдөө (ESC)

ESC электрондук ылдамдыкты көзөмөлдөө (ESC)
ESC электрондук ылдамдыкты көзөмөлдөө (ESC)

6 -кадам: PWM Servo Motor Control

PWM Servo Motor Control
PWM Servo Motor Control

Биз GPIO13 үчүн LED_PWMдин 0 каналын багыттоо менен ESC маалыматын киргизүү боюнча иштөө үчүн PWM сервосун түзөбүз жана модуляцияны башкаруу үчүн потенциометрди колдонобуз.

Тартуу үчүн биз чыңалуу бөлүүчү катары 10k потенциометрди колдонобуз. Тартуу GPIO12 жеткиликтүү болгон ADC2_5 каналында жүргүзүлөт.

7 -кадам: Аналогдук тартуу

Analog Capture
Analog Capture
Analog Capture
Analog Capture

Санарипке которуу аналогу

Биз AD баалуулуктарын PWMге айландырабыз.

Сервонун PWMи 50 Гц, ошондуктан импульс мезгили 1/50 = 0.02 секунд же 20 миллисекунд.

Биз жок дегенде 1 миллисекунддан 2 миллисекундка чейин аракет кылышыбыз керек.

PWM 4095 болгондо, импульстун туурасы 20 миллисекунд, башкача айтканда, биз 2 миллисекундка жетүү үчүн 4095/10 максимумга жетүүбүз керек, ошондуктан PWM 410 *алышы керек.

Жок дегенде 1 миллисекундтан кийин, демек 409/2 (же 4095/20), PWM 205 *алышы керек.

* Маанилер бүтүн сандар болушу керек

8 -кадам: Circuit - Connections

Circuit - Connections
Circuit - Connections

9 -кадам: Булак коду

Header

#кошуу // Arduino 1.6.5 e posterior үчүн #SSD1306.h камтыйт // "SSD1306Wire.h" кошуу // OLED_SDA -GPIO4 // OLED_SCL -GPIO15 // OLED_RST - GPIO16 #аныктоо SDA 4 #аныктоо SCL 15 #аныктоо RST 16 SSD1306 дисплей (0x3c, SDA, SCL, RST); // Instantiando ejustando os pinos to do objeto "display".

Variables

const int freq = 50; const int channel_A = 0; const int Resolutionucao = 12; const int pin_Atuacao_A = 13; const int Leitura_A = 12; int potencia = 0; int leitura = 0; int ciclo_A = 0;

Жайгашуу

жараксыз орнотуу () {pinMode (pin_Atuacao_A, OUTPUT); ledcSetup (channel_A, жыштык, чечим); ledcAttachPin (pin_Atuacao_A, channel_A); ledcWrite (channel_A, ciclo_A); display.init (); display.flipScreenVertically (); // Виртуалдык экранды көрсөтүү.clear (); // эксклюзивдүү дисплей.setTextAlignment (TEXT_ALIGN_LEFT); // Arial 16 үчүн display font.setFont (ArialMT_Plain_16); }

Loop

void loop () {leitura = analogRead (Leitura_A); ciclo_A = карта (лейтура, 0, 4095, 205, 410); ledcWrite (channel_A, ciclo_A); potencia = карта (leitura, 0, 4095, 0, 100); display.clear (); // limfa or buffer do display.drawString (0, 0, String ("AD:")); display.drawString (32, 0, String (leitura)); display.drawString (0, 18, String ("PWM:")); display.drawString (48, 18, String (ciclo_A)); display.drawString (0, 36, String ("Потенция:")); display.drawString (72, 36, String (potencia)); display.drawString (98, 36, Стринг ("%"))); display.display (); // mostra дисплей жок}

10 -кадам: Файлдар

Файлдарды жүктөп алыңыз

МЕН ЖОК

PDF

Сунушталууда: