Mundarija:

Haqiqiy-RMS AC kuchlanishini o'lchash: 14 qadam
Haqiqiy-RMS AC kuchlanishini o'lchash: 14 qadam

Video: Haqiqiy-RMS AC kuchlanishini o'lchash: 14 qadam

Video: Haqiqiy-RMS AC kuchlanishini o'lchash: 14 qadam
Video: Multimeterdan foydalanish | Multimeter haqida maʼlumot | Multimeterdan qanday foydalaniladi? 2024, Iyul
Anonim
Image
Image
Namoyish
Namoyish

Bugun biz STM32 Maple Mini -dan AC -ni o'qish uchun foydalanamiz. Bizning misolimizda biz elektr tarmog'ining RMS qiymatini olamiz. Bu narsalar Interneti uchun elektr tarmog'ini kuzatishni istaganlar uchun juda foydali. Keyin biz Maple Mini -ning hisoblash quvvatidan foydalangan holda dastur yaratamiz, 127Vac signalni olishga imkon beradigan elektron sxemani qo'llaymiz, shuningdek namunalarda o'rtacha o'rtacha kvadrat (RMS) hisobini qo'llaymiz.

1 -qadam: Namoyish

Bugungi yig'ilishimizda biz 110 -ni kiritish uchun analog sxemamizdan tashqari STM32 -ni ham olamiz. Shoklarni oldini olish uchun 110 ga kiradigan rezistorni ajratib oling.

O'chirish juda sezgir. Men 110 ga kiraman, lekin men kuchlanish taqsimlagich yordamida uni 168 marta kamaytiraman va uni bir nechta funktsiyali operatsion kuchaytirgichga qo'yaman.

Bizda manba filtrlash uchun ixtiyoriy kondansatörler ham bor. Agar sizning manbangiz sifatli bo'lsa, ularni ishlatishingiz shart emas.

AD kirishi osiloskop orqali hisoblab chiqiladi, unda siz sinusoidni ko'rasiz, u 110 emas (lekin u yaxshi shakllangan). Yana bir narsa shundaki, bizning elektr tarmog'imizdagi kuchlanish 110 emas (aslida 127 volt). Ammo biz stabilizatordan o'tayotganimizda, u 115V ga moslashadi.

Ketma -ket monitorda ko'rsatiladigan qiymat RMSda, ya'ni Fluke Meter tomonidan aniqlangan qiymat hisoblanadi.

2 -qadam: Ishlatilgan manbalar

Ishlatilgan manbalar
Ishlatilgan manbalar

• Jumpers

• Maple Mini

• Protoboard

• LM386 kuchaytirgichi

• Nosimmetrik manba (+ 5V va -5V)

• 10k ko'p burilishli trimpot (yoki potentsiometr)

• 100nF polyesterli to'rtta kondansatör

• Uchta 10k qarshilik

• To'rtta 470k rezistor

• Bitta 5k6 qarshilik

• Bitta 1n4728A zener diodi

3 -qadam: Blok diagrammasi

Blok diagrammasi
Blok diagrammasi

4 -qadam: sxema

Sxema
Sxema

Bu men o'lchov uchun eng yaxshisi bo'lgan spetsifikatsiyalar asosida ishlab chiqilgan sxema, lekin Internetda topish mumkin bo'lgan boshqa misollar ham bor.

5 -qadam: LM386 - qadash

LM386 - qadash
LM386 - qadash

LM386 konditsioner yoki signalni kuchaytirish uchun ikkita kuchaytirgichga ega.

6 -qadam: AmpOp - differentsial (olib tashlovchi)

AmpOp - differentsial (olib tashlovchi)
AmpOp - differentsial (olib tashlovchi)

7 -qadam: AmpOp - Inverter Adder

AmpOp - inverter qo'shuvchi
AmpOp - inverter qo'shuvchi

8 -qadam: Maple Mini - Pinage

Mini Maple - Pinage
Mini Maple - Pinage

Belgilangan pinlar:

Qizil >> 3V3 bardoshli

Yashil >> 5V bardoshli

9 -qadam: Maple Mini - Pinning - a / D suratga olishda ishlatiladi

Maple Mini - Pinning - a / D Rasmga olishda ishlatiladi
Maple Mini - Pinning - a / D Rasmga olishda ishlatiladi

Men shuni ta'kidlaymanki, men ishlatgan pin D11, bu (STMikroelektronika nomenklaturasida) PA0.

10 -qadam: yig'ish

O'rnatish
O'rnatish

Bizning sxemamiz uchun sizga nosimmetrik manba kerak bo'ladi, xuddi shu loyiha uchun biz yaratgan. Aks holda, sizga ikkita manba kerak bo'ladi.

11 -qadam: olingan ma'lumotlar bilan grafik

Olingan ma'lumotlar bilan grafik
Olingan ma'lumotlar bilan grafik

12 -qadam: RMS qiymatini hisoblash

RMS qiymatini hisoblash
RMS qiymatini hisoblash

