विषयसूची:

Arduino Timers: 8 प्रोजेक्ट्स: 10 चरण (चित्रों के साथ)
Arduino Timers: 8 प्रोजेक्ट्स: 10 चरण (चित्रों के साथ)

वीडियो: Arduino Timers: 8 प्रोजेक्ट्स: 10 चरण (चित्रों के साथ)

वीडियो: Arduino Timers: 8 प्रोजेक्ट्स: 10 चरण (चित्रों के साथ)
वीडियो: 8 Cool Arduino Science Projects 2024, जून
Anonim
Arduino टाइमर: 8 प्रोजेक्ट
Arduino टाइमर: 8 प्रोजेक्ट

Arduino Uno या Nano तीन बिल्ट-इन टाइमर का उपयोग करके छह समर्पित पिनों पर सटीक डिजिटल सिग्नल उत्पन्न कर सकता है। उन्हें स्थापित करने के लिए केवल कुछ कमांड की आवश्यकता होती है और चलाने के लिए कोई CPU चक्र का उपयोग नहीं करते हैं!

यदि आप ATMEGA328 पूर्ण डेटाशीट से शुरू करते हैं, तो टाइमर का उपयोग करना डराने वाला हो सकता है, जिसमें 90 पृष्ठ उनके विवरण के लिए समर्पित हैं! कई अंतर्निहित Arduino कमांड पहले से ही टाइमर का उपयोग करते हैं, उदाहरण के लिए मिलिस (), देरी (), टोन (), एनालॉगवाइट () और सर्वो लाइब्रेरी। लेकिन उनकी पूरी शक्ति का उपयोग करने के लिए, आपको उन्हें रजिस्टरों के माध्यम से स्थापित करना होगा। इसे आसान और अधिक पारदर्शी बनाने के लिए मैं यहां कुछ मैक्रोज़ और फ़ंक्शंस साझा कर रहा हूँ।

टाइमर के बहुत संक्षिप्त अवलोकन के बाद, 8 कूल प्रोजेक्ट्स का पालन करें जो टाइमर के साथ सिग्नल जनरेशन पर निर्भर करते हैं।

चरण 1: आवश्यक घटक

आवश्यक घटक
आवश्यक घटक

सभी 8 परियोजनाओं को बनाने के लिए आपको आवश्यकता होगी:

  • एक Arduino Uno या संगत
  • मिनी प्रोटोबार्ड के साथ एक प्रोटोटाइप शील्ड
  • 6 ब्रेडबोर्ड जम्पर केबल
  • 6 छोटे ब्रेडबोर्ड जंपर्स (10cm सॉलिड कोर हुकअप वायर से खुद को बनाएं)
  • 2 मगरमच्छ लीड
  • 1 सफेद 5 मिमी एलईडी
  • एक 220 ओम रोकनेवाला
  • एक 10kOhm रोकनेवाला
  • एक 10kOhm पोटेंशियोमीटर
  • 2 सिरेमिक 1muF कैपेसिटर
  • 1 इलेक्ट्रोलाइटिक 10muF संधारित्र
  • 2 डायोड, 1n4148 या समान
  • 2 माइक्रो सर्वो मोटर्स SG90
  • १ ८ओम स्पीकर
  • 20 मीटर पतले (0.13 मिमी) तामचीनी तार

चरण 2: सिग्नल जनरेशन के लिए Arduino टाइमर का अवलोकन

Timer0 और Timer2 8-बिट टाइमर हैं, जिसका अर्थ है कि वे 0 से 255 तक अधिक से अधिक गिन सकते हैं। Timer1 एक 16-बिट टाइमर है, इसलिए यह 65535 तक गिन सकता है। प्रत्येक टाइमर में दो संबद्ध आउटपुट पिन होते हैं: टाइमर0 के लिए 6 और 5, टाइमर1 के लिए 9 और 10, टाइमर2 के लिए 11 और 3। टाइमर प्रत्येक Arduino घड़ी चक्र पर बढ़ता है, या एक प्रीस्केल कारक द्वारा कम की गई दर पर, जो या तो 8, 64, 256 या 1024 (32 और 128 टाइमर 2 के लिए भी अनुमति है)। टाइमर की गिनती 0 से 'टॉप' तक होती है और फिर दोबारा (तेज़ पीडब्लूएम) या नीचे की ओर (चरण सही पीडब्लूएम)। इस प्रकार 'TOP' का मान आवृत्ति निर्धारित करता है। आउटपुट पिन आउटपुट तुलना रजिस्टर के मूल्य पर सेट, रीसेट या फ्लिप कर सकते हैं, इसलिए वे कर्तव्य चक्र निर्धारित करते हैं। केवल टाइमर 1 में दोनों आउटपुट पिन के लिए आवृत्ति और कर्तव्य चक्र को स्वतंत्र रूप से सेट करने की क्षमता है।

चरण 3: एलईडी ब्लिंक

Image
Image
एलईडी ब्लिंक
एलईडी ब्लिंक
एलईडी ब्लिंक
एलईडी ब्लिंक

सबसे कम आवृत्ति जिसे 8-बिट टाइमर के साथ पहुँचा जा सकता है, वह है 16MHz/(511*1024)=30, 6Hz। तो 1Hz के साथ एक LED ब्लिंक करने के लिए, हमें टाइमर1 की आवश्यकता होती है, जो 256 गुना छोटे, 0.12 Hz आवृत्तियों तक पहुंच सकता है।

अपने एनोड (लंबे पैर) के साथ एक एलईडी को पिन9 से कनेक्ट करें और इसके कैथोड को 220 ओम रोकनेवाला के साथ जमीन से कनेक्ट करें। कोड अपलोड करें। एलईडी ठीक 1Hz पर 50% के कर्तव्य चक्र के साथ झपकेगी। लूप () फ़ंक्शन खाली है: टाइमर को सेटअप () में प्रारंभ किया गया है और इसे और अधिक ध्यान देने की आवश्यकता नहीं है।

चरण 4: एलईडी डिमर

Image
Image
एलईडी डिमर
एलईडी डिमर
एलईडी डिमर
एलईडी डिमर

पल्स-चौड़ाई मॉडुलन एक एलईडी की तीव्रता को विनियमित करने का एक प्रभावी तरीका है। एक उचित चालक के साथ, इलेक्ट्रोमोटर्स की गति को नियंत्रित करने के लिए यह पसंदीदा तरीका भी है। चूंकि सिग्नल या तो १००% चालू या १००% बंद है, श्रृंखला प्रतिरोध पर कोई शक्ति बर्बाद नहीं होती है। मूल रूप से, यह आंख की तुलना में तेजी से एलईडी को फ्लैश करने जैसा है। 50 हर्ट्ज सैद्धांतिक रूप से पर्याप्त है, लेकिन यह अभी भी थोड़ा झिलमिलाता हुआ लग सकता है और जब एलईडी या आंखें चलती हैं, तो एक कष्टप्रद गैर-निरंतर 'निशान' परिणाम हो सकता है। 8-बिट टाइमर के साथ 64 के प्रीस्केल का उपयोग करते हुए, हमें 16MHz/(64*256)=977Hz मिलता है, जो इस उद्देश्य के अनुरूप है। हम टाइमर 2 चुनते हैं, ताकि टाइमर 1 अन्य कार्यों के लिए उपलब्ध रहे, और हम Arduino समय () फ़ंक्शन में हस्तक्षेप नहीं करते हैं, जो टाइमर 0 का उपयोग करता है।

इस उदाहरण में कर्तव्य चक्र, और इस प्रकार तीव्रता, एक पोटेंशियोमीटर द्वारा नियंत्रित होती है। पिन 3 पर एक ही टाइमर के साथ एक दूसरी एलईडी को स्वतंत्र रूप से विनियमित किया जा सकता है।

चरण 5: डिजिटल-से-एनालॉग कनवर्टर (डीएसी)

Image
Image
डिजिटल-से-एनालॉग कनवर्टर (डीएसी)
डिजिटल-से-एनालॉग कनवर्टर (डीएसी)
डिजिटल-से-एनालॉग कनवर्टर (डीएसी)
डिजिटल-से-एनालॉग कनवर्टर (डीएसी)

Arduino का वास्तविक एनालॉग आउटपुट नहीं है। कुछ मॉड्यूल एक पैरामीटर (डिस्प्ले कंट्रास्ट, डिटेक्शन थ्रेशोल्ड आदि) को विनियमित करने के लिए एक एनालॉग वोल्टेज लेते हैं। केवल एक संधारित्र और रोकनेवाला के साथ, टाइमर 1 का उपयोग 5mV या बेहतर के संकल्प के साथ एक एनालॉग वोल्टेज बनाने के लिए किया जा सकता है।

एक कम-पास फ़िल्टर पीडब्लूएम सिग्नल को एनालॉग वोल्टेज में 'औसत' कर सकता है। एक संधारित्र एक रोकनेवाला के माध्यम से एक PWM पिन से जुड़ा होता है। विशेषताओं को PWM आवृत्ति और रोकनेवाला और संधारित्र के मूल्यों द्वारा निर्धारित किया जाता है। 8-बिट टाइमर का रिज़ॉल्यूशन 5V/256=20mV होगा, इसलिए हम 10-बिट रिज़ॉल्यूशन प्राप्त करने के लिए Timer1 का विकल्प चुनते हैं। RC सर्किट एक फर्स्ट-ऑर्डर लो-पास फिल्टर है और इसमें कुछ तरंग होगी। आरसी सर्किट का समय-पैमाना लहर को कम करने के लिए पीडब्लूएम सिग्नल की अवधि से काफी बड़ा होना चाहिए। 10-बिट परिशुद्धता के लिए हमें जो अवधि मिलती है वह 1024/16 मेगाहर्ट्ज = 64mus है। यदि हम 1muF संधारित्र और 10kOhm रोकनेवाला, RC=10ms का उपयोग करते हैं। पीक-टू-पीक रिपल अधिकतम 5V*0.5*T/(RC)=16mV है, जिसे यहां पर्याप्त माना जाता है।

ध्यान दें कि इस DAC में बहुत अधिक आउटपुट प्रतिबाधा (10kOhm) है, इसलिए यदि यह करंट खींचता है तो वोल्टेज काफी कम हो जाएगा। इससे बचने के लिए, इसे एक opamp के साथ बफ़र किया जा सकता है, या R और C के किसी अन्य संयोजन को चुना जा सकता है, उदाहरण के लिए 1kOhm 10muF के साथ।

उदाहरण में, DAC आउटपुट को एक पोटेंशियोमीटर के साथ संचालित किया जाता है। पिन 10 पर टाइमर1 के साथ दूसरा स्वतंत्र डीएसी चैनल चलाया जा सकता है।

चरण 6: मेट्रोनोम

Image
Image
मेट्रोनोम
मेट्रोनोम
मेट्रोनोम
मेट्रोनोम

संगीत बजाते समय एक मेट्रोनोम लय पर नज़र रखने में मदद करता है। बहुत कम दालों के लिए, arduino टाइमर आउटपुट सीधे एक स्पीकर को खिलाया जा सकता है, जो स्पष्ट रूप से श्रव्य क्लिक उत्पन्न करेगा। एक पोटेंशियोमीटर के साथ, बीट आवृत्ति को 39 चरणों में 40 से 208 बीट्स प्रति मिनट तक नियंत्रित किया जा सकता है। आवश्यक सटीकता के लिए Timer1 की आवश्यकता है। 'टॉप' का मान, जो आवृत्ति निर्धारित करता है, लूप () फ़ंक्शन के अंदर संशोधित किया जाता है, और इस पर ध्यान देने की आवश्यकता होती है! आप यहां देखते हैं कि WGM मोड अन्य उदाहरणों से भिन्न है जिनकी आवृत्ति निश्चित है: यह मोड, OCR1A रजिस्टर द्वारा TOP सेट के साथ, डबल बफरिंग है और लापता TOP और एक लंबी गड़बड़ होने से बचाता है। हालांकि, इसका मतलब है कि हम केवल 1 आउटपुट पिन का उपयोग कर सकते हैं।

चरण 7: ध्वनि स्पेक्ट्रम

Image
Image
ध्वनि स्पेक्ट्रम
ध्वनि स्पेक्ट्रम
ध्वनि स्पेक्ट्रम
ध्वनि स्पेक्ट्रम

मनुष्य २० हर्ट्ज से २० किलोहर्ट्ज़ तक ध्वनि आवृत्तियों के परिमाण के ३ से अधिक आदेश सुन सकते हैं यह उदाहरण एक पोटेंशियोमीटर के साथ पूर्ण स्पेक्ट्रम उत्पन्न करता है। DC करंट को ब्लॉक करने के लिए स्पीकर और Arduino के बीच एक 10muF कैपेसिटर लगाया जाता है। Timer1 एक वर्गाकार तरंग उत्पन्न करता है। यहां वेवफॉर्म जनरेशन मोड चरण-सही पीडब्लूएम है। उस मोड में, काउंटर शीर्ष पर पहुंचने पर पीछे की ओर गिनना शुरू कर देता है, जिसके परिणामस्वरूप दालों का मतलब निश्चित होता है, भले ही कर्तव्य चक्र भिन्न हो। हालाँकि, यह एक ऐसी अवधि में भी परिणत होता है जो (लगभग) दोगुनी होती है, और यह सिर्फ इतना होता है कि प्रीस्केल 8 के साथ, टाइमर 1 प्रीस्केल को बदलने की आवश्यकता के बिना, पूर्ण श्रव्य स्पेक्ट्रम को कवर करता है। यहां भी, चूंकि टॉप के मूल्य को चलते-फिरते बदला जा रहा है, OCR1A को टॉप के रूप में उपयोग करने से गड़बड़ियां कम हो जाती हैं।

चरण 8: सर्वो मोटर्स

Image
Image
सर्वो मोटर्स
सर्वो मोटर्स
सर्वो मोटर्स
सर्वो मोटर्स

शक्तिशाली सर्वो पुस्तकालय हैं, लेकिन यदि आपके पास ड्राइव करने के लिए केवल दो सर्वो हैं, तो आप इसे सीधे टाइमर 1 के साथ भी कर सकते हैं, और इस प्रकार सीपीयू, मेमोरी उपयोग को कम कर सकते हैं और इंटरप्ट से बच सकते हैं। लोकप्रिय SG90 सर्वो 50Hz सिग्नल लेता है, और पल्स लंबाई स्थिति को कोड करती है। टाइमर 1 के लिए आदर्श। आवृत्ति निश्चित है, इसलिए पिन9 और पिन 10 पर दोनों आउटपुट का उपयोग सर्वो को स्वतंत्र रूप से चलाने के लिए किया जा सकता है।

चरण 9: वोल्टेज डबलर और इन्वर्टर

वोल्टेज डबलर और इन्वर्टर
वोल्टेज डबलर और इन्वर्टर
वोल्टेज डबलर और इन्वर्टर
वोल्टेज डबलर और इन्वर्टर
वोल्टेज डबलर और इन्वर्टर
वोल्टेज डबलर और इन्वर्टर

कभी-कभी आपके प्रोजेक्ट को 5V से अधिक वोल्टेज या ऋणात्मक वोल्टेज की आवश्यकता होती है। यह एक MOSFET चलाने के लिए, एक पीजो तत्व चलाने के लिए, एक opamp को शक्ति देने के लिए, या एक EEPROM को रीसेट करने के लिए हो सकता है। यदि वर्तमान ड्रा काफी छोटा है, तो ~ 5mA तक, एक चार्ज पंप सबसे सरल समाधान हो सकता है: एक टाइमर से स्पंदित सिग्नल से जुड़े सिर्फ 2 डायोड और दो कैपेसिटर, arduino 5V से 10V तक दोगुना करने की अनुमति देते हैं। व्यवहार में, 2 डायोड ड्रॉप्स हैं, इसलिए यह डबललर के लिए अभ्यास में 8.6V या इन्वर्टर के लिए -3.6V जैसा होगा।

डायोड के माध्यम से पर्याप्त चार्ज पंप करने के लिए वर्ग तरंग की आवृत्ति पर्याप्त होनी चाहिए। जब वोल्टेज 0 और 5V के बीच बदलता है, तो 1muF संधारित्र 5muC परिवर्तन को स्थानांतरित करता है, इसलिए 10mA करंट के लिए, आवृत्ति कम से कम 2kHz होनी चाहिए। व्यवहार में, उच्च आवृत्ति बेहतर होती है, क्योंकि यह तरंग को कम करती है। प्रीस्केल के बिना 0 से 255 तक टाइमर 2 की गिनती के साथ, आवृत्ति 62.5kHz है, जो अच्छी तरह से काम करती है।

चरण 10: वायरलेस पावर ट्रांसफर

Image
Image
वायरलेस पावर ट्रांसफर
वायरलेस पावर ट्रांसफर
वायरलेस पावर ट्रांसफर
वायरलेस पावर ट्रांसफर

बिना केबल के स्मार्ट वॉच को चार्ज करना असामान्य नहीं है, लेकिन यह आसानी से एक Arduino प्रोजेक्ट का हिस्सा हो सकता है। एक उच्च आवृत्ति संकेत के साथ एक कुंडल विद्युत संपर्क के बिना, प्रेरण के माध्यम से दूसरे पास के कुंडल को बिजली स्थानांतरित कर सकता है।

सबसे पहले कॉइल्स तैयार करें। मैंने 2 कॉइल बनाने के लिए 8.5 सेमी व्यास के पेपर रोल और 0.13 मिमी व्यास के तामचीनी तार का उपयोग किया: 20 मोड़ के साथ प्राथमिक, 50 मोड़ के साथ माध्यमिक। एन वाइंडिंग और त्रिज्या आर के साथ इस प्रकार के कॉइल का स्व-प्रेरण ~ 5muH * N ^ 2 * R है। इसलिए N = 20 और R = 0.0425 के लिए L = 85muH देता है, जिसकी पुष्टि घटक परीक्षक से की गई थी। हम 516kHz की आवृत्ति के साथ एक संकेत उत्पन्न करते हैं, जिसके परिणामस्वरूप 2pi*f*L=275Ohm की प्रतिबाधा होती है। यह इतना अधिक है कि Arduino अतिप्रवाह में नहीं जाता है।

कॉइल को सबसे प्रभावी ढंग से चलाने के लिए, हम एक सच्चे एसी स्रोत का उपयोग करना चाहेंगे। एक तरकीब है जो की जा सकती है: एक टाइमर के दो आउटपुट को विपरीत चरण में चलाया जा सकता है, किसी एक आउटपुट को इनवर्ट करके। इसे साइन वेव के समान और भी अधिक बनाने के लिए, हम चरण-सही PWM का उपयोग करते हैं। इस तरह, पिन 9 और 10 के बीच, वोल्टेज 0V, पिन 9 +5V, दोनों 0V, पिन 10 +5V दोनों के बीच वैकल्पिक होता है। प्रभाव को स्कोप ट्रेस से चित्र में दिखाया गया है (1024 प्रीस्केल के साथ, इस टॉय स्कोप में अधिक बैंडविड्थ नहीं है)।

प्राइमरी कॉइल को पिन 9 और 10 से कनेक्ट करें। एक एलईडी को सेकेंडरी कॉइल से कनेक्ट करें। जब सेकेंडरी कॉइल को प्राइमरी के करीब लाया जाता है, तो एलईडी तेज रोशनी में आती है।

सिफारिश की: