- यह काम किस प्रकार करता है
- आवश्यक घटक
- schematics
- Arduino Osclloscope कोड
- पायथन (प्लॉटर) स्क्रिप्ट
- Arduino कोड
- Arduino ओस्सिलोस्कोप एक्शन में
ओस्सिलोस्कोप सबसे महत्वपूर्ण उपकरण है जो आपको किसी भी इलेक्ट्रॉनिक्स इंजीनियर या निर्माता के कार्यक्षेत्र पर मिलेगा। यह मुख्य रूप से तरंग को देखने और वोल्टेज के स्तर, आवृत्ति, शोर और इसके इनपुट पर लगाए गए संकेतों के अन्य मापदंडों को निर्धारित करने के लिए उपयोग किया जाता है जो समय के साथ बदल सकते हैं। मरम्मत के दौरान इलेक्ट्रॉनिक उपकरणों के समस्या निवारण के लिए कोड डीबगिंग और तकनीशियनों के लिए एम्बेडेड सॉफ़्टवेयर डेवलपर्स द्वारा भी इसका उपयोग किया जाता है। इन कारणों से आस्टसीलस्कप किसी भी इंजीनियर के लिए एक उपकरण होना चाहिए। एकमात्र मुद्दा यह है कि वे बहुत महंगे हो सकते हैं, ऑसिलोस्कोप्स जो कम से कम सटीकता के साथ कार्यों का सबसे बुनियादी प्रदर्शन करता है $ 45 से $ 100 तक महंगा हो सकता है जबकि अधिक उन्नत और कुशल की लागत $ 150 से अधिक है। आज मैं Arduino का उपयोग करने का तरीका प्रदर्शित करूंगाऔर एक सॉफ्टवेयर, जिसे मेरी पसंदीदा प्रोग्रामिंग लैंग्वेज पायथन के साथ विकसित किया जाएगा, एक कम लागत का निर्माण करने के लिए, 4-चैनल Arduino ऑसिलोस्कोप उन कार्यों को करने में सक्षम है जिनके लिए कुछ सस्ते आस्टसीलस्कप तैनात हैं जैसे कि तरंगों के प्रदर्शन और वोल्टेज के स्तर का निर्धारण। संकेतों के लिए।
यह काम किस प्रकार करता है
इस परियोजना के दो भाग हैं;
- डेटा कनवर्टर
- प्लॉटर
Oscilloscopes आमतौर पर एक एनालॉग सिग्नल के दृश्य प्रतिनिधित्व को अपने इनपुट चैनल पर लागू करते हैं। इसे प्राप्त करने के लिए, हमें पहले सिग्नल को एनालॉग से डिजिटल में बदलने और फिर डेटा को प्लॉट करने की आवश्यकता है। रूपांतरण के लिए, हम Arduino द्वारा एनालॉग डेटा को डिजिटल सिग्नल में परिवर्तित करने के लिए Arduino द्वारा उपयोग किए जाने वाले atmega328p माइक्रोकंट्रोलर पर ADC (एनालॉग से डिजिटल कनवर्टर) का लाभ उठा सकते हैं । रूपांतरण के बाद, प्रति समय मान को Arduino से पीसी पर UART के माध्यम से भेजा जाता है जहां प्लॉटर सॉफ्टवेयर जो कि अजगर का उपयोग करके विकसित किया जाएगा, समय के खिलाफ प्रत्येक डेटा को प्लॉट करके डेटा की आने वाली धारा को तरंग में बदल देगा।
आवश्यक घटक
इस परियोजना के निर्माण के लिए निम्नलिखित घटकों की आवश्यकता होती है;
- Arduino Uno (किसी भी अन्य बोर्ड का उपयोग किया जा सकता है)
- ब्रेड बोर्ड
- 10k रेसिस्टर (1)
- LDR (1)
- जम्पर के तार
आवश्यक सॉफ्टवेयर
- Arduino IDE
- अजगर
- पायथन लाइब्रेरीज़: पायसरीअल, मैटलोट्लिब, ड्रावन
schematics
Arduino Oscilloscope के लिए योजनाबद्ध सरल है। हम सभी को Arduino के निर्दिष्ट एनालॉग पिन की जांच करने के लिए सिग्नल को कनेक्ट करने की आवश्यकता है। हालांकि, हम एलडीआर का उपयोग एक साधारण वोल्टेज डिवाइडर सेटअप में किया जाएगा ताकि सिग्नल की जांच की जा सके, जैसे कि उत्पन्न तरंग एलडीआर के चारों ओर प्रकाश की तीव्रता के आधार पर वोल्टेज स्तर का वर्णन करेगा।
नीचे दिए गए योजनाबद्ध रूप में दिखाए गए घटकों को कनेक्ट करें;
कनेक्शन के बाद, सेटअप नीचे की छवि की तरह होना चाहिए।
सभी कनेक्शनों के साथ, हम कोड लिखने के लिए आगे बढ़ सकते हैं।
Arduino Osclloscope कोड
हम प्रत्येक दो खंडों के लिए कोड लिखेंगे। प्लॉटर के लिए जैसा कि पहले उल्लेख किया गया है, हम एक अजगर स्क्रिप्ट लिखेंगे जो अरटीनो के डेटा को UART और प्लॉट्स के माध्यम से स्वीकार करता है, जबकि कनवर्टर के लिए, हम एक Arduino स्केच लिखेंगे जो ADC से डेटा में लेता है और इसे इसमें कनवर्ट करता है। वोल्टेज स्तर जो प्लॉटर को भेजे जाते हैं।
पायथन (प्लॉटर) स्क्रिप्ट
चूंकि अजगर कोड अधिक जटिल है, हम इसके साथ शुरू करेंगे।
हम सहित कुछ पुस्तकालयों का उपयोग किया जाएगा; पहले से बताए गए अजगर की लिपि के साथ ड्रावॉन, माटप्लोटलिब और पैसरियल । Pyserial हमें एक पायथन स्क्रिप्ट बनाने की अनुमति देता है जो सीरियल पोर्ट पर संवाद कर सकती है, Matplotlib हमें सीरियल पोर्ट पर प्राप्त डेटा से भूखंडों को उत्पन्न करने की क्षमता देता है और ड्राअवेअर वास्तविक समय में प्लॉट को अपडेट करने के लिए हमें एक साधन प्रदान करता है।
आपके पीसी पर इन पैकेजों को स्थापित करने के कई तरीके हैं, जो पाइप के माध्यम से सबसे आसान है । पिप को विंडोज या लिनक्स मशीन पर कमांड लाइन के माध्यम से स्थापित किया जा सकता है। PIP को python3 के साथ पैक किया गया है, इसलिए मैं आपको python3 स्थापित करने की सलाह दूंगा और python को पथ में जोड़ने के बारे में बॉक्स की जांच करूँगा। यदि आपको पाइप स्थापित करने में समस्या आ रही है, तो सुझावों के लिए आधिकारिक अजगर वेबसाइट देखें।
पाइप स्थापित होने के साथ, अब हम अन्य पुस्तकालयों को स्थापित कर सकते हैं जिनकी हमें आवश्यकता है।
विंडोज़ उपयोगकर्ताओं के लिए कमांड प्रॉम्प्ट खोलें, लिनक्स उपयोगकर्ताओं के लिए टर्मिनल और निम्नलिखित दर्ज करें;
पाइपर स्थापित करें
इस के साथ, का उपयोग कर स्थापित matplotlib ;
पाइप स्थापित करें matplotlib
ड्रावेल को कभी-कभी मैटप्लोटलिब के साथ स्थापित किया जाता है लेकिन बस सुनिश्चित करने के लिए, भागो;
पाइप स्थापित करें
स्थापना पूर्ण होने के साथ, हम अब अजगर स्क्रिप्ट लिखने के लिए तैयार हैं।
इस परियोजना के लिए पायथन स्क्रिप्ट उसी के समान है जिसे मैंने रास्पबेरी पाई आधारित ऑसिलोस्कोप के लिए लिखा था।
हम कोड के लिए आवश्यक सभी पुस्तकालयों को आयात करके शुरू करते हैं;
आयात समय आयात matlotlib.pyplot plt से आयात के रूप में आयात * आयात pyserial
अगला, हम कोड के दौरान उपयोग किए जाने वाले चरों को बनाते और आरंभ करते हैं। सरणी घाटी का उपयोग सीरियल पोर्ट से प्राप्त डेटा को संग्रहीत करने के लिए किया जाएगा और गणना करने के लिए cnt का उपयोग किया जाएगा। प्रत्येक 50 डेटा गणना के बाद स्थान 0 पर डेटा हटा दिया जाएगा। यह ऑसिलोस्कोप पर प्रदर्शित किए जा रहे डेटा को बनाए रखने के लिए किया जाता है।
वैल = सेंटी = ०
अगला, हम सीरियल पोर्ट ऑब्जेक्ट बनाते हैं जिसके माध्यम से Arduino हमारी अजगर स्क्रिप्ट के साथ संवाद करेगा। नीचे निर्दिष्ट कॉम पोर्ट सुनिश्चित करें वही कॉम पोर्ट है जिसके माध्यम से आपका Arduino बोर्ड IDE के साथ संचार करता है। ऊपर 115 115 बॉड दर का उपयोग अरुडिनो के साथ उच्च गति संचार सुनिश्चित करने के लिए किया गया था। त्रुटियों को रोकने के लिए, Arduino सीरियल पोर्ट को इस बॉड दर के साथ संवाद करने में सक्षम होना चाहिए।
पोर्ट = सीरियल। सीरियल ('COM4', 115200, टाइमआउट = 0.5)
अगला, हम प्लॉट का उपयोग करके इंटरेक्टिव बनाते हैं;
plt.ion ()
हमें प्राप्त आंकड़ों से भूखंड उत्पन्न करने के लिए एक फ़ंक्शन बनाने की आवश्यकता है, जिस ऊपरी और न्यूनतम सीमा की हम उम्मीद कर रहे हैं, जो इस मामले में अरुडिनो के एडीसी के संकल्प के आधार पर 1023 है। हम शीर्षक भी सेट करते हैं, प्रत्येक अक्ष को लेबल करते हैं और कथानक की पहचान करना आसान बनाते हैं।
# फिगर फंक्शन डिफ मेकफ (): plt.ylim (-1023,1023) plt.title ('ओस्सिलोस्कोप') plt.grid (ट्रू) plt.ylabel ('ADD आउटपुट') plt.plot (वैल, 'ro) - ', लेबल =' चैनल 0 ') plt.legend (लोक =' निचला दायाँ ')
इस के साथ, अब हम मुख्य लूप लिखने के लिए तैयार हैं जो उपलब्ध होने पर सीरियल पोर्ट से डेटा लेता है और उसे प्लॉट करता है। Arduino के साथ सिंक्रनाइज़ करने के लिए, एक हैंडशेक डेटा को डेटा पढ़ने की अपनी तत्परता को इंगित करने के लिए अजगर स्क्रिप्ट द्वारा Arduino को भेजा जाता है । जब Arduino हैंडशेक डेटा प्राप्त करता है, तो वह ADC के डेटा के साथ उत्तर देता है। इस हैंडशेक के बिना, हम वास्तविक समय में डेटा को प्लॉट नहीं कर पाएंगे।
जबकि (सही): port.write (b's's) #handshake Arduino के साथ यदि (port.inWaiting ()): # यदि arduino मान देता है तो = port.readline () # उत्तर प्रिंट (मूल्य) प्रिंट पढ़ें ताकि हम कर सकें इसकी संख्या की निगरानी करें = int (मान) # डेटा को पूर्णांक प्रिंट करने के लिए डेटा प्राप्त हुआ ('चैनल 0: {0}'। स्वरूप (संख्या)) # आधा सेकंड के लिए सो जाओ। time.sleep (0.01) val.append (int (नंबर)) drawnow (makeFig) #update प्लॉट नए डेटा इनपुट को दर्शाने के लिए plt.pause (.000001) cnt = cnt + 1 if (cnt) 50): val.pop (0) # 0 स्थिति पर डेटा हटाकर नए प्लॉट को सुरक्षित रखें
Arduino आस्टसीलस्कप के लिए पूरा अजगर कोड इस लेख में नीचे दिखाया गया के अंत में दिया जाता है।
Arduino कोड
दूसरा कोड ADC से सिग्नल का प्रतिनिधित्व करने वाले डेटा को प्राप्त करने के लिए Arduino स्केच है, फिर प्लॉटर सॉफ़्टवेयर से हैंडशेक सिग्नल प्राप्त करने के लिए प्रतीक्षा करें। जैसे ही यह हैंडशेक सिग्नल प्राप्त करता है, यह अधिग्रहित डेटा को UART के माध्यम से प्लॉटर सॉफ़्टवेयर में भेजता है।
हम Arduino के एनालॉग पिन के पिन को घोषित करके शुरू करते हैं, जिस पर सिग्नल लागू किया जाएगा।
int sensorpin = A0;
अगला, हम 115200 की बॉड दर के साथ धारावाहिक संचार शुरू करते हैं और शुरू करते हैं
शून्य सेटअप () { // पाइथन स्क्रिप्ट से मिलान करने के लिए प्रति सेकंड 115200 बिट्स पर धारावाहिक संचार को आरंभीकृत करें: Serial.begin (115200); }
अंत में, voidloop () फ़ंक्शन जो डेटा की रीडिंग को हैंडल करता है, और प्लॉटर पर डेटा को सीरियल पर भेजता है।
शून्य लूप () { // एनालॉग पिन पर इनपुट पढ़ें 0: फ्लोट सेंसरवैल्यू = एनालॉगरेड (सेंसोर्पिन); बाइट डेटा = Serial.read (); if (data == 's') { Serial.println (SensValue); देरी (10); // स्थिरता के लिए बीच में देरी } }
पूरा Arduino आस्टसीलस्कप कोड इस लेख में नीचे दिखाया गया के अंत में करने के साथ ही नीचे दी गई है।
int sensorpin = A0; शून्य सेटअप () { // पाइथन स्क्रिप्ट से मिलान करने के लिए प्रति सेकंड 115200 बिट्स पर धारावाहिक संचार को आरंभीकृत करें: Serial.begin (115200); } शून्य लूप () { // एनालॉग पिन पर इनपुट पढ़ें 0: ################################ ###################### फ्लोट सेंसरवैलू = analogRead (sensorpin); बाइट डेटा = Serial.read (); if (data == 's') { Serial.println (SensValue); देरी (10); // स्थिरता के लिए बीच में देरी } }
Arduino ओस्सिलोस्कोप एक्शन में
Arduino सेटअप में कोड अपलोड करें और अजगर स्क्रिप्ट चलाएँ। आपको पायथन कमांड लाइन के माध्यम से डेटा को स्ट्रीमिंग शुरू करना चाहिए और नीचे की छवि में दिखाए गए अनुसार प्रकाश की तीव्रता के साथ अलग-अलग प्लॉट करना चाहिए।
तो यह है कि कैसे Arduino को Oscilloscope के रूप में इस्तेमाल किया जा सकता है, इसे रास्पबेरी पाई का उपयोग करके भी बनाया जा सकता है, यहाँ रास्पबेरी पाई आधारित Oscilloscope पर संपूर्ण ट्यूटोरियल देखें।