Мазмуну:

Электр турбинасы ESP32 менен: 9 кадам
Электр турбинасы ESP32 менен: 9 кадам

Video: Электр турбинасы ESP32 менен: 9 кадам

Video: Электр турбинасы ESP32 менен: 9 кадам
Video: Использование кнопки скорости шагового двигателя 28BYJ-48 с 8 проектами: Ultimate Video Tutorial, урок 107 2024, Июль
Anonim
Image
Image
Демонстрация
Демонстрация

Бүгүн мен ESP32 менен электр турбинасын талкуулайм. Жыйындын 3D форматында басылган бөлүгү бар. Мен электр кыймылдаткычтарын башкарууга ылайыктуу ESP32нин PWM функциясын сунуштайм. Бул DC моторунда колдонулат. Мен ошондой эле бул MCPWM (Motor Control PWM) ишин практикалык колдонмодо көрсөтөм.

Мен бул долбоордо ESP32 LoRa колдондум жана бул микроконтроллердин ичинде эки блок бар экенин белгилей кетүү маанилүү деп ойлойм. Бул блоктор ар бири үч моторду башкарууга жөндөмдүү. Ошентип, PWM менен алтыга чейин кыймылдаткычты башкарууга болот, бардыгы өз алдынча. Бул мен колдоно турган көзөмөл стандарт эмес экенин билдирет (бул Arduinoго окшош). Тескерисинче, көзөмөл микросхеманын өзү, бул ESP32ге моторду башкарууга карата ийкемдүүлүктү кепилдейт.

1 -кадам: Демонстрация

2 -кадам: PWM Motor Control

PWM Motor Control
PWM Motor Control
PWM Motor Control
PWM Motor Control

Жалпы диаграмма:

• ESP32нин MCPWM функциясы электр кыймылдаткычтарынын ар кандай түрлөрүн башкаруу үчүн колдонулушу мүмкүн. Анын эки бирдиги бар.

• Ар бир блокто үч PWM чыгаруу жуптары бар.

• Ар бир A / B жуп 0, 1 же 2 үч синхрондоштуруу таймеринин бири менен синхрондоштурулушу мүмкүн.

• Бир Таймерди бир нече PWM чыгаруу түгөйүн синхрондоштуруу үчүн колдонсо болот

Толук диаграмма:

• Ар бир бирдик синхрондоштуруу белгилери катары киргизүү сигналдарын чогултууга да жөндөмдүү;

• АШЫК БЕЛГИЛЕРДИ ашыкча токтун же мотордун ашыкча чыңалуусун аныктоо;

• CAPTURE SIGNALS менен пикир алуу, мисалы, кыймылдаткычтын абалы

3 -кадам: Колдонулган ресурстар

Колдонулган ресурстар
Колдонулган ресурстар

• Байланыш үчүн секиргичтер

• Heltec Wifi LoRa 32

• Жалпы DC мотору

• Көпүрө H - L298N

• USB кабели

• Protoboard

• Электр камсыздоо

4 -кадам: ESP 32 Dev Kit - Pinout

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

5 -кадам: Турбинаны орнотуу

Турбина орнотуу
Турбина орнотуу
Турбина орнотуу
Турбина орнотуу

6 -кадам: Circuit - Connections

Circuit - Connections
Circuit - Connections

7 -кадам: Осциллографта өлчөө

Осциллографта өлчөө
Осциллографта өлчөө

8 -кадам: Булак коду

Header

#include // Não é милдário caso use Arduino IDE #include "driver/mcpwm.h" // "Motor Control PWM" библиотекасынын ичинде ESP32 #кошуу // 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 дисплей (0x3c, SDA, SCL, RST); // Instanciando e ajustando os pinos do objeto "display" #deine GPIO_PWM0A_OUT 12 // Declara GPIO 12 como PWM0A #define GPIO_PWM0B_OUT 14 // Declara GPIO 14 como PWM0B

Жайгашуу

