Sadržaj:
- Korak 1: Demonstracija
- Korak 2: Kontrola PWM motora
- Korak 3: Korišteni resursi
- Korak 4: ESP 32 Dev Kit - Pinout
- Korak 5: Montaža turbine
- Korak 6: Krug - veze
- Korak 7: Mjerenje na osciloskopu
- Korak 8: Izvorni kod
- Korak 9: Preuzmite datoteke
Video: Električna turbina sa ESP32: 9 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:06
Danas ću razgovarati o električnoj turbini s ESP32. Sklop ima dio koji je štampan u 3D. Predstavit ću PWM funkciju ESP32 koja je pogodna za upravljanje elektromotorima. Ovo će se koristiti u istosmjernom motoru. Također ću pokazati rad ovog MCPWM -a (Motor Control PWM) u praktičnoj primjeni.
Koristio sam ESP32 LoRa u ovom projektu, i mislim da je važno napomenuti da ovaj mikrokontroler ima dva bloka unutar sebe. Ovi blokovi mogu upravljati po tri motora. Tako je moguće upravljati do šest motora s PWM -om, svi nezavisno. To znači da kontrola koju ću ovdje koristiti nije standardna (što je nešto slično Arduinu). Umjesto toga, kontrola je sam čip, koji garantira ESP32 -u veliku fleksibilnost u odnosu na kontrolu motora.
Korak 1: Demonstracija
Korak 2: Kontrola PWM motora
Opšti dijagram:
• Funkcija MCPWM ESP32 može se koristiti za upravljanje različitim vrstama elektromotora. Ima dvije jedinice.
• Svaka jedinica ima tri PWM izlazna para.
• Svaki izlazni A / B par se može sinhronizovati sa jednim od tri tajmera za sinhronizaciju 0, 1 ili 2.
• Jedan tajmer se može koristiti za sinhronizaciju više od jednog PWM izlaznog para
Cijeli dijagram:
• Svaka jedinica je također sposobna prikupljati ulazne signale kao SINKRONIZACIJSKI ZNAKOVI;
• Otkrijte ZNAKE KVARA za prekostruju ili prenapon motora;
• Dobijte povratne informacije pomoću SIGNALA ZA HVATANJE, kao što je položaj motora
Korak 3: Korišteni resursi
• Džemperi za povezivanje
• Heltec Wi -Fi LoRa 32
• Uobičajeni motor istosmjerne struje
• Most H - L298N
• USB kabl
• Protoboard
• Napajanje strujom
Korak 4: ESP 32 Dev Kit - Pinout
Korak 5: Montaža turbine
Korak 6: Krug - veze
Korak 7: Mjerenje na osciloskopu
Korak 8: Izvorni kod
Zaglavlje
#include // Nije vam potrebno da koristite Arduino IDE #uključuje "driver/mcpwm.h" // uključuje biblioteku "Motor Control PWM" nativa do ESP32 #include // Potrebni apeni za Arduino 1.6.5 i 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 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
Postaviti
void setup () {Serial.begin (115200); display.init (); //display.flipScreenVertical (); // Vira a tela verticalmente display.clear (); // ajusta o alinhamento para esquerda display.setTextAlignment (TEXT_ALIGN_LEFT); // ajusta a fonte para Arial 16 display.setFont (ArialMT_Plain_16); // mcpwm_gpio_init (unidade PWM 0, reče A, porta GPIO) => Instancija o MCPWM0A bez pinoa GPIO_PWM0A_OUT deklarirano nema dolaska u kôd mcpwm_gpio_init (MCPWM_UNIT_0, MCPWM0A; GPCPM0), MCPWM0A; // mcpwm_gpio_init (unidade PWM 0, reče B, porta GPIO) => Instancija o MCPWM0B bez pinoa GPIO_PWM0B_OUT deklarirano nema dolaska do codiga mcpwm_gpio_init (MCPWM_UNIT_0, MCPWM0BP_M0_MPWM0B0_MPWM0B0_MPWM0B0_MPWM0_MPWM0_0, MCPWM0_0; mcpwm_config_t pwm_config; pwm_config.frequency = 1000; // frekvencija = 500Hz, pwm_config.cmpr_a = 0; // Ciclo de trabalho (radni ciklus) do PWMxA = 0 pwm_config.cmpr_b = 0; // Ciclo de trabalho (radni ciklus) do PWMxb = 0 pwm_config.counter_mode = MCPWM_UP_COUNTER; // Za MCPWM assimetrico pwm_config.duty_mode = MCPWM_DUTY_MODE_0; // Definiraj ciclo de trabalho em nível alto // Inicia (Unidade 0, Timer 0, Config PWM) mcpwm_init (MCPWM_UNIT_0, MCPWM_TIMER_0, & pwm_config); // Definirajte PWM0A & PWM0B com kao konfiguraciju acima}
Funkcije
// Funkcionalna konfiguracija MCPWM operatora A (Unidade, Timer, Porcentagem (ciclo de trabalho)) statička praznina brushed_motor_forward (mcpwm_unit_t mcpwm_num, mcpwm_timer_t timer_num, float duty_cycle) {// mc nodem (0, 1 ili 2), Operador (A ili B)); => Desliga o sinalu za MCPWM bez Operadora B (Definiši sinal em Baixo) mcpwm_set_signal_low (mcpwm_num, timer_num, MCPWM_OPR_B); // mcpwm_set_duty (jedinstvena PWM (0 ili 1), Numerički tajmer (0, 1 ili 2), Operador (A ili B), Ciclo de trabalho (% do PWM)); => Konfigurirajte porcentam za PWM bez Operadora A (Ciclo de trabalho) mcpwm_set_duty (mcpwm_num, timer_num, MCPWM_OPR_A, duty_cycle); // mcpwm_set_duty_tyoe (jedinstvena PWM (0 ili 1), Numerički tajmer (0, 1 ili 2), Operador (A ili B), Nivo do ciklo de trabaljo (alto ou baixo)); => definirati nivo do ciclo de trabalho (alto ou baixo) mcpwm_set_duty_type (mcpwm_num, timer_num, MCPWM_OPR_A, MCPWM_DUTY_MODE_0); // Napomena: Chame essa função toda vez que for chamado "mcpwm_set_signal_low" ou "mcpwm_set_signal_high" parametar o ciklo de trabalho konfiguraciji anteriormente} // Função que konfiguracija o MCPWM Uradi operater B (Unidade,, statička 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 sinalu za MCPWM bez Operadora A (Definiši sinal em Baixo) mcpwm_set_duty (mcpwm_num, timer_num, MCPWM_OPR_B, duty_cycle); // Konfiguriranje porcentaža za PWM bez Operadora B (Ciclo de trabalho) mcpwm_set_duty_type (mcpwm_num, timer_num, MCPWM_OPR_B, MCPWM_DUTY_MODE_0); // definirati nivo do ciclo de trabalho (alto ou baixo)} // Função que para MCPWM de ambos os Operadores static void brushed_motor_stop (mcpwm_unit_t mcpwm_num, mcpwm_timer_t timer_num) // Desliga o sinalu za MCPWM bez Operadora A mcpwm_set_signal_low (mcpwm_num, timer_num, MCPWM_OPR_B); // Desliga o sinal do MCPWM bez Operadora B}
Petlja
void loop () {// Premjesti motor bez senzora horário brushed_motor_forward (MCPWM_UNIT_0, MCPWM_TIMER_0, 50.0); oled ("50"); kašnjenje (2000); // Parametar motora brushed_motor_stop (MCPWM_UNIT_0, MCPWM_TIMER_0); oled ("0"); kašnjenje (2000); // Pomaknite motor bez senzora antihorário brushed_motor_backward (MCPWM_UNIT_0, MCPWM_TIMER_0, 25.0); oled ("25"); kašnjenje (2000); // Parametar motora brushed_motor_stop (MCPWM_UNIT_0, MCPWM_TIMER_0); oled ("0"); kašnjenje (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)); kašnjenje (200); } // Desaceleração i de 100 a 1 kašnjenje (5000); za (int i = 100; i> = 10; i-) {brushed_motor_forward (MCPWM_UNIT_0, MCPWM_TIMER_0, i); oled (niz (i)); kašnjenje (100); } kašnjenje (5000); }
Korak 9: Preuzmite datoteke
JA NE
CRTANJE
Preporučuje se:
Električna LED značka: 4 koraka
Električna LED značka: Noć vještica se bliži. Razmišljate li o ukrašavanju i odijevanju? Bit će sjajno ako imate ekskluzivnu električnu LED značku. Pa hajmo danas razgovarati o tome kako napraviti takvu električnu značku
Električna naljepnica: Ideas Para Hackear La Ciudad: 5 koraka
Električna naljepnica: Ideas Para Hackear La Ciudad: Podemos utilizar los postes de la ciudad for hacer diversas cosas, haremos and sticker for hacer and controllador and jugar pac-man.Materiales Vinil Tinta conductiva Kit Makey Makey (Contiene Alligator Clips and USB cable. Herramientas Plotter de
Električna gitara za cigare: 18 koraka (sa slikama)
Električna gitarska kutija za cigare: Iako je proizvodnja gitara u posljednjih stotinu godina napredovala, postoji duga istorija koja pokazuje da vam za izradu gitare ne treba mnogo. Sve što vam je potrebno je kutija za odjek zvuka, daska koja će djelovati kao gredica, nekoliko vijaka
Električna svijeća sa svijećom: 8 koraka (sa slikama)
Električna svijeća sa pogonom na svijeće: Nakon što sam vidjela vijesti o uraganu Sandy i čula muke kroz koje su prošli cijela moja porodica i prijatelji u New Yorku i New Jerseyju, pomislila sam na svoju pripravnost za hitne slučajeve. San Francisco - na kraju krajeva - sjedi na vrhu vrlo
Električna brava za vrata sa skenerom otiska prsta i RFID čitačem: 11 koraka (sa slikama)
Električna brava za vrata sa skenerom otiska prsta i RFID čitačem: Projekt je dizajniran kako bi se izbjegla potreba korištenja ključeva, a za postizanje našeg cilja koristili smo optički senzor otiska prsta i Arduino. Međutim, postoje pojedinci koji imaju nečitljiv otisak prsta i senzor ga neće prepoznati. Zatim razmišljanje o