Tabla de contenido:

Medición de voltaje CA de verdadero valor eficaz: 14 pasos
Medición de voltaje CA de verdadero valor eficaz: 14 pasos

Video: Medición de voltaje CA de verdadero valor eficaz: 14 pasos

Video: Medición de voltaje CA de verdadero valor eficaz: 14 pasos
Video: ✅FÓRMULA del VALOR EFICAZ | SORPRENDENTE!!!😮| Cómo deducir el VRMS 2024, Mes de julio
Anonim
Image
Image
Demostración
Demostración

Hoy, usaremos el STM32 Maple Mini para hacer una lectura de CA. En nuestro ejemplo, obtendremos el valor RMS de la red eléctrica. Esto es muy útil para aquellos que desean monitorear la red eléctrica para el Internet de las cosas. Luego crearemos una aplicación utilizando la potencia computacional del Maple Mini, aplicaremos un circuito electrónico capaz de permitir la adquisición de una señal de 127Vac, así como aplicaremos el cálculo de la raíz cuadrada media (RMS) en las muestras.

Paso 1: demostración

En nuestro montaje de hoy, tenemos el STM32, además de nuestro circuito analógico para hacer la entrada de 110. Para evitar choques, aísle la resistencia que está entrando por 110.

El circuito es bastante sensible. Estoy ingresando con 110, pero lo reduzco 168 veces usando el divisor de voltaje y lo pongo en el amplificador operacional, que tiene varias funciones.

También tenemos algunos condensadores opcionales para el filtrado de fuentes. Si su fuente es de buena calidad, no es necesario que la utilice.

La entrada AD se calcula a través del osciloscopio, en el que se ve una sinusoide, que no es 110 (pero está bien formada). Otra cosa es que el voltaje en nuestra red eléctrica no es 110 (en realidad es 127 voltios). Pero como estamos pasando por un estabilizador, se ajustará a 115V.

El valor que se muestra en el monitor en serie es el que se calcula en RMS, es decir, el que identifica el medidor Fluke.

Paso 2: Recursos utilizados

Recursos utilizados
Recursos utilizados

• Jerséis

• Un mini arce

• Protoboard

• Un amplificador LM386

• Una fuente simétrica (+ 5V y -5V)

• Un potenciómetro (o potenciómetro) multivuelta de 10k

• Cuatro condensadores de poliéster 100nF

• Tres resistencias de 10k

• Cuatro resistencias de 470k

• Una resistencia de 5k6

• Un diodo zener 1n4728A

Paso 3: diagrama de bloques

Diagrama de bloques
Diagrama de bloques

Paso 4: esquema

Esquema
Esquema

Este es un circuito que desarrollé en base a las especificaciones que creo que son las mejores para esta medición, pero hay varios otros ejemplos que se pueden encontrar en Internet.

Paso 5: LM386 - Fijación

LM386 - Fijación
LM386 - Fijación

El LM386 tiene dos amplificadores para acondicionamiento o amplificación de señal.

Paso 6: AmpOp - Diferencial (resta)

AmpOp - Diferencial (resta)
AmpOp - Diferencial (resta)

Paso 7: AmpOp - Inverter Adder

AmpOp - Sumador inversor
AmpOp - Sumador inversor

Paso 8: Maple Mini - Pinage

Maple Mini - Pinaje
Maple Mini - Pinaje

Pines marcados en:

Rojo >> Tolerante a 3V3

Verde >> Tolerante a 5V

Paso 9: Maple Mini - Fijación - A / D utilizado en la captura

Maple Mini - Fijación - A / D utilizado en la captura
Maple Mini - Fijación - A / D utilizado en la captura

Destaco aquí que el pin que utilicé es el D11 que (en la nomenclatura del STMicroelectronics) es el PA0.

Paso 10: Montaje

Montaje
Montaje

Para nuestro circuito, necesitará una fuente simétrica, como la que creamos para este proyecto. De lo contrario, necesitará dos fuentes.

Paso 11: Grafica con los datos obtenidos

Gráfico con los datos obtenidos
Gráfico con los datos obtenidos

Paso 12: Calcular el valor RMS

Cálculo del valor RMS
Cálculo del valor RMS

Paso 13: Código fuente

Código fuente: definiciones y constantes

Al principio, definimos la lectura del pin como D11, así como las diversas constantes utilizadas en los cálculos.

#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 en la multiplicación de la lectura const float fatorMultiplicacao = fatorDivisor * fatorAmplificador; // Valor teórico de la tensión de alimentación 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

Código fuente: variables globales

Ahora, definimos algunas variables globales.

flotador 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

Código fuente - Configuración ()

Inicie el puerto serie a 1 Mbps. Ajustamos el puerto AD como entrada y esperamos 5 segundos antes de comenzar a recopilar datos. El tiempo de espera es opcional.

configuración vacía () {Serial.begin (1000000); // inicia un puerto serial em 1Mbps pinMode (leituraTensao, INPUT); // ajusta a porta do AD como entrada delay (5000); // aguarda 5s antes de iniciar a coleta. (opcional)}

Código fuente: bucle (): inicia las variables de recopilación de datos

En el bucle, tenemos la variable de iteración. Aquí, también almacenamos las lecturas de AD en 0.0 y reiniciamos la variable VRMS también en 0.0.

bucle vacío () {int i = 0; // variável para iteração float leitura = 0.0; // armazena como leituras do AD Vrms = 0.0; // reinicia a variável Vrms

Código fuente: captura y ejecuta los cálculos individuales para cada muestra.

En esta etapa, si i es más pequeño que la muestra, comenzamos un ciclo de muestreo hasta que i alcanza el número de muestras. Ejecutamos analogRead para leer el puerto analógico y calcular la suma de los cuadrados de los voltajes de lectura. Finalmente, incrementamos el 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 un soma dos quadrados das tensões lidas i ++; // incrementa o iterador}

Código fuente - Cálculos generales de las muestras e identificación de máximo, mínimo y promedio.

Aplicamos el hecho de la multiplicación para determinar el valor real de los voltajes. Detectamos si el valor es máximo o mínimo, y calculamos la media de los valores máximo y mínimo actuales.

// Aplicando fator de multiplicação para determinar o valor real das tensõ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; } // calcula un medio de valores máximo e mínimo atuais Vmed = (Vmax + Vmin) / 2.0;

Código fuente - Opciones de salida

Tenemos tres opciones para "graficar" el valor de salida. Hemos formateado la salida al trazador de serie Arduino IDE, como CSV o Jason.

// saída formatada para plotter serial IDE Arduino Serial.print (Vrms, 3); Serial.print (","); Impresión serial (Vmax, 3); Serial.print (","); Impresión serial (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) ":"); Impresión serial (Vrms, 3); Serial.print (","); Serial.print ("\" Vmax (V) ":"); Impresión serial (Vmax, 3); Serial.print (","); Serial.print ("\" Vmin (V) ":"); Impresión serial (Vmin, 3); Serial.print (","); Serial.print ("\" Vmed (V) ":"); Impresión de serie (Vmed, 3); Serial.println ("}"); * / / * // saída formatada como CSV Serial.print (millis ()); Serial.print (","); Impresión serial (Vrms, 3); Serial.print (","); Impresión serial (Vmax, 3); Serial.print (","); Impresión serial (Vmin, 3); Serial.print (","); Serial.println (Vmed, 3); * /}

Paso 14: Archivos

Descarga los archivos:

PDF

INO

Recomendado: