विषयसूची:

ESP32 के साथ इलेक्ट्रिक टर्बाइन: 9 कदम
ESP32 के साथ इलेक्ट्रिक टर्बाइन: 9 कदम

वीडियो: ESP32 के साथ इलेक्ट्रिक टर्बाइन: 9 कदम

वीडियो: ESP32 के साथ इलेक्ट्रिक टर्बाइन: 9 कदम
वीडियो: #366 9 New ESP32 Boards: Comparison and Tests 2024, जुलाई
Anonim
Image
Image
प्रदर्शन
प्रदर्शन

आज, मैं ESP32 के साथ एक इलेक्ट्रिक टर्बाइन पर चर्चा करूँगा। असेंबली में एक हिस्सा होता है जिसे 3D में प्रिंट किया गया था। मैं ESP32 का PWM फ़ंक्शन प्रस्तुत करूंगा जो इलेक्ट्रिक मोटर्स को नियंत्रित करने के लिए उपयुक्त है। इसका उपयोग डीसी मोटर में किया जाएगा। मैं एक व्यावहारिक अनुप्रयोग में इस एमसीपीडब्लूएम (मोटर कंट्रोल पीडब्लूएम) के संचालन को भी प्रदर्शित करूंगा।

मैंने इस परियोजना में ESP32 लोरा का उपयोग किया है, और मुझे लगता है कि यहां यह नोट करना महत्वपूर्ण है कि इस माइक्रोकंट्रोलर के अंदर दो ब्लॉक हैं। ये ब्लॉक प्रत्येक में तीन मोटरों को नियंत्रित करने में सक्षम हैं। इस प्रकार, पीडब्लूएम के साथ छह मोटरों को स्वतंत्र रूप से नियंत्रित करना संभव है। इसका मतलब यह है कि मैं यहां जिस नियंत्रण का उपयोग करूंगा वह मानक नहीं है (जो कि Arduino के समान है)। इसके बजाय, नियंत्रण स्वयं चिप है, जो मोटर नियंत्रण के संबंध में ESP32 को बहुत अधिक लचीलेपन की गारंटी देता है।

चरण 1: प्रदर्शन

चरण 2: पीडब्लूएम मोटर नियंत्रण

पीडब्लूएम मोटर नियंत्रण
पीडब्लूएम मोटर नियंत्रण
पीडब्लूएम मोटर नियंत्रण
पीडब्लूएम मोटर नियंत्रण

सामान्य आरेख:

• ESP32 के MCPWM फ़ंक्शन का उपयोग विभिन्न प्रकार की इलेक्ट्रिक मोटरों को नियंत्रित करने के लिए किया जा सकता है। इसकी दो इकाइयां हैं।

• प्रत्येक इकाई में तीन PWM आउटपुट जोड़े होते हैं।

• प्रत्येक आउटपुट ए / बी जोड़ी को तीन सिंक्रोनाइज़ेशन टाइमर 0, 1, या 2 में से एक के साथ सिंक्रोनाइज़ किया जा सकता है।

• एक से अधिक PWM आउटपुट जोड़ी को सिंक्रनाइज़ करने के लिए एक टाइमर का उपयोग किया जा सकता है

पूर्ण आरेख:

• प्रत्येक इकाई तुल्यकालन संकेतों के रूप में इनपुट संकेतों को एकत्रित करने में भी सक्षम है;

• ओवरकुरेंट या मोटर ओवरवॉल्टेज के लिए फॉल्ट साइन्स का पता लगाएं;

• कैप्चर सिग्नल के साथ फीडबैक प्राप्त करें, जैसे इंजन की स्थिति

चरण 3: प्रयुक्त संसाधन

प्रयुक्त संसाधन
प्रयुक्त संसाधन

• कनेक्शन के लिए जम्पर

• हेल्टेक वाईफाई लोरा 32

• आम डीसी मोटर

• ब्रिज एच - एल२९८एन

