Taula de continguts:
- Pas 1: components necessaris
- Pas 2: Diagrama esquemàtic
- Pas 3: Comprensió del circuit
- Pas 4: càlcul de freqüència i tensió
- Pas 5: Codi Arduino
- Pas 6: Conclusió
Vídeo: Mesura de freqüència i tensió de la font d'alimentació mitjançant Arduino: 6 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:11
Introducció:
L'objectiu d'aquest projecte és mesurar la freqüència i la tensió de subministrament, que es troba entre 220 i 240 volts i 50 Hz aquí a l'Índia. He utilitzat un Arduino per captar senyals i calcular freqüències i voltatges; podeu utilitzar qualsevol altre microcontrolador o placa que tingueu. El circuit requereix un grapat de components i és bastant precís per a tots els propòsits pràctics.
Pas 1: components necessaris
- Arduino Uno
- IC LM358
- Transformador reductor (220V a 12V)
-
Condensadors:
- 0,1uF
- 2 x 1uF
-
Resistències:
- 3 x 1kOhm
- 2 x 100kOhm
- 1,5 kOhm
- 3,3 kOhm
- 6,8 kOhm
- 3 x 1N4148 díode
- Taula de pa i filferro de pont (opcional)
Pas 2: Diagrama esquemàtic
En el circuit anterior, el transformador primari està connectat a la xarxa d’alimentació i el primari es connecta al nostre circuit de mesura
Pas 3: Comprensió del circuit
Segons la funcionalitat, aquest circuit es pot dividir en quatre parts:
A: El circuit del detector de creuament zero
Aquest circuit genera un pols quadrat de 5V sempre que l’ona sinusoïdal passa de positiu a negatiu. La resistència R1 combinada amb D1 i D2 limita l’oscil·lació del voltatge d’entrada a la unió del díode a -0,6V a + 5,6V (suposant que la tensió directa del díode és 0,6V). A més, podeu augmentar el rang de tensió d’entrada del circuit augmentant el valor de R1.
La resistència R2 i R3 formen un divisor de tensió per limitar el balanceig de tensió negativa a -0,24 volts ja que la tensió d’entrada en mode comú de LM358 es limita a -0,3 volts.
La resistència R4, R5, el condensador C1 i l'amplificador operacional (aquí s'utilitza com a comparador) formen el circuit de desencadenament de Schmitt on la resistència R4 i R5 estableixen la histèresi a l'entrada + 49,5mV sobre terra. La sortida del Schmitt Trigger s’alimenta a l’Arduino PIN2 per a un processament posterior.
B: Aïllament i baixada de tensió
Com el seu nom indica, aquesta part aïlla i redueix el voltatge fins a aproximadament 12Vrms. El voltatge reduït s’alimenta al circuit de la instrumentació.
C: Circuit de detecció de pics
Aquest circuit determina la tensió màxima màxima del senyal d’entrada. Els divisors de resistències R6 i R7 redueixen la tensió d’entrada en un factor de 0,23 (12Vrms es redueix a 2,76Vrms). El díode D3 condueix només el mig cicle positiu del senyal. La tensió a través de C2 augmenta fins al valor màxim del senyal rectificat, que s’alimenta al pin analògic A0 d’Arduino per calcular encara més la tensió.
A més, podeu substituir aquest circuit per un circuit de detecció de pics de precisió com els que s’esmenten aquí. Però per a la meva demostració, el circuit anterior serà suficient.
D: Arduino
En aquesta part, l’Arduino capta els impulsos quadrats generats pel circuit Schmitt Trigger i llegeix la tensió analògica del circuit del detector de pics. Les dades es processen a més per determinar el període de temps (per tant, la freqüència) del pols quadrat (que és igual al temps de subministrament de corrent altern) i el voltatge de l'alimentació.
Pas 4: càlcul de freqüència i tensió
Càlcul de freqüència:
Amb l'ajut d'Arduino, podem mesurar el període de temps T del senyal. Els polsos d'ona quadrada del detector de creuament zero s'alimenten al pin 2, a partir d'aquí podem mesurar el període de temps de cada pols. Podem utilitzar el temporitzador intern d’Arduino (específicament Timer1) per calcular el període de temps entre dues vores ascendents del pols quadrat amb l’ajut d’interrupcions. El temporitzador augmenta 1 per cicle de rellotge (sense prescaler = 1) i el valor s’emmagatzema al registre TCNT1. Per tant, el rellotge de 16 MHz incrementa el comptador en 16 cada microsegon. De manera similar, per prescaler = 8, el temporitzador s'incrementa en 2 cada microsegon. Per tant, el període de temps entre dues vores ascendents
T = (valor TCNT1) / temps necessari per a cada recompte
On, temps de cada recompte = prescaler / (velocitat de rellotge Arduino (16 MHz)
Per tant, la freqüència f = 1 / T = (Velocitat de rellotge Arduino (16 MHz) / (valor del precalificador * TCNT!)
Per tant, la velocitat del temporitzador (Hz) ve donada per = (velocitat de rellotge Arduino (16 MHz)) / prescaler
i la freqüència del senyal ve donada per = (velocitat de rellotge Arduino
Correspondentment, podem calcular la freqüència f a partir de la relació f = 1 / T.
Càlcul de la tensió:
L’ADC incorporat d’Arduino té una resolució de 10 bits (valors possibles = 2 ^ 10 = 1024), retornant valors compresos entre 0-1023. Per calcular la tensió analògica V corresponent hem d’utilitzar la següent relació
V = (Lectura ADC) * 5/1023
Per calcular la tensió d'alimentació Vs (rms) hem de tenir en compte la relació del transformador, el divisor de resistències R6R7 i el circuit del detector de pics. Simplement podem reunir els diversos factors / relació com:
Relació del transformador = 12/230 = 0,052
Divisor de resistència = R7 / (R6 + R7) = 0,23
En circuit de detector de pic = 1,414
Vs (rms) = V / (1,414 * 0,052 * 0,23) = (lectura ADC) * 0,289
Cal tenir en compte que aquest valor està lluny del valor real, principalment per error en la relació real del transformador i la caiguda de tensió directa del díode. Una manera d’eludir-ho és determinar el factor després de muntar el circuit. És a dir, mesurant la tensió d’alimentació i la tensió a través del condensador C2 per separat amb un multímetre, calculant així Vs (rms) de la següent manera:
Vs (rms) = ((Voltatge de subministrament * 5) / (Voltatge a través de C2 * 1023)) * (Lectura ADC)
en el meu cas, Vs (rms) = 0,33 * (lectura ADC)
Pas 5: Codi Arduino
#define volt_in A0 // pin de lectura de voltatge analògic
volàtil uint16_t t_period; uint16_t ADC_value = 0; voltatge flotant, freq; void isr () {t_period = TCNT1; // emmagatzema el valor TCNT1 a t_període TCNT1 = 0; // reset Timer1 ADC_value = analogRead (volt_in); // llegir tensió analògica} float get_freq () {uint16_t temporitzador = t_period; if (temporitzador == 0) retorna 0; // per evitar la divisió per zero, torneu 16000000.0 / (temporitzador 8UL *); // la freqüència ve donada per f = clk_freq / (prescaler * timeperiod)} void setup () {TCCR1A = 0; TCCR1B = bit (CS11); // estableix el prescaler a 8 TCNT1 = 0; // restableix el valor del temporitzador1 TIMSK1 = bit (TOIE1); // habilitar la interrupció de desbordament del temporitzador EIFR | = bit (INTF0); // esborra la bandera d’interrupció INT0 Serial.begin (9600); } void loop () {attachInterrupt (0, isr, RISING); // habilitar el retard d’interrupció externa (INT0) (1000); detachInterrupt (0); freq = get_freq (); volt = valor_ADC * 0,33; Cadena buf; buf + = String (freq, 3); buf + = F ("Hz / t"); buf + = String (volt); buf + = F ("Volts"); Serial.println (buf); }
Pas 6: Conclusió
Podeu muntar el circuit en una taula de treball i modificar el codi i afegir una targeta SD per emmagatzemar les dades, que posteriorment es poden analitzar. Un d’aquests exemples és que podeu analitzar el voltatge i la freqüència a les hores punta.
El circuit que vaig muntar a la taula de treball utilitzava LM324 (quad opamp) en lloc de LM358 (dual opamp), ja que no tenia aquella IC en aquell moment i el bloqueig a nivell nacional a causa de la pandèmia COVID-19 em va dificultar obtenir una nova IC. Tot i això, no afectaria el funcionament del circuit.
No dubteu a fer comentaris a continuació per a qualsevol suggeriment i consulta.
Recomanat:
Font d'alimentació de bricolatge mitjançant LM317 - Sortida de tensió variable Lm 317: 12 passos
Font d'alimentació de bricolatge mitjançant LM317 | Sortida de tensió variable Lm 317: Avui aprendrem a fer una petita font d'alimentació per a petits projectes. LM317 serà la bona opció per a una font d'alimentació de baix corrent. Lm317 proporciona una tensió de sortida variable que depèn del valor de la resistència realment connectat wi
Font d'alimentació ATX encoberta a la font d'alimentació del banc: 7 passos (amb imatges)
Subministrament d’alimentació ATX encobert a la font d’alimentació de banc: és necessària una font d’alimentació de banc quan es treballa amb electrònica, però una font d’alimentació de laboratori disponible al mercat pot ser molt cara per a qualsevol principiant que vulgui explorar i aprendre electrònica. Però hi ha una alternativa barata i fiable. Per conve
Com es pot fer una font d'alimentació de banc ajustable d'una font d'alimentació de PC antiga: 6 passos (amb imatges)
Com es pot fer una font d’alimentació de banc ajustable d’una antiga font d’alimentació de PC: tinc una font d’alimentació per a PC vella, de manera que he decidit fer una font d’alimentació de banc ajustable. Necessitem un rang diferent de tensions comproveu diferents circuits o projectes elèctrics. Així que sempre és fantàstic tenir un
Converteix una font d'alimentació ATX en una font d'alimentació CC normal.: 9 passos (amb imatges)
Convertiu una font d’alimentació ATX en una font d’alimentació CC normal: una font d’alimentació CC pot ser difícil de trobar i costosa. Amb funcions més o menys afectades pel que necessiteu. En aquest instructiu, us mostraré com convertir una font d'alimentació d'ordinador en una font d'alimentació de corrent continu amb 12, 5 i 3,3 v
Convertiu una font d'alimentació d'ordinador en una font d'alimentació variable de laboratori superior: 3 passos
Convertiu una font d’alimentació d’ordinador en una font d’alimentació variable de laboratori: els preus actuals d’una font d’alimentació de laboratori superen els 180 dòlars. Però resulta que una font d’alimentació d’ordinador obsoleta és perfecta per al treball. Amb aquests només us costen 25 dòlars i teniu protecció contra curtcircuits, protecció tèrmica, protecció contra sobrecàrrega i