El 28BYJ-48 ही युनिपोलर स्टेपर मोटर आहे कमी किमतीत आणि उच्च सुस्पष्टता, इलेक्ट्रॉनिक्स प्रकल्पांसाठी, 3D प्रिंटर, CNC मशीन आणि रोबोटिक्ससाठी आदर्श. त्याचा कॉम्पॅक्ट आकार, कमी उर्जा वापर आणि वापरणी सुलभतेमुळे ते इलेक्ट्रॉनिक्सचे शौकीन आणि व्यावसायिकांसाठी लोकप्रिय पर्याय बनले आहे.
शिवाय, या इंजिनसह, ए ULN2003 सह मॉड्यूल, तुमच्या नियंत्रणासाठी. अशाप्रकारे, मायक्रोकंट्रोलर किंवा बोर्ड वापरून, ही प्रणाली पूर्णपणे वापरण्यास सक्षम होण्यासाठी आमच्याकडे आवश्यक सर्वकाही आहे Arduino किंवा तत्सम.
28BYJ-48 स्टेपर मोटर म्हणजे काय?
Un स्टेपर मोटर ही इलेक्ट्रिक मोटरचा एक प्रकार आहे जे सतत फिरण्याऐवजी लहान वेगळ्या कोनीय पायऱ्यांमध्ये फिरते. हे इलेक्ट्रोमॅग्नेट्सचा संच वापरून कार्य करते जे एका विशिष्ट क्रमाने सक्रिय केले जातात. विविध इलेक्ट्रोमॅग्नेट्स सक्रिय करून, एक चुंबकीय क्षेत्र तयार केले जाते जे मोटर रोटरला आकर्षित करते, ज्यामुळे ते एका वेळी एक पाऊल फिरते. प्रति क्रांती चरणांची संख्या आणि हालचालींची अचूकता विशिष्ट मोटर डिझाइन आणि वापरलेल्या नियंत्रण अनुक्रमांवर अवलंबून असते.
स्टेपर मोटर्समध्ये आमच्याकडे दोन प्रकार आहेत:
- एकध्रुवीय- त्यांच्याकडे कॉइलचा एकच संच असतो आणि विद्युत प्रवाह उलट करण्यासाठी आणि मोटर दोन्ही दिशेने फिरवण्यासाठी विशेष नियंत्रकाची आवश्यकता असते.
- द्विध्रुवीय- त्यांच्याकडे स्वतंत्र कॉइलचे दोन संच आहेत, ज्यामुळे त्यांना विशेष नियंत्रकाची गरज न पडता दोन्ही दिशेने फिरता येते.
28BYJ-28 च्या बाबतीत हा एकध्रुवीय प्रकार आहे, जसे मी आधी नमूद केले आहे. आणि, या गटामध्ये, हे खालील गोष्टींद्वारे वैशिष्ट्यीकृत आहे तपशील:
- एकध्रुवीय स्टेपर: फक्त 4 केबल्ससह साधे नियंत्रण.
- एकात्मिक रेड्यूसर: उच्च सुस्पष्टता (0.088° प्रति पायरी) आणि टॉर्क (3 N·cm) देते.
- कमी खप: 83 mA (5V मॉडेल) किंवा 32 mA (12V मॉडेल).
- अन्न: 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 |
Arduino सह 28BYJ-28
प्रथम गोष्ट योग्यरित्या कनेक्ट करणे आहे मॉड्यूल आणि मोटर 28byj-48 आमच्या Arduino बोर्डवर, हे करण्यासाठी, तुम्हाला फक्त खालील कनेक्शन करावे लागतील:
- पिन - ULN2003 पासून Arduino च्या GND पर्यंत.
- ULN2003 चा पिन + Vcc ला (5v किंवा इतर बाबतीत, जर ती 12v मोटर असेल तर, त्या व्होल्टेजसह वीजपुरवठा वापरावा लागेल) Arduino वरून.
- 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)); }