جدول المحتويات:

قياس جهد التيار المتردد True-RMS: 14 خطوة
قياس جهد التيار المتردد True-RMS: 14 خطوة

فيديو: قياس جهد التيار المتردد True-RMS: 14 خطوة

فيديو: قياس جهد التيار المتردد True-RMS: 14 خطوة
فيديو: Why True-RMS multimeter? 2024, شهر نوفمبر
Anonim
Image
Image
برهنة
برهنة

اليوم ، سنستخدم STM32 Maple Mini للقيام بقراءة التيار المتردد. في مثالنا ، سنحصل على قيمة RMS لشبكة الطاقة. هذا مفيد جدًا لأولئك الذين يرغبون في مراقبة الشبكة الكهربائية لإنترنت الأشياء. سننشئ بعد ذلك تطبيقًا باستخدام القوة الحسابية لـ Maple Mini ، ونطبق دائرة إلكترونية قادرة على السماح بالحصول على إشارة 127Vac ، وكذلك تطبيق حساب جذر متوسط التربيع (RMS) على العينات.

الخطوة 1: العرض التوضيحي

في مجموعتنا اليوم ، لدينا STM32 ، بالإضافة إلى دائرتنا التناظرية لإدخال 110. لتجنب الصدمات ، اعزل المقاوم الذي يدخل بمقدار 110.

الدائرة حساسة للغاية. أنا أدخل بـ 110 ، لكنني قللته 168 مرة باستخدام مقسم الجهد ووضعه في مكبر الصوت التشغيلي ، الذي له عدة وظائف.

لدينا أيضًا بعض المكثفات الاختيارية لتصفية المصدر. إذا كان مصدرك ذا نوعية جيدة ، فلا داعي لاستخدامه.

يُحسب إدخال AD من خلال مرسمة الذبذبات ، حيث ترى الجيب الجيبي ، وهو ليس 110 (ولكنه متشكل جيدًا). شيء آخر هو أن الجهد في شبكتنا الكهربائية ليس 110 (إنه في الواقع 127 فولت). ولكن نظرًا لأننا نجتاز عامل استقرار ، فسوف يتكيف مع 115 فولت.

القيمة المعروضة على الشاشة التسلسلية هي ما يتم حسابه في RMS ، أي القيمة المحددة بواسطة Fluke Meter.

الخطوة 2: الموارد المستخدمة

الموارد المستخدمة
الموارد المستخدمة

• صداري

• ميني ميبل

• Protoboard

• مكبر للصوت LM386

• مصدر متماثل (+ 5 فولت و -5 فولت)

• أداة تقليم متعددة الأدوار 10 آلاف (أو مقياس الجهد)

• أربعة مكثفات 100nF البوليستر

• ثلاث مقاومات 10 كيلو

• أربع مقاومات 470 ألف

• مقاوم واحد 5k6

• واحد 1n4728A زينر ديود

الخطوة 3: مخطط الكتلة

مخطط كتلة
مخطط كتلة

الخطوة 4: المخطط

مخطط
مخطط

هذه دائرة قمت بتطويرها بناءً على المواصفات التي أعتقد أنها الأفضل لهذا القياس ، ولكن هناك العديد من الأمثلة الأخرى التي يمكن العثور عليها على الإنترنت.

الخطوة 5: LM386 - التثبيت

LM386 - تثبيت
LM386 - تثبيت

يحتوي LM386 على مضخمين للتكييف أو تضخيم الإشارة.

الخطوة 6: AmpOp - التفاضل (الطرح)

AmpOp - التفاضلية (الطرح)
AmpOp - التفاضلية (الطرح)

الخطوة 7: AmpOp - Inverter Adder

AmpOp - الأفعى العاكس
AmpOp - الأفعى العاكس

الخطوة 8: Maple Mini - Pinage

القيقب ميني - بيناج
القيقب ميني - بيناج

تم وضع علامة على دبابيس على:

أحمر >> 3V3 متسامح

أخضر >> 5V متسامح

الخطوة 9: Maple Mini - Pinning - a / D المستخدم في الالتقاط

القيقب الصغير - التثبيت - a / D المستخدم في الالتقاط
القيقب الصغير - التثبيت - a / D المستخدم في الالتقاط

أؤكد هنا أن الدبوس الذي استخدمته هو D11 (في تسمية STMicroelectronics) هو PA0.

الخطوة 10: التجميع

المجسم
المجسم

بالنسبة إلى دائرتنا ، ستحتاج إلى مصدر متماثل ، مثل الذي أنشأناه لهذا المشروع. خلاف ذلك ، سوف تحتاج إلى مصدرين.

الخطوة 11: رسم بياني بالبيانات التي تم الحصول عليها

الرسم البياني مع البيانات التي تم الحصول عليها
الرسم البياني مع البيانات التي تم الحصول عليها

الخطوة 12: حساب قيمة RMS

حساب قيمة RMS
حساب قيمة RMS

الخطوة 13: كود المصدر

كود المصدر - التعاريف والثوابت

في البداية ، حددنا قراءة الدبوس على أنها D11 ، بالإضافة إلى الثوابت المختلفة المستخدمة في الحسابات.

#define leituraTensao D11 // AD CH0 no pino PA0 // valor teórico divisor de tensão = 168.85714285714285714286 const float fatorDivisor = 168.40166345742404792461؛ // valor teórico do ganho de amplificação = 1.0 const float fatorAmplificador = 1.0 ؛ // Valor usado na multiplicação da leitura const float fatorMultiplicacao = fatorDivisor * fatorAmplificador؛ // Valor teórico da Tensão de alimentação Vcc = 3.3V const تعويم Vcc = 3.3 ؛ // valor teórico do offset do amplificador = Vcc / 2.0؛ تعويم const offSet = 1.66 ؛ // fator teórico da convertão do AD = 3.3 / 4095.0 const float fatorAD = Vcc / 4095.0 ؛ const int amostras = 71429 ؛ // resulta em 1، 027 segundos para cada atualização // const int amostras = 35715 ؛ // resulta em 0، 514 segundos para cada atualização

كود المصدر - المتغيرات العالمية

الآن ، نحدد بعض المتغيرات العالمية.

تعويم Vrms = 0.0 ؛ // armazena o valor rms da tensãofloat Vmax = 0.0 ؛ // armazena o valor máximo detado float Vmin = 10000.0 ؛ // armazena o valor mínimo detado float Vmed = 0.0 ؛ // armazena o valor médio entre Vmáx e Vmín

كود المصدر - الإعداد ()

ابدأ المنفذ التسلسلي بسرعة 1 ميجابت في الثانية. قمنا بتعديل منفذ AD كإدخال وانتظرنا 5 ثوانٍ قبل البدء في جمع البيانات. وقت الاستعداد اختياري.

إعداد باطل () {Serial.begin (1000000) ؛ // inicia a porta serial em 1Mbps pinMode (leituraTensao ، INPUT) ؛ // ajusta a porta do AD como entrada delay (5000) ؛ // aguarda 5s antes de iniciar a coleta. (اختياري)}

كود المصدر - الحلقة () - يبدأ متغيرات جمع البيانات

في الحلقة ، لدينا متغير التكرار. هنا ، نقوم أيضًا بتخزين قراءات AD في 0.0 وإعادة تشغيل متغير VRMS أيضًا في 0.0.

حلقة باطلة () {int i = 0 ؛ // varável para iteração float leitura = 0.0 ؛ // armazena مثل leituras تفعل AD Vrms = 0.0 ؛ // renicia a varável Vrms

كود المصدر - يلتقط وينفذ العمليات الحسابية الفردية لكل عينة

في هذه المرحلة ، إذا كنت أصغر من العينة ، نبدأ دورة أخذ العينات حتى أصل إلى عدد العينات. نقوم بتشغيل analogRead لقراءة المنفذ التناظري وحساب مجموع مربعات الفولتية القراءة. أخيرًا ، نقوم بزيادة المكرر.

while (i <amostras) {// inicia um ciclo de amostragem até que i alcance o número de amostras leitura = analogRead (leituraTensao) ؛ // lê a porta analógica //Serial.println(leitura) ؛ // Descomente se quiser ver o sinal bruto do AD Vrms = Vrms + pow (((leitura * fatorAD) - offSet)، 2.0) ؛ // calcula a soma dos quadrados das tensões lidas i ++ ؛ // incrementa o iterador}

كود المصدر - الحسابات العامة للعينات وتحديد الحد الأقصى والحد الأدنى والمتوسط

نطبق حقيقة الضرب لتحديد القيمة الفعلية للجهد. نكتشف ما إذا كانت القيمة هي الحد الأقصى أو الحد الأدنى ، ونحسب متوسط القيم القصوى والدنيا الحالية.

// Aplicando fator de multiplicação paraerminar o valor real das tensões Vrms = (sqrt (Vrms / amostras)) * fatorMultiplicacao ؛ // Discovera se é um valor é máximo if (Vrms> Vmax) {Vmax = Vrms؛ } // Discovera se é um valor mínimo if (Vrms <Vmin) {Vmin = Vrms؛ } // calcula a média dos valores máximo e mínimo atuais Vmed = (Vmax + Vmin) / 2.0؛

كود المصدر - خيارات الإخراج

لدينا ثلاثة خيارات لـ "رسم" قيمة الإخراج. لقد تم تنسيق الإخراج على الراسمة التسلسلية Arduino IDE ، مثل CSV أو Jason.

// saída formatada para plotter serial IDE Arduino Serial.print (Vrms، 3)؛ Serial.print ("،") ؛ Serial.print (Vmax، 3) ؛ Serial.print ("،") ؛ Serial.print (Vmin، 3) ؛ Serial.print ("،") ؛ Serial.println (Vmed، 3) ؛ / * // saída formatada como json Serial.print ("{" instante (ms) ":")؛ Serial.print (مللي ()) ؛ Serial.print ("،") ؛ Serial.print ("\" Vrms (V) ":")؛ Serial.print (Vrms ، 3) ؛ Serial.print ("،") ؛ Serial.print ("\" Vmax (V) ":")؛ Serial.print (Vmax، 3) ؛ Serial.print ("،") ؛ Serial.print ("\" Vmin (V) ":")؛ Serial.print (Vmin، 3) ؛ Serial.print ("،") ؛ Serial.print ("\" Vmed (V) ":") ؛ Serial.print (Vmed، 3) ؛ Serial.println ("}") ؛ * / / * // saída formatada como CSV Serial.print (millis ()) ؛ Serial.print ("،") ؛ Serial.print (Vrms ، 3) ؛ Serial.print ("،") ؛ Serial.print (Vmax، 3) ؛ Serial.print ("،") ؛ Serial.print (Vmin، 3) ؛ Serial.print ("،") ؛ Serial.println (Vmed، 3) ؛ * /}

الخطوة 14: الملفات

قم بتنزيل الملفات:

بي دي إف

انا لا

موصى به: