El 28BYJ-48 एक एकध्रुवीय स्टेपर मोटर है कम लागत और उच्च परिशुद्धता, इलेक्ट्रॉनिक्स परियोजनाओं, 3डी प्रिंटर, सीएनसी मशीनों और रोबोटिक्स के लिए आदर्श। इसका कॉम्पैक्ट आकार, कम बिजली की खपत और उपयोग में आसानी इसे इलेक्ट्रॉनिक्स शौकीनों और पेशेवरों के लिए एक लोकप्रिय विकल्प बनाती है।
इसके अलावा, इस इंजन के साथ, ए ULN2003 के साथ मॉड्यूल, आपके नियंत्रण के लिए. इस तरह, हमारे पास माइक्रोकंट्रोलर या बोर्ड का उपयोग करके इस प्रणाली का पूरी तरह से उपयोग करने में सक्षम होने के लिए आवश्यक सभी चीजें हैं Arduino या समान.
28BYJ-48 स्टेपर मोटर क्या है?
Un स्टेपर मोटर एक प्रकार की इलेक्ट्रिक मोटर है जो निरंतर घूर्णन के बजाय छोटे असतत कोणीय चरणों में चलता है। यह विद्युत चुम्बकों के एक सेट का उपयोग करके काम करता है जो एक विशिष्ट अनुक्रम में सक्रिय होते हैं। विभिन्न विद्युत चुम्बकों को सक्रिय करके, एक चुंबकीय क्षेत्र बनाया जाता है जो मोटर रोटर को आकर्षित करता है, जिससे यह एक समय में एक कदम घूमता है। प्रति क्रांति चरणों की संख्या और गति की सटीकता विशिष्ट मोटर डिज़ाइन और उपयोग किए गए नियंत्रण अनुक्रम पर निर्भर करती है।
स्टेपर मोटर्स के भीतर हमारे पास दो प्रकार हैं:
- एकध्रुवीय- उनके पास कॉइल्स का एक ही सेट होता है और करंट को उलटने और मोटर को दोनों दिशाओं में घुमाने के लिए एक विशेष नियंत्रक की आवश्यकता होती है।
- द्विध्रुवी- उनके पास स्वतंत्र कॉइल्स के दो सेट हैं, जो उन्हें विशेष नियंत्रक की आवश्यकता के बिना दोनों दिशाओं में घूमने की अनुमति देते हैं।
28BYJ-28 के मामले में यह एकध्रुवीय प्रकार है, जैसा कि मैंने पहले बताया था। और, इस समूह के भीतर, इसकी विशेषता निम्नलिखित है ऐनक:
- एकध्रुवीय स्टेपर: केवल 4 केबलों के साथ सरल नियंत्रण।
- एकीकृत रेड्यूसर: उच्च परिशुद्धता (0.088° प्रति चरण) और टॉर्क (3 N·cm) प्रदान करता है।
- कम खपत: 83 एमए (5वी मॉडल) या 32 एमए (12वी मॉडल)।
- ALIMENTACION: 5V या 12V (मॉडल के आधार पर)।
- किफायती मूल्य: €1.2 प्रति यूनिट से, या थोड़ा अधिक यदि उनमें ULN2003 मॉड्यूल शामिल है।
के बारे में संभावित अनुप्रयोग, मैंने पहले ही उनमें से कुछ का उल्लेख किया है, लेकिन यहां मैं आपको फिर से आपकी परियोजनाओं के लिए कुछ विचार देता हूं:
- हाइड्रोलिक और वायवीय वाल्वों का नियंत्रण।
- व्यक्त रोबोट और रोबोटिक भुजाएँ।
- सेंसर पोजीशनिंग.
- स्कैनर के लिए घूमने वाली टेबलें।
- 3डी प्रिंटर.
- सीएनसी मशीनें।
स्टेपर मोटर अकेले काम नहीं करती, इसके लिए किसी अन्य तत्व की आवश्यकता होती है। इस मामले में, 28BYJ-48 को एकीकृत ULN2003 वाले बोर्ड द्वारा नियंत्रित किया जाता है, जो मोटर कॉइल्स को पावर देने के लिए Arduino आउटपुट के करंट को बढ़ाने की अनुमति देता है। कॉइल्स को सही क्रम में सक्रिय करने से, मोटर बड़ी सटीकता के साथ चरण दर चरण घूमती है।
नियंत्रण अनुक्रमों और चरणों के प्रकार
वहाँ 28BYJ-48 के लिए विभिन्न नियंत्रण अनुक्रम, सबसे आम हैं:
- पूर्ण तरंग क्रम: एक ही समय में सभी कॉइल्स को सक्रिय करता है।
- आधा कदम अनुक्रम: एक ही समय में दो आसन्न कॉइल्स को सक्रिय करता है।
- सूक्ष्म चरण अनुक्रम: एक समय में एक कॉइल को सक्रिय करता है।
आइए देखते हैं चरण विस्तार से:
- अनुक्रम 1-चरण: 1-चरण अनुक्रम में हम एक समय में एक ही कुंडल चालू करते हैं। इस इग्निशन अनुक्रम को एक तालिका में ले जाकर, इंजन पिनआउट में निम्नलिखित उत्पन्न करना होगा:
पासो | A | B | ए' | बी ' |
---|---|---|---|---|
1 | ON | बंद | बंद | बंद |
2 | बंद | ON | बंद | बंद |
3 | बंद | बंद | ON | बंद |
4 | बंद | बंद | बंद | ON |
- 2-चरण अनुक्रम: हम प्रत्येक चरण में दो सहसंबद्ध कॉइल चालू करते हैं, इसलिए उत्पन्न चुंबकीय क्षेत्र अधिक (41% अधिक) होता है, इसलिए मोटर में अधिक टॉर्क होता है, यानी, हमें अधिक ताकत मिलती है। एक नकारात्मक बिंदु के रूप में, हम ऊर्जा की खपत को दोगुना कर देते हैं। जहाँ तक तालिका का प्रश्न है, यह होगी:
पासो | A | B | ए' | बी ' |
---|---|---|---|---|
1 | ON | ON | बंद | बंद |
2 | बंद | ON | ON | बंद |
3 | बंद | बंद | ON | ON |
4 | ON | बंद | बंद | ON |
- आधा कदम अनुक्रम: यह उन चरणों में से एक है जिसे हम देखने जा रहे हैं, आप अनुभव कर सकते हैं कि आपकी सबसे अधिक रुचि किसमें है। यहां हम बारी-बारी से एक और दो कॉइल को चालू करते हैं, जिससे आधे चरण की सटीकता प्राप्त होती है। इसका उपयोग उन अनुप्रयोगों में किया जाता है जहां उच्चतम परिशुद्धता की आवश्यकता होती है, हालांकि जब एप्लिकेशन टॉर्क सीमा पर होता है तो समस्याएं हो सकती हैं। अनुक्रम को तालिका के रूप में व्यक्त करने से परिणाम मिलता है:
आधा कदम | A | B | ए' | बी ' |
---|---|---|---|---|
1 | ON | बंद | बंद | बंद |
2 | ON | ON | बंद | बंद |
3 | बंद | ON | बंद | बंद |
4 | बंद | ON | ON | बंद |
5 | बंद | बंद | ON | बंद |
6 | बंद | बंद | ON | ON |
7 | बंद | बंद | बंद | ON |
8 | ON | बंद | बंद | ON |
28BYJ-28 Arduino के साथ
पहली बात यह है कि इसे ठीक से कनेक्ट करें मॉड्यूल और मोटर 28byj-48 हमारे Arduino बोर्ड से, ऐसा करने के लिए, आपको बस निम्नलिखित कनेक्शन बनाने होंगे:
- पिन - ULN2003 से Arduino के GND तक।
- Arduino से Vcc (2003v या अन्य मामलों में, यदि यह 5v मोटर है, तो उस वोल्टेज के साथ बिजली की आपूर्ति का उपयोग करना होगा) के लिए ULN12 का पिन +।
- ULN1 के IN2, IN3, IN4 और IN2003 से Arduino के डिजिटल इनपुट D8, D9, D10 और D11।
- 28byj-48 मोटर, बस इसे ULN2003 मॉड्यूल पर पोर्ट से कनेक्ट करें।
अब जब आप कनेक्ट हो गए हैं, तो अगली चीज़ उपयोग करने की है Arduino IDE में एक उदाहरण, जिसे आप अपनी पसंद के अनुसार प्रयोग या संशोधित करने के लिए उपयोग कर सकते हैं। इस उदाहरण में, सभी चरण तालिकाओं पर टिप्पणी की गई है, जैसे पंक्ति के सामने //, आप जानते हैं... यदि आप उनमें से किसी एक का उपयोग करना चाहते हैं, तो निर्देशों के सामने बस // हटा दें।
//Definir los pines const int motorPin1 = 8; // 28BYJ48 In1 const int motorPin2 = 9; // 28BYJ48 In2 const int motorPin3 = 10; // 28BYJ48 In3 const int motorPin4 = 11; // 28BYJ48 In4 //Definición de variables int motorSpeed = 1200; //Velocidad del motor int stepCounter = 0; //Contador de pasos int stepsPerRev = 4076; //Pasos para un giro completo //Tablas de secuencia (descomentar la que necesites) //Secuencia 1-fase //const int numSteps = 4; //const int stepsLookup[4] = { B1000, B0100, B0010, B0001 }; //Secuencia 2-fases //const int numSteps = 4; //const int stepsLookup[4] = { B1100, B0110, B0011, B1001 }; //Secuencia media fase //const int numSteps = 8; //const int stepsLookup[8] = { B1000, B1100, B0100, B0110, B0010, B0011, B0001, B1001 }; void setup() { //Declarar los pines usados como salida pinMode(motorPin1, OUTPUT); pinMode(motorPin2, OUTPUT); pinMode(motorPin3, OUTPUT); pinMode(motorPin4, OUTPUT); } void loop() { for (int i = 0; i < stepsPerRev * 2; i++) { clockwise(); delayMicroseconds(motorSpeed); } for (int i = 0; i < stepsPerRev * 2; i++) { anticlockwise(); delayMicroseconds(motorSpeed); } delay(1000); } void clockwise() { stepCounter++; if (stepCounter >= numSteps) stepCounter = 0; setOutput(stepCounter); } void anticlockwise() { stepCounter--; if (stepCounter < 0) stepCounter = numSteps - 1; setOutput(stepCounter); } void setOutput(int step) { digitalWrite(motorPin1, bitRead(stepsLookup[step], 0)); digitalWrite(motorPin2, bitRead(stepsLookup[step], 1)); digitalWrite(motorPin3, bitRead(stepsLookup[step], 2)); digitalWrite(motorPin4, bitRead(stepsLookup[step], 3)); }