فهرست مطالب:

توربین برقی با ESP32: 9 مرحله
توربین برقی با ESP32: 9 مرحله

تصویری: توربین برقی با ESP32: 9 مرحله

تصویری: توربین برقی با ESP32: 9 مرحله
تصویری: Using 28BYJ-48 Stepper Motor Push button Speed with 8 projects: Ultimate Video Tutorial Lesson 107 2024, نوامبر
Anonim
Image
Image
تظاهرات
تظاهرات

امروز ، من در مورد یک توربین برقی با ESP32 بحث خواهم کرد. مجموعه دارای قسمتی است که به صورت سه بعدی چاپ شده است. من عملکرد PWM ESP32 را ارائه می دهم که برای کنترل موتورهای الکتریکی مناسب است. این در موتور DC استفاده می شود. من همچنین عملکرد این MCPWM (کنترل موتور PWM) را در یک برنامه کاربردی نشان خواهم داد.

من در این پروژه از ESP32 LoRa استفاده کردم و فکر می کنم ذکر این نکته ضروری باشد که این میکروکنترلر دارای دو بلوک در داخل آن است. این بلوک ها قادرند هر کدام سه موتور را کنترل کنند. بنابراین ، امکان کنترل حداکثر شش موتور با PWM ، همه به طور مستقل وجود دارد. این بدان معناست که کنترلی که در اینجا استفاده می کنم استاندارد نیست (که چیزی شبیه به آردوینو است). در عوض ، کنترل خود تراشه است ، که ESP32 انعطاف پذیری زیادی را نسبت به کنترل موتور تضمین می کند.

مرحله 1: تظاهرات

مرحله 2: کنترل موتور PWM

کنترل موتور PWM
کنترل موتور PWM
کنترل موتور PWM
کنترل موتور PWM

نمودار کلی:

• از عملکرد MCPWM ESP32 می توان برای کنترل انواع مختلف موتورهای الکتریکی استفاده کرد. دو واحد دارد.

• هر واحد دارای سه جفت خروجی PWM است.

• هر جفت خروجی A / B را می توان با یکی از سه تایمر همگام سازی 0 ، 1 ، یا 2 همزمان کرد.

• از یک تایمر می توان برای همگام سازی بیش از یک جفت خروجی PWM استفاده کرد

نمودار کامل:

• هر واحد همچنین قادر به جمع آوری سیگنال های ورودی به عنوان علائم SYNCHRONIZATION است.

• تشخیص علائم خطا برای ولتاژ بیش از حد یا موتور ؛

• با CAPTURE SIGNALS ، مانند موقعیت موتور ، بازخورد بگیرید

مرحله 3: منابع مورد استفاده

منابع مورد استفاده
منابع مورد استفاده

• جامپر برای اتصال

• Heltec Wifi LoRa 32

• موتور DC معمولی

• پل H - L298N

• کابل یو اس بی

• Protoboard

• منبع تغذیه

مرحله 4: ESP 32 Dev Kit - Pinout

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

مرحله 5: نصب توربین

نصب توربین
نصب توربین
نصب توربین
نصب توربین

مرحله 6: مدار - اتصالات

مدار - اتصالات
مدار - اتصالات

مرحله 7: اندازه گیری بر روی اسیلوسکوپ

اندازه گیری بر روی اسیلوسکوپ
اندازه گیری بر روی اسیلوسکوپ

مرحله 8: کد منبع

سرتیتر

#شامل // Não é needário caso استفاده از Arduino IDE #شامل "driver/mcpwm.h" // شامل کتابخانه "Motor Control PWM" nativa do ESP32 #include // Necessário apenas para o Arduino 1.6.5 e posterior #include " SSD1306.h "// o mesmo que #شامل" 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" #تعریف GPIO_PWM0A_OUT 12 // اعلام GPIO 12 como PWM0A #تعریف GPIO_PWM0B_OUT 14 // Declara GPIO 14 como PWM0B

برپایی

