विषयसूची:

ATTiny85 कैपेसिटर मीटर: 4 कदम
ATTiny85 कैपेसिटर मीटर: 4 कदम

वीडियो: ATTiny85 कैपेसिटर मीटर: 4 कदम

वीडियो: ATTiny85 कैपेसिटर मीटर: 4 कदम
वीडियो: Attiny85 документация 2024, जुलाई
Anonim
ATTiny85 संधारित्र मीटर
ATTiny85 संधारित्र मीटर
ATTiny85 संधारित्र मीटर
ATTiny85 संधारित्र मीटर

यह निर्देश निम्नलिखित विशेषताओं के साथ ATTiny85 पर आधारित कैपेसिटर मीटर के लिए है।

  • ATTiny85 (DigiStamp) पर आधारित
  • SSD1306 0.96" OLED डिस्प्ले
  • 555 थरथरानवाला का उपयोग करके कम मूल्य के कैपेसिटर 1pF - 1uF के लिए आवृत्ति माप
  • उच्च मूल्य कैपेसिटर के लिए चार्ज समय माप 1uF - 50000uF
  • तारों की धारिता को कम करने के तरीकों के लिए उपयोग किए जाने वाले 2 अलग-अलग पोर्ट
  • बड़े कैपेसिटर के लिए समय को कम करने के लिए चार्ज टाइम के लिए उपयोग किए जाने वाले करंट के दो मान
  • स्टार्ट अप पर ५५५ मेथड सेल्फ जीरो, पुश बटन के साथ फिर से चालू किया जा सकता है
  • माप के प्रत्येक चक्र के लिए किस विधि का उपयोग किया जाना चाहिए, यह चुनने के लिए एक त्वरित परीक्षण का उपयोग किया जाता है।
  • OSCVAL घड़ी आवृत्ति समायोजन के लिए समर्थन द्वारा चार्ज समय विधि सटीकता में सुधार किया जा सकता है

चरण 1: योजनाबद्ध और सिद्धांत

योजनाबद्ध और सिद्धांत
योजनाबद्ध और सिद्धांत

योजनाबद्ध एक I2C इंटरफ़ेस के माध्यम से SSD1306 OLED डिस्प्ले को चलाने वाले ATTiny को दिखाता है। यह सीधे LiOn 300mAh की बैटरी से संचालित होता है और एक चार्जिंग पॉइंट शामिल होता है जिसे LiOn संगत बाहरी चार्जर के साथ उपयोग किया जा सकता है।

पहली माप विधि 555 मुक्त चलने वाले थरथरानवाला की आवृत्ति को मापने पर आधारित है। इसमें प्रतिरोधों और एक संधारित्र द्वारा निर्धारित आधार आवृत्ति होती है जो उच्च सटीकता होनी चाहिए क्योंकि यह माप की सटीकता निर्धारित करती है। मेरे पास 820pF 1% पॉलीस्टाइनिन कैपेसिटर का उपयोग किया गया था, लेकिन 1nF के आसपास के अन्य मूल्यों का उपयोग किया जा सकता है। किसी भी आवारा समाई (~ 20pF) के अनुमान के साथ मान को सॉफ़्टवेयर में दर्ज किया जाना है। इसने लगभग 16KHz की आधार आवृत्ति दी। 555 का आउटपुट ATTiny के PB2 में फीड किया जाता है जिसे हार्डवेयर काउंटर के रूप में प्रोग्राम किया जाता है। लगभग 1 सेकंड की अवधि में गिनती को मापकर आवृत्ति निर्धारित की जा सकती है। यह आधार आवृत्ति निर्धारित करने के लिए स्टार्ट अप पर किया जाता है। जब परीक्षण के तहत संधारित्र को आधार संधारित्र के समानांतर में जोड़ा जाता है तो आवृत्ति कम हो जाती है और जब इसे मापा जाता है और आधार आवृत्ति की तुलना में जोड़ा गया समाई के मूल्य की गणना की जा सकती है।

इस पद्धति की अच्छी विशेषता यह है कि परिकलित मान केवल आधार संधारित्र की सटीकता पर निर्भर करता है। माप की अवधि कोई फर्क नहीं पड़ता। संकल्प आवृत्ति माप के संकल्प पर निर्भर करता है जो काफी अधिक है इसलिए बहुत छोटा जोड़ा समाई भी मापा जा सकता है। सीमित कारक ५५५ थरथरानवाला का 'आवृत्ति शोर' प्रतीत होता है जो मेरे लिए लगभग 0.3pF के बराबर है।

विधि का उपयोग एक सभ्य सीमा पर किया जा सकता है। सीमा में सुधार करने के लिए मैं आने वाली दालों के किनारों का पता लगाने के लिए माप अवधि को सिंक्रनाइज़ करता हूं। इसका मतलब यह है कि कम आवृत्ति दोलन जैसे 12 हर्ट्ज (1uF संधारित्र के साथ) को भी सटीक रूप से मापा जाता है।

बड़े कैपेसिटर के लिए सर्किट को चार्ज टाइमिंग विधि का उपयोग करने के लिए व्यवस्थित किया जाता है। इसमें परीक्षण के तहत संधारित्र यह सुनिश्चित करने के लिए निर्वहन होता है कि यह 0 से शुरू होता है, फिर आपूर्ति वोल्टेज से ज्ञात प्रतिरोध के माध्यम से चार्ज किया जाता है। ATTiny85 में एक ADC का उपयोग कैपेसिटर वोल्टेज की निगरानी के लिए किया जाता है और 0% से 50% चार्ज तक जाने का समय मापा जाता है। इसका उपयोग समाई की गणना के लिए किया जा सकता है। चूंकि एडीसी का संदर्भ भी आपूर्ति वोल्टेज है तो यह माप को प्रभावित नहीं करता है। हालाँकि, लिए गए समय का पूर्ण माप ATTiny85 घड़ी की आवृत्ति पर निर्भर करता है और इसमें भिन्नताएँ परिणाम को प्रभावित करती हैं। ATTiny85 में ट्यूनिंग रजिस्टर का उपयोग करके इस घड़ी की सटीकता में सुधार करने के लिए एक प्रक्रिया का उपयोग किया जा सकता है और इसका वर्णन बाद में किया गया है।

कैपेसिटर को 0V तक डिस्चार्ज करने के लिए एक n-चैनल MOSFET का उपयोग डिस्चार्ज करंट को सीमित करने के लिए कम वैल्यू रेसिस्टर के साथ किया जाता है। इसका मतलब है कि बड़े मूल्य के कैपेसिटर को भी तेजी से डिस्चार्ज किया जा सकता है।

कैपेसिटर को चार्ज करने के लिए चार्जिंग रेसिस्टर के 2 मानों का उपयोग किया जाता है। एक आधार मान कैपेसिटर के लिए 1uF से लेकर लगभग 50uF तक के लिए उचित चार्जिंग समय देता है। एक पी-चैनल एमओएसएफईटी का उपयोग कम प्रतिरोधी में समानांतर करने के लिए किया जाता है ताकि उच्च मूल्य कैपेसिटर्स को उचित अंतराल में मापा जा सके। चुने गए मान 2200uF तक के कैपेसिटर के लिए लगभग 1 सेकंड का माप समय देते हैं और बड़े मूल्यों के लिए आनुपातिक रूप से लंबे होते हैं। मूल्य के निचले सिरे पर माप की अवधि को यथोचित रूप से लंबा रखा जाना चाहिए ताकि ५०% थ्रेशोल्ड के माध्यम से संक्रमण का निर्धारण पर्याप्त सटीकता के साथ किया जा सके। एडीसी की नमूनाकरण दर लगभग 25uSec है इसलिए 22mSec की न्यूनतम अवधि उचित सटीकता देती है।

चूंकि ATTiny में IO (6 पिन) सीमित हैं, इसलिए इस संसाधन का आवंटन सावधानी से करने की आवश्यकता है। डिस्प्ले के लिए 2 पिन की जरूरत होती है, 1 टाइमर इनपुट के लिए, 1 ADC के लिए, 1 डिस्चार्ज कंट्रोल के लिए और 1 चार्ज रेट कंट्रोल के लिए। मैं किसी भी बिंदु पर फिर से शून्य करने की अनुमति देने के लिए एक पुश बटन नियंत्रण चाहता था। यह I2C SCL लाइन को हाईजैक करके किया जाता है। चूंकि I2C सिग्नल ओपन ड्रेन हैं, इसलिए बटन को इस लाइन को नीचे खींचने की अनुमति देने से कोई विद्युत संघर्ष नहीं होता है। डिस्प्ले बटन के दबे होने के साथ काम करना बंद कर देगा लेकिन इसका कोई परिणाम नहीं है क्योंकि बटन जारी होने पर यह फिर से शुरू हो जाता है।

चरण 2: निर्माण

निर्माण
निर्माण
निर्माण
निर्माण
निर्माण
निर्माण

मैंने इसे एक छोटे 55mm x 55mm 3D प्रिंटेड बॉक्स में बनाया है। 4 प्रमुख घटकों को रखने के लिए डिज़ाइन किया गया; ATTiny85 DigiStamp बोर्ड, SSD1306 डिस्प्ले, LiOn बैटरी, और 55 टाइमर और चार्ज कंट्रोल इलेक्ट्रॉनिक्स रखने वाले प्रोटोटाइप बोर्ड का एक छोटा सा हिस्सा।

www.thingiverse.com/thing:4638901. पर संलग्नक

भागों की जरूरत

  • ATTiny85 DigiStamp बोर्ड। मैंने एक माइक्रोयूएसबी कनेक्टर के साथ एक संस्करण का उपयोग किया जो फर्मवेयर अपलोड करने के लिए उपयोग किया जाता है।
  • SSD1306 I2C OLED डिस्प्ले
  • 300 एमएएच लीओन बैटरी
  • प्रोटोटाइप बोर्ड की छोटी पट्टी
  • CMOS 555 टाइमर चिप (TLC555)
  • एन-चैनल MOSFET AO3400
  • पी-चैनल MOSFET AO3401
  • प्रतिरोधक 4R7, 470R, 22K, 2x33K
  • कैपेसिटर 4u7, 220u
  • प्रेसिजन कैपेसिटर 820pF 1%
  • लघु स्लाइड स्विच
  • चार्ज पोर्ट और माप पोर्ट के लिए 2 x 3 पिन हेडर
  • दबाने वाला बटन
  • दीवार
  • तार बांधना

आवश्यक उपकरण

  • फाइन पॉइंट सोल्डरिंग आयरन
  • चिमटी

पहले प्रोटोटाइप बोर्ड पर 555 टाइमर सर्किट और चार्जिंग घटकों को बनाएं। बाहरी कनेक्शन के लिए फ्लाइंग लीड जोड़ें। संलग्नक में स्लाइड स्विच और चार्ज पॉइंट और मापने वाले पोर्ट को चिपकाएं। बैटरी को चिपकाएं और मुख्य पावर वायरिंग को चार्ज पॉइंट, स्लाइड स्विच पर करें। जमीन को पुश बटन से कनेक्ट करें। ATTiny85 को जगह पर लगाएं और हुक अप को पूरा करें।

आप फिटिंग से पहले ATTiny बोर्ड में कुछ बिजली बचत संशोधन कर सकते हैं जिससे करंट थोड़ा कम हो जाएगा और बैटरी लाइफ बढ़ जाएगी।

www.instructables.com/Reducing-Sleep-Curre…

यह महत्वपूर्ण नहीं है क्योंकि उपयोग में न होने पर मीटर को बंद करने के लिए एक पावर स्विच होता है।

चरण 3: सॉफ्टवेयर

इस कैपेसिटर मीटर के लिए सॉफ्टवेयर यहां पाया जा सकता है

github.com/roberttidey/CapacitorMeter

यह एक Arduino आधारित स्केच है। इसे प्रदर्शन के लिए पुस्तकालयों और I2C की आवश्यकता है जो यहां पाया जा सकता है

github.com/roberttidey/ssd1306BB

github.com/roberttidey/I2CTinyBB

