Talaan ng mga Nilalaman:

Pagsukat ng True-RMS AC Boltahe: 14 Mga Hakbang
Pagsukat ng True-RMS AC Boltahe: 14 Mga Hakbang

Video: Pagsukat ng True-RMS AC Boltahe: 14 Mga Hakbang

Video: Pagsukat ng True-RMS AC Boltahe: 14 Mga Hakbang
Video: Paano gamitin ang Multitester || Pag sukat ng Amps, Ampere, DC and ac Ampere, (Tagalog) 2024, Nobyembre
Anonim
Image
Image
Pagpapakita
Pagpapakita

Ngayon, gagamitin namin ang STM32 Maple Mini upang gumawa ng pagbabasa sa AC. Sa aming halimbawa, makukuha namin ang halaga ng RMS ng grid ng kuryente. Napaka kapaki-pakinabang nito para sa mga nais subaybayan ang electrical network para sa Internet of Things. Lilikha kami ng isang application gamit ang lakas ng computational ng Maple Mini, maglapat ng isang electronic circuit na may kakayahang payagan ang pagkuha ng isang 127Vac signal, pati na rin ilapat ang pagkalkula ng root mean square (RMS) sa mga sample.

Hakbang 1: Pagpapakita

Sa aming pagpupulong ngayon, mayroon kaming STM32, bilang karagdagan sa aming analog circuit upang gawin ang input na 110. Upang maiwasan ang mga pagkabigla, ihiwalay ang risistor na papasok ng 110.

Ang circuit ay medyo sensitibo. Papasok ako sa 110, ngunit binabawasan ko ito ng 168 beses gamit ang voltage divider at inilalagay ito sa pagpapatakbo ng amplifier, na mayroong maraming mga pag-andar.

Mayroon din kaming ilang mga opsyonal na capacitor para sa pagsala ng mapagkukunan. Kung ang iyong mapagkukunan ay may mahusay na kalidad, hindi mo na kailangang gamitin ang mga ito.

Ang input ng AD ay kinakalkula sa pamamagitan ng oscilloscope, kung saan nakikita mo ang isang sinusoid, na hindi 110 (ngunit mahusay itong nabuo). Ang isa pang bagay ay ang boltahe sa aming electrical network ay hindi 110 (ito ay talagang 127 volts). Ngunit habang sumasailalim kami ng isang pampatatag, sasasaayos ito sa 115V.

Ang halagang ipinakita sa serial monitor ay kung ano ang kinakalkula sa RMS, iyon ay, ang isa na kinilala ng Fluke Meter.

Hakbang 2: Ginamit na Mga Mapagkukunan

Ginamit na Mga Mapagkukunan
Ginamit na Mga Mapagkukunan

• Mga jumper

• Isang Maple Mini

• Protoboard

• Isang LM386 amplifier

• Isang simetriko na mapagkukunan (+ 5V at -5V)

• Isang 10k multi-turn trimpot (o potentiometer)

• Apat na capacitor ng 100nF polyester

• Tatlong 10k resistors

• Apat na 470k resistors

• Isang 5k6 risistor

• Isang 1n4728A zener diode

Hakbang 3: I-block ang Diagram

I-block ang Diagram
I-block ang Diagram

Hakbang 4: Scheme

Scheme
Scheme

Ito ay isang circuit na binuo ko batay sa mga panoorin na sa tingin ko ay ang pinakamahusay para sa pagsukat na ito, ngunit maraming iba pang mga halimbawa na maaaring matagpuan sa internet.

Hakbang 5: LM386 - Pag-pin

LM386 - Pag-pin
LM386 - Pag-pin

Ang LM386 ay may dalawang amplifier para sa pag-air condition o signal amplification.

Hakbang 6: AmpOp - Pagkakaiba (nagbabawas)

AmpOp - Pagkakaiba (nagbabawas)
AmpOp - Pagkakaiba (nagbabawas)

Hakbang 7: AmpOp - Inverter Adder

AmpOp - Inverter Adder
AmpOp - Inverter Adder

Hakbang 8: Maple Mini - Pinage

Maple Mini - Pinage
Maple Mini - Pinage

Ang mga pin ay minarkahan sa:

Pula >> 3V3 Tolerant

Green >> 5V Tolerant

Hakbang 9: Maple Mini - Pinning - a / D Ginamit sa Pagkuha

Maple Mini - Pinning - a / D Ginamit sa Pag-capture
Maple Mini - Pinning - a / D Ginamit sa Pag-capture

Binibigyang diin ko dito na ang pin na ginamit ko ay ang D11 na (sa nomenclature ng STMicroelectronics) ay ang PA0.

Hakbang 10: Assembly

Assembly
Assembly

Para sa aming circuit, kakailanganin mo ng isang mahusay na mapagkukunan, tulad ng nilikha namin para sa proyektong ito. Kung hindi man, kakailanganin mo ng dalawang mapagkukunan.

Hakbang 11: Grap Sa Nakuha ang Data

Grap Sa Nakuha ang Data
Grap Sa Nakuha ang Data

Hakbang 12: Kinakalkula ang Halaga ng RMS

Kinakalkula ang Halaga ng RMS
Kinakalkula ang Halaga ng RMS

Hakbang 13: Source Code

Source code - Mga kahulugan at pare-pareho

Sa una, tinukoy namin ang pagbabasa ng pin bilang D11, pati na rin ang iba't ibang mga pare-pareho na ginamit sa mga kalkulasyon.

#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 float Vcc = 3.3; // valor teórico do offset do amplificador = Vcc / 2.0; Const float offSet = 1.66; // fator teórico da Conversã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

Source code - Mga variable sa buong mundo

Ngayon, tinutukoy namin ang ilang mga pandaigdigang variable.

float Vrms = 0.0; // armazena o valor rms da tensãofloat Vmax = 0.0; // armazena o valor máximo detectado float Vmin = 10000.0; // armazena o valor mínimo detectado float Vmed = 0.0; // armazena o valor médio entre Vmáx e Vmín

Source Code - Pag-setup ()

Simulan ang serial port sa 1Mbps. Inayos namin ang AD port bilang input at naghintay ng 5 segundo bago simulang mangolekta ng data. Ang oras ng standby ay opsyonal.

void setup () {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. (opcional)}

Source Code - Loop () - Sinisimulan ang mga variable ng koleksyon ng data

Sa Loop, mayroon kaming variable para sa pag-ulit. Dito, naiimbak din namin ang mga pagbasa ng AD sa 0.0 at i-restart ang variable na VRMS din sa 0.0.

void loop () {int i = 0; // variável para iteração float leitura = 0.0; // armazena as leituras do AD Vrms = 0.0; // reinicia a variável Vrms

Source Code - Nakukuha at naisasagawa ang mga indibidwal na kalkulasyon para sa bawat sample

Sa yugtong ito, kung mas maliit ako kaysa sa sample, nagsisimula kami ng isang ikot ng sampling hanggang maabot ko ang bilang ng mga sample. Nagpapatakbo kami ng analogRead upang basahin ang analog port at kalkulahin ang kabuuan ng mga parisukat ng nabasa na mga voltages. Sa wakas, nadagdagan namin ang iterator.

habang (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); // calculula a soma dos quadrados das tenões lidas i ++; // incrementa o iterador}

Source code - Pangkalahatang mga kalkulasyon ng mga sample at pagkakakilanlan ng maximum, minimum, at average

Inilalapat namin ang katotohanan ng pagpaparami upang matukoy ang aktwal na halaga ng mga voltages. Natutukoy namin kung ang halaga ay maximum o minimum, at kinakalkula namin ang average ng kasalukuyang maximum at minimum na mga halaga.

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

Source Code - Mga Pagpipilian sa Output

Mayroon kaming tatlong mga pagpipilian para sa "paglalagay" ng halaga ng output. Nag-format kami ng output sa serial plotter ng Arduino IDE, tulad ng CSV o Jason.

// saída formatada para sa 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 (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 ("}"); * / / * // sada 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); * /}

Hakbang 14: Mga File

I-download ang mga file:

PDF

INO

Inirerekumendang: