Table des matières:

Moteur de drone contrôlé ESP32 LoRa : 10 étapes
Moteur de drone contrôlé ESP32 LoRa : 10 étapes

Vidéo: Moteur de drone contrôlé ESP32 LoRa : 10 étapes

Vidéo: Moteur de drone contrôlé ESP32 LoRa : 10 étapes
Vidéo: drone #shorts 2024, Novembre
Anonim
Image
Image
Manifestation
Manifestation

Aujourd'hui, nous discutons des moteurs de drones, souvent appelés moteurs « brushless ». Ils sont largement utilisés en aéromodélisme, principalement dans les drones, en raison de leur puissance et de leur rotation élevée. Nous apprendrons à contrôler un moteur sans balais à l'aide de l'ESC et de l'ESP32, à effectuer un actionnement analogique sur l'ESC à l'aide du contrôleur interne LED_PWM et à utiliser un potentiomètre pour modifier la vitesse du moteur.

Étape 1: Démonstration

Étape 2: Ressources utilisées

Ressources utilisées
Ressources utilisées
  • Cavaliers de connexion
  • Wifi LoRa 32
  • ESC-30A
  • Moteur Brushless A2212 / 13t
  • cable USB
  • Potentiomètre de contrôle
  • Protoboard
  • Source de courant

Étape 3: Wifi LoRa 32- Brochage

Wifi LoRa 32- Brochage
Wifi LoRa 32- Brochage

Étape 4: ESC (contrôle électronique de la vitesse)

ESC (contrôle électronique de la vitesse)
ESC (contrôle électronique de la vitesse)
ESC (contrôle électronique de la vitesse)
ESC (contrôle électronique de la vitesse)
  • Contrôleur de vitesse électronique
  • Circuit électronique pour contrôler la vitesse d'un moteur électrique.
  • Contrôlé à partir d'une servocommande PWM 50 Hz standard.
  • Il fait varier la vitesse de commutation d'un réseau de transistors à effet de champ (FET). En ajustant la fréquence de commutation des transistors, la vitesse du moteur est modifiée. La vitesse du moteur est modifiée en ajustant la synchronisation des impulsions de courant fournies aux divers enroulements du moteur.
  • Caractéristiques:

Courant de sortie: 30A en continu, 40A pendant 10 secondes

Étape 5: ESC Contrôle de vitesse électronique (ESC)

ESC Contrôle de vitesse électronique (ESC)
ESC Contrôle de vitesse électronique (ESC)

Étape 6: Contrôle du servomoteur PWM

Commande de servomoteur PWM
Commande de servomoteur PWM

Nous allons créer un servo PWM pour agir sur l'entrée de données ESC en dirigeant le canal 0 du LED_PWM pour le GPIO13, et utiliser un potentiomètre pour contrôler la modulation.

Pour la capture, nous utiliserons un potentiomètre de 10k comme diviseur de tension. La capture se fera sur le canal ADC2_5, accessible par GPIO12.

Étape 7: Capture analogique

Capture analogique
Capture analogique
Capture analogique
Capture analogique

Conversion analogique-numérique

Nous allons convertir les valeurs de AD en PWM.

Le PWM du servo est de 50 Hz, donc la période d'impulsion est de 1/50 = 0,02 seconde ou 20 millisecondes.

Nous devons agir en au moins 1 milliseconde à 2 millisecondes.

Lorsque le PWM est à 4095, la largeur d'impulsion est de 20 millisecondes, ce qui signifie que nous devrions atteindre le maximum à 4095/10 pour atteindre 2 millisecondes, donc PWM devrait recevoir 410*.

Et après au moins 1 milliseconde, donc 409/2 (ou 4095/20), le PWM devrait recevoir 205*.

* Les valeurs doivent être des nombres entiers

Étape 8: Circuit - Connexions

Circuit - Connexions
Circuit - Connexions

Étape 9: Code source

Entête

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

Variables

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

Installer

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 une telle verticalement display.clear(); //juste ou ajuste pour un affichage display.setTextAlignment(TEXT_ALIGN_LEFT); //juste une police pour Arial 16 display.setFont(ArialMT_Plain_16); }

Boucle

boucle vide () { leitura = analogRead (Leitura_A); ciclo_A = map(leitura, 0, 4095, 205, 410); ledcWrite(canal_A, ciclo_A); puissance = carte(leitura, 0, 4095, 0, 100); display.clear();//limpa o buffer faire 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(puissance)); display.drawString(98, 36, String("%")); display.display(); //mostra pas d'affichage }

Étape 10: Fichiers

Télécharger les fichiers

INO

PDF

Conseillé: