Índice:
- Etapa 1: Demonstração
- Etapa 2: Controle do motor PWM
- Etapa 3: Recursos usados
- Etapa 4: ESP 32 Dev Kit - Pinagem
- Etapa 5: montagem da turbina
- Etapa 6: Circuito - Conexões
- Etapa 7: Medição no osciloscópio
- Etapa 8: Código Fonte
- Etapa 9: Baixe os arquivos
Vídeo: Turbina elétrica com ESP32: 9 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:37
Hoje, vou discutir uma turbina elétrica com ESP32. A montagem possui uma peça que foi impressa em 3D. Apresentarei uma função PWM do ESP32 que é adequada para controlar motores elétricos. Isso será usado em um motor DC. Também demonstrarei a operação deste MCPWM (Motor Control PWM) em uma aplicação prática.
Usei ESP32 LoRa neste projeto, e acho importante notar aqui que este microcontrolador tem dois blocos dentro dele. Esses blocos são capazes de controlar três motores cada. Assim, é possível controlar até seis motores com PWM, todos de forma independente. Isso significa que o controle que vou usar aqui não é o padrão (que é algo semelhante ao Arduino). Em vez disso, o controle é o próprio chip, o que garante ao ESP32 muita flexibilidade em relação ao controle do motor.
Etapa 1: Demonstração
Etapa 2: Controle do motor PWM
Diagrama Geral:
• A função MCPWM do ESP32 pode ser usada para controlar vários tipos de motores elétricos. Possui duas unidades.
• Cada unidade possui três pares de saída PWM.
• Cada par A / B de saída pode ser sincronizado com um dos três temporizadores de sincronização 0, 1 ou 2.
• Um temporizador pode ser usado para sincronizar mais de um par de saída PWM
Diagrama Completo:
• Cada unidade também é capaz de coletar sinais de entrada como SINAIS DE SINCRONIZAÇÃO;
• Detectar SINAIS DE FALHA para sobrecorrente ou sobretensão do motor;
• Obtenha feedback com SINAIS DE CAPTURA, como a posição do motor
Etapa 3: Recursos usados
• Jumpers para conexão
• Heltec Wifi LoRa 32
• Motor DC comum
• Ponte H - L298N
• Cabo USB
• Protoboard
• Fonte de energia
Etapa 4: ESP 32 Dev Kit - Pinagem
Etapa 5: montagem da turbina
Etapa 6: Circuito - Conexões
Etapa 7: Medição no osciloscópio
Etapa 8: Código Fonte
Cabeçalho
#include // Não é necessário caso use Arduino IDE # include "driver / mcpwm.h" // inclui uma 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
Configurar
void setup () {Serial.begin (115200); display.init (); //display.flipScreenVertically (); // Vira a tela verticalmente display.clear (); // ajusta o alinhamento para a exibição esquerda.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) => Instância o MCPWM0A no pino GPIO_PWM0A_OUT declarado no começo do código mcpwm_gpio_init (MCPWM_UNIT_0, MCPWM0A, GPIO_PWM0A_OUT); // mcpwm_gpio_init (unidade PWM 0, saida B, porta GPIO) => Instância o MCPWM0B no pino GPIO_PWM0B_OUT declarado no começo do código mcpwm_gpio_init (MCPWM_UNIT_0, MCPWM0B, GPIO_PWM0B_OUT); mcpwm_config_t pwm_config; pwm_config.frequency = 1000; // frequência = 500Hz, pwm_config.cmpr_a = 0; // Ciclo de trabalho (ciclo de trabalho) do PWMxA = 0 pwm_config.cmpr_b = 0; // Ciclo de trabalho (ciclo de trabalho) do PWMxb = 0 pwm_config.counter_mode = MCPWM_UP_COUNTER; // Para MCPWM assimetrico pwm_config.duty_mode = MCPWM_DUTY_MODE_0; // Definir ciclo de trabalho em nível alto // Inicia (Unidade 0, Timer 0, Config PWM) mcpwm_init (MCPWM_UNIT_0, MCPWM_TIMER_0, & pwm_config); // Defina PWM0A & PWM0B com as configurações acima}
Funções
// 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_ciclo) {// mcpwm_set ou_signal_ do (0, 1 ou 2), Operador (A ou B)); => Desliga o sinal do MCPWM no Operador B (Definir o sinal em Baixo) mcpwm_set_signal_low (mcpwm_num, timer_num, MCPWM_OPR_B); // mcpwm_set_duty (unidade PWM (0 ou 1), Número do cronômetro (0, 1 ou 2), Operador (A ou B), Ciclo de trabalho (% do PWM)); => Configurar porcentagem do PWM no 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), Número do cronômetro (0, 1 ou 2), Operador (A ou B), Nível de ciclo de trabalho (alto ou baixo)); => definir 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 para chamar "mcpwm_set_signal_low" ou "mcpwm_set_signal_high" para manter o ciclo de trabalho instalado anteriormente} // Função que configura o MCPWM Do operador B (Unidade, Timer, Porcentagem (ciclo de trabalho) estático 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 no Operador A (Definir 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); // define o nível do ciclo de trabalho (alto ou baixo)} // Função que para o MCPWM de ambos os Operadores estático void brushed_motor_stop (mcpwm_unit_t mcpwm_num, mcpwm_timer_t timer_num) {mcpwm_set_signal_low (mcpwm_PR_num, 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}
Ciclo
void loop () {// Mover o motor no sentido horário brushed_motor_forward (MCPWM_UNIT_0, MCPWM_TIMER_0, 50.0); oled ("50"); atraso (2000); // Para o motor brushed_motor_stop (MCPWM_UNIT_0, MCPWM_TIMER_0); oled ("0"); atraso (2000); // Mova o motor no sentido antihorário brushed_motor_backward (MCPWM_UNIT_0, MCPWM_TIMER_0, 25.0); oled ("25"); atraso (2000); // Para o motor brushed_motor_stop (MCPWM_UNIT_0, MCPWM_TIMER_0); oled ("0"); atraso (2000); // Aceleração 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)); atraso (200); } // Desaceleração i de 100 a 1 delay (5000); para (int i = 100; i> = 10; i -) {brushed_motor_forward (MCPWM_UNIT_0, MCPWM_TIMER_0, i); oled (string (i)); atraso (100); } atraso (5000); }
Etapa 9: Baixe os arquivos
EU NÃO
DESENHANDO
Recomendado:
Turbina eólica: 7 etapas (com fotos)
Turbina Eólica: Olá a todos! Neste Instructable, irei orientá-lo na construção de um modelo de turbina eólica feito de peças recicladas ou de fácil acesso. Será capaz de produzir cerca de 1,5 volts e se ajustar automaticamente para estar sempre
Escritório alimentado por bateria. Sistema Solar Com Comutação Automática Painéis Solares Leste / Oeste e Turbina Eólica: 11 etapas (com fotos)
Escritório alimentado por bateria. Sistema solar com painéis solares leste / oeste de comutação automática e turbina eólica: O projeto: Um escritório de 200 pés quadrados precisa ser alimentado por bateria. O escritório também deve conter todos os controladores, baterias e componentes necessários para este sistema. As energias solar e eólica carregam as baterias. Há um pequeno problema de apenas
Projeto de remix de turbina Spin Art: 4 etapas
Projeto Spin Art Turbine Remix: Se você está interessado em spin art, há um problema e esse problema é que você deve segurar a furadeira com uma das mãos enquanto pinta com a outra. Isso pode ser irritante às vezes, mas acho que descobri a solução com esta turbina simples que você pode criar
Turbina eletrostática aprimorada feita de materiais recicláveis: 16 etapas (com fotos)
Turbina eletrostática aprimorada feita de materiais recicláveis: Esta é uma turbina eletrostática (EST) totalmente construída em arranhões que converte corrente contínua de alta tensão (HVDC) em movimento rotativo de alta velocidade. Meu projeto foi inspirado no Motor Jefimenko Corona, que é movido a eletricidade da atmosfera
Garrafa de água DIY Turbina eólica: 5 etapas (com fotos)
DIY Water Bottle Wind Turbine: Basic Description Para entender como uma turbina eólica funciona, é importante entender como a energia eólica funciona em um nível básico. O vento é uma forma de energia solar porque o sol é a fonte que cria o vento pelo calor desigual na atmosfera, ho