void setup () {Serial.begin (115200)؛ display.init ()؛ //display.flipScreenVertically ()؛ // Vira a tela verticalmente display.clear ()؛ // برای یک esquerda display.setTextAlignment (TEXT_ALIGN_LEFT) ؛ // ajusta a fonte para Arial 16 display.setFont (ArialMT_Plain_16)؛ // mcpwm_gpio_init (unwade PWM 0، saida A، porta GPIO) => Instancia o MCPWM0A no pino GPIO_PWM0A_OUT اعلام هیچگونه آمادگی برای انجام ccdigo mcpwm_gpio_init (MCPWM_UNIT_0، // mcpwm_gpio_init (unwade PWM 0، saida B، porta GPIO) => Instancia o MCPWM0B no pino GPIO_PWM0B_OUT اعلام هیچگونه آمادگی برای انجام mcpwm_gpio_init (MCPWM_POMB_0B0، M0P0، M0، M0، M0، M0، M0، M0، M0، M0، M0، M0، M0، M0، M0، M0، M0، M0، M0، 0، mcpwm_config_t pwm_config؛ pwm_config.frequency = 1000؛ // frequência = 500Hz ، 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 ؛ // Para 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 به عنوان configurações acima}

کارکرد

// Função que configura o MCPWM operador A (Unidade، Timer، Porcentagem (ciclo de trabalho)) void statical brushed_motor_forward (mcpwm_unit_t mcpwm_num، mcpwm_timer_t timer_numwm_mum_mum_mum، my_mum_mum، my_mum، my_mum_mum، my_mum_mum، (0 ، 1 ou 2) ، Operador (A ou B)) ؛ => Desliga or sinal do MCPWM no Operador B (o sinal em Baixo) mcpwm_set_signal_low (mcpwm_num، timer_num، MCPWM_OPR_B)؛ // mcpwm_set_duty (PWM unidade (0 ou 1) ، Número do timer (0 ، 1 ou 2) ، Operador (A ou B) ، Ciclo de trabalho (٪ do PWM)) ؛ => پیکربندی یک porcentagem را با PWM no Operador A (Ciclo de trabalho) mcpwm_set_duty (mcpwm_num ، timer_num ، MCPWM_OPR_A ، duty_cycle) ؛ // mcpwm_set_duty_tyoe (PWM unidade (0 ou 1) ، Número do timer (0 ، 1 ou 2) ، Operador (A ou B) ، Nível do ciclo de trabalho (alto ou baixo)) ؛ => تعریف یا استفاده از ciclo de trabalho (alto ou baixo) mcpwm_set_duty_type (mcpwm_num، timer_num، MCPWM_OPR_A، MCPWM_DUTY_MODE_0)؛ // Nota: 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 MCPWoid Do operador B (Un) خلاء استاتیک 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_؛ // Desliga or sinal do MCPWM no Operador A (o sinal em Baixo) mcpwm_set_duty (mcpwm_num، timer_num، MCPWM_OPR_B، duty_cycle)؛ // پیکربندی یک porcentagem do PWM no Operador B (Ciclo de trabalho) mcpwm_set_duty_type (mcpwm_num ، timer_num ، MCPWM_OPR_B ، MCPWM_DUTY_MODE_0) ؛ // تعریف O nível انجام CICLO د Trabalho به (آلتو OU baixo)} // Função فونز پارا O MCPWM د ambos سیستم عامل Operadores brushed_motor_stop از درجه اعتبار ساقط استاتیک (mcpwm_unit_t mcpwm_num، mcpwm_timer_t timer_num) {mcpwm_set_signal_low (mcpwm_num، timer_num، MCPWM_OPR_A)؛ // Desliga o 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}

حلقه

حلقه خالی () {// حرکت یا حرکت بدون موتور بدون احساس brushed_motor_forward (MCPWM_UNIT_0 ، MCPWM_TIMER_0 ، 50.0) ؛ oled ("50") ؛ تاخیر (2000) ؛ // Para o motor brushed_motor_stop (MCPWM_UNIT_0، MCPWM_TIMER_0)؛ oled ("0") ؛ تاخیر (2000) ؛ // حرکت یا حرکت بدون موتور ضد حساسیت brushed_motor_backward (MCPWM_UNIT_0 ، MCPWM_TIMER_0 ، 25.0) ؛ oled ("25") ؛ تاخیر (2000) ؛ // Para o motor brushed_motor_stop (MCPWM_UNIT_0، MCPWM_TIMER_0)؛ oled ("0") ؛ تاخیر (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 (رشته (i)) ؛ تأخیر (200) ؛ } // Desaceleração i de 100 a 1 delay (5000)؛ برای (int i = 100؛ i> = 10؛ i-) {brushed_motor_forward (MCPWM_UNIT_0، MCPWM_TIMER_0، i)؛ oled (رشته (i)) ؛ تأخیر (100) ؛ } تأخیر (5000) ؛ }

مرحله 9: فایلها را بارگیری کنید

PDF

من نه

نقاشی

توصیه شده: