Taula de continguts:
- Pas 1: demostració
- Pas 2: recursos utilitzats
- Pas 3: diagrama de blocs
- Pas 4: Esquema
- Pas 5: LM386: fixació
- Pas 6: AmpOp: diferencial (subtractor)
- Pas 7: AmpOp - Inverter Adder
- Pas 8: Mini-pinatge d'auró
- Pas 9: Maple Mini - Pinning - A / D que s'utilitza en la captura
- Pas 10: Muntatge
- Pas 11: Gràfic amb les dades obtingudes
- Pas 12: càlcul del valor RMS
- Pas 13: codi font
- Pas 14: fitxers
Vídeo: Mesurament del voltatge CA True-RMS: 14 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:14
Avui utilitzarem el STM32 Maple Mini per fer una lectura de corrent altern. En el nostre exemple, obtindrem el valor RMS de la xarxa elèctrica. Això és molt útil per a aquells que vulguin controlar la xarxa elèctrica per a Internet de les coses. A continuació, crearem una aplicació utilitzant la potència de càlcul del Maple Mini, aplicarem un circuit electrònic capaç de permetre l’adquisició d’un senyal de 127Vac, així com aplicarem el càlcul del quadrat mitjà arrel (RMS) a les mostres.
Pas 1: demostració
Al nostre muntatge actual, tenim el STM32, a més del nostre circuit analògic per fer l'entrada de 110. Per evitar xocs, aïlleu la resistència que entra per 110.
El circuit és força sensible. Entraré amb 110, però el redueixo 168 vegades amb el divisor de tensió i el poso a l’amplificador operacional, que té diverses funcions.
També tenim alguns condensadors opcionals per al filtratge de fonts. Si la vostra font és de bona qualitat, no cal que les feu servir.
L'entrada AD es calcula a través de l'oscil·loscopi, en el qual es veu un sinusoide, que no és 110 (però està ben format). Una altra cosa és que la tensió de la nostra xarxa elèctrica no és de 110 (en realitat és de 127 volts). Però a mesura que estem sotmesos a un estabilitzador, s’ajustarà a 115V.
El valor que es mostra al monitor sèrie és el que es calcula en RMS, és a dir, el que identifica el Fluke Meter.
Pas 2: recursos utilitzats
• Saltadors
• Un Maple Mini
• Protoboard
• Un amplificador LM386
• Una font simètrica (+ 5V i -5V)
• Un trimpot (o potenciòmetre) de 10k de diverses voltes
• Quatre condensadors de polièster 100nF
• Tres resistències de 10 k
• Quatre resistències de 470 k
• Una resistència 5k6
• Un díode zener 1n4728A
Pas 3: diagrama de blocs
Pas 4: Esquema
Aquest és un circuit que he desenvolupat basant-me en les especificacions que crec que són les millors per a aquesta mesura, però hi ha altres exemples que es poden trobar a Internet.
Pas 5: LM386: fixació
El LM386 té dos amplificadors per al condicionament o l'amplificació del senyal.
Pas 6: AmpOp: diferencial (subtractor)
Pas 7: AmpOp - Inverter Adder
Pas 8: Mini-pinatge d'auró
Pins marcats a:
Vermell >> 3V3 Tolerant
Verd >> Tolerant a 5V
Pas 9: Maple Mini - Pinning - A / D que s'utilitza en la captura
Destaco aquí que el pin que he utilitzat és el D11 que (a la nomenclatura de la STMicroelectronics) és el PA0.
Pas 10: Muntatge
Per al nostre circuit, necessitareu una font simètrica, com la que vam crear per a aquest projecte. En cas contrari, necessitareu dues fonts.
Pas 11: Gràfic amb les dades obtingudes
Pas 12: càlcul del valor RMS
Pas 13: codi font
Codi font: definicions i constants
Al principi, vam definir la lectura de pins com D11, així com les diverses constants utilitzades en els càlculs.
#define leituraTensao D11 // AD CH0 no pino PA0 // valor teórico divisor de tensão = 168.85714285714285714286 const float fatorDivisor = 168.40166345742404792461; // valor teòric 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òric da Tensão de alimentação Vcc = 3.3V const float Vcc = 3.3; // valor teòric 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 segons per a cada atualització // const int amostras = 35715; // resulta em 0, 514 segons per a cada atualització
Codi font: variables globals
Ara definim algunes variables globals.
float Vrms = 0,0; // armazena o valor rms da tensãofloat Vmax = 0,0; // armazena o valor màxim detectat float Vmin = 10000.0; // armazena o valor mínim detectat float Vmed = 0,0; // armazena o valor médio entre Vmáx e Vmín
Codi font - Configuració ()
Inicieu el port sèrie a 1 Mbps. Vam ajustar el port AD com a entrada i vam esperar 5 segons abans de començar a recopilar dades. El temps d'espera és opcional.
configuració nul·la () {Serial.begin (1000000); // inicia una porta serial em 1Mbps pinMode (leituraTensao, INPUT); // ajusta a porta do AD com entrada delay (5000); // aguarda 5s abans d'iniciar a coleta. (opcional)}
Codi font - bucle (): inicia les variables de recopilació de dades
Al bucle, tenim la variable per a la iteració. Aquí també emmagatzemem les lectures d’AD en 0,0 i reiniciem la variable VRMS també en 0,0.
bucle buit () {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
Codi font: captura i executa els càlculs individuals de cada mostra
En aquesta etapa, si i és més petit que la mostra, iniciem un cicle de mostreig fins que arribi al nombre de mostres. Executem analogRead per llegir el port analògic i calcular la suma dels quadrats de les tensions llegides. Finalment, incrementem l’iterador.
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 quadrats das tensões lidas i ++; // incrementa o iterador}
Codi font: càlculs generals de les mostres i identificació del màxim, mínim i mitjà
Apliquem el fet de multiplicar per determinar el valor real de les tensions. Detectem si el valor és màxim o mínim i calculem la mitjana dels valors màxim i mínim actuals.
// Aplicant fator de multiplicação per determinar o valor real das tensões Vrms = (sqrt (Vrms / amostras)) * fatorMultiplicacao; // detecta se é um valor és màxim if (Vrms> Vmax) {Vmax = Vrms; } // detecta es un valor mínim if (Vrms <Vmin) {Vmin = Vrms; } // calcula a mitjans dos valors màxims i mínims atuals Vmed = (Vmax + Vmin) / 2.0;
Codi font: opcions de sortida
Tenim tres opcions per "representar" el valor de sortida. Tenim la sortida formatada al traçador sèrie Arduino IDE, com ara CSV o Jason.
// saída formatada per 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 com 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 ("}"); * / / * // saída formatada com a 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); * /}
Pas 14: fitxers
Descarregueu els fitxers:
INO
Recomanat:
Sistema de mesurament de la temperatura i la humitat Arduino - Technic Joe: 3 passos
Sistema de mesurament de la temperatura i la humitat Arduino | Technic Joe: Després de construir dos jocs inútils amb Arduino i perdre el temps jugant-los, volia crear alguna cosa útil amb Arduino. Em va sorgir la idea d’un sistema de mesura de temperatura i humitat de l’aire per a plantes. Per fer el projecte una mica mo
Greentent: la primera mini casa verda portàtil del món amb mesurament de temperatura i humitat Arduino: 3 passos
Greentent: el primer mini hivernacle portàtil del món amb mesurament de temperatura i humitat Arduino: per primera vegada vaig tenir la idea d’un hivernacle portàtil que es pot moure de nit quan volia fer una manera de tenir un petit jardí en una caixa amb temperatura controlada i Humiditat. Per tant, és a la nit i vull anar a una botiga per obtenir aquests
Voltatge de sortida del convertidor DCDC controlat per PWM: 3 passos
Voltatge de sortida del convertidor DCDC controlat per PWM: necessitava un convertidor DCDC controlat digitalment amb una tensió de sortida variable per a un circuit de càrrega … Així que en vaig fer un. La resolució del voltatge de sortida és exponencialment pitjor com més alta sigui la tensió de sortida. Potser alguna cosa a veure amb la relació del LED
Mesurament de la humitat del sòl amb Arduino: 6 passos
Mesura de la humitat del sòl amb Arduino: en aquest tutorial ràpid, us mostraré com llegir un sensor d’humitat del sòl mitjançant arduino i imprimir el nivell d’humitat del sòl al monitor sèrie Arduino. Podeu trobar el missatge original escrit per mi en cingalès des d’aquest enllaç
Canvi del voltatge de sortida d’una font d’alimentació econòmica: 3 passos
Canvi del voltatge de sortida d’una font d’alimentació econòmica: aquest instructiu mostra com canviar les peces dins d’una petita font d’alimentació per canviar la tensió de sortida segons les vostres necessitats. Per al projecte de bricolatge, necessitava una tensió estabilitzada exactament de 7V dc i aproximadament 100 mA. Mirant al voltant de la meva col·lecció de peces, vaig trobar un s