विषयसूची:

AVR माइक्रोप्रोसेसर के साथ स्टेपर मोटर चलाएं: 8 कदम
AVR माइक्रोप्रोसेसर के साथ स्टेपर मोटर चलाएं: 8 कदम

वीडियो: AVR माइक्रोप्रोसेसर के साथ स्टेपर मोटर चलाएं: 8 कदम

वीडियो: AVR माइक्रोप्रोसेसर के साथ स्टेपर मोटर चलाएं: 8 कदम
वीडियो: Stepper motor using 8051 | Keil & Proteus | ProjeXonic 2024, जुलाई
Anonim
AVR माइक्रोप्रोसेसर के साथ स्टेपर मोटर चलाएं
AVR माइक्रोप्रोसेसर के साथ स्टेपर मोटर चलाएं

प्रिंटर/डिस्क ड्राइव/आदि से कुछ मैला ढोने वाली स्टेपर मोटरें पड़ी हैं?

कुछ एक ओममीटर के साथ जांच कर रहे हैं, उसके बाद आपके माइक्रोप्रोसेसर पर कुछ सरल ड्राइवर कोड और आप शैली में कदम रखेंगे।

चरण 1: स्टेपर्स को जानें

स्टेपर्स को जानें
स्टेपर्स को जानें
स्टेपर्स को जानें
स्टेपर्स को जानें

मूल रूप से, आपको यह पता लगाने की आवश्यकता होगी कि सभी छोटे तार कहाँ जाते हैं।

पहला कदम यह पता लगाना है कि क्या यह एकध्रुवीय या द्विध्रुवी मोटर है। कुछ गहरी पृष्ठभूमि के लिए जोन्स ऑन स्टेपर्स पर एक नज़र डालें, फिर इयान हैरीज़ साइट पर एक अज्ञात मोटर का पता लगाने के लिए एक सरल विधि के लिए। थोड़ा पढ़िए, फिर मेरे साथ इस मोटर के वॉकथ्रू में शामिल हो जाइए जो मुझे सस्ते में मिली है। (वे अभी $0.99 के लिए बिक्री पर हैं। वे छोटे हैं, अपेक्षाकृत हल्के हैं, लेकिन उनमें ज्यादा टॉर्क नहीं है। यह नहीं पता कि यह अभी तक क्या अच्छा होगा।)

चरण 2: सामान्य आधार खोजें

आम जमीन खोजें
आम जमीन खोजें
आम जमीन खोजें
आम जमीन खोजें

तो आपके पास पाँच (या चार, या छह) तार हैं। आपकी मोटर के दो हिस्से होने वाले हैं, और आप शायद यह भी बता सकते हैं कि प्रत्येक तार किस तरफ है।

यदि आप केवल चार तारों को देख रहे हैं, तो आप भाग्य में हैं - यह एक द्विध्रुवी मोटर है। आपको बस यह पता लगाना है कि कौन से दो जोड़े तार एक साथ चलते हैं। यदि आपके पास एकध्रुवीय मोटर है, या 4 से अधिक तार हैं, तो आपको अपने ओममीटर को तोड़ना होगा। आप जो खोज रहे हैं वह प्रत्येक आधे के लिए सामान्य (जमीन) तार है। आप बता सकते हैं कि द्विध्रुवी मोटर में कौन सी जमीन है क्योंकि इसमें ध्रुवों में से किसी एक का आधा प्रतिरोध ध्रुवों की तुलना में होता है। चित्रों में तारों को जोड़ने और प्रतिरोध को नोट करने (या यदि वे बिल्कुल जुड़े हुए हैं) से मेरे नोट्स हैं। आप देख सकते हैं कि सफेद नीचे की तिकड़ी के लिए जमीन है b/c इसमें लाल या नीले रंग का आधा प्रतिरोध है जो उनके पास एक दूसरे के पास है। (यह मोटर अजीब है और शीर्ष चुंबक कॉइल पर केंद्र नल नहीं है। यह आधा-द्विध्रुवीय, आधा-एकध्रुवीय है। हो सकता है कि आप इसका उपयोग रेड-व्हाइट-ब्लू कॉइल में ब्लैक-येलो होने पर रोटेशन को समझने के लिए कर सकें। कुंडल चलाया जा रहा है।)

