Tabla de contenido:
- Paso 1: componentes necesarios
- Paso 2: diagrama esquemático
- Paso 3: Comprensión del circuito
- Paso 4: cálculo de frecuencia y voltaje
- Paso 5: Código Arduino
- Paso 6: Conclusión
Video: Medición de voltaje y frecuencia de la fuente de alimentación con Arduino: 6 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:40
Introducción:
El objetivo de este proyecto es medir la frecuencia y el voltaje de suministro, que está entre 220 y 240 voltios y 50 Hz aquí en la India. Usé un Arduino para capturar la señal y calcular la frecuencia y el voltaje, puede usar cualquier otro microcontrolador o placa que tenga. El circuito requiere un puñado de componentes y es bastante preciso para todos los propósitos prácticos.
Paso 1: componentes necesarios
- Arduino Uno
- IC LM358
- Transformador reductor (220V a 12V)
-
Condensadores:
- 0,1 uF
- 2 x 1 uF
-
Resistencias:
- 3 x 1 kOhmio
- 2 x 100 kOhmios
- 1,5 kOhmios
- 3,3 kOhmios
- 6,8 kOhmios
- 3 diodos 1N4148
- Placa de pan y cable de puente (opcional)
Paso 2: diagrama esquemático
En el circuito anterior, el primario del transformador está conectado a la red de suministro y el primario está conectado a nuestro circuito de medición.
Paso 3: Comprensión del circuito
Según la funcionalidad, este circuito se puede dividir en cuatro partes:
A: el circuito del detector de cruce por cero
Este circuito genera un pulso cuadrado de 5 V cada vez que la onda sinusoidal pasa de positivo a negativo. La resistencia R1 combinada con D1 y D2 limita la oscilación del voltaje de entrada en la unión del diodo de -0,6 V a + 5,6 V (suponiendo que el voltaje directo del diodo sea 0,6 V). Además, puede aumentar el rango de voltaje de entrada del circuito aumentando el valor de R1.
La resistencia R2 y R3 forman un divisor de voltaje para limitar la oscilación negativa del voltaje a -0,24 voltios, ya que el voltaje de modo común de entrada del LM358 está limitado a -0,3 voltios.
La resistencia R4, R5, el condensador C1 y el amplificador operacional (aquí utilizado como comparador) forman el circuito de disparo Schmitt donde la resistencia R4 y R5 establecen la histéresis en la entrada + 49,5 mV sobre el suelo. La salida del disparador Schmitt se envía al PIN2 de Arduino para su posterior procesamiento.
B: Aislamiento y reducción de voltaje
Como su nombre indica, esta parte aísla y reduce el voltaje a aproximadamente 12 Vrms. El voltaje reducido se alimenta además al circuito de instrumentación.
C: circuito detector de picos
Este circuito determina el voltaje pico máximo de la señal de entrada. Los divisores de resistencia R6 y R7 reducen el voltaje de entrada en un factor de 0.23 (12Vrms se reduce a 2.76Vrms). El diodo D3 conduce solo el semiciclo positivo de la señal. El voltaje a través de C2 aumenta hasta el valor máximo de la señal rectificada, que se alimenta al pin analógico A0 de Arduino para calcular aún más el voltaje.
Además, puede reemplazar este circuito con un circuito detector de picos de precisión como los mencionados aquí. Pero para mis propósitos de demostración, el circuito anterior será suficiente.
D: Arduino
En esta parte, el Arduino captura los pulsos cuadrados generados por el circuito Schmitt Trigger y lee el voltaje analógico del circuito detector de picos. Los datos se procesan adicionalmente para determinar el período de tiempo (por lo tanto, la frecuencia) del pulso cuadrado (que es igual al tiempo de suministro de CA de la persona) y el voltaje del suministro.
Paso 4: cálculo de frecuencia y voltaje
Cálculo de frecuencia:
Con la ayuda de Arduino, podemos medir el período de tiempo T de la señal. Los pulsos de onda cuadrada del detector de cruce por cero se alimentan al pin 2, desde allí podemos medir el período de tiempo de cada pulso. Podemos usar el temporizador interno de Arduino (específicamente Timer1) para calcular el período de tiempo entre dos bordes ascendentes del pulso cuadrado con la ayuda de interrupciones. El temporizador se incrementa en 1 por ciclo de reloj (sin preescalador = 1) y el valor se almacena en el registro TCNT1. Por lo tanto, el reloj de 16 Mhz incrementa el contador en 16 cada microsegundo. De manera similar, para el preescalador = 8, el temporizador se incrementa en 2 cada microsegundo. De ahí el período de tiempo entre dos flancos ascendentes
T = (valor TCNT1) / tiempo necesario para cada recuento
Donde, tiempo necesario para cada recuento = preescaler / (velocidad de reloj de Arduino (16MHz)
Por lo tanto, la frecuencia f = 1 / T = (velocidad de reloj de Arduino (16MHz) / (valor de Prescaler * TCNT!)
Por lo tanto, la velocidad del temporizador (Hz) viene dada por = (velocidad del reloj Arduino (16MHz)) / prescaler
y la frecuencia de la señal viene dada por = (velocidad del reloj Arduino
En consecuencia, podemos calcular la frecuencia f a partir de la relación f = 1 / T.
Cálculo de voltaje:
El ADC integrado de Arduino tiene una resolución de 10 bits (valores posibles = 2 ^ 10 = 1024), devolviendo valores en el rango de 0-1023. Para calcular el voltaje analógico correspondiente V tenemos que usar la siguiente relación
V = (lectura ADC) * 5/1023
Para calcular la tensión de alimentación Vs (rms) debemos tener en cuenta la relación de transformación, el divisor de resistencia R6R7 y el circuito detector de picos. Simplemente podemos juntar los diversos factores / razón como:
Relación de transformación = 12/230 = 0.052
Divisor de resistencia = R7 / (R6 + R7) = 0,23
En el circuito del detector de pico = 1.414
Vs (rms) = V / (1.414 * 0.052 * 0.23) = (Lectura ADC) * 0.289
Cabe señalar que este valor está lejos del valor real, principalmente debido al error en la relación de transformación real y la caída de voltaje directo del diodo. Una forma de evitar esto es determinar el factor después de ensamblar el circuito. Es decir, midiendo el voltaje de suministro y el voltaje a través del capacitor C2 por separado con un multímetro, luego calculando Vs (rms) de la siguiente manera:
Vs (rms) = ((Voltaje de suministro * 5) / (Voltaje en C2 * 1023)) * (Lectura ADC)
en mi caso, Vs (rms) = 0.33 * (lectura ADC)
Paso 5: Código Arduino
#define volt_in A0 // pin de lectura de voltaje analógico
volatile uint16_t t_period; uint16_t ADC_value = 0; voltio flotante, frecuencia; void isr () {t_period = TCNT1; // almacena el valor TCNT1 en t_period TCNT1 = 0; // restablecer Timer1 ADC_value = analogRead (volt_in); // leer voltaje analógico} float get_freq () {uint16_t timer = t_period; si (temporizador == 0) devuelve 0; // para evitar la división por cero, de lo contrario, devuelve 16000000.0 / (8UL * timer); // la frecuencia viene dada por f = clk_freq / (prescaler * timeperiod)} void setup () {TCCR1A = 0; TCCR1B = bit (CS11); // establece el preescalador en 8 TCNT1 = 0; // restablecer el valor del Timer1 TIMSK1 = bit (TOIE1); // habilita la interrupción de desbordamiento del Timer1 EIFR | = bit (INTF0); // borra el indicador de interrupción INT0 Serial.begin (9600); } bucle vacío () {attachInterrupt (0, isr, RISING); // habilita la interrupción externa (INT0) delay (1000); detachInterrupt (0); freq = get_freq (); voltio = ADC_value * 0.33; String buf; buf + = Cadena (frecuencia, 3); buf + = F ("Hz / t"); buf + = String (voltios); buf + = F ("Voltios"); Serial.println (buf); }
Paso 6: Conclusión
Puede ensamblar el circuito en una placa y modificar el código y agregar una tarjeta SD para almacenar los datos, que luego se pueden analizar. Un ejemplo es que puede analizar el voltaje y la frecuencia en las horas pico.
El circuito que ensamblé en la placa usaba LM324 (quad opamp) en lugar de LM358 (dual opamp) ya que no tenía ese IC en ese momento y el bloqueo nacional debido a la pandemia de COVID-19 me dificultó obtener un nuevo IC. Sin embargo, no afectaría el funcionamiento del circuito.
No dude en comentar a continuación para cualquier sugerencia y consulta.
Recomendado:
Una fuente de alimentación de banco de Sleak desde la fuente de alimentación de la PC: 8 pasos (con imágenes)
Una fuente de alimentación de banco de Sleak desde la fuente de alimentación de la PC: Actualización: la razón por la que no he tenido que usar una resistencia para detener el apagado automático de la fuente de alimentación es que (creo que …) el led en el interruptor que usé consume suficiente corriente para evitar el PSU apagándose, así que necesitaba una fuente de alimentación de sobremesa y decidí hacer una
Fuente de alimentación ATX encubierta a fuente de alimentación de banco: 7 pasos (con imágenes)
Fuente de alimentación ATX encubierta para fuente de alimentación de banco: una fuente de alimentación de banco es necesaria cuando se trabaja con electrónica, pero una fuente de alimentación de laboratorio disponible comercialmente puede ser muy costosa para cualquier principiante que quiera explorar y aprender electrónica. Pero existe una alternativa barata y confiable. Por conve
Fuente de alimentación de CC de voltaje ajustable mediante el regulador de voltaje LM317: 10 pasos
Fuente de alimentación de CC de voltaje ajustable usando el regulador de voltaje LM317: En este proyecto, he diseñado una fuente de alimentación de CC de voltaje ajustable simple usando el CI LM317 con un diagrama de circuito de la fuente de alimentación LM317. Como este circuito tiene un puente rectificador incorporado, podemos conectar directamente una fuente de alimentación de 220 V / 110 V CA en la entrada
Cómo hacer una fuente de alimentación de banco ajustable con una fuente de alimentación de PC antigua: 6 pasos (con imágenes)
Cómo hacer una fuente de alimentación de banco ajustable con una fuente de alimentación de PC vieja: Tengo una fuente de alimentación de PC vieja por ahí, así que he decidido hacer una fuente de alimentación de banco ajustable con ella. Necesitamos un rango diferente de voltajes para alimentar o Verifique diferentes circuitos eléctricos o proyectos. Por lo tanto, siempre es bueno tener un
¡Convierta una fuente de alimentación ATX en una fuente de alimentación de CC normal !: 9 pasos (con imágenes)
¡Convierta una fuente de alimentación ATX en una fuente de alimentación de CC normal !: Una fuente de alimentación de CC puede ser difícil de encontrar y costosa. Con características que son más o menos impredecibles para lo que necesita. En este Instructable, le mostraré cómo convertir una fuente de alimentación de computadora en una fuente de alimentación de CC normal con 12, 5 y 3.3 v