- अवयव आवश्यक
- सर्वो मोटर का पिन विवरण
- सर्किट आरेख
- AVR ATmega16 के साथ सर्वो मोटर को नियंत्रित करना
- प्रोग्रामिंग Atmega16 USBasp का उपयोग करना
सर्वो मोटर्स का व्यापक रूप से उपयोग किया जाता है जहां सटीक नियंत्रण की आवश्यकता होती है जैसे कि रोबोट, स्वचालित मशीन, रोबोट आर्म आदि। हालांकि, इमदादी मोटर का दायरा इस तक सीमित नहीं है और इसका उपयोग कई अनुप्रयोगों में किया जा सकता है। सर्वो मोटर की मूल बातें, सिद्धांत और कार्य सिद्धांत के बारे में अधिक जानने के लिए लिंक का अनुसरण करें।
हमने पहले कई माइक्रोकंट्रोलर्स के साथ सर्वो मोटर को बाधित किया था:
- ARM7-LPC2148 के साथ सर्वो मोटर में हस्तक्षेप करना
- MSP430G2 के साथ सर्वो मोटर में हस्तक्षेप करना
- STM32F103C8 के साथ सर्वो मोटर में हस्तक्षेप करना
- MPLAB और XC8 का उपयोग करके PIC माइक्रोकंट्रोलर के साथ सर्वो मोटर को इंटरफैस करना
- Arduino Uno के साथ Interfacing सर्वो मोटर
- 8051 माइक्रोकंट्रोलर के साथ सर्वो मोटर इंटरफेसिंग
इस ट्यूटोरियल में, हम Atmelga 7.0 का उपयोग करके Atmega16 AVR माइक्रोकंट्रोलर के साथ माइक्रो सर्वो मोटर को इंटरफेस करेंगे । सर्वो मोटर को 4.8-6V में काम करने के लिए रेट किया गया है। हम पल्स ट्रेन या पीडब्लूएम संकेतों को लागू करके इसके रोटेशन और दिशा के कोण को नियंत्रित कर सकते हैं। ध्यान दें कि सर्वो मोटर्स पूर्ण 360 डिग्री रोटेशन के लिए स्थानांतरित नहीं कर सकते हैं, इसलिए उनका उपयोग किया जाता है जहां निरंतर रोटेशन की आवश्यकता नहीं होती है। रोटेशन कोण 0 -180 डिग्री या (-90) - (+90) डिग्री है।
अवयव आवश्यक
- SG90 टॉवर प्रो माइक्रो सर्वो मोटर
- एटमेगा 16 माइक्रोकंट्रोलर आई.सी.
- 16Mhz क्रिस्टल थरथरानवाला
- दो 100nF कैपेसिटर
- दो 22pF कैपेसिटर
- बटन दबाओ
- जम्पर तार
- ब्रेड बोर्ड
- USBASP v2.0
- एलईडी (कोई भी रंग)
सर्वो मोटर का पिन विवरण
- लाल = सकारात्मक विद्युत आपूर्ति (4.8V से 6V)
- भूरा = मैदान
- ऑरेंज = कंट्रोल सिग्नल (PWM पिन)
सर्किट आरेख
AVR माइक्रोकंट्रोलर का उपयोग करके सर्वो मोटर को घुमाने के लिए नीचे दिए गए आरेख में दिखाए गए अनुसार सभी घटकों को कनेक्ट करें । चार PWM पिन हैं, हम Atmega16 के किसी भी PWM पिन का उपयोग कर सकते हैं। इस ट्यूटोरियल में हम पीडब्लूएम उत्पन्न करने के लिए पिन पीडी 5 (ओसी 1 ए) का उपयोग कर रहे हैं। PD5 इमदादी मोटर के नारंगी तार से सीधे जुड़ा हुआ है जो इनपुट सिग्नल पिन है। पावर इंडिकेटर के लिए किसी भी रंग का नेतृत्व करें। इसके अलावा, जब भी आवश्यकता हो Atmega16 को रीसेट करने के लिए रीसेट पिन में एक पुश बटन कनेक्ट करें। Atmega16 को उचित क्रिस्टल ऑसिलेटर सर्किट से कनेक्ट करें। सभी सिस्टम 5 वी आपूर्ति द्वारा संचालित होंगे।
पूरा सेटअप नीचे की तरह दिखेगा:
AVR ATmega16 के साथ सर्वो मोटर को नियंत्रित करना
स्टेपर मोटर की तरह, सर्वो मोटर को किसी बाहरी ड्राइवर की आवश्यकता नहीं होती है, जैसे ULN2003 या L293D मोटर ड्राइवर। बस PWM सर्वो मोटर को चलाने के लिए पर्याप्त है और एक माइक्रोकंट्रोलर से PWM उत्पन्न करना बहुत आसान है। इस सर्वो मोटर का टॉर्क 2.5 किग्रा / सेमी है, इसलिए यदि आपको अधिक टॉर्क की आवश्यकता है तो यह सर्वो उपयुक्त नहीं है।
जैसा कि हम जानते हैं कि सर्वो मोटर हर 20ms में एक पल्स की तलाश करती है और पॉजिटिव पल्स की लंबाई सर्वो मोटर के रोटेशन कोण को निर्धारित करेगी।
20ms पल्स प्राप्त करने के लिए आवश्यक आवृत्ति 50Hz (f = 1 / T) है। तो इस सर्वो मोटर के लिए, विनिर्देश कहता है कि 0 डिग्री के लिए हमें 0.388ms की आवश्यकता है, 90 डिग्री के लिए हमें 1.264ms की आवश्यकता है और 180 डिग्री के लिए हमें 2.14ms पल्स की आवश्यकता है।
निर्दिष्ट दालों को उत्पन्न करने के लिए हम Atmega16 के टाइमर 1 का उपयोग करेंगे। CPU फ्रीक्वेंसी 16Mz है लेकिन हम केवल 1Mhz का उपयोग कर रहे हैं क्योंकि हमारे पास माइक्रोकंट्रोलर से जुड़ी अधिक परिधीयता नहीं है और माइक्रोकंट्रोलर पर ज्यादा लोड नहीं है, इसलिए 1Mhz काम करेगा। Prescaler को 1 पर सेट किया गया है। इसलिए घड़ी को 1Mhz / 1 = 1Mhz (1uS) के रूप में विभाजित किया गया है जो कि शानदार है। Timer1 वांछित नाड़ी ट्रेन उत्पन्न करने के लिए टाइमर के विभिन्न तरीकों का उपयोग कर सकते तेजी से PWM मोड यानी मोड 14. आप के रूप में इस्तेमाल किया जाएगा। संदर्भ नीचे दिया गया है और आप Atmega16 आधिकारिक डेटशीट में अधिक विवरण पा सकते हैं।
Timer1 को तेज PWM मोड के रूप में उपयोग करने के लिए हमें ICR1 (इनपुट कैप्चर रजिस्टर 1) के शीर्ष मूल्य की आवश्यकता होगी। नीचे दिए गए TOP मान उपयोग सूत्र को खोजने के लिए:
f pwm = f cpu / nx (1 + TOP)
इसे सरल बनाया जा सकता है, TOP = ( f cpu / ( f pwm xn)) - 1
जहां, एन = मूल्य प्रस्कलर सेट
f सीपीयू = सीपीयू फ्रीक्वेंसी
f pwm = सर्वो मोटर पल्स चौड़ाई जो 50 हर्ट्ज है
अब ICR1 मान की गणना करें क्योंकि हमारे पास आवश्यक सभी मूल्य हैं, N = 1, f cpu = 1MHz, f pwm = 50Hz
बस मूल्यों को उपरोक्त सूत्र में रखें और हम प्राप्त करेंगे
ICR1 = 1999
इसका मतलब अधिकतम डिग्री प्राप्त करना है अर्थात 180 0 ICR1 1999 होना चाहिए।
16 मेगाहर्ट्ज क्रिस्टल और 16 के लिए प्रस्केलर सेट के लिए, हमारे पास होगा
ICR1 = 4999
अब हम स्केच पर चर्चा करते हैं।
प्रोग्रामिंग Atmega16 USBasp का उपयोग करना
सर्वो मोटर को नियंत्रित करने के लिए पूर्ण AVR कोड नीचे दिया गया है। कोड सरल है और आसानी से समझा जा सकता है।
यहाँ हम 0 से इमदादी मोटर बारी बारी से करने ATmega16 कोड किया है 0 180 करने के लिए 0 और 180 से फिर से वापस आ रहा 0 0 के 0 । यह संक्रमण 9 चरणों में पूरा होगा अर्थात 0 - 45 - 90 - 135 - 180 - 135 - 90 - 45 - 0. विलंब के लिए, हम Atmel Studio की आंतरिक लाइब्रेरी का उपयोग करेंगे अर्थात
अपने USBASP v2.0 से कनेक्ट करें और Atmega16 AVR माइक्रोकंट्रोलर को USBASP और Atmel Studio 7.0 का उपयोग करके प्रोग्राम करने के लिए इस लिंक के निर्देशों का पालन करें । बस स्केच का निर्माण करें और बाहरी टूलकिन का उपयोग करके अपलोड करें।
प्रदर्शन वीडियो के साथ पूरा कोड नीचे दिया गया है। रोबोटिक्स में उनके महत्व को जानकर सर्वो मोटर्स के बारे में और जानें।