इस बार हम ADXL335 एनालॉग त्रिअक्षीय एक्सेलेरोमीटर को Arduino से जोड़ने से निपटेंगे।
ज़रूरी
- - अरुडिनो;
- - एक्सेलेरोमीटर ADXL335;
- - Arduino IDE डेवलपमेंट एनवायरनमेंट वाला एक पर्सनल कंप्यूटर।
निर्देश
चरण 1
एक्सेलेरोमीटर का उपयोग त्वरण वेक्टर को निर्धारित करने के लिए किया जाता है। ADXL335 एक्सेलेरोमीटर में तीन अक्ष हैं, और इसके लिए धन्यवाद, यह त्रि-आयामी अंतरिक्ष में त्वरण वेक्टर निर्धारित कर सकता है। इस तथ्य के कारण कि गुरुत्वाकर्षण बल भी एक वेक्टर है, एक्सेलेरोमीटर पृथ्वी के केंद्र के सापेक्ष त्रि-आयामी अंतरिक्ष में अपना स्वयं का अभिविन्यास निर्धारित कर सकता है।
चित्रण ADXL335 एक्सेलेरोमीटर के लिए पासपोर्ट (https://www.analog.com/static/imported-files/data_sheets/ADXL335.pdf) से चित्र दिखाता है। अंतरिक्ष में डिवाइस बॉडी के ज्यामितीय प्लेसमेंट के संबंध में एक्सेलेरोमीटर की संवेदनशीलता के समन्वय कुल्हाड़ियों के साथ-साथ अंतरिक्ष में इसके अभिविन्यास के आधार पर 3 एक्सेलेरोमीटर चैनलों से वोल्टेज मानों की एक तालिका यहां दिखाई गई है। तालिका में डेटा आराम से सेंसर के लिए दिया गया है।
आइए देखें कि एक्सेलेरोमीटर हमें क्या दिखाता है। सेंसर को क्षैतिज रूप से लेटने दें, उदाहरण के लिए, एक टेबल पर। फिर त्वरण वेक्टर का प्रक्षेपण Z अक्ष के साथ 1g या Zout = 1g के बराबर होगा। अन्य दो अक्षों में शून्य होंगे: Xout = 0 और Yout = 0। जब सेंसर को "इसकी पीठ पर" घुमाया जाता है, तो इसे गुरुत्वाकर्षण वेक्टर के सापेक्ष विपरीत दिशा में निर्देशित किया जाएगा, अर्थात। ज़ौट = -1 ग्राम। इसी तरह, तीनों अक्षों पर माप लिया जाता है। यह स्पष्ट है कि एक्सेलेरोमीटर को अंतरिक्ष में वांछित के रूप में तैनात किया जा सकता है, इसलिए हम तीनों चैनलों से शून्य के अलावा अन्य रीडिंग लेंगे।
यदि जांच को लंबवत Z-अक्ष के साथ दृढ़ता से हिलाया जाता है, तो Zout मान "1g" से अधिक होगा। किसी भी दिशा में प्रत्येक अक्ष में अधिकतम मापने योग्य त्वरण "3g" है (अर्थात "प्लस" और "माइनस" दोनों के साथ)।
चरण 2
मुझे लगता है कि हमने एक्सेलेरोमीटर के संचालन के सिद्धांत का पता लगा लिया है। अब आइए कनेक्शन आरेख को देखें।
ADXL335 एनालॉग एक्सेलेरोमीटर चिप छोटा है और BGA पैकेज में रखा गया है, और इसे घर पर बोर्ड पर माउंट करना मुश्किल है। इसलिए, मैं ADXL335 एक्सेलेरोमीटर के साथ तैयार GY-61 मॉड्यूल का उपयोग करूंगा। चीनी ऑनलाइन स्टोर में ऐसे मॉड्यूल की कीमत लगभग एक पैसा है।
एक्सेलेरोमीटर को पावर देने के लिए, मॉड्यूल के वीसीसी पिन को वोल्टेज +3, 3 वी की आपूर्ति करना आवश्यक है। सेंसर मापने वाले चैनल Arduino के एनालॉग पिन से जुड़े होते हैं, उदाहरण के लिए, "A0", "A1" और " ए2"। यह पूरा सर्किट है:)
चरण 3
आइए इस स्केच को Arduino मेमोरी में लोड करें। हम तीन चैनलों पर एनालॉग इनपुट से रीडिंग पढ़ेंगे, उन्हें वोल्टेज में परिवर्तित करेंगे और उन्हें सीरियल पोर्ट पर आउटपुट करेंगे।
Arduino में 10-बिट ADC है, और अधिकतम अनुमत पिन वोल्टेज 5 वोल्ट है। मापा वोल्टेज बिट्स के साथ एन्कोड किया गया है जो केवल 2 मान ले सकता है - 0 या 1. इसका मतलब है कि पूरी माप सीमा (1 + 1) से 10 वीं शक्ति में विभाजित की जाएगी, यानी। 1024 बराबर खंडों पर।
रीडिंग को वोल्ट में बदलने के लिए, आपको एनालॉग इनपुट पर मापे गए प्रत्येक मान को 1024 (सेगमेंट) से विभाजित करना होगा, और फिर 5 (वोल्ट) से गुणा करना होगा।
आइए देखें कि एक उदाहरण (अंतिम कॉलम) के रूप में Z-अक्ष का उपयोग करके एक्सेलेरोमीटर से वास्तव में क्या आता है। जब सेंसर क्षैतिज रूप से स्थित होता है और ऊपर दिखता है, तो संख्याएँ आती हैं (2.03 +/- 0.01)। तो यह Z अक्ष के साथ त्वरण "+ 1g" और 0 डिग्री के कोण के अनुरूप होना चाहिए। सेंसर को पलटें। नंबर आते हैं (1, 69 +/- 0, 01), जो "-1g" और 180 डिग्री के कोण के अनुरूप होना चाहिए।
चरण 4
आइए एक्सेलेरोमीटर से 90 और 270 डिग्री के कोण पर मान लें और उन्हें तालिका में दर्ज करें। तालिका एक्सेलेरोमीटर (कॉलम "ए") के रोटेशन के कोण और वोल्ट (कॉलम "बी") में संबंधित ज़ाउट मान दिखाती है।
स्पष्टता के लिए, Zout आउटपुट बनाम रोटेशन कोण पर वोल्टेज का एक प्लॉट दिखाया गया है। नीला क्षेत्र विरामावस्था (1g त्वरण पर) परास है। ग्राफ़ पर गुलाबी बॉक्स एक मार्जिन है जिससे हम त्वरण को + 3g तक और -3g तक माप सकते हैं।
90 डिग्री रोटेशन पर, Z-अक्ष में शून्य त्वरण होता है। वे। 1.67 वोल्ट का मान Z अक्ष के लिए एक सशर्त शून्य Zo है। तब आप इस तरह से त्वरण पा सकते हैं:
g = Zout - Zo / संवेदनशीलता_z, यहां Zout मिलीवोल्ट में मापा गया मान है, Zo मिलीवोल्ट में शून्य त्वरण पर मान है, संवेदनशीलता_z Z अक्ष के साथ सेंसर की संवेदनशीलता है। एक्सेलेरोमीटर को कैलिब्रेट करें और विशेष रूप से आपके लिए संवेदनशीलता मान की गणना करें सूत्र का उपयोग कर सेंसर:
संवेदनशीलता_जेड = [जेड (0 डिग्री) - जेड (90 डिग्री)] * 1000। इस मामले में, जेड अक्ष के साथ एक्सेलेरोमीटर की संवेदनशीलता = (2, 03 - 1, 68) * 1000 = 350 एमवी। इसी तरह, एक्स और वाई अक्षों के लिए संवेदनशीलता की गणना करने की आवश्यकता होगी।
तालिका का कॉलम "सी" 350 की संवेदनशीलता पर पांच कोणों के लिए गणना की गई त्वरण को दर्शाता है। जैसा कि आप देख सकते हैं, वे व्यावहारिक रूप से चित्रा 1 में दिखाए गए लोगों के साथ मेल खाते हैं।
चरण 5
बुनियादी ज्यामिति पाठ्यक्रम को याद करते हुए, हमें एक्सेलेरोमीटर के रोटेशन के कोणों की गणना के लिए सूत्र मिलता है:
angle_X = arctg [sqrt (Gz ^ 2 + Gy ^ 2) / Gx]।
मान रेडियन में हैं। उन्हें डिग्री में बदलने के लिए, पाई से भाग दें और 180 से गुणा करें।
नतीजतन, सभी अक्षों के साथ एक्सेलेरोमीटर के त्वरण और रोटेशन कोणों की गणना करने वाला एक पूरा स्केच चित्रण में दिखाया गया है। टिप्पणियाँ कार्यक्रम कोड के लिए स्पष्टीकरण प्रदान करती हैं।
"सीरियल.प्रिंट ()" पोर्ट पर आउटपुट करते समय, "\ t" वर्ण एक टैब वर्ण को दर्शाता है ताकि कॉलम सम हों और मान एक दूसरे के नीचे स्थित हों। "+" का अर्थ है तारों का संघटन (संयोजन)। इसके अलावा, "स्ट्रिंग ()" ऑपरेटर स्पष्ट रूप से संकलक को बताता है कि संख्यात्मक मान को एक स्ट्रिंग में परिवर्तित किया जाना चाहिए। राउंड () ऑपरेटर कोने को निकटतम 1 डिग्री तक गोल करता है।
चरण 6
इसलिए, हमने सीखा कि कैसे Arduino का उपयोग करके ADXL335 एनालॉग एक्सेलेरोमीटर से डेटा लेना और संसाधित करना है। अब हम अपने डिजाइन में एक्सेलेरोमीटर का उपयोग कर सकते हैं।