- सामग्री की आवश्यकता:
- गणना की गति और दूरी:
- सर्किट आरेख और हार्डवेयर सेटअप:
- सिमुलेशन:
- अपने PIC16F877A प्रोग्रामिंग:
- कार्य स्पष्टीकरण:
किसी वाहन या मोटर की गति / आरपीएम को मापना हमारे लिए हमेशा एक आकर्षक परियोजना रही है। इसलिए, इस परियोजना में हम औद्योगिक तैयार PIC माइक्रोकंट्रोलर का उपयोग करके निर्माण करने जा रहे हैं। हम गति मापने के लिए चुंबक और हॉल सेंसर के एक टुकड़े का उपयोग करेंगे। गति को मापने के अन्य तरीके / सेंसर हैं लेकिन, हॉल सेंसर का उपयोग करना सस्ता है और इसका उपयोग किसी भी प्रकार के मोटर / वाहन पर भी किया जा सकता है। इस परियोजना को करने से हम PIC16F877A सीखने में अपने कौशल को भी बढ़ाएंगे क्योंकि परियोजना में इंटरप्ट और टाइमर का उपयोग शामिल है। इस परियोजना के अंत में, आप किसी घूर्णन वस्तु द्वारा कवर की गई गति और दूरी की गणना करने में सक्षम होंगे और उन्हें 16x2 एलसीडी स्क्रीन पर प्रदर्शित करेंगे। इस डिजिटल स्पीडोमीटर और ओडोमीटर सर्किट को PIC के साथ शुरू करें ।
सामग्री की आवश्यकता:
- PIC16F877A
- 7805 वोल्टेज नियामक
- हॉल इफेक्ट सेंसर (US1881 / 04E)
- 16 * 2 एलसीडी डिस्प्ले
- चुम्बक का एक छोटा टुकड़ा
- तारों को जोड़ना
- संधारित्र
- ब्रेड बोर्ड।
- बिजली की आपूर्ति
गणना की गति और दूरी:
इससे पहले कि हम वास्तव में सर्किट का निर्माण शुरू करें, हमें यह समझने दें कि हम एक पहिया की गति की गणना करने के लिए हॉल सेंसर और चुंबक का उपयोग कैसे करेंगे। पहले हमने Arduino Speedometer के निर्माण के लिए उसी तकनीक का उपयोग किया है जो Android Smart Phone पर रीडिंग प्रदर्शित करता है।
एक हॉल सेंसर एक उपकरण है जो एक ध्रुवता के आधार पर चुंबक की उपस्थिति का पता लगा सकता है। हम पहिया पर चुंबक का एक छोटा सा टुकड़ा चिपकाते हैं और हॉल सेंसर को उसके पास इस तरह से रखते हैं कि हर बार पहिया घूमने पर हॉल सेंसर इसका पता लगाता है। फिर हम व्हील के एक पूर्ण रोटेशन के लिए लगने वाले समय की गणना करने के लिए अपने PIC माइक्रोकंट्रोलर पर टाइमर और इंटरप्ट की मदद का उपयोग करते हैं।
एक बार लिया गया समय ज्ञात होने पर, हम नीचे दिए गए सूत्रों का उपयोग करके RPM की गणना कर सकते हैं, जहाँ 1000 / समय लिया गया है, हमें RPS देगा और इसे 60 से गुणा करने पर आपको RPM मिलेगा
आरपीएम = (1000 / समयरेखा) * 60;
जहां (1000 / समयसीमा) आरपीएस (प्रति सेकंड क्रांतियों) देता है और आरपीएस को आरपीएम (प्रति मिनट क्रांतियों) में बदलने के लिए इसे 60 से गुणा किया जाता है।
अब वाहन के वेग की गणना करने के लिए हमें पहिया के त्रिज्या को जानना होगा। हमारे प्रोजेक्ट में हमने एक छोटे से टॉय व्हील का इस्तेमाल किया है, जिसमें सिर्फ 3 सेमी का त्रिज्या है। लेकिन, हमने माना कि पहिया का त्रिज्या 30 सेमी (0.3 मी) होना चाहिए ताकि हम रीडिंग की कल्पना कर सकें।
मान भी 0.37699 से गुणा किया जाता है क्योंकि हम जानते हैं कि वेग = (RPM (व्यास * Pi) / 60)। सूत्र नीचे दिए गए हैं
v = radius_of_wheel * rpm * 0.37699;
एक बार जब हम वेग की गणना करते हैं तो हम एक समान विधि का उपयोग करके तय की गई दूरी की भी गणना कर सकते हैं। हमारे हॉल और चुंबक व्यवस्था से हम जानते हैं कि पहिया कितनी बार घूम चुका है। हम पहिया की त्रिज्या को भी जानते हैं, जिसके प्रयोग से हम पहिए की परिधि ज्ञात कर सकते हैं, मान लें कि पहिए की त्रिज्या 0.3m (R) परिधि का मान है। पाई * R * R का मान 0.2827 होगा। इसका मतलब है कि हर बार जब हॉल सेंसर चुंबक से मिलता है तो पहिया द्वारा 0.2827 मीटर की दूरी तय की जाती है।
दूरी_वर्धित = दूरी_वर्धित + परिधि_प्रवृत्त_करना
चूंकि, अब हम जानते हैं कि यह परियोजना कैसे काम करेगी जो हमारे सर्किट आरेख पर आगे बढ़ती है और इसका निर्माण शुरू करती है।
सर्किट आरेख और हार्डवेयर सेटअप:
इस स्पीडोमीटर और ओडोमीटर प्रोजेक्ट का सर्किट आरेख बहुत सरल है और इसे ब्रेडबोर्ड पर बनाया जा सकता है। यदि आप PIC ट्यूटोरियल्स का अनुसरण कर रहे हैं तो आप उस हार्डवेयर का भी पुनः उपयोग कर सकते हैं जिसका उपयोग हमने PIC माइक्रोकंट्रोलर सीखने के लिए किया था। यहां हमने वही परफ़ॉर्म बोर्ड का उपयोग किया है, जिसे हमने PIC Microcontroller के साथ LED ब्लिंकिंग के लिए बनाया है, जैसा कि नीचे दिखाया गया है:
PIC16F877A MCU के लिए पिन कनेक्शन नीचे दी गई तालिका में दिए गए हैं।
S.No: |
पिन नम्बर |
पिन नाम |
से जुड़ा |
1 |
२१ |
RD2 |
एलसीडी का आर.एस. |
२ |
२२ |
RD3 |
ई का एलसीडी |
३ |
२। |
RD4 |
डी 4 की एलसीडी |
४ |
२। |
RD5 |
डी 5 की एलसीडी |
५ |
२ ९ |
RD6 |
डी 6 एलसीडी की |
६ |
३० |
RD7 |
डी 7 की एलसीडी |
। |
३३ |
RB0 / INT |
हॉल सेंसर के 3 आरडी पिन |
एक बार जब आप अपने प्रोजेक्ट का निर्माण करते हैं, तो उसे नीचे दी गई तस्वीर में कुछ इस तरह दिखना चाहिए
जैसा कि आप देख सकते हैं कि मैंने मोटर और एक हॉल सेंसर को पास की स्थिति में रखने के लिए दो बक्से का उपयोग किया है। आप अपने घूमने वाले ऑब्जेक्ट पर चुंबक को ठीक कर सकते हैं और हॉल सेंसर को इस तरह से बंद कर सकते हैं कि वह चुंबक का पता लगा सके।
नोट: हॉल सेंसर में ध्रुवताएं हैं, इसलिए सुनिश्चित करें कि यह किस ध्रुव का पता लगा रहा है और उसी के अनुसार लगाएं।
यह भी सुनिश्चित करें कि आप हॉल सेंसर के आउटपुट पिन के साथ पुल-अप रोकनेवाला का उपयोग करें।
सिमुलेशन:
इस परियोजना के लिए सिमुलेशन प्रोटीन का उपयोग करके किया जाता है। चूंकि परियोजना में चलती वस्तुओं को शामिल किया गया है इसलिए सिमुलेशन का उपयोग करके पूरी परियोजना को प्रदर्शित करना संभव नहीं है लेकिन एलसीडी के काम को सत्यापित किया जा सकता है। बस हेक्स फ़ाइल को सिमुलेशन में लोड करें और इसे अनुकरण करें। आप नीचे दिखाए गए अनुसार काम करने वाले एलसीडी को नोटिस कर पाएंगे।
स्पीडोमीटर और ओडोमीटर की जांच करने के लिए मैं काम कर रहा हूं मैंने एक लॉजिक स्टेट डिवाइस के साथ हॉल सेंसर को बदल दिया है। सिमुलेशन के दौरान आप इंटरप्ट को ट्रिगर करने के लिए लॉजिक स्टेट बटन पर क्लिक कर सकते हैं और जांच सकते हैं कि गति और दूरी को कवर किया गया है जैसा कि ऊपर दिखाया गया है।
अपने PIC16F877A प्रोग्रामिंग:
जैसा कि पहले कहा गया था कि हम पहिए के एक पूर्ण रोटेशन के लिए लगने वाले समय की गणना के लिए PIC16F877A माइक्रोकंट्रोलर में टाइमर और इंटरप्ट की मदद का उपयोग करेंगे। हम पहले से ही सीख चुके हैं कि अपने विकृत ट्यूटोरियल में टाइमर का उपयोग कैसे करें। मैंने इस लेख के अंत में परियोजना का पूरा कोड दिया है। आगे मैंने नीचे कुछ महत्वपूर्ण लाइनें बताई हैं।
कोड की निचली पंक्तियां एलसीडी डी रिक्ति और RB0 के लिए आउटपुट पिन के रूप में पोर्ट पिन को बाहरी पिन के रूप में उपयोग करने के लिए आरम्भ करती हैं। इसके अलावा हमने OPTION_REG का उपयोग करके आंतरिक पुल-अप रोकनेवाला सक्षम किया है और 64 को प्रेस्ले के रूप में भी सेट किया है। हम तब टाइमर और बाहरी बाधा को सक्षम करने के लिए ग्लोबल और पेरिफेरल इंटरप्ट को सक्षम करते हैं। RB0 को बाहरी अवरोध बिट के रूप में परिभाषित करने के लिए INTE को उच्च बनाया जाना चाहिए। ओवरफ्लो मान 100 पर सेट किया गया है ताकि हर 1 मिलीसेकंड के लिए टाइमर इंटरप्ट फ्लैग TMR0IF ट्रिगर हो जाए। यह मिलीसेकंड में लगने वाले समय को निर्धारित करने के लिए एक मिलीसेकंड टाइमर चलाने में मदद करेगा:
TRISD = 0x00; // LCD TRISB0 = 1 को इंटरफेस करने के लिए PORTD को आउटपुट घोषित किया गया; // RB0 पिन को इनपुट पिन के रूप में उपयोग करने के लिए अवरोध पिन OPTION_REG = 0b00000101; // Timer0 64 prescalar के रूप में // इसके अलावा PULL UPs TMR0 = 100 को सक्षम करता है; // 1ms के लिए समय मान लोड करें; delayValue 0-256 केवल TMR0IE = 1 के बीच हो सकता है; // PIE1 रजिस्टर GIE = 1 में टाइमर इंटरप्ट बिट सक्षम करें; // वैश्विक रुकावट PEIE = 1 सक्षम करें; // पेरिफेरल इंटरप्ट INTE = 1 को सक्षम करें; // RB0 को बाहरी इंटरप्ट पिन के रूप में सक्षम करें
प्रत्येक बार एक इंटरप्ट का पता चलने पर नीचे दिए गए फ़ंक्शन को निष्पादित किया जाएगा। हम अपनी इच्छा के अनुसार फ़ंक्शन को नाम दे सकते हैं इसलिए मैंने इसे speed_isr () नाम दिया है । यह कार्यक्रम दो व्यवधानों से निपटता है एक है टाइमर इंटरप्ट और दूसरा है इंटरप्ट इंटरप्ट। जब भी एक टाइमर इंटरप्ट होता है झंडा TMR0IF ऊंचा हो जाता है, तो नीचे दिए गए कोड में दिखाए गए अनुसार TMR0IF = 0 को परिभाषित करके हमें इसे कम करना होगा।
शून्य व्यवधान speed_isr () {if (TMR0IF == 1) // टाइमर ने ओवरफ्लो किया है {TMR0IF = 0; // क्लियर टाइमर इंटरप्ट फ्लैग मिलि_सेक ++; } अगर (INTF == 1) {rpm = (1000 / milli_sec) * 60; गति = 0.3 * आरपीएम * 0.37699; // (30 सेमी होने के लिए पहिया त्रिज्या को मानते हुए) INTF = 0; // क्लीयरेंस फ्लैग मिल milli_sec = 0; दूरी = दूरी + 028.2; }}
इसी तरह जब बाहरी बाधा होती है तो झंडा INTF ऊंचा जाएगा, यह भी INTF = 0 को परिभाषित करके साफ किया जाना चाहिए। समय को ट्रैक में बाधा डालकर रखा जाता है और बाहरी व्यवधान निर्धारित करता है जब पहिया ने एक पूर्ण रोटेशन पूरा कर लिया हो। इस डेटा के साथ पहिया द्वारा कवर की गई गति और दूरी की गणना हर बाहरी इंटरप्ट के दौरान की जाती है।
एक बार गति और दूरी की गणना करने के बाद, उन्हें बस हमारे एलसीडी फ़ंक्शन का उपयोग करके एलसीडी स्क्रीन पर प्रदर्शित किया जा सकता है। यदि आप LCD के लिए नए हैं, तो PIC16F877A MCU ट्यूटोरियल के साथ हमारे इंटरफेसिंग एलसीडी को देखें।
कार्य स्पष्टीकरण:
हार्डवेयर और सॉफ्टवेयर तैयार होने के बाद, बस अपने PIC16F877A पर कोड अपलोड करें। यदि आप PIC के लिए पूरी तरह से नए हैं तो आपको PIC16F877A माइक्रोकंट्रोलर पर प्रोग्राम अपलोड करने का तरीका जानने के लिए कुछ ट्यूटोरियल पढ़ने होंगे।
मैंने प्रदर्शन उद्देश्य के लिए मोटर की गति को समायोजित करने के लिए एक चर पॉट का उपयोग किया है। आप एक वास्तविक समय एप्लिकेशन को खोजने के लिए भी इसका उपयोग कर सकते हैं। यदि सब कुछ उम्मीद के अनुसार काम करता है, तो आप नीचे दिए गए वीडियो में दिखाए अनुसार मीटर के संदर्भ में किलोमीटर / घंटा और दूरी में वेग प्राप्त करने में सक्षम होना चाहिए।
आशा है कि आपने इस परियोजना का आनंद लिया है और इसे काम कर रहे हैं। यदि आप अपना संदेह पोस्ट करने के लिए नीचे दिए गए टिप्पणी अनुभाग या मंच का उपयोग नहीं कर सकते हैं।