- आवश्यक घटक:
- विवरण:
- सर्किट आरेख और कार्य विवरण:
- EasyEDA का उपयोग कर सर्किट और पीसीबी डिजाइन:
- गणना और आदेश पीसीबी नमूने ऑनलाइन:
- प्रोग्रामिंग स्पष्टीकरण:
इस प्रोजेक्ट में हम PCB पर PIC आधारित कार बैटरी मॉनिटरिंग सिस्टम बनाने जा रहे हैं । यहां हमने EASYEDA ऑनलाइन पीसीबी सिम्युलेटर और डिजाइनर का उपयोग करके एक पीसीबी डिजाइन किया है। इस कार बैटरी मॉनिटरिंग सर्किट का उपयोग कार बैटरी के पावर को केवल कार के डैशबोर्ड पर पावर आउटलेट में प्लग करके मॉनिटर करने के लिए किया जाता है। पीसीबी भी रूप में उपयोग करने का विकल्प है वोल्टेज मापन उपकरण या वाल्टमीटर यूएसबी कार चार्जर का उपयोग किए बिना। हमने बिजली के स्रोत से केवल दो तारों को जोड़कर, अन्य बिजली स्रोतों के वोल्टेज को मापने के लिए यहां एक टर्मिनल ब्लॉक संलग्न किया है।
आवश्यक घटक:
- PIC माइक्रोकंट्रोलर PIC18F2520 -1
- निर्मित पीसीबी बोर्ड -1
- यूएसबी कनेक्टर -1
- 2 पिन टर्मिनल कनेक्टर (वैकल्पिक) -1
- आम एनोड सात खंड प्रदर्शन (4 में 1) -1
- BC557 ट्रांजिस्टर -4
- 1k रोकनेवाला -6
- 2k रोकनेवाला -1
- 100R रोकनेवाला -8
- 1000uF संधारित्र -1
- 10uF संधारित्र -1
- 28 पिन आईसी बेस -1
- महिला बर्गस्टिक्स -1
- 7805 वोल्टेज नियामक -1
- कार USB चार्जर -1
- एलईडी -1
- जेनर डायोड5.1v -2
- यूएसबी केबल (बी-प्रकार या Arduino UNO संगत) -1
- 20 मेगाहर्ट्ज क्रिस्टल -1
- 33pF संधारित्र -2
विवरण:
आम तौर पर हर बार कार की बैटरी पावर को मापना महत्वपूर्ण नहीं होता है, लेकिन हमें चार्जिंग के दौरान बैटरी वोल्टेज के बारे में जानने की जरूरत होती है, ताकि यह पता लगाया जा सके कि इसकी चार्जिंग है या नहीं। इसके द्वारा, हम दोषपूर्ण चार्जिंग सिस्टम के कारण बैटरी की विफलता से रक्षा कर सकते हैं। चार्जिंग के दौरान 12v कार की बैटरी का वोल्टेज लगभग 13.7v है। इसलिए हम पहचान सकते हैं कि हमारी बैटरी अच्छी तरह से चार्ज हो रही है या नहीं और बैटरी की विफलता के कारणों की जांच कर सकती है। इस परियोजना में, हम PIC माइक्रोकंट्रोलर का उपयोग करके कार बैटरी के लिए वोल्ट मीटर लागू करने जा रहे हैं । कार सिगरेट लाइटर या कार यूएसबी चार्जर का उपयोग वोल्ट डिवाइडर सर्किट की सहायता से माइक्रोकंट्रोलर के एडीसी पिन को बैटरी वोल्टेज प्राप्त करने के लिए किया जाता है। फिर 4 अंकों का सात खंड का डिस्प्लेका उपयोग बैटरी के वोल्टेज मान को दिखाने के लिए किया जाता है। यह सर्किट 15 वी तक वोल्टेज को माप सकता है।
जब एक कार बैटरी चार्ज कर रही है, तो बैटरी टर्मिनलों के पार वोल्टेज वास्तव में अल्टरनेटर / रेक्टिफायर से आ रहा है, यही कारण है कि सिस्टम 13.7 वोल्ट पढ़ता है। लेकिन जब बैटरी चार्ज नहीं हो रही है या कार का इंजन ऑन नहीं है, तो बैटरी टर्मिनल के पार वोल्टेज 12v के आसपास वास्तविक बैटरी वोल्टेज है।
हम 15v तक के अन्य बिजली स्रोतों के वोल्टेज को मापने के लिए समान सर्किट का भी उपयोग कर सकते हैं। इस प्रयोजन के लिए हमने पीसीबी में टर्मिनल ब्लॉक (हरा रंग प्लास्टिक ब्लॉक) को मिलाया है जहां आप बिजली के स्रोत से दो तारों को जोड़ सकते हैं और वोल्टेज की निगरानी कर सकते हैं। अंत में वीडियो देखें, जहां हमने एक चर बिजली की आपूर्ति, एक यूएसबी पावर बैंक और एक 12 वी एसी-डीसी एडाप्टर के वोल्टेज को मापकर इसका प्रदर्शन किया है। साधारण बैटरी मॉनिटर सर्किट और 12v बैटरी चार्जर सर्किट की भी जांच करें।
सर्किट आरेख और कार्य विवरण:
इस बैटरी वोल्टेज मॉनिटरिंग सर्किट में, हमने PIC माइक्रोकंट्रोलर के इनबिल्ट एनालॉग पिन का उपयोग करके कार बैटरी वोल्टेज पढ़ा है और यहां हमने वोल्टेज डिवाइडर सर्किट के माध्यम से माइक्रोकंट्रोलर के पिन AN0 (28) पिन को चुना है। सुरक्षा के लिए 5.1v का एक जेनर डायोड भी उपयोग किया जाता है।
4 इन 1 सेगमेंट डिस्प्ले का उपयोग कार बैटरी वोल्टेज के तात्कालिक मूल्य को प्रदर्शित करने के लिए किया जाता है जो कि माइक्रोकंट्रोलर के PORTB और PORTC से जुड़ा होता है। एक 5v वोल्टेज रेगुलेटर अर्थात् LM7805 का उपयोग पूरे सेगमेंट डिस्प्ले सहित पूरे सर्किट को शक्ति प्रदान करने के लिए किया जाता है। एक 20 मेगाहर्ट्ज क्रिस्टल थरथरानवाला का उपयोग माइक्रोकंट्रोलर को देखने के लिए किया जाता है। सर्किट USB कार चार्जर द्वारा LM7805 का उपयोग करके स्वयं संचालित होता है। हमने पीसीबी में एक यूएसबी पोर्ट जोड़ा है, इसलिए हम सीधे कार यूएसबी चार्जर को सर्किट से जोड़ सकते हैं।
कार यूएसबी चार्जर या सिगरेट लाइटर कार के 12v पावर आउटलेट से 5v विनियमित आपूर्ति प्रदान करता है, लेकिन हमें कार बैटरी के वास्तविक वोल्टेज को मापने की आवश्यकता है इसलिए हमने कार चार्जर को बदल दिया है। आपको कार USB चार्जर खोलने की आवश्यकता है और फिर 5v (आउटपुट) और 12v (इनपुट) टर्मिनलों का पता लगाएं और फिर 5v कनेक्शन को सैंड पेपर या किसी हार्ड चीज़ से रगड़ कर हटा दें और सीधे USB आउटपुट टर्मिनल को 12v तक पहुंचाएं। सबसे पहले कार USB चार्जर में USB पोर्ट से 5v कनेक्शन खोलें और फिर 12v को USB पोर्ट से कनेक्ट करें जहां 5v कनेक्ट था। जैसा कि नीचे दिए गए आंकड़े में दिखाया गया है, हमने लाल चक्कर वाला कनेक्शन काट दिया है, यह आपके कार चार्जर में भिन्न हो सकता है।
यहां ADC को कॉन्फ़िगर करने के लिए हमने ADV रूपांतरण के लिए 5V और f / 32 क्लॉक के आंतरिक संदर्भ वोल्टेज के साथ एनालॉग पिन AN0 का चयन किया है।
एडीसी मूल्य से कार बैटरी वोल्टेज की गणना करने के लिए हमने दिए गए सूत्र का उपयोग किया है:
वोल्टेज = (ADC मान / अवरोध कारक) * संदर्भ वोल्टेज कहां: ADC मान = वोल्ट डिवाइडर का उत्पादन (माइक्रोकंट्रोलर द्वारा डिजिटल में परिवर्तित) रेजिस्टर कारक = 1023.0 / (R2 / R1 + R2) // 1023 अधिकतम ADC मान (10-) बिट) संदर्भ वोल्टेज = ५ वोल्ट // आंतरिक ५ वी संदर्भ चुना गया
रोकनेवाला कारक गणना:
इस परियोजना में हम 12v-14v के आसपास कार बैटरी वोल्टेज (आमतौर पर) पढ़ रहे हैं। इसलिए हमने इस परियोजना को अधिकतम 15 v मान लिया है, इसका मतलब यह है कि इस प्रणाली को अधिकतम 15 v तक पढ़ा जा सकता है।
इसलिए सर्किट में हमने वोल्टेज विभक्त भाग में आर 1 और आर 2 अवरोधक का उपयोग किया है और मान निम्न हैं:
R1 = 2K
आर 2 = 1 के
रोकनेवाला कारक = 1023.0 * (1000/2000 + 1000)
रोकनेवाला कारक = 1023.0 * (1/3)
15 वोल्ट तक के लिए रेसिस्टर कारक = 341.0
तो वोल्टेज गणना के लिए अंतिम सूत्र इस प्रकार होगा, जिसे हमने इस लेख के अंत में दिए गए कोड का उपयोग किया है:
वोल्टेज = (ADC मान / 341.0) * 5.0
EasyEDA का उपयोग कर सर्किट और पीसीबी डिजाइन:
कार बैटरी वोल्टेज मॉनिटर के लिए एक सर्किट डिजाइन करने के लिए, हमने ईज़ीईडीए का उपयोग किया है जो एक सहज तरीके से सर्किट और पीसीबी बनाने के लिए एक मुफ्त ऑनलाइन ईडीए उपकरण है। हमने पहले EasyEDA से कुछ PCBs ऑर्डर किए हैं और अभी भी उनकी सेवाओं का उपयोग कर रहे हैं क्योंकि हमने पूरी प्रक्रिया को पाया, सर्किट को खींचने से लेकर PCB को ऑर्डर करने के लिए, अन्य PCB फैब्रिकेटर की तुलना में अधिक सुविधाजनक और कुशल। ईज़ीईडीए मुफ्त में सर्किट ड्राइंग, सिमुलेशन, पीसीबी डिज़ाइन प्रदान करता है और उच्च गुणवत्ता लेकिन कम कीमत अनुकूलित पीसीबी सेवा भी प्रदान करता है। यहां देखें कि कैसे स्कैमैटिक्स, पीसीबी लेआउट, सर्किट का अनुकरण आदि के लिए ईडीए का उपयोग करने के लिए पूरा ट्यूटोरियल।
ईजीईडीए दिन-प्रतिदिन सुधर रहा है; उन्होंने कई नई सुविधाओं को जोड़ा है और समग्र उपयोगकर्ता अनुभव में सुधार किया है, जो ईजीएडीए को डिजाइनिंग सर्किट के लिए आसान और उपयोगी बनाता है। वे जल्द ही इसका डेस्कटॉप संस्करण लॉन्च करने जा रहे हैं, जिसे ऑफ़लाइन उपयोग के लिए आपके कंप्यूटर पर डाउनलोड और इंस्टॉल किया जा सकता है।
ईज़ीईडीए में, आप अपने सर्किट और पीसीबी डिज़ाइन को सार्वजनिक कर सकते हैं ताकि अन्य उपयोगकर्ता उन्हें कॉपी या संपादित कर सकें और वहां से लाभ ले सकें, हमने इस कार बैटरी वोल्टेज मॉनिटर के लिए अपने पूरे सर्किट और पीसीबी लेआउट को भी सार्वजनिक कर दिया है , नीचे दिए गए लिंक की जांच करें:
easyeda.com/circuitdigest/PIC_based_Car_Battery_Monitoring_System-63c2d5948eaa48c5bcbd8db49a6c776
नीचे ईज़ीईडीए से पीसीबी लेआउट की शीर्ष परत का स्नैपशॉट है, आप परत के 'विंडो' फॉर्म को चुनकर पीसीबी के किसी भी लेयर (टॉप, बॉटम, टॉप्सिल्क, बॉटम्सिल्क आदि) को देख सकते हैं।
गणना और आदेश पीसीबी नमूने ऑनलाइन:
पीसीबी के डिजाइन को पूरा करने के बाद, आप फैब्रिकेशन आउटपुट के आइकन पर क्लिक कर सकते हैं, जो आपको पीसीबी के ऑर्डर पेज पर ले जाएगा। यहाँ आप अपने PCB को Gerber Viewer में देख सकते हैं या अपने PCB की Gerber फाइल डाउनलोड कर सकते हैं और उन्हें किसी भी निर्माता को भेज सकते हैं, इसे EasyEDA में सीधे ऑर्डर करना भी बहुत आसान (और सस्ता) है। यहां आप उन पीसीबी की संख्या का चयन कर सकते हैं जिन्हें आप ऑर्डर करना चाहते हैं, आपको कितने तांबे की परतों की जरूरत है, पीसीबी की मोटाई, तांबे का वजन और यहां तक कि पीसीबी का रंग भी। आपके द्वारा सभी विकल्पों का चयन करने के बाद, "कार्ट में सहेजें" पर क्लिक करें और अपना ऑर्डर पूरा करें, फिर आपको कुछ दिनों बाद अपने PCB मिल जाएंगे।
आप सीधे इस पीसीबी को ऑर्डर कर सकते हैं या इस लिंक का उपयोग करके Gerber फ़ाइल डाउनलोड कर सकते हैं।
पीसीबी के आदेश देने के कुछ दिनों के बाद मुझे पीसीबी के नमूने मिले
PCBs प्राप्त करने के बाद मैंने PCB पर सभी आवश्यक कंपोनेंट्स को माउंट किया है, और अंत में हमारे पास हमारी कार बैटरी मॉनिटरिंग सिस्टम तैयार है, इस सर्किट को अंत में दिए गए वीडियो में काम करने के लिए जांचें।
प्रोग्रामिंग स्पष्टीकरण:
इस परियोजना का कार्यक्रम शुरुआती लोगों के लिए थोड़ा मुश्किल है। इस कोड को लिखने के लिए हमें कुछ हेडर फ़ाइलों की आवश्यकता है। यहाँ हम कोड बनाने और कोड संकलित करने के लिए कोडिंग और XC संकलक के लिए MPLAB X IDE का उपयोग कर रहे हैं। कोड सी भाषा में लिखा गया है।
इस कोड में, हमने एक एनालॉग पिन का उपयोग करके और 4-अंकीय सात सेगमेंट डिस्प्ले में डेटा को नियंत्रित करने या भेजने के लिए बैटरी वोल्टेज पढ़ा है, हमने पीआईसी माइक्रोकंट्रोलर में टाइमर इंटरप्ट सर्वर रूटीन का उपयोग किया है। वोल्टेज माप के लिए सभी गणना मुख्य कार्यक्रम दिनचर्या में की जाती है।
सबसे पहले, कोड में हमने एक हेडर शामिल किया है और फिर कॉन्फ़िगरेशन बिट्स का उपयोग करके PIC माइक्रोकंट्रोलर को कॉन्फ़िगर किया है।
#शामिल
और फिर सात खंडों के प्रदर्शन के लिए चर और परिभाषित पिन घोषित किए
अहस्ताक्षरित int काउंटर 2; अहस्ताक्षरित चार पद =; अहस्ताक्षरित चार k = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; int digit1 = 0, digit2 = 0, digit3 = 0, digit4 = 0; #define TRIS_seg1 TRISCbits.TRISC0 #define TRIS_seg2 TRISCbits.TRISC1 #define TRIS_seg3 TRISCbits.TRISC2 #define TRIS_seg4 TRISCbits.TRISC3 #define TRIS_led1 TRISAbits.TRISA2 #define TRIS_led2 TRISAbits.TRISA5 #define TRIS_led3 TRISAbits.TRISA0 #define TRIS_led4 TRISAbits.TRISA1 #define TRIS_led5 TRISAbits.TRISA………….
अब हमने सात खंड के डिस्प्ले को चलाने के लिए एक टाइमर इंटरप्ट रूटीन बनाया है:
शून्य व्यवधान low_priority LowIsr (शून्य) {if (TMR0IF == 1) {काउंटर 2 ++; if (counter2> = 1) {if (स्थिति == 0) {seg1 = 0; seg2 = 1; seg3 = 1; seg4 = 1;………………
अब शून्य मुख्य () फ़ंक्शन में, हमने टाइमर और इंटरप्ट को इनिशियलाइज़ किया है।
GIE = 1; // GLOBLE INTRRUPT सक्षम PEIE = 1; // परिधीय घुसपैठ झंडा T0CON = 0b000000000; // prescaler मूल्य डाल TMR0IE = 1; // इंटरप्ट सक्षम करें TMR0IP = 0; // रुकावट प्राथमिकता TMR0 = 55536; // इस मूल्य के बाद काउंटर शुरू करें TMR0ON = 1;
और फिर जबकि लूप में, हम एनालॉग पिन पर एनालॉग इनपुट पढ़ते हैं और गणना के लिए कुछ फ़ंक्शन कहते हैं।
जबकि (1) {adc_init (); for (i = 0; i <40; i ++) {value = adc_value (); adcValue + = मान; } adcValue = (float) adcValue / 40.0; कन्वर्ट (adcValue); देरी (100); }
यह देखते हुए adc_init () समारोह एडीसी आरंभ के लिए प्रयोग किया जाता है
शून्य adc_init () {ADCON0 = 0b00000011; // select adc चैनल ADCON1 = 0b00001110; // चुनें एनालॉग और डिजिटल i / p ADCON2 = 0b10001010; // कैपिसन टाइम होल्डिंग कैप टाइम ADON = 1; }
दिए गए adc_value फ़ंक्शन का उपयोग एनालॉग पिन से इनपुट पढ़ने और वोल्टेज की गणना करने के लिए किया जाता है।
फ्लोट adc_value (शून्य) {फ्लोट adc_data = 0; जबकि (GO / DONE == 1); // उच्च बिट डेटा प्रारंभ रूपांतरण मान मान adc_data = (ADRESL) + (ADRESH << 8); // स्टोर 10-बिट आउटपुट adc_data = ((adc_data / 342.0) * 5.0); वापसी adc_data; }
और दिए गए कन्वर्ट फ़ंक्शन का उपयोग वोल्टेज वैल्यू को सेगमेंट समर्थित मानों में परिवर्तित करने के लिए किया जाता है।
शून्य कन्वर्ट (फ्लोट एफ) {इंट डी = (एफ * 100); digit1 = d% 10; d = d / 10; digit2 = d% 10; d = d / 10; digit3 = d% 10; digit4 = d / 10; }
चेक पूरा कोड एक प्रदर्शन वीडियो के साथ नीचे इस परियोजना के लिए।