13 -qadam: Manba kodi

Manba kodi - ta'riflar va doimiylar

Dastlab, biz pin o'qishni D11 deb, shuningdek, hisob -kitoblarda ishlatiladigan turli xil konstantalarni aniqladik.

#define leituraTensao D11 // AD CH0 no pino PA0 // valor teórico divisor de tensão = 168.85714285714285714286 const float fatorDivisor = 168.40166345742404792461; // jasorat teorikasi ganho de amplificação = 1.0 const float fatorAmplificador = 1.0; // FlatMultiplicacao = fatorDivisor * fatorAmplificador; // Valor teórico da Tensão de alimentação Vcc = 3.3V const float Vcc = 3.3; // valor teórico do offset do amplificador = Vcc /2.0; const float offSet = 1.66; // AD = 3.3 / 4095.0 const float fatorAD = Vcc / 4095.0; const int amostras = 71429; // natija 1, 027 -ni yozish mumkin emas // const int amostras = 35715; // natija 0, 514 ga teng

Manba kodi - global o'zgaruvchilar

Endi biz ba'zi global o'zgaruvchilarni aniqlaymiz.

float Vrms = 0,0; // armazena o valor rms da tensãofloat Vmax = 0.0; // qurol -yarog 'aniqlanadigan float Vmin = 10000.0; // qurol -aslahalar aniqlang float Vmed = 0.0; // Vmáx e Vmín -dan foydalangan holda

Manba kodi - sozlash ()

Seriya portini 1 Mbit / s tezlikda ishga tushiring. Biz AD portini kirish sifatida sozladik va ma'lumotlarni yig'ishni boshlashdan oldin 5 soniya kutdik. Kutish vaqti ixtiyoriy.

void setup () {Serial.begin (1000000); // 1Mbps pinMode ketma -ket ketma -ketligi (leituraTensao, INPUT); // bizni kutish vaqtini kechiktirish (5000); // 5 -sonli kitoblar. (ixtiyoriy)}

Manba kodi - Loop () - Ma'lumot yig'ish o'zgaruvchilarini ishga tushiradi

Loopda bizda iteratsiya uchun o'zgaruvchi mavjud. Bu erda biz AD o'qilishini 0,0 da saqlaymiz va VRMS o'zgaruvchisini 0,0 da qayta ishga tushiramiz.

void loop () {int i = 0; // variável para iteração float leitura = 0.0; // armazena, leytura sifatida AD Vrms = 0.0; // qayta ko'rib chiqilgan Vrms

Manba kodi - har bir namuna uchun individual hisoblarni yozib oladi va bajaradi

Bu bosqichda, agar i namunadan kichikroq bo'lsa, men namunalar soniga yetguncha namuna olish davrini boshlaymiz. Biz analog portni o'qish va o'qilgan kuchlanish kvadratlarining yig'indisini hisoblash uchun analogRead -ni ishga tushiramiz. Nihoyat, biz iteratorni ko'paytiramiz.

while (i <amostras) {// inicia um ciclo de amostragem até que i alcance o número de amostras leitura = analogRead (leituraTensao); // analogikaning bir qismi // Serial.println(leitura); // AD Vrms = Vrms + pow (((leitura * fatorAD) - offSet), 2.0); // hisob -kitoblar svopta quadrados das tensões lidas i ++; // orttirish yoki orttirish}

Manba kodi - namunalarning umumiy hisob -kitoblari va maksimal, minimal va o'rtacha ko'rsatkichlarni aniqlash

Biz kuchlanishlarning haqiqiy qiymatini aniqlash uchun ko'paytirish faktini qo'llaymiz. Biz qiymatning maksimal yoki minimal ekanligini aniqlaymiz va joriy maksimal va minimal qiymatlarning o'rtacha qiymatini hisoblaymiz.

// Aplicando fator de multiplicação para determinar is a valores a real das tensões Vrms = (sqrt (Vrms /amostras)) * fatorMultiplicacao; // detecta se é um valor é máximo if (Vrms> Vmax) {Vmax = Vrms; } // aniqlanganda, agar (Vrms <Vmin) {Vmin = Vrms; } // hisob -kitoblar Vmed = (Vmax + Vmin) /2.0;

Manba kodi - chiqish variantlari

Bizda chiqish qiymatini "chizish" uchun uchta variant mavjud. Bizda CSV yoki Jason kabi Arduino IDE ketma -ket plotteriga formatlangan chiqish mavjud.

// IDE Arduino Serial.print (Vrms, 3) ketma -ket ketma -ketlikdagi formatlash; Serial.print (","); Serial.print (Vmax, 3); Serial.print (","); Serial.print (Vmin, 3); Serial.print (","); Serial.println (Vmed, 3); /* // formatda buyruq json Serial.print ("{" bir zumda (ms) ":"); Serial.print (millis ()); 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 ("}"); * / /* // CSV Serial.print formatida (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 -qadam: fayllar

Fayllarni yuklab oling:

PDF

INO

Tavsiya: