यूसी और वर्तमान शंट के साथ औसत वर्तमान को मापना


12

यह मेरा पहला पोस्ट है। मैं एक सॉफ्टवेर आदमी हूँ जो हार्डवेयर करने की कोशिश कर रहा है, इसलिए कोमल बनो :)

सर्किट

मैं एक छोटा सा सर्किट डिजाइन कर रहा हूं (तस्वीर को देखें, और गन्दा योजनाबद्ध के लिए खेद है) कि सादा और बस MOSFETS और गेट ड्राइवरों का एक गुच्छा है जो एक माइक्रोकंट्रोलर से प्रतिरोधक भार (इस मामले में हीटिंग पैड) को स्विच करने के लिए डिज़ाइन किया गया है। हीटिंग तत्वों में अक्सर बहुत कम प्रतिरोध होता है, और वांछित स्तर पर शक्ति रखने के लिए, मॉसफेट को पीडब्लूएम का उपयोग करके स्विच किया जाता है।

माप

विशुद्ध रूप से कार्यात्मक पहलू के अलावा, एक शैक्षिक फोकस भी है। मैं वर्तमान खपत पर कुछ प्रतिक्रिया प्राप्त करने में सक्षम होना चाहता हूं। और मेरा अनुभवहीन दृष्टिकोण बस कुछ वर्तमान शंट सेंसर आईसी में फेंक देना था। सेंसर से आउटपुट वोल्टेज को मापने के लिए मल्टीमीटर का उपयोग करते समय, मुझे वास्तव में कुछ मिलता है जो एमीटर के "सुस्ती" के कारण औसत वर्तमान (पीडब्लूएम स्विचिंग के साथ) जैसा दिखता है। लेकिन जब एक ही आउटपुट कनेक्ट करने के लिए एक atmega328p ADC, मैं कुछ बुरा रीडिंग मिलता है - यहाँ गति PWM वर्ग तरंग पर कहीं भी एक रीडिंग डालता है।

तो, मेरा सवाल यह है कि पीडब्लूएम के साथ स्विच करने पर मैं औसत (औसत) वर्तमान को मापने के बारे में कैसे जा सकता हूं?

ऐसा लगता है कि डिजाइन ठीक है, लेकिन मुझे डिजाइन में कुछ याद आया होगा और इस संदर्भ में यूसी एडीसी का उपयोग कैसे किया जाना चाहिए।

ढांच के रूप में


मुझे लगता है कि PWM से माध्य वोल्टेज देने के लिए एक फिल्टर का उपयोग किया जा सकता है। एक दिलचस्प लेख है कि इस तरह के एक फिल्टर बताते हैं और मूल्यों PWM आवृत्ति के आधार पर इस्तेमाल किया है इस एक
अलेक्सां_ए

इस प्रश्न में कुछ संबंधित उत्तर हैं । लेकिन वे वर्तमान को मापने के लिए केवल शंट और आईसी का उपयोग करने का उल्लेख करते हैं। पीडब्लूएम का कोई उल्लेख नहीं है, यद्यपि।
रिकार्डो

टिप्पणियों के लिए धन्यवाद। @alexan_e: TI को INA197 डेटाशीट में एक इनपुट फ़िल्टर दिखाया जा रहा है, लेकिन मैं इसके उपयोग के बारे में अनिश्चित था। यह स्थिर वोल्टेज नहीं होने पर जाने का रास्ता हो सकता है।
ltj

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

जैसा कि आउटपुट वैरिएबल ड्यूटी न्यूक्लियर पीडब्लूएम है, आप एक चोटी डिटेक्टर सर्किट का उपयोग कर सकते हैं और इसे एडीसी के साथ माप सकते हैं।
मार्टिन

जवाबों:


6

कभी-कभी जो सरल दिखता है वह उतना सरल नहीं है। आपके पास करने के लिए काफी जटिल माप है, लेकिन आप एक सरल परिणाम चाहते हैं। आप जो मापना चाहते हैं वह स्थिर नहीं है, यह समय के हिसाब से अलग है। अपनी आवश्यकता के स्तर के आधार पर, आप वर्तमान खपत के एक या कई गुणों की गणना कर सकते हैं। ये गुण आपको सिस्टम की बेहतर निगरानी करने में मदद करेंगे। मैं आपको 3 विभिन्न समाधानों का प्रस्ताव देता हूं, आरोही जटिलता में।

समाधान 1: औसत

आप एक-मूल्य परिणाम प्राप्त करना चाहते हैं -> समय में औसत प्राप्त करें। जैसा कि @akellyirl द्वारा पहले से ही प्रस्तावित है, कम-पास फिल्टर का उपयोग करें। float y = alpha*input + (1-alpha)*yप्रत्येक नमूने के लिए गणना , जहां alphaचौरसाई कारक है। विवरण के लिए विकिपीडिया देखें ।

समाधान 2: अधिकतम + औसत

आप औसत और अधिकतम मूल्य प्राप्त करने में दिलचस्प हैं। अधिकतम मान की निगरानी करना उदाहरण के लिए घटक आयाम के लिए दिलचस्प हो सकता है।

if (y > max)
  max = y;

समाधान 3: मानक विचलन + अधिकतम + औसत

क्यों?

नीचे दिए गए चार्ट देखें। विभिन्न आकृतियों के 3 संकेत हैं। एक त्रिकोण , एक साइन और एक स्पाइक सिग्नल। वे सभी समान अवधि, समान आयाम , समान औसत और समान मिनट और अधिकतम अवधि वाले होते हैं । लेकिन, उनके पास अलग-अलग आकार हैं, और वास्तव में उनके पास एक पूरी तरह से अलग कहानी है ...

सिग्नल और उनका हिस्टोग्राम

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

कैसे?

हिस्टोग्राम विधि का प्रयोग करें । सभी मापों का एक हिस्टोग्राम बनाएं, और डेटासेट के सांख्यिकी (न्यूनतम, अधिकतम, औसत, मानक विचलन) को कुशलतापूर्वक निकालें। हिस्टोग्राम समूह एक साथ मूल्य जो एक ही मूल्य, या समान श्रेणी मान है। फायदा यह है कि सभी नमूनों को संग्रहीत करने से बचें (समय में गिनती बढ़ रही है), और सीमित संख्या में डेटा पर तेजी से गणना करना है।

माप प्राप्त करना शुरू करने से पहले, हिस्टोग्राम को स्टोर करने के लिए एक सरणी बनाएं। यह 1 आयाम पूर्णांक सरणी है, उदाहरण के लिए 32 का आकार :

int histo[32];

एमीटर की सीमा के आधार पर, फ़ंक्शन के नीचे अनुकूलित करें। उदाहरण के लिए, यदि सीमा 256mA है, तो इसका मतलब है कि हिस्टोग्राम के बिन 0 को 0 और 8 mA के बीच के मूल्य से बढ़ाकर, बिन 1 को 8 और 16 mA आदि के बीच के मूल्य द्वारा बढ़ाया जाएगा ... इसलिए, आपको प्रतिनिधित्व करने के लिए पूर्णांक की आवश्यकता होगी हिस्टोग्राम बिन संख्या:

short int index;

हर बार जब आप एक नमूना प्राप्त करते हैं, तो संबंधित बिन सूचकांक खोजें:

index = (short int) floor(yi);

और इस बिन वेतन वृद्धि:

histo[index] += 1;

माध्य की गणना करने के लिए, इस लूप को चलाएं:

float mean = 0;
int N = 0;
for (i=0; i < 32 ; i++) {
  mean = i * histo[i]; // sum along the histogram
  N += i; // count of samples
}
mean /= N; // divide the sum by the count of samples.
mean *= 8; // multiply by the bin width, in mA: Range of 256 mA / 32 bins = 8 mA per bin.

मानक विचलन की गणना करने के लिए, इस लूप को चलाएं:

float std_dev = 0;

for (i=0; i < 32 ; i++) {
  std_dev = (i - mean) * (i - mean) * histo[i]; // sum along the histogram
}
std_dev /= N; // divide the sum by the count of samples.
std_dev = sqrt(std_dev); // get the root mean square to finally convert the variance to standard deviation.

हिस्टोग्राम विधि की रणनीति सभी अधिग्रहीत सिग्नल नमूनों के बजाय, डिब्बे की कुछ संख्या पर धीमी गति से संचालन करना है। नमूना आकार जितना लंबा होगा, उतना बेहतर होगा। यदि आप अधिक विवरण चाहते हैं, तो इस दिलचस्प पृष्ठ को द हिस्टोग्राम, Pmf और Pdf पढ़ें


बहुत गहन और स्पष्ट व्याख्या। व्यावहारिक स्तर पर, आप यह कैसे सुनिश्चित करते हैं कि एडीसी का नमूना "अच्छे तरीके से" वितरित किया गया है अर्थात पीडब्लूएम सिग्नल के साथ किसी भी तरह से लॉक नहीं किया गया है? मुझे यह स्वीकार करना चाहिए कि अभी मैं पीडब्लूएम और एडीसी दोनों सैंपलिंग के लिए सिर्फ आर्डिनो (hw + sw) का उपयोग करता हूं। यह हो सकता है कि मैं बिल्ट-इन टाइमर को खुद सेटअप करूं। मुझे लगता है कि नमूना आवृत्ति पीडब्लूएम आवृत्ति सही थोड़ी अधिक होनी चाहिए?
ltj

1
जैसे ही आप नमूना लेना शुरू करते हैं, चीजें काफी जटिल हो जाती हैं। पहली बात, ध्यान रखना है कि न्यक्विस्ट-शैनन प्रमेय है। सहज क्या है कि नमूना आवृत्ति जितनी अधिक हो, आपके पास उतनी ही अधिक जानकारी होगी। लेकिन क्या सहज नहीं है, हालांकि मौलिक है, यह है कि आवृत्ति एफएस पर नमूना लेने से पहले, आपको एफएस / 2 पर सिग्नल (एनालॉग / इलेक्ट्रॉनिक्स डोमेन में) बिल्कुल कम-पास फिल्टर होना चाहिए । अन्यथा, आप अलियासिंग से प्रभावित होंगे। मेरा सुझाव है कि आप उच्चतम नमूना आवृत्ति चुनें। यदि संभव हो तो पीडब्लूएम आवृत्ति ~ ~ 10 गुना।
रॉवेन

यह Nyquist-Shannon प्रमेय की एक आम गलतफहमी है जो वास्तव में बताता है कि आपको दो बार बैंडविड्थ पर नमूना लेने की आवश्यकता है। अलियासिंग मददगार हो सकता है। कोई अनादर नहीं है, लेकिन यह एक टेक्सबुक के उत्तर की तरह लगता है। इस परिदृश्य में ~ 10 गुना पीडब्लूएम नमूने का सुझाव देना जब उच्च आवृत्ति विस्तार सबसे अधिक संभावना अप्रासंगिक है।
akellyirl

1

आप समस्या को सही तरीके से समझते हैं: आपको पीडब्लूएम का "औसत" प्राप्त करने की आवश्यकता है, ठीक उसी तरह जैसे मीटर आप माप के लिए उपयोग कर रहे हैं।

आप A1,2,3 सिग्नल पर एक RC फ़िल्टर का उपयोग कर सकते हैं, जिसका समय स्थिर आपके PWM की अवधि के कम से कम दस गुना है। इसका मतलब है कि यदि आपकी पीडब्लूएम अवधि 10 माइक्रोसेकंड थी तो आरसी समय स्थिर 100 माइक्रोसेकंड होना चाहिए। उदाहरण के लिए 10kOhms x 10nF = 100us

एक बेहतर उपाय यह है कि इस तरह से माइक्रोकंट्रोलर में संकेतों को डिजिटल रूप से फ़िल्टर किया जाए:

float y = (1-0.99)*input + 0.99*y; 

इस डिजिटल फ़िल्टर के समय को बदलने के लिए "0.99" मान बदलें।


1
यदि आप इसे कोड में करते हैं तो एलियासिंग के लिए देखें।
एंडी उर्फ

अलियासिंग एक समस्या नहीं है। हम सभी जानते हैं कि एक सिग्नल को फिर से संगठित करने के लिए नमूना दर कम से कम दो बार उच्चतम आवृत्ति होनी चाहिए। लेकिन जब सिग्नल को बंद किया जाता है तो आपको केवल दो बार बैंडविड्थ पर नमूना करना होगा । इसे अंडरस्लैम्पिग कहा जाता है। चूंकि सिग्नल संभवतः कम आवृत्ति है, क्योंकि यह एक हीटिंग पैड चला रहा है, तो 100 से 1000 एसपीएस रेंज में उचित नमूना दर ठीक होनी चाहिए। देखें: ni.com/newsletter/50078/en
akellyirl

यह सुनिश्चित करने के लिए बुद्धिमान होगा कि पीडब्लूएम दर और नमूना दर पारस्परिक रूप से प्राइमिंग हैं यदि अंडरस्मीपलिंग का उपयोग किया जाता है।
एंकिलिअर

शायद ही मेरे विचार - यदि ADC के माध्यम से मापने और एक ही MCU में PWM उत्पन्न करते हैं, तो दोनों को समय पर लॉक करने की प्रवृत्ति हो सकती है।
एंडी उर्फ

संकेत pwm आवृत्ति पर है, कम freq पर नहीं। यदि यह कम frq था, तो यह संभवतया कम संसाधन है जो केवल एक अवधि में नमूना और फ्लोटिंग पॉइंट गणित का उपयोग करने की तुलना में औसत है।
स्कॉट सेडमैन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.