Kinokontrol ng Dr32 Engine ng Dr32 LoRa: 10 Hakbang
Kinokontrol ng Dr32 Engine ng Dr32 LoRa: 10 Hakbang
Anonim
Image
Image
Pagpapakita
Pagpapakita

Ngayon ay tinatalakay namin ang mga drone engine, na madalas na tinatawag na "brushless" na mga motor. Malawakang ginagamit ang mga ito sa aeromodelling, higit sa lahat sa mga drone, dahil sa kanilang lakas at mataas na pag-ikot. Malalaman namin ang tungkol sa pagkontrol ng isang motor na walang brush na gumagamit ng ESC at ESP32, na gumaganap ng isang analogic actuation sa ESC gamit ang panloob na LED_PWM controller, at paggamit ng potentiometer upang mabago ang bilis ng motor.

Hakbang 1: Pagpapakita

Hakbang 2: Ginamit na Mga Mapagkukunan

Ginamit na Mga Mapagkukunan
Ginamit na Mga Mapagkukunan
  • Mga jumper para sa koneksyon
  • Wifi LoRa 32
  • ESC-30A
  • Brushless A2212 / 13t Engine
  • kable ng USB
  • Potensyomiter para sa kontrol
  • Protoboard
  • Supply ng kuryente

Hakbang 3: Wifi LoRa 32- Pinout

Wifi LoRa 32- Pinout
Wifi LoRa 32- Pinout

Hakbang 4: ESC (Electronic Speed Control)

ESC (Electronic Speed Control)
ESC (Electronic Speed Control)
ESC (Electronic Speed Control)
ESC (Electronic Speed Control)
  • Electronic Speed Controller
  • Elektronikong circuit upang makontrol ang bilis ng isang de-kuryenteng motor.
  • Kinokontrol mula sa isang pamantayan ng 50Hz PWM servo control.
  • Nag-iiba ito ng rate ng paglipat ng isang network ng mga field effect transistors (FET). Sa pamamagitan ng pag-aayos ng dalas ng paglipat ng mga transistors, ang bilis ng motor ay nabago. Ang bilis ng motor ay iba-iba sa pamamagitan ng pag-aayos ng tiyempo ng mga naibigay na kasalukuyang pulso sa iba't ibang mga paikot-ikot na motor.
  • Mga pagtutukoy:

Kasalukuyang output: 30A tuloy-tuloy, 40A para sa 10 segundo

Hakbang 5: ESC Electronic Speed Control (ESC)

ESC Electronic Speed Control (ESC)
ESC Electronic Speed Control (ESC)

Hakbang 6: Pagkontrol ng PWM Servo Motor

PWM Servo Motor Control
PWM Servo Motor Control

Lilikha kami ng isang servo ng PWM upang kumilos sa ESC data input sa pamamagitan ng pagdidirekta sa channel 0 ng LED_PWM para sa GPIO13, at gagamit ng isang potensyomiter upang makontrol ang modulasyon.

Para sa pagkuha, gagamit kami ng potentiometer na 10k bilang isang divider ng boltahe. Ang pagkuha ay magagawa sa channel ADC2_5, maa-access ng GPIO12.

Hakbang 7: Makuha ng Analog

Kunan ng Analog
Kunan ng Analog
Kunan ng Analog
Kunan ng Analog

Analog sa digital conversion

Ie-convert namin ang mga halaga ng AD sa PWM.

Ang PWM ng servo ay 50Hz, kaya ang tagal ng pulso ay 1/50 = 0.02 segundo o 20 milliseconds.

Kailangan nating kumilos nang hindi bababa sa 1 millisecond hanggang 2 milliseconds.

Kapag ang PWM ay nasa 4095, ang lapad ng pulso ay 20 milliseconds, ibig sabihin dapat nating maabot ang maximum na 4095/10 upang maabot ang 2 milliseconds, kaya dapat makatanggap ang PWM ng 410 *.

At pagkatapos ng hindi bababa sa 1 millisecond, samakatuwid 409/2 (o 4095/20), dapat makatanggap ang PWM ng 205 *.

* Ang mga halaga ay dapat na mga integer

Hakbang 8: Circuit - Mga Koneksyon

Circuit - Mga Koneksyon
Circuit - Mga Koneksyon

Hakbang 9: Source Code

Header

#include // Necessário apenas para o Arduino 1.6.5 at posterior # isama ang "SSD1306.h" // o mesmo que #include "SSD1306Wire.h" // OLED_SDA - GPIO4 // OLED_SCL - GPIO15 // OLED_RST - GPIO16 #define SDA 4 #define SCL 15 # tukuyin ang RST 16 SSD1306 display (0x3c, SDA, SCL, RST); // Instanciando e ajustando os pinos do objeto "display"

Mga variable

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;

Pag-set up

void setup () {pinMode (pin_Atuacao_A, OUTPUT); ledcSetup (canal_A, freq, resolucao); ledcAttachPin (pin_Atuacao_A, canal_A); ledcWrite (canal_A, ciclo_A); display.init (); display.flipScreenVertically (); // Vira isang tela verticalmente display. Malinaw (); // ajusta o alinhamento para sa isang esquerda display.setTextAlignment (TEXT_ALIGN_LEFT); // ajusta a fonte para Arial 16 display.setFont (ArialMT_Plain_16); }

Loop

void loop () {leitura = analogRead (Leitura_A); ciclo_A = mapa (leitura, 0, 4095, 205, 410); ledcWrite (canal_A, ciclo_A); potencia = mapa (leitura, 0, 4095, 0, 100); display.clear (); // limpa o buffer do display 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 ("Potência:")); display.drawString (72, 36, String (potencia)); display.drawString (98, 36, String ("%")); display.display (); // mostra no display}

Hakbang 10: Mga File

I-download ang mga file

INO

PDF