void setup () {Serial.begin (115200); display.init (); //display.flipScreenVertically (); // Виртуалдык экранды көрсөтүү.clear (); // эксклюзивдүү дисплей.setTextAlignment (TEXT_ALIGN_LEFT); // Arial 16 үчүн display font.setFont (ArialMT_Plain_16); // mcpwm_gpio_init (unidade PWM 0, saida A, porta GPIO) => InstCPia or MCPWM0A pino GPIO_PWM0A_OUT декларациясы жок ccdigo mcpwm_gpio_init (MCPWM_UNIT_0, GPO_MWA0), // mcpwm_gpio_init (unidade PWM 0, saida B, porta GPIO) => InstCPia or MCPWM0B no GPino_PWM0B_OUT декларациясы mcpwm_gpio_init (MCPWM_UNIT_0, MCP_PW_0B) mcpwm_config_t pwm_config; pwm_config.frequency = 1000; // жыштык = 500Гц, pwm_config.cmpr_a = 0; // Ciclo de trabalho (милдет цикли) PWMxA = 0 pwm_config.cmpr_b = 0; // Ciclo de trabalho (милдет цикли) PWMxb = 0 pwm_config.counter_mode = MCPWM_UP_COUNTER; // MCPWM assimetrico pwm_config.duty_mode = MCPWM_DUTY_MODE_0 үчүн; // Төмөнкү шартта аныктоо // Inicia (Unidade 0, Timer 0, Config PWM) mcpwm_init (MCPWM_UNIT_0, MCPWM_TIMER_0, & pwm_config); // PWM0A & PWM0B com конфигурациясын acima} катары аныктоо

Функциялар

// MCPWM операторунун A конфигурациясы (Unidade, Timer, Porcentagem (ciclo de trabalho)) (0, 1 ou 2), Operador (A ou B)); => MCPWM жок дегенде Operator Bди аныктоо (Baixo синалын аныктоо) mcpwm_set_signal_low (mcpwm_num, timer_num, MCPWM_OPR_B); // mcpwm_set_duty (unidade PWM (0 ou 1), таймердин убактысы (0, 1 ou 2), Operador (A ou B), Ciclo de trabalho (% PWM)); => Конфигурациялоо PWM жок Operador A (Ciclo de trabalho) mcpwm_set_duty (mcpwm_num, timer_num, MCPWM_OPR_A, duty_cycle); // mcpwm_set_duty_tyoe (PWM (0 ou 1), таймердин убактысы (0, 1 ou 2), Operador (A ou B), Nível do ciclo de trabalho (alto ou baixo)); => ciclo de trabalho (alt ou baixo) mcpwm_set_duty_type (mcpwm_num, timer_num, MCPWM_OPR_A, MCPWM_DUTY_MODE_0) аныктоо; // Nota: Chame essa função toda que to chamado for chamado "mcpwm_set_signal_low" oc "mcpwm_set_signal_high" cflo de trabalho configurado anteriormente} // Функциялардын конфигурациясы MCPWM Do B (Porido, Timer) static 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); // MCPWM жок Operator A (Sinal Em Baixo деп аныктоо) mcpwm_set_duty (mcpwm_num, timer_num, MCPWM_OPR_B, duty_cycle); // Конфигурация PWM жок Operador B (Ciclo de trabalho) mcpwm_set_duty_type (mcpwm_num, timer_num, MCPWM_OPR_B, MCPWM_DUTY_MODE_0); // аныктоо ciclo de trabalho (alto ou baixo)} // Funccão que mCPWM de ambos os Operadores static void brushed_motor_stop (mcpwm_unit_t mcpwm_num, mcpwm_timer_t timer_mn_m_m_m_) // MCPWM жок дегенде бир оператор жок mcpwm_set_signal_low (mcpwm_num, timer_num, MCPWM_OPR_B); // MCPWM жок операциялар B}

Loop

void loop () {// Move it motor no sentido horário brushed_motor_forward (MCPWM_UNIT_0, MCPWM_TIMER_0, 50.0); oled ("50"); кечигүү (2000); // Мотордун щеткалуу_мотору (MCPWM_UNIT_0, MCPWM_TIMER_0); oled ("0"); кечигүү (2000); // Орнотуу мотор жок sentiho antihorário brushed_motor_backward (MCPWM_UNIT_0, MCPWM_TIMER_0, 25.0); oled ("25"); кечигүү (2000); // Мотордун щеткалуу_мотору (MCPWM_UNIT_0, MCPWM_TIMER_0); oled ("0"); кечигүү (2000); // Aceleracao мен 1 a 100 үчүн (int i = 10; i <= 100; i ++) {brushed_motor_forward (MCPWM_UNIT_0, MCPWM_TIMER_0, i); oled (String (i)); кечигүү (200); } // Desaceleração мен 100 жана 1 кечигүү (5000); үчүн (int i = 100; i> = 10; i-) {brushed_motor_forward (MCPWM_UNIT_0, MCPWM_TIMER_0, i); oled (String (i)); кечиктирүү (100); } кечигүү (5000); }

9 -кадам: Файлдарды жүктөп алыңыз

PDF

МЕН ЖОК

СҮРӨТ

Сунушталууда: