Мазмұны:

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

Бейне: ESP32 бар электр турбинасы: 9 қадам

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

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

Мен бұл жобада ESP32 LoRa қолдандым және бұл микроконтроллердің ішінде екі блок бар екенін ескеру маңызды деп ойлаймын. Бұл блоктар әрқайсысы үш қозғалтқышты басқаруға қабілетті. Осылайша, PWM көмегімен алты қозғалтқышты басқаруға болады, барлығы дербес. Бұл мен қолданатын басқару стандарты емес екенін білдіреді (бұл Arduino -ға ұқсас). Оның орнына басқару - бұл чиптің өзі, ол ESP32 қозғалтқышты басқаруға қатысты икемділікке кепілдік береді.

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

2 -қадам: PWM қозғалтқышты басқару

PWM қозғалтқышты басқару
PWM қозғалтқышты басқару
PWM қозғалтқышты басқару
PWM қозғалтқышты басқару

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

• ESP32 MCPWM функциясын әр түрлі электр қозғалтқыштарын басқару үшін пайдалануға болады. Оның екі бірлігі бар.

• Әр қондырғыда PWM үш шығыс жұбы бар.

• Әр шығыс А / В жұбын 0, 1 немесе 2 үш синхрондау таймерінің бірімен синхрондауға болады.

• Бір Таймерді бірнеше PWM шығыс жұбын синхрондау үшін пайдалануға болады

Толық диаграмма:

• Әрбір қондырғы кіріс сигналдарын синхронизация белгісі ретінде жинай алады;

• Қате белгілерін шамадан тыс ток немесе қозғалтқыштың кернеуін анықтау;

• Қозғалтқыштың орналасуы сияқты CAPTURE SIGNALS арқылы кері байланыс алыңыз

3 -қадам: Қолданылған ресурстар

Қолданылған ресурстар
Қолданылған ресурстар

• Қосылу үшін секіргіштер

• Heltec Wifi LoRa 32

• Тұрақты тұрақты ток қозғалтқышы

• H көпірі - L298N

• USB кабелі

• Протобон тақтасы

• Нәр беруші

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

ESP 32 Dev жиынтығы - түйреу
ESP 32 Dev жиынтығы - түйреу

5 -қадам: турбиналық монтаж

Турбиналық монтаж
Турбиналық монтаж
Турбиналық монтаж
Турбиналық монтаж

6 -қадам: Схема - Қосылымдар

Схема - Қосылымдар
Схема - Қосылымдар

7 -қадам: Осциллографта өлшеу

Осциллографта өлшеу
Осциллографта өлшеу

8 -қадам: бастапқы код

Тақырып

#қосу // Arduino IDE пайдалану қажет емес #«драйвер/mcpwm.h» қосады // «PWM қозғалтқышты басқару» библиотекасын қосқанда, ESP32 -ге қосылады // Arduino 1.6.5 немесе 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 #deftine RST 16 SSD1306 display (0x3c, SDA, SCL, RST); // Дисплейде «көрсету» #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.setFont (ArialMT_Plain_16) үшін қаріптер; // mcpwm_gpio_init (бірыңғай PWM 0, saida A, GPIO порталы) => MCPWM0A орнатпауы GPIO_PWM0A_OUT жоқ, ccdigo mcpwm_gpio_init (MCPWM_UNIT_0, MCP_PO_00), // mcpwm_gpio_init (бірыңғай PWM 0, saida B, GPIO портасы) => MCPWM0B құралы жоқ GPIO_PWM0B_OUT декларациясы келмейді mcpwm_gpio_init (MCPWM_UNIT_0, MCPWP0B) 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 бойынша; // Ciclo de trabalho em nível alto анықтаңыз // Inicia (Unidade 0, Timer 0, Config PWM) mcpwm_init (MCPWM_UNIT_0, MCPWM_TIMER_0, & pwm_config); // PWM0A & PWM0B com -ді конфигурация ретінде анықтаңыз}

Функциялар

// MCPWM операторының функциялары A (Unidade, Timer, Porcentagem (ciclo de trabalho)) static void brushed_motor_wardward (0, 1 ou 2), Operador (A ou B)); => MCPWM операциялық емес операциялық жүйені анықтау (Baixo -ді анықтау) mcpwm_set_signal_low (mcpwm_num, timer_num, MCPWM_OPR_B); // mcpwm_set_duty (біржақты PWM (0 ou 1), Número do timer (0, 1 ou 2), Operador (A ou B), Ciclo de trabalho (% PWM)); => PWM жоқ Operator A (Ciclo de trabalho) mcpwm_set_duty (mcpwm_num, timer_num, MCPWM_OPR_A, duty_cycle) жасайтын PWM конфигурациясы; // mcpwm_set_duty_tyoe (бірыңғай PWM (0 ou 1), Número do timer (0, 1 ou 2), Operador (A ou B), Nível do ciclo de trabalho (альто ou baixo)); => ciclo de trabalho (alto ou baixo) mcpwm_set_duty_type (mcpwm_num, timer_num, MCPWM_OPR_A, MCPWM_DUTY_MODE_0) анықтаңыз; // Ескерту: «mcpwm_set_signal_low» немесе «mcpwm_set_signal_high» функциялары үшін маңызды функциялар} // MCPWM операциялық функциялары B (Unidade, 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 операциялық операторы жоқ (Baixo анықтаңыз) mcpwm_set_duty (mcpwm_num, timer_num, MCPWM_OPR_B, duty_cycle); // PWM жоқ Operator 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)} // Операторлардағы MCPWM операциялық жүйенің бос жұмыс істемейтіні (mcpwm_unit_t mcpwm_num, mcpwm_timer_t timer_mn_m_n_m) // MCPWM жоқ операциялық операциялар тізбесі mcpwm_set_signal_low (mcpwm_num, timer_num, MCPWM_OPR_B); // MCPWM операциялық операторы жоқ}

Цикл

void loop () {// моторсыз жылжытыңыз sentaro horário brushed_motor_forward (MCPWM_UNIT_0, MCPWM_TIMER_0, 50.0); олед («50»); кешіктіру (2000); // Қозғалтқыштың қозғалтқышын тоқтату (MCPWM_UNIT_0, MCPWM_TIMER_0); oled («0»); кешіктіру (2000); // моторы жоқ моторды артқа жылжытыңыз (MCPWM_UNIT_0, MCPWM_TIMER_0, 25.0); олед («25»); кешіктіру (2000); // Қозғалтқыштың қозғалтқышын тоқтату (MCPWM_UNIT_0, MCPWM_TIMER_0); oled («0»); кешіктіру (2000); // Aceleracao i de a a 100 for (int i = 10; i <= 100; i ++) {brushed_motor_forward (MCPWM_UNIT_0, MCPWM_TIMER_0, i); oled (Жол (i)); кешіктіру (200); } // Desaceleração 100 кешіктіру (5000); for (int i = 100; i> = 10; i-) {brushed_motor_forward (MCPWM_UNIT_0, MCPWM_TIMER_0, i); oled (Жол (i)); кешіктіру (100); } кешіктіру (5000); }

9 -қадам: файлдарды жүктеңіз

PDF

МЕН ЖОҚ

СУРЕТ

Ұсынылған: