Inhaltsverzeichnis:
- Schritt 1: Demonstration
- Schritt 2: PWM-Motorsteuerung
- Schritt 3: Verwendete Ressourcen
- Schritt 4: ESP 32 Dev Kit - Pinbelegung
- Schritt 5: Turbinenmontage
- Schritt 6: Schaltung - Anschlüsse
- Schritt 7: Messung am Oszilloskop
- Schritt 8: Quellcode
- Schritt 9: Laden Sie die Dateien herunter
Video: Elektrische Turbine mit ESP32 - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:18
Heute bespreche ich eine elektrische Turbine mit ESP32. Die Baugruppe enthält ein Teil, das in 3D gedruckt wurde. Ich werde eine PWM-Funktion des ESP32 vorstellen, die sich zur Steuerung von Elektromotoren eignet. Dies wird in einem Gleichstrommotor verwendet. Außerdem werde ich die Funktionsweise dieses MCPWM (Motor Control PWM) in einer praktischen Anwendung demonstrieren.
Ich habe ESP32 LoRa in diesem Projekt verwendet, und ich denke, es ist hier wichtig zu beachten, dass dieser Mikrocontroller zwei Blöcke enthält. Diese Blöcke können jeweils drei Motoren steuern. Somit ist es möglich, bis zu sechs Motoren mit PWM unabhängig voneinander anzusteuern. Dies bedeutet, dass die Steuerung, die ich hier verwende, nicht der Standard ist (was dem Arduino ähnlich ist). Stattdessen ist die Steuerung der Chip selbst, was dem ESP32 viel Flexibilität in Bezug auf die Motorsteuerung garantiert.
Schritt 1: Demonstration
Schritt 2: PWM-Motorsteuerung
Allgemeines Diagramm:
• Mit der MCPWM-Funktion des ESP32 können verschiedene Arten von Elektromotoren gesteuert werden. Es hat zwei Einheiten.
• Jede Einheit hat drei PWM-Ausgangspaare.
• Jedes Ausgangs-A/B-Paar kann mit einem von drei Synchronisations-Timern 0, 1 oder 2 synchronisiert werden.
• Ein Timer kann verwendet werden, um mehr als ein PWM-Ausgangspaar zu synchronisieren
Vollständiges Diagramm:
• Jedes Gerät kann auch Eingangssignale als SYNCHRONISATIONSZEICHEN sammeln;
• FEHLERZEICHEN für Überstrom oder Motorüberspannung erkennen;
• Erhalten Sie Feedback mit CAPTURE SIGNALS, wie z. B. die Position des Motors
Schritt 3: Verwendete Ressourcen
• Jumper für den Anschluss
• Heltec Wifi LoRa 32
• Gemeinsamer Gleichstrommotor
• Brücke H - L298N
• USB-Kabel
• Protoboard
• Energieversorgung
Schritt 4: ESP 32 Dev Kit - Pinbelegung
Schritt 5: Turbinenmontage
Schritt 6: Schaltung - Anschlüsse
Schritt 7: Messung am Oszilloskop
Schritt 8: Quellcode
Header
#include //Nicht nötig, um Arduino IDE zu verwenden#include "driver/mcpwm.h" //inclui eine Biblioteca "Motor Control PWM" nativa do ESP32 #include // Notwendig für Arduino 1.6.5 und posterior #include " SSD1306.h" // oder mesmo que #include "SSD1306Wire.h" //OLED_SDA -- GPIO4 //OLED_SCL -- GPIO15 //OLED_RST -- GPIO16 #define SDA 4 #define SCL 15 #define RST 16 SSD1306 display(0x3c, SDA, SCL, RST); //Instanciando e ajustando os pinos do objeto "display" #define GPIO_PWM0A_OUT 12 //Declara GPIO 12 como PWM0A #define GPIO_PWM0B_OUT 14 //Declara GPIO 14 como PWM0B
Aufstellen
Void setup () { Serial.begin (115200); display.init(); //display.flipScreenVertically(); //Vira a tela verticalmente display.clear(); // ajusta oder alinhamento para a esquerda display.setTextAlignment(TEXT_ALIGN_LEFT); // ajusta a fonte para Arial 16 display.setFont (ArialMT_Plain_16); //mcpwm_gpio_init(unidade PWM 0, sagtea A, porta GPIO) => Instancia oder MCPWM0A kein Pino GPIO_PWM0A_OUT declarado no codigo mcpwm_gpio_init(MCPWM_UNIT_0, MCP0_IOP); //mcpwm_gpio_init(unidade PWM 0, sagtea B, porta GPIO) => Instancia oder MCPWM0B kein Pino GPIO_PWM0B_OUT declarado no começo do codigo mcpwm_gpio_init(MCPWM_UNIT_0, MCPBIOWP); mcpwm_config_t pwm_config; pwm_config.frequency = 1000; // Frequenz = 500 Hz, pwm_config.cmpr_a = 0; // Ciclo de trabalho (Arbeitszyklus) tun PWMxA = 0 pwm_config.cmpr_b = 0; //Ciclo de trabalho (Arbeitszyklus) do PWMxb = 0 pwm_config.counter_mode = MCPWM_UP_COUNTER; //Para MCPWM assimetrico pwm_config.duty_mode = MCPWM_DUTY_MODE_0; //Ciclo de trabalho em nível alto definieren //Inicia(Unidade 0, Timer 0, Config PWM) mcpwm_init(MCPWM_UNIT_0, MCPWM_TIMER_0, &pwm_config); // PWM0A & PWM0B com als configurações acima definieren}
Funktionen
//Função que configura o MCPWM operador A (Unidade, Timer, Porcentagem (ciclo de trabalho))static void brushed_motor_forward(mcpwm_unit_t mcpwm_num, mcpwm_timer_t timer_num, float duty_cycle) { //mcpwm_t timer_num, float duty_cycle) { //mcpwm (0, 1 oder 2), Operateur (A oder B)); => Desliga o sinal do MCPWM no Operador B (Define o sinal em Baixo) mcpwm_set_signal_low(mcpwm_num, timer_num, MCPWM_OPR_B); // mcpwm_set_duty (unidade PWM (0 oder 1), Número do timer (0, 1 oder 2), Operador (A oder B), Ciclo de trabalho (% do PWM)); => Konfiguriere ein Porcentagem do PWM no Operator A (Ciclo de trabalho) mcpwm_set_duty(mcpwm_num, timer_num, MCPWM_OPR_A, Duty_cycle); // mcpwm_set_duty_tyoe (unidade PWM (0 oder 1), Número do timer (0, 1 oder 2), Operador (A oder B), Nível do ciclo de trabalho (alto oder baixo)); => Definiere o nível do ciclo de trabalho (alto ou baixo) mcpwm_set_duty_type(mcpwm_num, timer_num, MCPWM_OPR_A, MCPWM_DUTY_MODE_0); //Nota: Chame essa função toda vez que for chamado "mcpwm_set_signal_low" ou "mcpwm_set_signal_high" para manter o ciclo de trabalho configurado anteriormente } //) Função que configura o MCPWM Do operador B, Porcentagem, de statisch void brushed_motor_backward (mcpwm_unit_t mcpwm_num, mcpwm_timer_t timer_num, float duty_cycle) {mcpwm_set_signal_low (mcpwm_num, timer_num, MCPWM_OPR_A); //Desliga o sinal do MCPWM nein Operator A (Define o sinal em Baixo) mcpwm_set_duty(mcpwm_num, timer_num, MCPWM_OPR_B, duty_cycle); // Konfiguriere ein Porcentagem do PWM no Operator B (Ciclo de trabalho) mcpwm_set_duty_type (mcpwm_num, timer_num, MCPWM_OPR_B, MCPWM_DUTY_MODE_0); //define o nível do ciclo de trabalho (alto ou baixo) } //Função que para o MCPWM de ambos os Operadores static void brushed_motor_stop(mcpwm_unit_t mcpwm_num, mcpwm_timer_t timer(num_set_Mcp_low_m_set_signal_timer_set_signal //Desliga oder sinal do MCPWM kein Operator A mcpwm_set_signal_low(mcpwm_num, timer_num, MCPWM_OPR_B); //Desliga oder sinal do MCPWM kein Operator B }
Schleife
Void loop () {//Move o motor no sentido horário brushed_motor_forward (MCPWM_UNIT_0, MCPWM_TIMER_0, 50.0); oled("50"); Verzögerung (2000); //Para o motor brushed_motor_stop (MCPWM_UNIT_0, MCPWM_TIMER_0); oled("0"); Verzögerung (2000); //Move o motor no sentido antihorário brushed_motor_backward (MCPWM_UNIT_0, MCPWM_TIMER_0, 25.0); oled("25"); Verzögerung (2000); //Para o motor brushed_motor_stop (MCPWM_UNIT_0, MCPWM_TIMER_0); oled("0"); Verzögerung (2000); // Acceleraco i de 1 a 100 for(int i=10;i<=100;i++){brushed_motor_forward(MCPWM_UNIT_0, MCPWM_TIMER_0, i); oled(String(i)); Verzögerung (200); } // Desaceleração i de 100 a 1 delay(5000); for(int i=100;i>=10;i--){brushed_motor_forward(MCPWM_UNIT_0, MCPWM_TIMER_0, i); oled(String(i)); Verzögerung (100); } Verzögerung (5000); }
Schritt 9: Laden Sie die Dateien herunter
INO
ZEICHNUNG
Empfohlen:
Heimwerken -- Einen Spinnenroboter herstellen, der mit einem Smartphone mit Arduino Uno gesteuert werden kann – wikiHow
Heimwerken || Wie man einen Spider-Roboter herstellt, der mit einem Smartphone mit Arduino Uno gesteuert werden kann: Während man einen Spider-Roboter baut, kann man so viele Dinge über Robotik lernen. Wie die Herstellung von Robotern ist sowohl unterhaltsam als auch herausfordernd. In diesem Video zeigen wir Ihnen, wie Sie einen Spider-Roboter bauen, den wir mit unserem Smartphone (Androi
Bewegungsaktivierte Cosplay Wings mit Circuit Playground Express - Teil 1: 7 Schritte (mit Bildern)
Bewegungsaktivierte Cosplay-Flügel mit Circuit Playground Express - Teil 1: Dies ist Teil 1 eines zweiteiligen Projekts, in dem ich Ihnen meinen Prozess zur Herstellung eines Paars automatisierter Feenflügel zeige. Der erste Teil des Projekts ist der Mechanik der Flügel, und der zweite Teil macht es tragbar und fügt die Flügel hinzu
Raspberry Pi mit Node.js mit der Cloud verbinden – wikiHow
So verbinden Sie Raspberry Pi mit Node.js mit der Cloud: Dieses Tutorial ist nützlich für alle, die einen Raspberry Pi mit Node.js mit der Cloud, insbesondere mit der AskSensors IoT-Plattform, verbinden möchten. Sie haben keinen Raspberry Pi? Wenn Sie derzeit keinen Raspberry Pi besitzen, empfehle ich Ihnen, sich einen Raspberry Pi zuzulegen
DIY Circuit Activity Board mit Büroklammern - HERSTELLER - STEM: 3 Schritte (mit Bildern)
DIY Circuit Activity Board mit Büroklammern | HERSTELLER | STEM: Mit diesem Projekt können Sie den Weg des elektrischen Stroms ändern, um durch verschiedene Sensoren zu laufen. Mit diesem Design können Sie zwischen dem Aufleuchten einer blauen LED oder dem Aktivieren eines Summers wechseln. Sie haben auch die Wahl, einen lichtabhängigen Widerstand mit
Beginnen Sie mit Light Painting (kein Photoshop): 5 Schritte (mit Bildern)
Beginnend mit Light Painting (kein Photoshop): Ich habe vor kurzem eine neue Kamera gekauft und einige ihrer Funktionen untersucht, als ich im Internet auf Light Painting oder Langzeitbelichtung gestoßen bin. Die meisten von uns werden die Grundform des Lightpaintings mit einem Foto in einer Stadt mit einer Straße gesehen haben