Innehållsförteckning:
- Steg 1: Demonstration
- Steg 2: PWM -motorstyrning
- Steg 3: Resurser som används
- Steg 4: ESP 32 Dev Kit - Pinout
- Steg 5: Turbinmontering
- Steg 6: Krets - anslutningar
- Steg 7: Mätning på oscilloskop
- Steg 8: Källkod
- Steg 9: Ladda ner filerna
Video: Elektrisk turbin med ESP32: 9 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:44
Idag kommer jag att diskutera en elektrisk turbin med ESP32. Enheten har en del som trycktes i 3D. Jag kommer att presentera en PWM -funktion för ESP32 som är lämplig för styrning av elmotorer. Detta kommer att användas i en likströmsmotor. Jag kommer också att visa hur denna MCPWM (Motor Control PWM) fungerar i en praktisk tillämpning.
Jag använde ESP32 LoRa i detta projekt, och jag tror att det är viktigt att notera här att denna mikrokontroller har två block inuti den. Dessa block kan styra tre motorer vardera. Således är det möjligt att styra upp till sex motorer med PWM, alla oberoende. Det betyder att kontrollen jag använder här inte är standarden (vilket är något som liknar Arduino). Istället är kontrollen själva chipet, vilket garanterar ESP32 mycket flexibilitet när det gäller motorstyrning.
Steg 1: Demonstration
Steg 2: PWM -motorstyrning
Allmänt diagram:
• MCPWM -funktionen i ESP32 kan användas för att styra olika typer av elmotorer. Den har två enheter.
• Varje enhet har tre PWM -utgångspar.
• Varje utgående A / B -par kan synkroniseras med en av tre synkroniseringstimrar 0, 1 eller 2.
• En timer kan användas för att synkronisera mer än ett PWM -utgångspar
Komplett diagram:
• Varje enhet kan också samla in insignaler som SYKRONISERINGSSIGNER;
• Upptäck FELTECKEN för överström eller motoröverspänning;
• Få feedback med CAPTURE SIGNALS, till exempel motorns position
Steg 3: Resurser som används
• Byxor för anslutning
• Heltec Wifi LoRa 32
• Vanlig likströmsmotor
• Bro H - L298N
• USB-kabel
• Protoboard
• Strömförsörjning
Steg 4: ESP 32 Dev Kit - Pinout
Steg 5: Turbinmontering
Steg 6: Krets - anslutningar
Steg 7: Mätning på oscilloskop
Steg 8: Källkod
Rubrik
#include // Não é necessário caso use Arduino IDE #include "driver/mcpwm.h" // inclui a biblioteca "Motor Control PWM" nativa do ESP32 #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 #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
Uppstart
void setup () {Serial.begin (115200); display.init (); //display.flipScreenVertically (); // Vira a tela verticalmente display.clear (); // ajusta o 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, saida A, porta GPIO) => Instancia o MCPWM0A no pino GPIO_PWM0A_OUT declarado no começo do código mcpwm_gpio_init (MCPWM_UNIT_0, GPPWM0, // mcpwm_gpio_init (unidade PWM 0, saida B, porta GPIO) => Instancia o MCPWM0B no pino GPIO_PWM0B_OUT declarado no começo do código mcpwm_gpio_init (MCPWM_UNIT_0, MCPWM0; mcpwm_config_t pwm_config; pwm_config.frequency = 1000; // frequência = 500Hz, pwm_config.cmpr_a = 0; // Ciclo de trabalho (driftcykel) gör PWMxA = 0 pwm_config.cmpr_b = 0; // Ciclo de trabalho (driftcykel) gör PWMxb = 0 pwm_config.counter_mode = MCPWM_UP_COUNTER; // Para MCPWM assimetrico pwm_config.duty_mode = MCPWM_DUTY_MODE_0; // Definiera ciclo de trabalho em nível alto // Inicia (Unidade 0, Timer 0, Config PWM) mcpwm_init (MCPWM_UNIT_0, MCPWM_TIMER_0, & pwm_config); // Definiera PWM0A & PWM0B com som konfigurationer ima
Funktioner
// 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) {// mcpwal_ (0, 1 ou 2), Operador (A ou 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 ou 1), Numero do timer (0, 1 ou 2), Operador (A ou B), Ciclo de trabalho (% do PWM)); => Konfigurera en porcentagem för PWM ingen Operador A (Ciclo de trabalho) mcpwm_set_duty (mcpwm_num, timer_num, MCPWM_OPR_A, duty_cycle); // mcpwm_set_duty_tyoe (unidade PWM (0 ou 1), Numero do timer (0, 1 ou 2), Operador (A ou B), Nível do ciclo de trabalho (alto baixo)); => definiera 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 (Unidade), Timho statiskt tomrum borstat_motor_ bakåt (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 no Operador A (Define o sinal em Baixo) mcpwm_set_duty (mcpwm_num, timer_num, MCPWM_OPR_B, duty_cycle); // Configura a porcentagem do PWM no Operador B (Ciclo de trabalho) mcpwm_set_duty_type (mcpwm_num, timer_num, MCPWM_OPR_B, MCPWM_DUTY_MODE_0); // definiera 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) // Desliga o sinal do MCPWM no Operador A mcpwm_set_signal_low (mcpwm_num, timer_num, MCPWM_OPR_B); // Desliga o sinal do MCPWM no Operador B}
Slinga
void loop () {// Move o motor no sentido horário brushed_motor_forward (MCPWM_UNIT_0, MCPWM_TIMER_0, 50.0); oled ("50"); fördröjning (2000); // Para o motor brushed_motor_stop (MCPWM_UNIT_0, MCPWM_TIMER_0); oled ("0"); fördröjning (2000); // Flytta motorn utan sentido antihorário borstad_motor_ bakåt (MCPWM_UNIT_0, MCPWM_TIMER_0, 25.0); oled ("25"); fördröjning (2000); // Para o motor brushed_motor_stop (MCPWM_UNIT_0, MCPWM_TIMER_0); oled ("0"); fördröjning (2000); // Aceleracao i de 1 a 100 för (int i = 10; i <= 100; i ++) {brushed_motor_forward (MCPWM_UNIT_0, MCPWM_TIMER_0, i); oled (String (i)); fördröjning (200); } // Desaceleração i de 100 a 1 fördröjning (5000); för (int i = 100; i> = 10; i-) {brushed_motor_forward (MCPWM_UNIT_0, MCPWM_TIMER_0, i); oled (String (i)); fördröjning (100); } fördröjning (5000); }
Steg 9: Ladda ner filerna
INO
TECKNING
Rekommenderad:
3D-tryckt elektrisk skjutreglage (endast med ett gem): 7 steg (med bilder)
3D-tryckt elektrisk skjutbrytare (med endast ett gem): Jag har tappat ihop att koppla ihop mina egna små elektriska projekt genom åren, mestadels i form av gem, aluminiumfolie och kartong som är kullerstensbelagda med varmt lim. Jag köpte nyligen en 3D -skrivare (Creality Ender 3) och letade efter
Elektrisk dörrlås med fingeravtrycksläsare och RFID -läsare: 11 steg (med bilder)
Elektrisk dörrlås med fingeravtrycksläsare och RFID -läsare: Projektet var utformat för att undvika nödvändigheten av att använda nycklar, för att nå vårt mål använde vi en optisk fingeravtryckssensor och en Arduino. Det finns dock individer som har ett oläsligt fingeravtryck och sensorn känner inte igen det. Tänker sedan
Hur man bygger en elektrisk longboard med telefonstyrning: 6 steg (med bilder)
Hur man bygger en elektrisk longboard med telefonstyrning: Elektriska longboards är fantastiska! TESTFOTO I VIDEOEN OCH FÖR ATT BYGGA EN ELEKTRISK LONGBOARD KONTROLLERAD FRÅN EN TELEFON MED BLUETOOTHUpdate #1: Grepptejp installerat, några tweaks till hastighetsregulatorn har inneburit att jag har fått mer fart ur båten
Förbättrad elektrostatisk turbin gjord av återvinningsbara: 16 steg (med bilder)
Förbättrad elektrostatisk turbin gjord av återvinningsbara material: Detta är en helt repbyggd, elektrostatisk turbin (EST) som omvandlar högspännings likström (HVDC) till höghastighets, roterande rörelse. Mitt projekt inspirerades av Jefimenko Corona -motor som drivs av elektricitet från atmosfären
Tesla -turbin från gamla hårddiskar och minimala verktyg: 11 steg (med bilder)
Tesla -turbin från gamla hårddiskar och minimala verktyg: Bygg en Tesla -turbin från två gamla datorhårddiskar med hjälp av grundläggande handverktyg och en pelarborr. Ingen metall svarv eller andra dyra tillverkningsmaskiner krävs och du behöver bara några grundläggande hantverkskunskaper. Det är grovt, men det här kan skrämma