• यूएसबी केबल

• प्रोटोबार्ड

• बिजली की आपूर्ति

चरण 4: ईएसपी 32 देव किट - पिनआउट

ईएसपी 32 देव किट - पिनआउट
ईएसपी 32 देव किट - पिनआउट

चरण 5: टर्बाइन माउंटिंग

टर्बाइन माउंटिंग
टर्बाइन माउंटिंग
टर्बाइन माउंटिंग
टर्बाइन माउंटिंग

चरण 6: सर्किट - कनेक्शन

सर्किट - कनेक्शन
सर्किट - कनेक्शन

चरण 7: आस्टसीलस्कप पर माप

आस्टसीलस्कप पर मापन
आस्टसीलस्कप पर मापन

चरण 8: स्रोत कोड

हैडर

#include //Não é necessário caso use Arduino IDE#include "driver/mcpwm.h" //inclui a biblioteca "Motor Control PWM" nativa do ESP32 #include // Necessário apenas para o Arduino 1.6.5 e पश्च #include " SSD1306.h" // o mesmo que #include "SSD1306Wire.h" //OLED_SDA - GPIO4 //OLED_SCL - GPIO15 //OLED_RST - GPIO16 # SDA 4 परिभाषित करें # SCL 15 परिभाषित करें # RST 16 SSD1306 डिस्प्ले (0x3c परिभाषित करें), एसडीए, एससीएल, आरएसटी); // इंस्टैंसिअंडो ई एडजस्टैंडो ओएस पिनोस "डिस्प्ले" करते हैं # GPIO_PWM0A_OUT 12 परिभाषित करें // Declara GPIO 12 कॉमो PWM0A # GPIO_PWM0B_OUT 14 परिभाषित करें // Declara GPIO 14 कॉमो PWM0B

सेट अप