चरण 3: स्टेपिंग ऑर्डर का चित्र बनाएं

स्टेपिंग ऑर्डर का चित्र बनाएं
स्टेपिंग ऑर्डर का चित्र बनाएं

मैं इस मोटर को द्विध्रुवीय के रूप में चलाने जा रहा था, इसलिए मैं व्हाइट ग्राउंड वायर को अनदेखा कर रहा हूं। मेरे पास चिंता करने के लिए केवल चार तार हैं।

आप वैसे भी अपनी एकध्रुवीय मोटर को बाइपोलर के रूप में चलाना चाह सकते हैं, क्योंकि यह प्रत्येक कॉइल के दो हिस्सों के बीच बारी-बारी से बदलने के बजाय दोनों चरणों में पूरे कॉइल का उपयोग करता है। अधिक कुंडल = अधिक टोक़। एक जोड़ी के माध्यम से करंट चलाएं (आपके द्वारा चुनी गई ध्रुवीयता को ध्यान में रखते हुए) और फिर उसी समय दूसरी जोड़ी के माध्यम से करंट चलाएं। जब आप दूसरी जोड़ी को जोड़ते हैं, तो देखें कि मोटर किस दिशा में मुड़ती है। यह नीचे लिखें। अब आपके द्वारा चुनी गई पहली जोड़ी पर ध्रुवीयता को उलट दें। फिर दूसरी जोड़ी को फिर से उनकी ध्रुवता के साथ जोड़ दें। दिशा नोट करें। इससे आप मोटर को किसी भी दिशा में घुमाने के क्रम का पता लगाने में सक्षम होंगे। मेरे उदाहरण में, दोनों ने वामावर्त मोड़ना समाप्त कर दिया, इसलिए अनुक्रम के माध्यम से उसी तरह से कदम रखना जो मैंने चुना था, मोटर सीसीडब्ल्यू को आगे बढ़ाएगा।

चरण 4: टेस्ट ड्राइव के लिए मोटर लेना

टेस्ट ड्राइव के लिए मोटर लेना
टेस्ट ड्राइव के लिए मोटर लेना

यदि आप माइक्रोप्रोसेसर प्रोग्रामिंग के लिए पहले से तैयार नहीं हैं, तो आप यहूदी बस्ती विकास किट या विभिन्न पीआईसी प्रोग्रामर से भी बदतर कर सकते हैं। तारों को सीधे अपने माइक्रोप्रोक से कनेक्ट करें और इसे निम्न कोड से जलाएं:

/* छोटे स्टेपर मोटर्स को चलाने के साथ खेलना। */

/* विलंब फ़ंक्शन शामिल करें */ #F_CPU 1000000UL को परिभाषित करें #include /* ATTiny2313 के लिए पिन डिफ्स *//* दक्षिणावर्त क्रम */ # परिभाषित करें BLUE _BV(PB0) #define BLACK _BV(PB1) #define RED _BV(PB2) #define YELLOW _BV(PB3) #डिफाइन DELAY 200 /* चरणों के बीच मिलीसेकंड */ int main(void){ DDRB = 0xff; /* सभी बी पिनों पर आउटपुट सक्षम करें */ PORTB = 0x00; /* उन सभी को 0v पर सेट करें */ जबकि(1){/* मुख्य लूप यहां */ PORTB = BLUE; _delay_ms (देरी); पोर्टब = काला; _delay_ms (देरी); पोर्टब = लाल; _delay_ms (देरी); पोर्टब = पीला; _delay_ms (देरी); } } वह कोड कितना आसान है? वास्तव में सरल। यह सब कुछ अच्छी परिभाषाएँ बनाता है ताकि मैं तारों को उनके पिन-नामों के बजाय रंग से संदर्भित कर सकूं, और फिर यह बीच में एक समायोज्य देरी के साथ उन्हें क्रम से चालू करता है। शुरुआत के लिए, मैंने चरणों के बीच आधे सेकंड की देरी का चयन किया। परिणामों के लिए लघु वीडियो देखें। यदि आप वास्तव में अपने खेल पर हैं, तो मोटर के सिंगल-स्टेपिंग कोणीय रिज़ॉल्यूशन का पता लगाने के लिए प्रति चक्र चरणों की संख्या गिनें। (अरे हाँ। PS। बिना लोड के 3.6v पर आसानी से ड्राइव करता है। वीडियो में बैटरी देखें।)

चरण 5: इसे आगे और पीछे घुमाएं

तो आपने इसे दक्षिणावर्त चालू कर दिया है। कुछ और दिलचस्प? थोड़ा कोड-क्लीनअप, और हम इसे आगे और पीछे चला सकते हैं। मैंने दक्षिणावर्त अनुक्रम को एक सरणी में रखा है ताकि आप चरणों के माध्यम से लूप के लिए सरल के साथ कदम उठा सकें। अब आप दक्षिणावर्त या वामावर्त जाने के लिए लूप को ऊपर या नीचे चला सकते हैं।

int मुख्य(शून्य){ const uint8_t देरी = 50; const uint8_t क्लॉकवाइज = {नीला, काला, लाल, पीला}; uint8_t मैं; डीडीआरबी = 0xff; /* सभी बी पिनों पर आउटपुट सक्षम करें */ PORTB = 0x00; /* उन सभी को 0v पर सेट करें */ जबकि(1){/* मुख्य लूप यहां */ के लिए (i=0; i<=3; i++){/* रंगों के माध्यम से कदम दक्षिणावर्त */ PORTB = दक्षिणावर्त; _delay_ms (देरी); } के लिए (i=3; i>=0; i--){/* रंगों के माध्यम से कदम ccw */ PORTB = क्लॉकवाइज ; _delay_ms (देरी); } }} आगे और पीछे के लिए रस्मी वीडियो देखें।

चरण 6: मैं कभी आधा कदम नहीं रखता, क्योंकि मैं आधा कदम नहीं हूं …

क्वेस्ट गीत एक तरफ, अपनी मोटर को आधा-कदम पर रखते हुए वह कहाँ है। आपको अधिक पीक करंट, अधिक तात्कालिक टॉर्क और कोणीय रिज़ॉल्यूशन का दोगुना मिलता है। संक्षेप में आधा कदम: नीले, काले, लाल, पीले रंग के बजाय, आप नीले, नीले + काले, काले, काले + लाल, लाल, लाल + पीले, पीले, पीले + नीले रंग के साथ मोटर चलाते हैं। नतीजा यह है कि आधे समय के लिए आप दोनों चुम्बकों को एक साथ जोड़ रहे हैं। और उस समय के दौरान जब दोनों सेट लगे होते हैं, मोटर दोनों के बीच आधे रास्ते की ओर इशारा करता है, "कदमों" के बीच के कोण को सिकोड़ता है और मोटर को अधिक सुचारू रूप से चालू करता है। क्या आप वीडियो से बता सकते हैं? मुझे यकीन नहीं है … अब कोड का वह भाग जो आधा-कदम करता है, इस तरह दिखता है:

