Índice:
- Etapa 1: Componentes necessários
- Etapa 2: Diagrama Esquemático
- Etapa 3: Compreendendo o circuito
- Etapa 4: Cálculo de frequência e tensão
- Etapa 5: Código Arduino
- Etapa 6: Conclusão
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:35
Introdução:
O objetivo deste projeto é medir a frequência e a tensão de alimentação, que está entre 220 a 240 Volts e 50 Hz aqui na Índia. Usei um Arduino para capturar sinal e calcular frequência e voltagem, você pode usar qualquer outro microcontrolador ou placa que tiver. O circuito requer um punhado de componentes e é bastante preciso para todos os fins práticos.
Etapa 1: Componentes necessários
- Arduino Uno
- IC LM358
- Transformador redutor (220V a 12V)
-
Capacitores:
- 0,1uF
- 2 x 1uF
-
Resistores:
- 3 x 1kOhm
- 2 x 100kOhm
- 1,5kOhm
- 3,3kOhm
- 6,8 kOhm
- 3 x diodo 1N4148
- Placa de pão e fio de ligação (opcional)
Etapa 2: Diagrama Esquemático
No circuito acima, o primário do transformador é conectado à rede de alimentação e o primário é conectado ao nosso circuito de medição
Etapa 3: Compreendendo o circuito
De acordo com a funcionalidade, este circuito pode ser dividido em quatro partes:
A: O circuito detector de cruzamento zero
Este circuito gera um pulso quadrado de 5 V sempre que a onda senoidal vai de positiva para negativa. O resistor R1 combinado com D1 e D2 limita a oscilação da tensão de entrada na junção do diodo de -0,6 V a + 5,6 V (assumindo que a tensão direta do diodo seja 0,6 V). Além disso, você pode aumentar a faixa de tensão de entrada do circuito aumentando o valor de R1.
O resistor R2 e R3 formam um divisor de voltagem para limitar a oscilação de voltagem negativa a -0,24Volts, já que a voltagem de modo comum de entrada do LM358 é limitada a -0,3Volts.
O resistor R4, R5, capacitor C1 e o op-amp (aqui usado como um comparador) formam o circuito Schmitt Trigger onde o resistor R4 e R5 definem a histerese na entrada + 49,5mV acima do solo. A saída do Schmitt Trigger é enviada ao Arduino PIN2 para processamento posterior.
B: Isolamento e Redução de Tensão
Como o nome sugere, esta parte isola e reduz a tensão para aproximadamente 12 Vrms. A tensão reduzida é posteriormente alimentada para o circuito de instrumentação.
C: circuito detector de pico
Este circuito determina a tensão máxima de pico do sinal de entrada. Os divisores de resistores R6 e R7 reduzem a tensão de entrada por um fator de 0,23 (12 Vrms é reduzido para 2,76 Vrms). O diodo D3 conduz apenas o meio ciclo positivo do sinal. A tensão em C2 aumenta até o valor de pico do sinal retificado, que é alimentado para o pino analógico A0 do Arduino para calcular posteriormente a tensão.
Além disso, você pode substituir este circuito por um circuito detector de pico de precisão como os mencionados aqui. Mas para os meus propósitos de demonstração, o circuito acima será suficiente.
D: Arduino
Nesta parte, o Arduino captura os pulsos quadrados gerados pelo circuito Schmitt Trigger e lê a tensão analógica do circuito detector de pico. Os dados são posteriormente processados para determinar o período de tempo (portanto, a frequência) do pulso quadrado (que é igual ao tempo de alimentação CA por pessoa) e a tensão da alimentação.
Etapa 4: Cálculo de frequência e tensão
Cálculo de frequência:
Com a ajuda do Arduino, podemos medir o período de tempo T do sinal. Os pulsos de onda quadrada do detector de cruzamento zero são enviados ao pino 2, a partir daí podemos medir o período de tempo de cada pulso. Podemos usar o temporizador interno do Arduino (especificamente Timer1) para calcular o período de tempo entre duas bordas ascendentes do pulso quadrado com a ajuda de interrupções. O temporizador é incrementado em 1 por ciclo de clock (sem prescaler = 1) e o valor é armazenado no registro TCNT1. Conseqüentemente, o relógio de 16 MHz incrementa o contador em 16 a cada microssegundo. Da mesma forma, para prescaler = 8, o cronômetro é incrementado em 2 a cada microssegundo. Daí o período de tempo entre duas arestas ascendentes
T = (valor TCNT1) / tempo gasto para cada contagem
Onde, o tempo gasto para cada contagem = prescaler / (velocidade do clock do Arduino (16 MHz)
Portanto, a frequência f = 1 / T = (velocidade do clock do Arduino (16 MHz) / (pré-escalador * valor TCNT!)
Portanto, a velocidade do temporizador (Hz) é dada por = (velocidade do clock do Arduino (16 MHz)) / prescaler
e a frequência do sinal é dada por = (velocidade do clock do Arduino
Correspondentemente, podemos calcular a frequência f a partir da relação f = 1 / T.
Cálculo da tensão:
O ADC onboard do Arduino tem uma resolução de 10 bits (valores possíveis = 2 ^ 10 = 1024), retornando valores na faixa de 0-1023. Para calcular a tensão analógica correspondente V, temos que usar a seguinte relação
V = (leitura ADC) * 5/1023
Para calcular a tensão de alimentação Vs (rms), devemos levar em consideração a relação do transformador, o divisor do resistor R6R7 e o circuito detector de pico. Podemos simplesmente juntar os vários fatores / proporção como:
Razão do transformador = 12/230 = 0,052
Divisor do resistor = R7 / (R6 + R7) = 0,23
No circuito detector de pico = 1,414
Vs (rms) = V / (1,414 * 0,052 * 0,23) = (Leitura ADC) * 0,289
Deve-se notar que este valor está longe do valor real, principalmente devido ao erro na relação real do transformador e à queda de tensão direta do diodo. Uma maneira de contornar isso é determinar o fator após a montagem do circuito. Isso é medindo a tensão de alimentação e a tensão através do capacitor C2 separadamente com um multímetro, então calculando Vs (rms) da seguinte forma:
Vs (rms) = ((Tensão de alimentação * 5) / (Tensão em C2 * 1023)) * (Leitura ADC)
no meu caso, Vs (rms) = 0,33 * (leitura ADC)
Etapa 5: Código Arduino
# define volt_in A0 // pino de leitura de tensão analógica
volatile uint16_t t_period; uint16_t ADC_value = 0; float volt, freq; void isr () {t_period = TCNT1; // armazena o valor TCNT1 em t_period TCNT1 = 0; // redefine Timer1 ADC_value = analogRead (volt_in); // lê a tensão analógica} float get_freq () {uint16_t timer = t_period; se (temporizador == 0) retornar 0; // para evitar a divisão por zero else return 16000000.0 / (8UL * timer); // frequência é dada por f = clk_freq / (prescaler * timeperiod)} void setup () {TCCR1A = 0; TCCR1B = bit (CS11); // define o prescaler para 8 TCNT1 = 0; // redefine o valor do Timer1 TIMSK1 = bit (TOIE1); // habilita a interrupção de estouro do Timer1 EIFR | = bit (INTF0); // limpa o sinalizador de interrupção INT0 Serial.begin (9600); } void loop () {attachInterrupt (0, isr, RISING); // habilita a interrupção externa (INT0) delay (1000); detachInterrupt (0); freq = get_freq (); volt = ADC_value * 0,33; String buf; buf + = String (freq, 3); buf + = F ("Hz / t"); buf + = String (volt); buf + = F ("Volts"); Serial.println (buf); }
Etapa 6: Conclusão
Você pode montar o circuito em uma placa de ensaio e ajustar o código e adicionar um cartão SD para armazenar os dados, que podem ser analisados posteriormente. Um exemplo é, você pode analisar a voltagem e a frequência nos horários de pico.
O circuito que montei na placa de ensaio usava LM324 (quad opamp) em vez de LM358 (dual opamp) porque eu não tinha aquele IC naquele momento e o bloqueio nacional devido à pandemia de COVID-19 dificultou a obtenção de um novo IC. No entanto, isso não afetaria o funcionamento do circuito.
Sinta-se à vontade para comentar abaixo para quaisquer sugestões e dúvidas.
Recomendado:
Fonte de alimentação ATX oculta para fonte de alimentação de bancada: 7 etapas (com imagens)
Fonte de alimentação ATX oculta para fonte de alimentação de bancada: Uma fonte de alimentação de bancada é necessária ao trabalhar com eletrônicos, mas uma fonte de alimentação de laboratório disponível comercialmente pode ser muito cara para qualquer iniciante que queira explorar e aprender eletrônica. Mas existe uma alternativa barata e confiável. Por conve
Fonte de alimentação DC de tensão ajustável usando o regulador de tensão LM317: 10 etapas
Fonte de alimentação DC de tensão ajustável usando o regulador de tensão LM317: Neste projeto, eu projetei uma fonte de alimentação DC de tensão ajustável simples usando o LM317 IC com um diagrama de circuito de fonte de alimentação LM317. Como este circuito possui uma ponte retificadora embutida, podemos conectar diretamente a alimentação 220V / 110V AC na entrada
Fonte de alimentação 220 V a 24 V 15 A - Fonte de alimentação comutada - IR2153: 8 etapas
Fonte de alimentação 220 V a 24 V 15 A | Fonte de alimentação comutada | IR2153: Oi cara, hoje. Fazemos uma fonte de alimentação de 220V a 24V 15A | Fonte de alimentação comutada | IR2153 da fonte de alimentação ATX
Como fazer uma fonte de alimentação de bancada ajustável com uma fonte de alimentação de PC antiga: 6 etapas (com fotos)
Como fazer uma fonte de alimentação de bancada ajustável com uma fonte de alimentação de PC antiga: Tenho uma fonte de alimentação de PC antiga disponível. Portanto, decidi fazer uma fonte de alimentação de bancada ajustável com ela. Precisamos de uma gama diferente de voltagens para alimentar ou verifique diferentes circuitos elétricos ou projetos. Por isso, é sempre bom ter um
Converta uma fonte de alimentação ATX em uma fonte de alimentação DC normal !: 9 etapas (com imagens)
Converta uma fonte de alimentação ATX em uma fonte de alimentação DC normal !: Uma fonte de alimentação DC pode ser difícil de encontrar e cara. Com recursos que são mais ou menos imprevisíveis para o que você precisa. Neste Instructable, vou mostrar como converter uma fonte de alimentação de computador em uma fonte de alimentação DC regular com 12, 5 e 3,3 v