शून्य सेटअप () {Serial.begin(११५२००); डिस्प्ले.इनिट (); // डिस्प्ले। फ्लिपस्क्रीन वर्टिकली (); // वीरा ए टेला वर्टिकलमेंट डिस्प्ले। क्लियर (); // ajusta o alinhamento para a esquerda display.setTextAlignment(TEXT_ALIGN_LEFT); // एरियल 16 डिस्प्ले के लिए एक फ़ॉन्ट समायोजित करें। सेटफॉन्ट (एरियलएमटी_प्लेन_16); //mcpwm_gpio_init(unidade PWM 0, saya A, porta GPIO) => इंस्टैंसिया या MCPWM0A नो पिनो GPIO_PWM0A_OUT डिक्लेराडो नो कमको डो कोडिगो mcpwm_gpio_init (MCPWM_UNIT_0, MCPWM0A, AGPIO_OUT); //mcpwm_gpio_init(unidade PWM 0, saya B, porta GPIO) => इंस्टैंसिया या MCPWM0B नो पिनो GPIO_PWM0B_OUT डिक्लेराडो नो कमको डो कोडिगो mcpwm_gpio_init (MCPWM_UNIT_0, MCPWM0B, GPIO_OUT); mcpwm_config_t pwm_config; pwm_config.आवृत्ति = १०००; // फ्रीक्वेंसी = 500 हर्ट्ज, pwm_config.cmpr_a = 0; //Ciclo de trabalho (ड्यूटी साइकिल) do PWMxA = 0 pwm_config.cmpr_b = 0; //Ciclo de trabalho (ड्यूटी साइकिल) do PWMxb = 0 pwm_config.counter_mode = MCPWM_UP_COUNTER; // पैरा एमसीपीडब्लूएम एसिमेट्रिको 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 कॉम को configurações acima के रूप में परिभाषित करें}

कार्यों

// MCPWM ऑपरेटर A (Unidade, Timer, Porcentagem (ciclo de trabalho)) के लिए फ़नकाओ क्यू कॉन्फिगरेशन (0, 1 कहां 2), संचालिका (ए कहां बी)); => Desliga o sinal do MCPWM no Operador B (परिभाषित करें o sinal em Baixo) mcpwm_set_signal_low(mcpwm_num, timer_num, MCPWM_OPR_B); //mcpwm_set_duty(unidade PWM(0 ou 1), Número do timer(0, 1 ou 2), Operador (A ou B), Ciclo de trabalho (% do PWM)); => कॉन्फिगुरा ए पोर्सेन्टेजम डू पीडब्लूएम नो ऑपरडोर ए (सिक्लो डे ट्रैबल्हो) mcpwm_set_duty(mcpwm_num, timer_num, MCPWM_OPR_A, ड्यूटी_साइकिल); //mcpwm_set_duty_tyoe(unidade PWM(0 ou 1), Número 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" पैरा मेंटर o ciclo de trabalho configurado anteriormente } //Função que configura o MCPWM डू ऑपरेटर, डीट्रेडर बी स्थैतिक शून्य ब्रश_मोटर_बैकवर्ड (mcpwm_unit_t mcpwm_num, mcpwm_timer_t टाइमर_नम, फ्लोट ड्यूटी_साइकिल) {mcpwm_set_signal_low(mcpwm_num, timer_num, MCPWM_OPR_A); // Desliga o sinal do MCPWM no Operador A (परिभाषित o sinal em Baixo) mcpwm_set_duty(mcpwm_num, timer_num, MCPWM_OPR_B,ड्यूटी_साइकिल); // कॉन्फिगर ए पोर्सेन्टेजम डू पीडब्लूएम नो ऑपरडोर बी (सिक्लो डे ट्रैबल्हो) mcpwm_set_duty_type(mcpwm_num, timer_num, MCPWM_OPR_B, MCPWM_DUTY_MODE_0); // परिभाषित करें कि क्या करना है (ऑल्टो कहां बाईक्सो)} // एमसीपीडब्लूएम डी एम्बॉस ओएस के संचालन के लिए मजेदार है, स्थिर शून्य ब्रश_मोटर_स्टॉप (एमसीपीडब्ल्यूएम_यूनिट_टी एमसीपीडब्ल्यूएम_नम, एमसीपीडब्ल्यूएम_टाइमर_टी टाइमर_नम, एमसीपी_लो (एमसीपीडब्ल्यूएम_टाइमर_टी टाइमर_नम) { एमसीपीडब्ल्यूएम_टाइमर_टी टाइमर_नम) एमसीपी_ओपीएम_एनयूएम // 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 }

कुंडली

शून्य लूप () {// मूव ओ मोटर नो सेंटीडो होरारियो ब्रश्ड_मोटर_फॉरवर्ड (MCPWM_UNIT_0, MCPWM_TIMER_0, 50.0); ओल्ड ("50"); देरी (2000); // पैरा ओ मोटर ब्रश_मोटर_स्टॉप (MCPWM_UNIT_0, MCPWM_TIMER_0); ओल्ड ("0"); देरी (2000); // मूव ओ मोटर नो सेंटीडो एंटीहोरारियो ब्रश_मोटर_बैकवर्ड (MCPWM_UNIT_0, MCPWM_TIMER_0, 25.0); ओल्ड ("25"); देरी (2000); // पैरा ओ मोटर ब्रश_मोटर_स्टॉप (MCPWM_UNIT_0, MCPWM_TIMER_0); ओल्ड ("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); ओलेड (स्ट्रिंग (i)); देरी (200); } // Desaceleração i de 100 a 1 देरी(5000); for(int i=100;i>=10;i--){brushed_motor_forward(MCPWM_UNIT_0, MCPWM_TIMER_0, i); ओलेड (स्ट्रिंग (i)); देरी (100); } देरी (5000); }

चरण 9: फ़ाइलें डाउनलोड करें

पीडीएफ

मैं नहीं

चित्रकारी

सिफारिश की: