Sisukord:
- 1. samm: demonstratsioon
- 2. samm: PWM -mootori juhtimine
- 3. samm: kasutatud ressursid
- Samm 4: ESP 32 Dev Kit - Pinout
- 5. samm: turbiini paigaldamine
- 6. samm: ahel - ühendused
- 7. samm: mõõtmine ostsilloskoobi abil
- 8. samm: lähtekood
- Samm: laadige failid alla
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:48
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
Ü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
• Džemprid ühendamiseks
• Heltec Wifi LoRa 32
• Tavaline alalisvoolumootor
• Sild H - L298N
• USB -kaabel
• Protoboard
• Toiteallikas
Samm 4: ESP 32 Dev Kit - Pinout
5. samm: turbiini paigaldamine
6. samm: ahel - ühendused
7. samm: 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
INO
JOONISTAMINE
Soovitan:
Automaatne geel -alkoholi dosaator Esp32: 9 sammuga
Automaatne geel-alkoholi dosaator koos Esp32-ga: Õpetuses näeme, kuidas teha täielik prototüüp, esp32-ga automaatse geel-alkoholi jaoturi kokkupanek, see sisaldab samm-sammult kokkupanekut, elektroonilist vooluahelat ja ka lähtekoodi, mida selgitatakse samm-sammult samm
Mängu kujundus Flickis 5 sammuga: 5 sammu
Mängu kujundamine Flickis 5 sammuga: Flick on tõesti lihtne viis mängu loomiseks, eriti pusle, visuaalse romaani või seiklusmängu sarnaseks
Vaarika PI 3 - lubage jadaühendus TtyAMA0 kuni BCM GPIO 14 ja GPIO 15: 9 sammuga
Raspberry PI 3 - lubage jadaühendus TtyAMA0 -ga BCM GPIO 14 ja GPIO 15 -le: hiljuti olin huvitatud UART0 lubamisest oma Raspberry Pi -s (3b), et saaksin selle ühendada otse RS -232 signaalitaseme seadmega, kasutades standardset 9 -kinnitage d-sub-pistik ilma USB-RS-232-adapterita. Osa minu huvist
Klubi valgustussüsteem koos MadMapperi ja Teensy 3.2: 14 sammuga
Klubivalgustussüsteem koos MadMapper & Teensy 3.2 -ga: 2018. aastal tegin selle väikese eelarvega klubivalgustussüsteemi esimese versiooni aastavahetuse peol Ramallah's Palestiinas koos oma kollektiiviga UNION, lähemalt loo ja kollektiivi kohta selle lõpus artikkel. Süsteem põhines WS2812
PANTILT -kaamera ESP32: 9 sammuga
PANTILT -kaamera ESP32 -ga: Täna esitlen ma PAN TILT -i, mis on seade, mis võimaldab kaamera liikumist üles, alla ja külgedele. Ma ise valmistasin selle seadme 3D -trükitud osade kaudu, kasutades kahte servot ja ESP32, mis muudab selle