ये न्यूनतम मेमोरी लेने के लिए ATTiny के लिए अनुकूलित हैं। I2C लाइब्रेरी एक हाई स्पीड बिट बैंग विधि है जो किसी भी 2 पिन का उपयोग करने की अनुमति देती है। यह महत्वपूर्ण है क्योंकि सीरियल पोर्ट का उपयोग करने वाले I2C तरीके PB2 का उपयोग करते हैं जो कि 555 आवृत्ति को मापने के लिए आवश्यक टाइमर/काउंटर इनपुट के उपयोग के विरोध में है।

सॉफ्टवेयर एक राज्य मशीन के आसपास संरचित है जो राज्यों के एक चक्र के माध्यम से माप लेता है। एक ISR 8 बिट हार्डवेयर का विस्तार करने के लिए टाइमर काउंटर से अतिप्रवाह का समर्थन करता है। एक दूसरा ISR निरंतर मोड में चल रहे ADC का समर्थन करता है। यह दहलीज को पार करने वाले चार्जिंग सर्किट को सबसे तेज प्रतिक्रिया देता है।

प्रत्येक माप चक्र की शुरुआत में एक getMeasureMode फ़ंक्शन यह निर्धारित करता है कि प्रत्येक माप के लिए उपयोग करने के लिए सबसे उपयुक्त तरीका कौन सा है।

जब 555 पद्धति का उपयोग किया जाता है तो गिनती का समय केवल तभी शुरू होता है जब काउंटर बदल गया हो। इसी तरह, नाममात्र माप अंतराल के बाद और किनारे का पता चलने पर ही समय को रोक दिया जाता है। यह सिंक्रनाइज़ेशन कम आवृत्तियों के लिए भी आवृत्ति की सटीक गणना की अनुमति देता है।

जब सॉफ्टवेयर शुरू होता है तो पहले 7 माप 'अंशांकन चक्र' होते हैं जिनका उपयोग 555 की आधार आवृत्ति को बिना किसी संधारित्र के निर्धारित करने के लिए किया जाता है। अंतिम 4 चक्र औसत हैं।

घड़ी ट्यूनिंग के लिए OSCAL रजिस्टर को समायोजित करने के लिए समर्थन है। मेरा सुझाव है कि शुरू में स्केच के शीर्ष पर OSCCAL_VAL को 0 पर सेट करें। इसका मतलब है कि फ़ैक्टरी कैलिब्रेशन का उपयोग तब तक किया जाएगा जब तक कि ट्यूनिंग नहीं हो जाती।

555 बेस कैपेसिटर के मूल्य को समायोजित करने की आवश्यकता है। मैं आवारा समाई के लिए अनुमानित राशि भी जोड़ता हूं।

यदि चार्ज विधियों के लिए विभिन्न प्रतिरोधों का उपयोग किया जाता है, तो सॉफ़्टवेयर में CHARGE_RCLOW और CHARGE_RCHIGH मानों को भी बदलना होगा।

सॉफ़्टवेयर स्थापित करने के लिए सॉफ़्टवेयर अपलोड करने और संकेत मिलने पर यूएसबी पोर्ट को जोड़ने की सामान्य डिजिस्टैम्प विधि का उपयोग करें। पावर स्विच को बंद स्थिति में छोड़ दें क्योंकि इस ऑपरेशन के लिए यूएसबी द्वारा बिजली की आपूर्ति की जाएगी।

चरण 4: संचालन और उन्नत अंशांकन

ऑपरेशन बहुत सीधा है।

इकाई को चालू करने और अंशांकन शून्य के समाप्त होने की प्रतीक्षा करने के बाद परीक्षण के तहत संधारित्र को दो माप बंदरगाहों में से एक से कनेक्ट करें। कम मूल्य के कैपेसिटर <1uF के लिए 555 पोर्ट और उच्च मूल्य कैपेसिटर के लिए चार्ज पोर्ट का उपयोग करें। इलेक्ट्रोलाइटिक कैपेसिटर के लिए नेगेटिव टर्मिनल को कॉमन अर्थ पॉइंट से कनेक्ट करें। परीक्षण के दौरान संधारित्र को लगभग 2V तक चार्ज किया जाएगा।

555 पोर्ट को लगभग 1 सेकंड के लिए पुश बटन में दबाकर और रिलीज करके फिर से चालू किया जा सकता है। सुनिश्चित करें कि इसके लिए 555 पोर्ट से कुछ भी नहीं जुड़ा है।

उन्नत अंशांकन

चार्ज विधि समय मापने के लिए ATTiny85 की पूर्ण घड़ी आवृत्ति पर निर्भर करती है। घड़ी नाममात्र 8MHz घड़ी देने के लिए व्यवस्थित आंतरिक RC थरथरानवाला का उपयोग करती है। हालांकि थरथरानवाला की स्थिरता वोल्टेज और तापमान भिन्नता के लिए काफी अच्छी है, इसकी आवृत्ति काफी कुछ प्रतिशत तक हो सकती है, भले ही यह फ़ैक्टरी कैलिब्रेटेड हो। यह अंशांकन OSCCAL रजिस्टर को स्टार्ट अप पर सेट करता है। फ़ैक्टरी कैलिब्रेशन को आवृत्ति की जाँच करके और एक विशेष ATTiny85 बोर्ड के अनुरूप OSCCAL मान की अधिक इष्टतम सेटिंग बनाकर सुधारा जा सकता है।

मैं अभी तक फर्मवेयर में अधिक स्वचालित विधि में फिट होने में कामयाब नहीं हुआ हूं इसलिए मैं निम्नलिखित मैनुअल प्रक्रिया का उपयोग करता हूं। बाहरी माप क्या उपलब्ध हैं, इसके आधार पर दो भिन्नताएं संभव हैं; या तो एक आवृत्ति मीटर जो 555 बंदरगाह पर त्रिकोणीय तरंग की आवृत्ति को मापने में सक्षम है, या ज्ञात आवृत्ति का एक वर्ग तरंग स्रोत उदा। 0V/3.3V स्तरों के साथ 10KHz जिसे 555 पोर्ट से जोड़ा जा सकता है और काउंटर में उस आवृत्ति को बाध्य करने के लिए तरंग को ओवरराइड कर सकता है। मैंने दूसरी विधि का उपयोग किया।

  1. मीटर को उसकी सामान्य शक्ति पर प्रारंभ करें जिसमें कोई संधारित्र न जुड़ा हो।
  2. फ़्रीक्वेंसी मीटर या स्क्वायर वेव जनरेटर को 555 पोर्ट से कनेक्ट करें।
  3. बटन दबाकर अंशांकन चक्र को पुनरारंभ करें।
  4. अंशांकन चक्र के अंत में प्रदर्शन काउंटर और वर्तमान OSCCAL मान द्वारा निर्धारित आवृत्ति को दिखाएगा। ध्यान दें कि कैलिब्रेशन चक्र का बार-बार उपयोग मापा आवृत्ति और सामान्य नो डिस्प्ले दिखाने के बीच टॉगल करेगा।
  5. यदि प्रदर्शित आवृत्ति ज्ञात से कम है तो इसका मतलब है कि घड़ी की आवृत्ति बहुत अधिक है और इसके विपरीत। मुझे लगता है कि OSCCAL वेतन वृद्धि घड़ी को लगभग 0.05% समायोजित करती है
  6. घड़ी को बेहतर बनाने के लिए नए OSCCAL मान की गणना करें।
  7. फर्मवेयर के शीर्ष पर OSCCAL_VAL में नया OSCCAL मान दर्ज करें।
  8. नए फर्मवेयर का पुनर्निर्माण और अपलोड करें। चरण 1 -5 दोहराएं जो नया OSCCAL मान और नया आवृत्ति माप दिखाना चाहिए।
  9. यदि आवश्यक हो तो सर्वोत्तम परिणाम प्राप्त होने तक चरणों को फिर से दोहराएं।

आपूर्ति वोल्टेज के कारण किसी भी आवृत्ति बदलाव को कम करने के लिए यूएसबी नहीं सामान्य बिजली पर चलते समय इस ट्यूनिंग का माप भाग करना महत्वपूर्ण है।

सिफारिश की: