Sisukord:

Elektriturbiin ESP32: 9 sammuga
Elektriturbiin ESP32: 9 sammuga
Anonim
Image
Image
Demonstratsioon
Demonstratsioon

Täna arutan ESP32 -ga elektriturbiini. Komplektis on osa, mis trükiti 3D -vormingus. Esitan ESP32 PWM funktsiooni, mis sobib elektrimootorite juhtimiseks. Seda kasutatakse alalisvoolumootoris. Samuti demonstreerin selle MCPWM (Motor Control PWM) toimimist praktilises rakenduses.

Ma kasutasin selles projektis ESP32 LoRa ja arvan, et siin on oluline märkida, et selle mikrokontrolleri sees on kaks plokki. Need plokid on võimelised juhtima kolme mootorit. Seega on PWM -iga võimalik juhtida kuni kuut mootorit, kõik iseseisvalt. See tähendab, et siin kasutatav juhtimisseade ei ole standard (mis on midagi sarnast Arduinoga). Selle asemel on juhtimine kiip ise, mis tagab ESP32 -le mootori juhtimise osas palju paindlikkust.

1. samm: demonstratsioon

2. samm: PWM -mootori juhtimine

PWM -mootori juhtimine
PWM -mootori juhtimine
PWM -mootori juhtimine
PWM -mootori juhtimine

Üldine skeem:

• ESP32 funktsiooni MCPWM saab kasutada erinevat tüüpi elektrimootorite juhtimiseks. Sellel on kaks ühikut.

• Igal seadmel on kolm PWM väljundpaari.

• Iga väljundi A / B paari saab sünkroonida ühega kolmest sünkroonimistaimerist 0, 1 või 2.

• Ühe taimeriga saab sünkroonida rohkem kui ühte PWM -väljundpaari

Täis skeem:

• Iga seade on võimeline koguma ka sisendsignaale sünkroniseerimismärkidena;

• Tuvastage üle- või mootori ülepinge vearikke;

• Saate CAPTURE SIGNALS -iga tagasisidet, näiteks mootori asukohta

3. samm: kasutatud ressursid

Kasutatud ressursid
Kasutatud ressursid

• Džemprid ühendamiseks

• Heltec Wifi LoRa 32

• Tavaline alalisvoolumootor

• Sild H - L298N

• USB -kaabel

• Protoboard

• Toiteallikas

Samm 4: ESP 32 Dev Kit - Pinout

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

5. samm: turbiini paigaldamine

Turbiini paigaldus
Turbiini paigaldus
Turbiini paigaldus
Turbiini paigaldus

6. samm: ahel - ühendused

Ahel - ühendused
Ahel - ühendused

7. samm: mõõtmine ostsilloskoobi abil

Mõõtmine ostsilloskoobi abil
Mõõtmine ostsilloskoobi abil

8. samm: lähtekood

Päis

#include // Kasutades Arduino IDE -d kasuks, kasutage "driver/mcpwm.h" // lisage biblioteek "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 ekraan (0x3c (SDA, SCL, RST); // Instalciando ja ajustando os pinos do obetoeto "display" #define GPIO_PWM0A_OUT 12 // Declara GPIO 12 como PWM0A #define GPIO_PWM0B_OUT 14 // Declara GPIO 14 como PWM0B

Seadistamine

void setup () {Serial.begin (115200); display.init (); //display.flipScreenVertically (); // Vira a tela verticalmente display.clear (); // ajusta või 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 või MCPWM0A no pino GPIO_PWM0A_OUT deklaratsioon 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 või MCPWM0B no pino GPIO_PWM0B_OUT deklaratsioon no começo do código mcpwm_gpio_init (MCPWM_UNIT_0, MCPIO_M0B, mcpwm_config_t pwm_config; pwm_config.frequency = 1000; // sagedus = 500 Hz, pwm_config.cmpr_a = 0; // Ciclo de trabalho (töötsükkel) do PWMxA = 0 pwm_config.cmpr_b = 0; // Ciclo de trabalho (töötsükkel) do PWMxb = 0 pwm_config.counter_mode = MCPWM_UP_COUNTER; // Para MCPWM assimetrico pwm_config.duty_mode = MCPWM_DUTY_MODE_0; // Määrake tsükli de trabalho em nível alto // Inicia (Unidade 0, Taimer 0, PWM -i seadistamine) mcpwm_init (MCPWM_UNIT_0, MCPWM_TIMER_0 ja pwm_config); // Määra PWM0A ja PWM0B com konfiguratsiooniks acima}

Funktsioonid

// Função que configura o MCPWM operador A (Unidade, Timer, Porcentagem (ciclo de trabalho)) staatiline void brushed_motor_forward (mcpwm_unit_t mcpwm_num, mcpwm_timer_t timer_num, float duty_cim_cm) (0, 1 ou 2), operaator (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), Número do timer (0, 1 ou 2), Operador (A ou B), Ciclo de trabalho (% kuni PWM)); => Konfigureerige osa PWM -i operaatorist 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)); => määratlege o nível do ciclo de trabalho (alt või baixo) mcpwm_set_duty_type (mcpwm_num, timer_num, MCPWM_OPR_A, MCPWM_DUTY_MODE_0); // Märkus: Chame essa função toda vez que for chamado "mcpwm_set_signal_low" ou "mcpwm_set_signal_high" para manter or ciclo de trabalho configurado anteriormente} // Função que configura o MCPWM Do operador B (Unidtage, staatiline void harjatud_mootori_tagasi (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); // PWM -i konfigureerimine ei ole operaator 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 staatiline void brushed_motor_stop (mcpwm_unit_t mcpwm_num, mcpwm_timer_t timer_num) mmw_mw // Desliga või 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}

Loop

void loop () {// Mootori liigutamine no sentido horário brushed_motor_forward (MCPWM_UNIT_0, MCPWM_TIMER_0, 50.0); oled ("50"); viivitus (2000); // Para või mootoriga harjatud_mootori seiskamine (MCPWM_UNIT_0, MCPWM_TIMER_0); oled ("0"); viivitus (2000); // Mootori liigutamine no sentido antihorário brushed_motor_backward (MCPWM_UNIT_0, MCPWM_TIMER_0, 25.0); oled ("25"); viivitus (2000); // Para või mootoriga harjatud_mootori seiskamine (MCPWM_UNIT_0, MCPWM_TIMER_0); oled ("0"); viivitus (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 (String (i)); viivitus (200); } // Desaceleração i de 100 a 1 delay (5000); jaoks (int i = 100; i> = 10; i-) {harjatud_mootori_forward (MCPWM_UNIT_0, MCPWM_TIMER_0, i); oled (String (i)); viivitus (100); } viivitus (5000); }

Samm: laadige failid alla

PDF

INO

JOONISTAMINE

Soovitan: