সুচিপত্র:

ESP32: 9 ধাপ সহ বৈদ্যুতিক টারবাইন
ESP32: 9 ধাপ সহ বৈদ্যুতিক টারবাইন

ভিডিও: ESP32: 9 ধাপ সহ বৈদ্যুতিক টারবাইন

ভিডিও: ESP32: 9 ধাপ সহ বৈদ্যুতিক টারবাইন
ভিডিও: Transform Your Hot Wheels into a micro FPV RC Car! 2024, নভেম্বর
Anonim
Image
Image
প্রদর্শন
প্রদর্শন

আজ, আমি ESP32 এর সাথে একটি বৈদ্যুতিক টারবাইন নিয়ে আলোচনা করব। সমাবেশের একটি অংশ আছে যা 3D এ মুদ্রিত হয়েছিল। আমি ESP32 এর একটি PWM ফাংশন উপস্থাপন করব যা বৈদ্যুতিক মোটর নিয়ন্ত্রণের জন্য উপযুক্ত। এটি একটি ডিসি মোটর ব্যবহার করা হবে। আমি এই এমসিপিডব্লিউএম (মোটর কন্ট্রোল পিডব্লিউএম) এর ব্যবহারিক প্রয়োগও দেখাব।

আমি এই প্রকল্পে ESP32 LoRa ব্যবহার করেছি, এবং আমি মনে করি এখানে উল্লেখ করা গুরুত্বপূর্ণ যে এই মাইক্রোকন্ট্রোলারের ভিতরে দুটি ব্লক রয়েছে। এই ব্লক তিনটি মোটর নিয়ন্ত্রণ করতে সক্ষম। সুতরাং, PWM এর সাহায্যে ছয়টি মোটর পর্যন্ত নিয়ন্ত্রণ করা সম্ভব, সবগুলি স্বাধীনভাবে। এর মানে হল যে আমি এখানে যে কন্ট্রোলটি ব্যবহার করব তা স্ট্যান্ডার্ড নয় (যা আরডুইনোর মতো কিছু)। পরিবর্তে, নিয়ন্ত্রণ নিজেই চিপ, যা ESP32 মোটর নিয়ন্ত্রণের ক্ষেত্রে অনেক নমনীয়তার নিশ্চয়তা দেয়।

ধাপ 1: বিক্ষোভ

ধাপ 2: PWM মোটর নিয়ন্ত্রণ

PWM মোটর নিয়ন্ত্রণ
PWM মোটর নিয়ন্ত্রণ
PWM মোটর নিয়ন্ত্রণ
PWM মোটর নিয়ন্ত্রণ

সাধারণ চিত্র:

SP ESP32 এর MCPWM ফাংশন বিভিন্ন ধরনের বৈদ্যুতিক মোটর নিয়ন্ত্রণ করতে ব্যবহার করা যেতে পারে। এর দুটি ইউনিট রয়েছে।

• প্রতিটি ইউনিটের তিনটি PWM আউটপুট জোড়া আছে।

• প্রতিটি আউটপুট A / B জোড়া তিনটি সিঙ্ক্রোনাইজেশন টাইমার 0, 1, বা 2 এর সাথে সিঙ্ক্রোনাইজ করা যায়।

• এক টাইমার একাধিক PWM আউটপুট জোড়া সিঙ্ক্রোনাইজ করতে ব্যবহার করা যেতে পারে

সম্পূর্ণ চিত্র:

• প্রতিটি ইউনিট SYNCHRONIZATION SIGNS হিসাবে ইনপুট সিগন্যাল সংগ্রহ করতে সক্ষম;

Over overcurrent বা মোটর overvoltage জন্য ভুল চিহ্ন সনাক্ত;

C ক্যাপচার সিগন্যালগুলির মতামত পান, যেমন ইঞ্জিনের অবস্থান

ধাপ 3: ব্যবহৃত সম্পদ

ব্যবহৃত সম্পদ
ব্যবহৃত সম্পদ

For সংযোগের জন্য জাম্পার

• হেলটেক ওয়াইফাই লোরা 32

• সাধারণ ডিসি মোটর

• সেতু H - L298N

• USB তারের

• প্রোটোবোর্ড

• বিদ্যুৎ সরবরাহ

ধাপ 4: ESP 32 Dev Kit - Pinout

ইএসপি 32 দেব কিট - পিনআউট
ইএসপি 32 দেব কিট - পিনআউট

ধাপ 5: টারবাইন মাউন্ট করা

টারবাইন মাউন্ট করা
টারবাইন মাউন্ট করা
টারবাইন মাউন্ট করা
টারবাইন মাউন্ট করা

ধাপ 6: সার্কিট - সংযোগ

সার্কিট - সংযোগ
সার্কিট - সংযোগ

ধাপ 7: অসিলোস্কোপে পরিমাপ

অসিলোস্কোপে পরিমাপ
অসিলোস্কোপে পরিমাপ

ধাপ 8: সোর্স কোড

হেডার

#অন্তর্ভুক্ত // Não é essentialário caso ব্যবহার Arduino IDE #অন্তর্ভুক্ত "ড্রাইভার/mcpwm.h" // অন্তর্ভুক্ত একটি গ্রন্থবিজ্ঞান "মোটর কন্ট্রোল PWM" nativa do ESP32 #include // Necessário apenas para o Arduino 1.6.5 e postior #include " SSD1306।, এসডিএ, এসসিএল, আরএসটি); // 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

সেটআপ

অকার্যকর সেটআপ () {Serial.begin (115200); display.init (); //display.flipScreenVertically (); // Vira a tela verticalmente display.clear (); // ajusta o alinhamento para a esquerda display.setTextAlignment (TEXT_ALIGN_LEFT); // austa a fonte para Arial 16 display.setFont (ArialMT_Plain_16); // mcpwm_gpio_init (unidade PWM 0, saida A, porta GPIO) => Instancia o MCPWM0A no pino GPIO_PWM0A_OUT declarado no começo do código mcpwm_gpio_init (MCPWM_UNIT_0, MCPWM_0, MCPWM_0, MCPWM_00, MCPWM_00, MCPWM_00 // mcpwm_gpio_init (unidade PWM 0, saida B, porta GPIO) => Instancia o MCPWM0B no pino GPIO_PWM0B_OUT declarado no começo do código mcpwm_gpio_init (MCPWM_UNIT_0, MCPWM_0, MCPWM_00, MCPWM_00, MCPWM_00 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; // প্যারা MCPWM অ্যাসিমেট্রিকো 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 কে কনফিগারেশন এসিমা হিসাবে সংজ্ঞায়িত করুন}

কার্যাবলী

// Função que configura o MCPWM operator A (0, 1 ou 2), অপারেডর (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), Nromero do timer (0, 1 ou 2), Operador (A ou B), Ciclo de trabalho (% do PWM)); => কনফিগার একটি পোর্সটেজম ডু পিডব্লিউএম নো অপারেডর এ (সিকলো ডি ট্র্যাবলহো) এমসিপিডব্লিউএম_সেট_ডিউটি (এমসিপিডব্লিউএম_নুম, টাইমার_নাম, এমসিপিডব্লিউএম_ওপিআর_এ, ডিউটি_সাইকেল); // mcpwm_set_duty_tyoe (unidade PWM (0 ou 1), Nromero do timer (0, 1 ou 2), Operador (A ou B), Nível do ciclo de trabalho (alto ou baixo)); => সংজ্ঞায়িত করুন o nível do ciclo de trabalho (alto ou baixo) mcpwm_set_duty_type (mcpwm_num, timer_num, MCPWM_OPR_A, MCPWM_DUTY_MODE_0); // নোটা: Chame essa função toda vez que for chamado "mcpwm_set_signal_low" ou "mcpwm_set_signal_high" para manter o ciclo de trabalho configurado anteriormente} // Função que configura o MCPWM Do operador de, crado (c) স্থির শূন্য 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 no Operador A (define o sinal em Baixo) mcpwm_set_duty (mcpwm_num, timer_num, MCPWM_OPR_B, duty_cycle); // কনফিগুরা পোরডেনজম ডু পিডব্লিউএম নো অপারেডর বি (সিক্লো ডি ট্র্যাবলহো) এমসিপিডব্লিউএম_সেট_ডিউটি_টাইপ (এমসিপিডব্লিউএম_নুম, টাইমার_নাম, এমসিপিডব্লিউএম_ওপিআর_বি, এমসিপিডব্লিউএম_ডুটি -এমওডিE_0); // define o nível do ciclo de trabalho (alto ou baixo)} // Função que para o MCPWM de ambos os Operadores static void brushed_motor_stop (mcpwm_unit_t mcpwm_num, mcpwm_timer_t timer_num_mum_mum_mump, mcpw_mum_mum, mcpwm_time_num_mum, mcpwm_mum, mcpwm_mum, mcpwm_mum, mcpwm_mum, mcpwm // 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}

লুপ

void loop () {// move o 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); // সরান o মোটর কোন sentido 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 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 বিলম্ব (5000); জন্য (int i = 100; i> = 10; i-) {brushed_motor_forward (MCPWM_UNIT_0, MCPWM_TIMER_0, i); oled (স্ট্রিং (i)); বিলম্ব (100); } বিলম্ব (5000); }

ধাপ 9: ফাইলগুলি ডাউনলোড করুন

পিডিএফ

আইএনও

অঙ্কন

প্রস্তাবিত: