Sommario:

Misurazione della tensione CA a vero valore efficace: 14 passi
Misurazione della tensione CA a vero valore efficace: 14 passi

Video: Misurazione della tensione CA a vero valore efficace: 14 passi

Video: Misurazione della tensione CA a vero valore efficace: 14 passi
Video: 29-IMPIANTI ELETTRICI, Multimetro, valore efficace di una tensione alternata. Armoniche e TRMS 2024, Novembre
Anonim
Image
Image
Dimostrazione
Dimostrazione

Oggi useremo l'STM32 Maple Mini per fare una lettura AC. Nel nostro esempio, otterremo il valore RMS della rete elettrica. Questo è molto utile per chi vuole monitorare la rete elettrica per l'Internet of Things. Creeremo quindi un'applicazione utilizzando la potenza di calcolo del Maple Mini, applicheremo un circuito elettronico in grado di consentire l'acquisizione di un segnale a 127Vac, nonché applicheremo il calcolo della radice quadrata media (RMS) sui campioni.

Passaggio 1: dimostrazione

Nel nostro assemblaggio di oggi abbiamo l'STM32, oltre al nostro circuito analogico per fare l'ingresso di 110. Per evitare scosse, isolare per 110 la resistenza che sta entrando.

Il circuito è abbastanza sensibile. Sto entrando con 110, ma lo riduco di 168 volte usando il partitore di tensione e lo metto nell'amplificatore operazionale, che ha diverse funzioni.

Abbiamo anche alcuni condensatori opzionali per il filtraggio della sorgente. Se la tua fonte è di buona qualità, non è necessario usarli.

L'ingresso AD viene calcolato tramite l'oscilloscopio, nel quale si vede una sinusoide, che non è 110 (ma è ben formata). Un'altra cosa è che la tensione nella nostra rete elettrica non è 110 (in realtà è 127 volt). Ma poiché stiamo subendo uno stabilizzatore, si adatterà a 115V.

Il valore visualizzato sul monitor seriale è quello calcolato in RMS, cioè quello identificato dal Fluke Meter.

Passaggio 2: risorse utilizzate

Risorse utilizzate
Risorse utilizzate

• Maglioni

• Un mini acero

• Scheda prototipi

• Un amplificatore LM386

• Una sorgente simmetrica (+ 5V e -5V)

• Un trimpot multigiro da 10k (o potenziometro)

• Quattro condensatori in poliestere 100nF

• Tre resistori da 10k

• Quattro resistori da 470k

• Un resistore da 5k6

• Un diodo zener 1n4728A

Passaggio 3: diagramma a blocchi

Diagramma a blocchi
Diagramma a blocchi

Passaggio 4: schema

schema
schema

Questo è un circuito che ho sviluppato in base alle specifiche che ritengo siano le migliori per questa misurazione, ma ci sono molti altri esempi che possono essere trovati su Internet.

Passaggio 5: LM386 - Appuntamento

LM386 - Appuntamento
LM386 - Appuntamento

L'LM386 dispone di due amplificatori per il condizionamento o l'amplificazione del segnale.

Passaggio 6: AmpOp - Differenziale (sottrattore)

AmpOp - Differenziale (sottrattore)
AmpOp - Differenziale (sottrattore)

Passaggio 7: AmpOp - Sommatore inverter

AmpOp - Sommatore inverter
AmpOp - Sommatore inverter

Passaggio 8: Maple Mini - Pinage

Maple Mini - Pinage
Maple Mini - Pinage

Perni contrassegnati su:

Rosso >> 3V3 Tollerante

Verde >> Tollerante 5V

Passaggio 9: Maple Mini - Pinning - a / D utilizzato nella cattura

Maple Mini - Appuntamento - a/D utilizzato nella cattura
Maple Mini - Appuntamento - a/D utilizzato nella cattura

Sottolineo qui che il pin che ho usato è il D11 che (nella nomenclatura della STMicroelectronics) è il PA0.

Passaggio 10: assemblaggio

Assemblea
Assemblea

Per il nostro circuito, avrai bisogno di una sorgente simmetrica, come quella che abbiamo creato per questo progetto. Altrimenti, avrai bisogno di due fonti.

Passaggio 11: grafico con i dati ottenuti

Grafico con i dati ottenuti
Grafico con i dati ottenuti

Passaggio 12: calcolo del valore RMS

Calcolo del valore RMS
Calcolo del valore RMS

Passaggio 13: codice sorgente

Codice sorgente - Definizioni e costanti

Inizialmente, abbiamo definito la lettura del pin come D11, così come le varie costanti utilizzate nei calcoli.

#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; //Valore utilizzato per moltiplicare la dimensione const float fatorMultiplicacao = fatorDivisor * fatorAmplificador; //Valore teorico della tensione di alimentazione 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; //risultato em 0, 514 secondi per cada atualização

Codice sorgente - Variabili globali

Ora, definiamo alcune variabili globali.

float Vrms = 0.0; //armazena o valor rms da tensãofloat Vmax = 0.0; //armazena o valore massimo rilevato float Vmin = 10000.0; //armazena o valore minimo rilevato float Vmed = 0.0; //armazena o valor médio entre Vmáx e Vmín

Codice sorgente - Configurazione ()

Avvia la porta seriale a 1Mbps. Abbiamo regolato la porta AD come input e abbiamo aspettato 5 secondi prima di iniziare a raccogliere dati. Il tempo di standby è facoltativo.

void setup() { Serial.begin(1000000); //inicia una porta seriale em 1Mbps pinMode(leituraTensao, INPUT); //ajusta a porta do AD como entrada delay(5000); //aguarda 5s antes de iniciar a coleta. (opzionale) }

Codice sorgente - Loop () - Avvia le variabili di raccolta dati

Nel Loop abbiamo la variabile per l'iterazione. Qui memorizziamo anche le letture di AD in 0.0 e riavviamo la variabile VRMS anche in 0.0.

void loop() { 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

Codice sorgente: acquisisce ed esegue i singoli calcoli per ogni campione

A questo punto, se i è minore del campione, iniziamo un ciclo di campionamento fino a quando i raggiunge il numero di campioni. Eseguiamo analogRead per leggere la porta analogica e calcolare la somma dei quadrati delle tensioni lette. Infine, incrementiamo l'iteratore.

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 quadrados das tensões lidas i++; //incrementa o iteratore }

Codice sorgente - Calcoli generali dei campioni e identificazione di massimo, minimo e media

Applichiamo il fatto di moltiplicazione per determinare il valore effettivo delle tensioni. Rileviamo se il valore è massimo o minimo e calcoliamo la media dei valori massimo e minimo correnti.

//Aplicando fattore di moltiplicazione per determinar o valore reale das tensões Vrms = (sqrt(Vrms / amostras)) * fatorMultiplicacao; //detecta se é um valor é máximo if (Vrms > Vmax) { Vmax = Vrms; } //rileva se é um valor mínimo if (Vrms < Vmin) { Vmin = Vrms; } //calcula a média dos valores máximo e mínimo atuais Vmed = (Vmax + Vmin) / 2.0;

Codice sorgente - Opzioni di output

Abbiamo tre opzioni per "tracciare" il valore di output. Abbiamo l'output formattato sul plotter seriale Arduino IDE, come 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 come 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 come 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); */ }

Passaggio 14: file

Scarica i file:

PDF

IO NO

Consigliato: