Sisällysluettelo:
- Vaihe 1: Esittely
- Vaihe 2: PWM -moottorin ohjaus
- Vaihe 3: Käytetyt resurssit
- Vaihe 4: ESP 32 Dev Kit - Pinout
- Vaihe 5: Turbiinin asennus
- Vaihe 6: Piiri - liitännät
- Vaihe 7: Mittaus oskilloskoopilla
- Vaihe 8: Lähdekoodi
- Vaihe 9: Lataa tiedostot
Video: Sähköturbiini ESP32: 9 askelta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:01
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
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
• Liitännät
• Heltec Wifi LoRa 32
• Yhteinen tasavirtamoottori
• Silta H - L298N
• USB kaapeli
• Protoboard
• Virtalähde
Vaihe 4: ESP 32 Dev Kit - Pinout
Vaihe 5: Turbiinin asennus
Vaihe 6: Piiri - liitännät
Vaihe 7: 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
INO
PIIRUSTUS
Suositeltava:
Kaapin kiinnitys ESP32 ja ESP8266: 7 askelta
Kaapin kiinnitys ESP32- ja ESP8266 -laitteille: Joskus voi olla hyödyllistä asentaa ESP32- tai ESP8266 -pohjainen projekti kaappiin ja antaa sille ammattimainen ilme. Tämä pieni kotelosarja auttaa sinua tuomaan ESP -pohjaisen projektisi DIN -kiskoon.Sarja sisältää prototyyppisen piirilevyn, jossa on
COVID-19 Realtime Tracker ESP32: 3 askelta
COVID-19 Realtime Tracker ESP32: Tämä pieni seuranta auttaa sinua olemaan ajan tasalla koronavirusepidemiasta ja maasi tilanteesta. Näyttö näyttää vuorotellen eri maiden valitsemia tietoja.Tiedot kerää verkkosivusto www.wo
Lora Gateway perustuu MicroPython ESP32: 10 askelta (kuvilla)
Lora Gateway perustuu MicroPython ESP32: Lora on ollut erittäin suosittu viime vuosina. Tätä tekniikkaa käyttävä langaton viestintämoduuli on yleensä halpa (käyttäen vapaata taajuutta), pieni, energiatehokas ja sillä on pitkä tiedonsiirtoetäisyys, ja sitä käytetään pääasiassa keskinäiseen viestintään
ST7920 128X64 LCD -näyttö ESP32: 3 askelta
ST7920 128X64 LCD -näyttö ESP32: lle: Tämä Instructables ei selvästikään voita palkintoja sen laadusta tai mistä tahansa! Ennen tämän projektin aloittamista katselin Internetiä ja en löytänyt mitään tämän LCD -näytön liittämisestä ESP32: een, joten ajattelin, että onnistumisen jälkeen pitäisi dokumentoida
Valitse SD -liitäntä ESP32: 12 askelta (kuvien kanssa)
Valitse SD -liitäntä ESP32: lle: Nämä ohjeet osoittavat jotain SD -käyttöliittymän valitsemisesta ESP32 -projektillesi