Kazalo:
- 1. korak: demonstracija
- 2. korak: krmiljenje motorja s PWM
- 3. korak: Uporabljeni viri
- 4. korak: ESP 32 Dev Kit - Pinout
- 5. korak: Montaža turbine
- 6. korak: Vezje - Povezave
- 7. korak: Merjenje na osciloskopu
- 8. korak: izvorna koda
- 9. korak: Prenesite datoteke
Video: Električna turbina z ESP32: 9 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:04
Danes bom razpravljal o električni turbini z ESP32. Sestava ima del, ki je bil natisnjen v 3D. Predstavil bom funkcijo PWM ESP32, ki je primerna za krmiljenje elektromotorjev. To se bo uporabljalo pri enosmernem motorju. Delovanje tega MCPWM (Motor Control PWM) bom tudi prikazal v praktični uporabi.
V tem projektu sem uporabil ESP32 LoRa in mislim, da je tukaj pomembno omeniti, da ima ta mikrokrmilnik dva bloka. Ti bloki lahko upravljajo po tri motorje. Tako je mogoče krmiliti do šest motorjev s PWM, vse samostojno. To pomeni, da nadzor, ki ga bom uporabil tukaj, ni standard (kar je nekaj podobnega Arduinu). Namesto tega je krmiljenje sam čip, ki ESP32 zagotavlja veliko prilagodljivosti glede krmiljenja motorja.
1. korak: demonstracija
2. korak: krmiljenje motorja s PWM
Splošni diagram:
• Funkcijo MCPWM ESP32 lahko uporabite za krmiljenje različnih vrst elektromotorjev. Ima dve enoti.
• Vsaka enota ima tri izhodne pare PWM.
• Vsak izhodni A / B par je mogoče sinhronizirati z enim od treh časovnikov sinhronizacije 0, 1 ali 2.
• En časovnik lahko uporabite za sinhronizacijo več kot enega izhodnega para PWM
Celoten diagram:
• Vsaka enota lahko zbira tudi vhodne signale kot SINKRONIZACIJSKI ZNAKI;
• Zaznajte znake napak za prenapetost ali prenapetost motorja;
• Pridobite povratne informacije s signali za zajem, na primer o položaju motorja
3. korak: Uporabljeni viri
• Mostički za povezavo
• Heltec Wi -Fi LoRa 32
• Skupni enosmerni motor
• Most H - L298N
• USB kabel
• Protoboard
• Napajanje
4. korak: ESP 32 Dev Kit - Pinout
5. korak: Montaža turbine
6. korak: Vezje - Povezave
7. korak: Merjenje na osciloskopu
8. korak: izvorna koda
Glava
#include // Ni potrebe po uporabi Arduino IDE #vključujejo "driver/mcpwm.h" // vključuje biblioteco "Motor Control PWM" nativa do ESP32 #include // Potrebni apeni za Arduino 1.6.5 e posteriorno #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 Zaslon SSD1306 (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
Nastaviti
void setup () {Serial.begin (115200); display.init (); //display.flipScreenVertical (); // Vira a tela verticalmente display.clear (); // ajusta o alinhamento za 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 brez pino GPIO_PWM0A_OUT deklarirano no começo do código mcpwm_gpio_init (MCPWM_UNIT_0, MCPWM0A; MCPWM0A; // mcpwm_gpio_init (unidade PWM 0, saida B, porta GPIO) => Instancia o MCPWM0B brez pino GPIO_PWM0B_OUT deklarado no começo do código mcpwm_gpio_init (MCPWM_UNIT_0, MCPWM0B0_MPWO00; mcpwm_config_t pwm_config; pwm_config.frequency = 1000; // frekvenca = 500Hz, pwm_config.cmpr_a = 0; // Ciclo de trabalho (obratovalni cikel) do PWMxA = 0 pwm_config.cmpr_b = 0; // Ciclo de trabalho (obratovalni cikel) do PWMxb = 0 pwm_config.counter_mode = MCPWM_UP_COUNTER; // Parameter MCPWM assimetrico pwm_config.duty_mode = MCPWM_DUTY_MODE_0; // Določimo ciclo de trabalho em nível alto // Inicia (Unidade 0, Timer 0, Config PWM) mcpwm_init (MCPWM_UNIT_0, MCPWM_TIMER_0, & pwm_config); // Določimo PWM0A in PWM0B com kot konfiguracijo acima}
Funkcije
// Funkão que konfiguracije o operaterju MCPWM 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) {// mc (0, 1 ali 2), Operador (A ali B)); => Desliga o sinal do MCPWM brez Operador B (Definiraj 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)); => Konfigurirajte porcentagem za PWM brez 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)); => opredeliti nikjer do cikla de trabalho (alto ou baixo) mcpwm_set_duty_type (mcpwm_num, timer_num, MCPWM_OPR_A, MCPWM_DUTY_MODE_0); // Opomba: 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, statična praznina 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 brez Operador A (Definiraj sinal em Baixo) mcpwm_set_duty (mcpwm_num, timer_num, MCPWM_OPR_B, duty_cycle); // Konfiguriramo porcentage do PWM brez Operadorja B (Ciclo de trabalho) mcpwm_set_duty_type (mcpwm_num, timer_num, MCPWM_OPR_B, MCPWM_DUTY_MODE_0); // Določite stopnjo cikla de trabalho (alto ou baixo)} // Função que para ali MCPWM de ambos os Operadores static void brushed_motor_stop (mcpwm_unit_t mcpwm_num, mcpwm_timer_t timer_num) {mcpwm_m timer_num // Desliga o sinal do MCPWM brez Operador A mcpwm_set_signal_low (mcpwm_num, timer_num, MCPWM_OPR_B); // Desliga o sinal do MCPWM brez Operadorja B}
Zanka
void loop () {// Premakni motor brez občutka horário brushed_motor_forward (MCPWM_UNIT_0, MCPWM_TIMER_0, 50,0); oled ("50"); zamuda (2000); // Parameter motorja brushed_motor_stop (MCPWM_UNIT_0, MCPWM_TIMER_0); oled ("0"); zamuda (2000); // Premakni motor brez senzorja antihorário brushed_motor_backward (MCPWM_UNIT_0, MCPWM_TIMER_0, 25.0); oled ("25"); zamuda (2000); // Parameter motorja brushed_motor_stop (MCPWM_UNIT_0, MCPWM_TIMER_0); oled ("0"); zamuda (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 (niz (i)); zamuda (200); } // Desaceleração i de 100 a 1 zamuda (5000); for (int i = 100; i> = 10; i-) {brushed_motor_forward (MCPWM_UNIT_0, MCPWM_TIMER_0, i); oled (niz (i)); zamuda (100); } zakasnitev (5000); }
9. korak: Prenesite datoteke
JAZ NE
RISBA
Priporočena:
Električna kitara za cigare: 18 korakov (s slikami)
Električna kitara za cigare: Čeprav je proizvodnja kitare v zadnjih sto letih napredovala, obstaja dolga zgodovina, ki dokazuje, da za izdelavo kitare ne potrebujete veliko. Vse, kar potrebujete, je škatla za odmevanje zvoka, deska, ki bi delovala kot gred, nekaj vijakov
Električna sveča s svečami: 8 korakov (s slikami)
Električna sveča, ki jo poganjajo sveče: Ko sem videla poročila o orkanu Sandy in slišala preizkušnjo, ki so jo preživele vsa moja družina in prijatelji v New Yorku in New Jerseyju, sem pomislila na svojo pripravljenost na izredne razmere. Konec koncev San Francisco sedi na vrhu nekaterih zelo
Električna ključavnica za vrata s skenerjem prstnih odtisov in bralnikom RFID: 11 korakov (s slikami)
Električna ključavnica za vrata s čitalnikom prstnih odtisov in bralnikom RFID: Projekt je bil zasnovan tako, da se izogne nujnosti uporabe ključev, za dosego cilja pa smo uporabili optični senzor prstnih odtisov in Arduino. Vendar pa obstajajo posamezniki, ki imajo nečitljiv prstni odtis in ga senzor ne prepozna. Potem pomislite na
Električna longboard: 6 korakov
Electric Longboard: V tem navodilu bomo izdelali električno longboard z Arduino Uno in Raspberry Pi
Električna Longboard: 7 korakov
Electric Longboard: Ta projekt je bil zgrajen, ker nisem bil prepričan, kako enostavno ali hitro bi bilo krmariti po novem in veliko večjem kampusu. Sestavljen je iz: dolge deske Santa Cruz, 2 motorjev vozlišča, esc sistema tujcev itd. In baterije, sestavljene iz 18650 celic iz