शून्य आधा कदम (uint16_t देरी, uint8_t दिशा ) {uint8_t i; के लिए (i=0; i<=3; i++){ PORTB = दिशा ; /* सिंगल-कॉइल पार्ट */ _delay_ms(देरी); PORTB |= दिशा [i+1]; /* अर्ध-चरण में जोड़ें */ _delay_ms(देरी); }} पहला PORTB कमांड सिंगल पोल को पॉजिटिव और बाकी सभी को नेगेटिव पर सेट करता है। फिर इंतजार करता है। फिर दूसरा PORTB कमांड एक दूसरे पोल (दूसरी वाइंडिंग पर) को पॉजिटिव पर सेट करता है, दोनों वाइंडिंग को 1.4x टॉर्क (और 2x करंट) के लिए उलझाता है। एक पूर्ण कार्यक्रम सूची नीचे संलग्न है। दो सरणियों को अब परिभाषित किया गया है (दक्षिणावर्त, वामावर्त) और दोनों में प्रत्येक में 5 तत्व हैं जो हाफस्टेपिंग फ़ंक्शन में i+1 प्रविष्टि की अनुमति देते हैं।

चरण 7: एक मोटर चालक जोड़ें

एक मोटर चालक जोड़ें
एक मोटर चालक जोड़ें
एक मोटर चालक जोड़ें
एक मोटर चालक जोड़ें
एक मोटर चालक जोड़ें
एक मोटर चालक जोड़ें

अब तक सब ठीक है।

केवल समस्या यह है कि मोटर में इतना अधिक टॉर्क नहीं लगता है, जो इस तथ्य के कारण हो सकता है कि माइक्रोप्रोसेसर केवल ~ 50mA प्रति पिन लगाएगा। स्पष्ट अगला कदम यह होगा कि इसे अधिक रस के साथ आपूर्ति करने के लिए इसे मोटर चालक से जोड़ा जाए। लेकिन फिर थोड़ा सोचिए: मैं इसे केवल 5v के साथ चला रहा हूं, और कुंडल-घुमावदार प्रतिरोध ~ 125 ओम है। जिसका अर्थ है कि मोटर केवल 40mA प्रति पिन खींच रहा है, और इसे (गोमांस!) AVR चिप द्वारा ठीक से संचालित किया जाना चाहिए। इसलिए मोटर चलाने में अधिक वोल्टेज प्राप्त करने के लिए, मैंने इसे SN754410 H- ब्रिज चिप से जोड़ दिया। सर्किट काफी सरल है। AVR से प्रत्येक पिन एक इनपुट में जाता है, और संबंधित आउटपुट पिन मोटर में जाता है। लॉजिक सेक्शन के लिए चिप को 5v की आवश्यकता होती है, और मोटर सेक्शन में बहुत अधिक वोल्टेज ले सकता है। इसे 11.25v (तीन 3.6v बैटरी) पर चलाने से थोड़ी मदद मिली। मेरी उंगली में काफी अधिक टॉर्क है, लेकिन यह अभी भी पावरहाउस नहीं है। हालांकि, निकल से छोटी मोटर के लिए बुरा नहीं है। और अब सर्किट एक सामान्य-उद्देश्य द्विध्रुवी स्टेपर मोटर चालक बन गया है। 29 नवंबर को जोड़ा गया: कल रात 12 वी पर थोड़ी देर के लिए मोटर चलाई और यह गर्म होने लगी। मुझे यकीन नहीं है कि यह एक गुंजयमान आवृत्ति समस्या थी या यदि यह वाइंडिंग के लिए बहुत अधिक वर्तमान थी। किसी भी तरह से, अगर आप इस छोटी मोटर को बड़े वोल्टेज के साथ चला रहे हैं तो थोड़ा सावधान रहें।

चरण 8: अंत

तो मैंने क्या सीखा? एवीआर (और एच-ब्रिज चिप) के साथ स्टेपर मोटर चलाना बहुत आसान है, यहां तक कि "फैंसी" हाफ-स्टेपिंग मोड में भी।

मुझे यकीन नहीं है कि मैं अभी तक छोटे स्टेपर मोटर्स के साथ क्या करूंगा। कोई सुझाव?

सिफारिश की: