Sisällysluettelo:

Sähköturbiini ESP32: 9 askelta
Sähköturbiini ESP32: 9 askelta

Video: Sähköturbiini ESP32: 9 askelta

Video: Sähköturbiini ESP32: 9 askelta
Video: Hyvä liitettävyys 2024, Heinäkuu
Anonim
Image
Image
Esittely
Esittely

Tänään keskustelen sähköturbiinista ESP32: n kanssa. Kokoonpanossa on osa, joka on painettu 3D -muodossa. Esittelen ESP32: n PWM -toiminnon, joka soveltuu sähkömoottoreiden ohjaamiseen. Tätä käytetään tasavirtamoottorissa. Esittelen myös tämän MCPWM: n (Motor Control PWM) toiminnan käytännön sovelluksessa.

Käytin ESP32 LoRaa tässä projektissa, ja mielestäni on tärkeää huomata, että tässä mikrokontrollerissa on kaksi lohkoa. Nämä lohkot pystyvät ohjaamaan kolmea moottoria. Siten on mahdollista ohjata jopa kuutta moottoria PWM: llä, kaikki itsenäisesti. Tämä tarkoittaa, että tässä käyttämäni ohjaus ei ole standardi (mikä on jotain samanlaista kuin Arduino). Sen sijaan ohjaus on itse siru, joka takaa ESP32: lle paljon joustavuutta moottorin ohjauksessa.

Vaihe 1: Esittely

Vaihe 2: PWM -moottorin ohjaus

PWM -moottorin ohjaus
PWM -moottorin ohjaus
PWM -moottorin ohjaus
PWM -moottorin ohjaus

Yleiskaavio:

• ESP32: n MCPWM -toimintoa voidaan käyttää erityyppisten sähkömoottoreiden ohjaamiseen. Siinä on kaksi yksikköä.

• Jokaisessa yksikössä on kolme PWM -lähtöparia.

• Jokainen lähtö A / B -pari voidaan synkronoida jollakin kolmesta tahdistusajastimesta 0, 1 tai 2.

• Yhdellä ajastimella voidaan synkronoida useampi kuin yksi PWM -lähtöpari

Koko kaavio:

• Kukin yksikkö pystyy myös keräämään tulosignaaleja SYNCHRONIZATION SIGNS;

• Tunnista ylivirran tai moottorin ylijännitteen VIKAMERKIT;

• Pyydä palautetta CAPTURE SIGNALS -laitteella, kuten moottorin sijainti

Vaihe 3: Käytetyt resurssit

Käytetyt resurssit
Käytetyt resurssit

• Liitännät

• Heltec Wifi LoRa 32

• Yhteinen tasavirtamoottori

• Silta H - L298N

• USB kaapeli

• Protoboard

• Virtalähde

Vaihe 4: ESP 32 Dev Kit - Pinout

ESP 32 Dev Kit - Pinout
ESP 32 Dev Kit - Pinout

Vaihe 5: Turbiinin asennus

Turbiinin asennus
Turbiinin asennus
Turbiinin asennus
Turbiinin asennus

Vaihe 6: Piiri - liitännät

Piiri - Liitännät
Piiri - Liitännät

Vaihe 7: Mittaus oskilloskoopilla

Mittaus oskilloskoopilla
Mittaus oskilloskoopilla

Vaihe 8: Lähdekoodi

Otsikko

#include // Não é välttämätön caso -käyttö Arduino IDE #include "driver/mcpwm.h" // include 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 -näyttö (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

Perustaa

void setup () {Serial.begin (115200); display.init (); //display.flipScreenVertically (); // Vira a tela verticalmente display.clear (); // ajota tai alinhamento 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 tai MCPWM0A no pino GPIO_PWM0A_OUT julistus no começo do código mcpwm_gpio_init (MCPWM_UNIT_0, MCPIO_P0M, // mcpwm_gpio_init (unidade PWM 0, saida B, porta GPIO) => Instancia tai MCPWM0B no pino GPIO_PWM0B_OUT julistus no começo do código mcpwm_gpio_init (MCPWM_UNIT_0, MCPW_P0B, mcpwm_config_t pwm_config; pwm_config.frequency = 1000; // taajuudet = 500 Hz, pwm_config.cmpr_a = 0; // Ciclo de trabalho (käyttöjakso) do PWMxA = 0 pwm_config.cmpr_b = 0; // Ciclo de trabalho (käyttöjakso) do PWMxb = 0 pwm_config.counter_mode = MCPWM_UP_COUNTER; // Para MCPWM assimetrico pwm_config.duty_mode = MCPWM_DUTY_MODE_0; // Määrittele ciclo de trabalho em nível alto // Inicia (Unidade 0, Ajastin 0, Config PWM) mcpwm_init (MCPWM_UNIT_0, MCPWM_TIMER_0 ja pwm_config); // Määritä PWM0A & PWM0B com asetuksina acima}

Toiminnot

// Função que configura o MCPWM operador A (Unidade, Timer, Porcentagem (ciclo de trabalho)) staattinen void brushed_motor_forward (mcpwm_unit_t mcpwm_num, mcpwm_timer_t timer_num, float duty_cim_tunnus_tunnus) (0, 1 ou 2), Operador (A ou B)); => Desliga tai 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), Número do timer (0, 1 ou 2), Operador (A ou B), Ciclo de trabalho (% do PWM)); => Määritä osittain 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 timer (0, 1 ou 2), Operador (A ou B), Nível do ciclo de trabalho (alto ou baixo)); => define 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); // Huomautus: 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 (Unidtage, staattinen 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 tai sinal do MCPWM no Operador A (Define o sinal em Baixo) mcpwm_set_duty (mcpwm_num, timer_num, MCPWM_OPR_B, duty_cycle); // Määritä osittain 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 staattinen void brushed_motor_stop (mcpwm_unit_t mcpwm_num, mcpwm_timer_t timer_num) tmmw_mmw // Desliga tai 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}

Silmukka

void loop () {// Siirrä moottoria ei sentido horário brushed_motor_forward (MCPWM_UNIT_0, MCPWM_TIMER_0, 50.0); oled ("50"); viive (2000); // Moottorin harjattu moottorin pysäytys (MCPWM_UNIT_0, MCPWM_TIMER_0); oled ("0"); viive (2000); // Siirrä moottoria ei sentido antihorário harjattu_moottorin_taaksepäin (MCPWM_UNIT_0, MCPWM_TIMER_0, 25.0); oled ("25"); viive (2000); // Moottorin harjattu moottorin pysäytys (MCPWM_UNIT_0, MCPWM_TIMER_0); oled ("0"); viive (2000); // Aceleracao i de 1 a 100 for (int i = 10; i <= 100; i ++) {brushed_motor_forward (MCPWM_UNIT_0, MCPWM_TIMER_0, i); oled (Jono (i)); viive (200); } // Desaceleração i de 100 a 1 delay (5000); for (int i = 100; i> = 10; i-) {harjattu_moottorin_lähetys (MCPWM_UNIT_0, MCPWM_TIMER_0, i); oled (Jono (i)); viive (100); } viive (5000); }

Vaihe 9: Lataa tiedostot

PDF

INO

PIIRUSTUS

Suositeltava: