Spisu treści:
- Krok 1: Demonstracja
- Krok 2: Sterowanie silnikiem PWM
- Krok 3: Wykorzystane zasoby
- Krok 4: Zestaw deweloperski ESP 32 - Pinout
- Krok 5: Montaż turbiny
- Krok 6: Obwód - połączenia
- Krok 7: Pomiar na oscyloskopie
- Krok 8: Kod źródłowy
- Krok 9: Pobierz pliki
Wideo: Turbina elektryczna z ESP32: 9 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:30
Dzisiaj będę omawiał turbinę elektryczną z ESP32. Zespół posiada część wydrukowaną w 3D. Przedstawię funkcję PWM ESP32, która nadaje się do sterowania silnikami elektrycznymi. Będzie to używane w silniku prądu stałego. Pokażę też działanie tego MCPWM (Motor Control PWM) w praktycznym zastosowaniu.
W tym projekcie użyłem ESP32 LoRa i myślę, że warto tutaj zaznaczyć, że ten mikrokontroler ma w sobie dwa bloki. Te bloki są w stanie sterować trzema silnikami każdy. Dzięki temu możliwe jest sterowanie do sześciu silników za pomocą PWM, wszystkie niezależnie. Oznacza to, że sterowanie, którego tutaj użyję, nie jest standardem (co jest czymś podobnym do Arduino). Zamiast tego sterowanie jest samym chipem, co gwarantuje ESP32 dużą elastyczność w zakresie sterowania silnikiem.
Krok 1: Demonstracja
Krok 2: Sterowanie silnikiem PWM
Ogólny schemat:
• Funkcja MCPWM ESP32 może być wykorzystana do sterowania różnymi typami silników elektrycznych. Posiada dwie jednostki.
• Każde urządzenie ma trzy pary wyjść PWM.
• Każda para wyjść A / B może być synchronizowana z jednym z trzech zegarów synchronizacji 0, 1 lub 2.
• Jeden Timer może być użyty do synchronizacji więcej niż jednej pary wyjść PWM
Pełny schemat:
• Każda jednostka może również zbierać sygnały wejściowe jako ZNAKI SYNCHRONIZACJI;
• Wykrywanie ZNAKÓW BŁĘDÓW dla przetężenia lub przepięcia silnika;
• Uzyskaj informacje zwrotne za pomocą SYGNAŁÓW PRZECHWYTU, takich jak położenie silnika
Krok 3: Wykorzystane zasoby
• Zworki do podłączenia
• Heltec Wi-Fi LoRa 32
• Wspólny silnik prądu stałego
• Mostek H - L298N
• kabel USB
• Płyta prototypowa
• Zasilacz
Krok 4: Zestaw deweloperski ESP 32 - Pinout
Krok 5: Montaż turbiny
Krok 6: Obwód - połączenia
Krok 7: Pomiar na oscyloskopie
Krok 8: Kod źródłowy
nagłówek
#include //Nie trzeba używać Arduino IDE#include "driver/mcpwm.h" //włącz bibliotekę "Motor Control PWM" natywną do ESP32 #include // Niezbędne dla Arduino 1.6.5 i później #include SSD1306.h" // o pytanie #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
Ustawiać
void setup() { Serial.begin(115200); display.init(); //display.flipScreenPionowo(); //Przejdź do ekranu pionowego display.clear(); //dostosuj ustawienie do wyświetlania.setTextAlignment(TEXT_ALIGN_LEFT); //ustaw czcionkę dla Arial 16 display.setFont(ArialMT_Plain_16); //mcpwm_gpio_init(unidade PWM 0, saya A, porta GPIO) => Instancja MCPWM0A brak pinu GPIO_PWM0A_OUT deklaruje brak kodu mcpwm_gpio_init(MCPWM_UNIT_0, MCPWM_0); //mcpwm_gpio_init(unidade PWM 0, saya B, porta GPIO) => Instancja MCPWM0B brak pinu GPIO_PWM0B_OUT deklaruje brak kodu mcpwm_gpio_init(MCPWM_UNIT_0, MCPWM_0; MCPWM_0); mcpwm_config_t pwm_config; pwm_config.częstotliwość = 1000; //częstotliwość = 500Hz, pwm_config.cmpr_a = 0; //Ciclo de trabalho (cykl pracy) do PWMxA = 0 pwm_config.cmpr_b = 0; //Ciclo de trabalho (cykl pracy) do PWMxb = 0 pwm_config.counter_mode = MCPWM_UP_COUNTER; //Para MCPWM assimetrico pwm_config.duty_mode = MCPWM_DUTY_MODE_0; //Zdefiniuj cykl pracy na wysokim poziomie //Inicia(Unidade 0, Timer 0, Config PWM) mcpwm_init(MCPWM_UNIT_0, MCPWM_TIMER_0, &pwm_config); //Zdefiniuj PWM0A i PWM0B com jako configurações acima }
Funkcje
//Zabawa w konfigurowanie operatora A MCPWM (Unidade, Timer, Porcentagem (cykl pracy)) static void brushed_motor_forward(mcpwm_unit_t mcpwm_num, mcpwm_timer_t timer_num, float duty_cycle) { //set0_ocpwm_timer_ (0, 1 lub 2), Operador (A lub B)); => Zapisz do MCPWM bez Operadora B (Definiuj zapisz w Baixo) mcpwm_set_signal_low(mcpwm_num, timer_num, MCPWM_OPR_B); //mcpwm_set_duty(unidade PWM (0 lub 1), liczba do timera (0, 1 lub 2), Operador (A lub B), Ciclo de trabalho (% do PWM)); => Konfiguracja części do PWM bez Operadora A (Cilo de Trabalho) mcpwm_set_duty(mcpwm_num, timer_num, MCPWM_OPR_A, duty_cycle); //mcpwm_set_duty_tyoe (jednostajne PWM (0 lub 1), Numer do timera (0, 1 lub 2), Operador (A lub B), Nivel do cyklu pracy (alto lub baixo)); => zdefiniuj nowy cykl pracy (alto lub baixo) mcpwm_set_duty_type (mcpwm_num, timer_num, MCPWM_OPR_A, MCPWM_DUTY_MODE_0); //Uwaga: Chame essa função toda vez que for chamado „mcpwm_set_signal_low” lub „mcpwm_set_signal_high” na potrzeby wcześniejszej konfiguracji trabalho } //Função que configura MCPWM Doradztwo, TimerhoUnid) () 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); //Desliga o sinal do MCPWM bez Operadora A (Definiuj sinal em Baixo) mcpwm_set_duty(mcpwm_num, timer_num, MCPWM_OPR_B, duty_cycle); //Konfiguruj porcentagem do PWM bez Operadora B (Cilo de trabalho) mcpwm_set_duty_type(mcpwm_num, timer_num, MCPWM_OPR_B, MCPWM_DUTY_MODE_0); //zdefiniuj nowy cykl pracy (alto lub baixo) } //Função que MCPWM de ambos dla operatorów Operadores static void brushed_motor_stop(mcpwm_unit_t mcpwm_num, mcpwm_timer_t timer_mlow_num, PW_pww timerA) {mcpwm timerA; //Deliga do MCPWM bez Operadora A mcpwm_set_signal_low(mcpwm_num, timer_num, MCPWM_OPR_B); //Desliga o sinal do MCPWM bez Operadora B }
Pętla
void loop() { //Przenieś silnik bez wysyłania horario brushed_motor_forward(MCPWM_UNIT_0, MCPWM_TIMER_0, 50.0); oled("50"); opóźnienie (2000); //Para o silnik brushed_motor_stop(MCPWM_UNIT_0, MCPWM_TIMER_0); oled("0"); opóźnienie (2000); //Przenieś silnik bez wysyłania antyhorario brushed_motor_backward(MCPWM_UNIT_0, MCPWM_TIMER_0, 25.0); oled("25"); opóźnienie (2000); //Para o silnik brushed_motor_stop(MCPWM_UNIT_0, MCPWM_TIMER_0); oled("0"); opóźnienie (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(Ciąg(i)); opóźnienie(200); } // Desaceleração i de 100 a 1 delay(5000); for(int i=100;i>=10;i--){ brushed_motor_forward(MCPWM_UNIT_0, MCPWM_TIMER_0, i); oled(Ciąg(i)); opóźnienie (100); } opóźnienie(5000); }
Krok 9: Pobierz pliki
JA NIE
RYSUNEK
Zalecana:
Elektryczna gitara na cygara: 18 kroków (ze zdjęciami)
Elektryczna gitara cygarowa: Chociaż produkcja gitar przeszła długą drogę w ciągu ostatnich stu lat, jest długa historia pokazująca, że nie trzeba wiele, aby zrobić gitarę. Wszystko czego potrzebujesz to pudełko do rezonowania dźwięku, deska, która będzie działać jak podstrunnica, kilka śrub
Świeca elektryczna zasilana świecą: 8 kroków (ze zdjęciami)
Świeca elektryczna zasilana świecą: Po obejrzeniu doniesień prasowych o huraganie Sandy i wysłuchaniu próby, przez którą przeszła cała moja rodzina i przyjaciele w Nowym Jorku i New Jersey, zaczęłam myśleć o mojej własnej gotowości na wypadek awarii. San Francisco - w końcu - znajduje się na bardzo
Speedboard: Deskorolka elektryczna: 5 kroków
Speedboard: Deskorolka elektryczna: Witam! Jestem studentem MCT College z Howest w Belgii. Dzisiaj przedstawię Ci krok po kroku, jak zrobić deskorolkę elektryczną z malinowym pi i arduino. Do wykonania tego projektu zainspirował mnie słynny youtuber Casey Neistat
Latarka elektryczna: 8 kroków
Latarka elektryczna: Latarka to przenośne ręczne światło elektryczne. Typowa latarka składa się ze źródła światła zamontowanego w odbłyśniku, baterii, przewodów i włącznika. Źródłem światła jest dioda LED czyli dioda elektroluminescencyjna. W LED dłuższa noga jest dodatnim końcem, a krótsza
DIY Bezprzewodowa bezpłatna energia elektryczna z fal radiowych w Katmandu: 6 kroków
DIY Bezprzewodowa, bezpłatna energia elektryczna z fal radiowych w Katmandu: To, co zrobiłem, poprawiłem i uczyniłem to jeszcze prostszym i ma tylko dwa końce zamiast czterech. Odpowiedni rozmiar naleśnika z dwoma końcami połączonymi z Arialem i ziemią działa jako odbiornik. Długi odcinek dwóch arialów, jeden połączony z g