Table des matières:

Mesure de la tension CA True-RMS : 14 étapes
Mesure de la tension CA True-RMS : 14 étapes

Vidéo: Mesure de la tension CA True-RMS : 14 étapes

Vidéo: Mesure de la tension CA True-RMS : 14 étapes
Vidéo: Comment mesurer sa tension artérielle chez soi ? - Allô Docteurs 2024, Novembre
Anonim
Image
Image
Manifestation
Manifestation

Aujourd'hui, nous utiliserons le STM32 Maple Mini pour effectuer une lecture AC. Dans notre exemple, nous obtiendrons la valeur RMS du réseau électrique. Ceci est très utile pour ceux qui souhaitent surveiller le réseau électrique pour l'Internet des objets. Nous allons ensuite créer une application utilisant la puissance de calcul du Maple Mini, appliquer un circuit électronique capable de permettre l'acquisition d'un signal 127Vac, ainsi qu'appliquer le calcul de la moyenne quadratique (RMS) sur les échantillons.

Étape 1: Démonstration

Dans notre montage aujourd'hui, nous avons le STM32, en plus de notre circuit analogique pour faire l'entrée de 110. Pour éviter les chocs, isolez la résistance qui entre par 110.

Le circuit est assez sensible. J'arrive avec 110, mais je le réduis 168 fois à l'aide du diviseur de tension et le mets dans l'amplificateur opérationnel, qui a plusieurs fonctions.

Nous avons également des condensateurs en option pour le filtrage de la source. Si votre source est de bonne qualité, vous n'avez pas besoin de les utiliser.

L'entrée AD est calculée grâce à l'oscilloscope, dans lequel vous voyez une sinusoïde, qui n'est pas 110 (mais elle est bien formée). Une autre chose est que la tension dans notre réseau électrique n'est pas de 110 (elle est en fait de 127 volts). Mais comme nous subissons un stabilisateur, il va s'ajuster à 115V.

La valeur affichée sur le moniteur série est celle qui est calculée en RMS, c'est-à-dire celle identifiée par le Fluke Meter.

Étape 2: Ressources utilisées

Ressources utilisées
Ressources utilisées

• Cavaliers

• Un mini à l'érable

• Protoboard

• Un amplificateur LM386

• Une source symétrique (+ 5V et -5V)

• Un trimpot multi-tours 10k (ou potentiomètre)

• Quatre condensateurs en polyester 100nF

• Trois résistances de 10k

• Quatre résistances de 470k

• Une résistance 5k6

• Une diode Zener 1n4728A

Étape 3: Schéma fonctionnel

Diagramme
Diagramme

Étape 4: schéma

Schème
Schème

Il s'agit d'un circuit que j'ai développé sur la base des spécifications que je pense être les meilleures pour cette mesure, mais il existe plusieurs autres exemples que l'on peut trouver sur Internet.

Étape 5: LM386 - Épinglage

LM386 - Épinglage
LM386 - Épinglage

Le LM386 dispose de deux amplificateurs pour le conditionnement ou l'amplification du signal.

Étape 6: AmpOp - Différentiel (soustracteur)

AmpOp - Différentiel (soustracteur)
AmpOp - Différentiel (soustracteur)

Étape 7: AmpOp - Inverter Adder

AmpOp - Inverter Adder
AmpOp - Inverter Adder

Étape 8: Érable Mini - Pinage

Érable Mini - Pinage
Érable Mini - Pinage

Broches marquées sur:

Rouge >> Tolérance 3V3

Vert >> Tolérance 5V

Étape 9: Maple Mini - Épinglage - a/D utilisé dans la capture

Maple Mini - Pinning - a/D utilisé dans la capture
Maple Mini - Pinning - a/D utilisé dans la capture

Je souligne ici que le pin que j'ai utilisé est le D11 qui (dans la nomenclature de la STMicroelectronics) est le PA0.

Étape 10: Assemblage

Assemblée
Assemblée

Pour notre circuit, vous aurez besoin d'une source symétrique, comme celle que nous avons créée pour ce projet. Sinon, vous aurez besoin de deux sources.

Étape 11: Graphique avec les données obtenues

Graphique avec les données obtenues
Graphique avec les données obtenues

Étape 12: Calcul de la valeur RMS

Calcul de la valeur RMS
Calcul de la valeur RMS

Étape 13: Code source

Code source - Définitions et constantes

Au début, nous avons défini la lecture de la broche comme D11, ainsi que les différentes constantes utilisées dans les calculs.

#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 na multiplicação da leitura const float fatorMultiplicao = fatorDivisor * fatorAmplificador; //Valor teórico da Tensão de alimentação 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

Code source - Variables globales

Maintenant, nous définissons quelques variables globales.

flottant Vrms = 0,0; //armazena o valor rms da tensãofloat Vmax = 0.0; //armazena ou valeur maximale détectée float Vmin = 10000.0; //armazena o valor minimo detectado float Vmed = 0.0; //armazena o valor medio entre Vmáx e Vmín

Code source - Configuration ()

Démarrez le port série à 1Mbps. Nous avons ajusté le port AD en entrée et attendu 5 secondes avant de commencer à collecter des données. Le temps d'attente est facultatif.

void setup() { Serial.begin(1000000); // initie un port série avec 1 Mbps pinMode (leituraTensao, INPUT); //justa a porta do AD como entrada delay (5000); //aguarda 5s antes de iniciar a coleta. (optionnel) }

Code source - Loop () - Démarre les variables de collecte de données

Dans la boucle, nous avons la variable pour l'itération. Ici, nous stockons également les lectures de AD en 0.0 et redémarrons la variable VRMS également en 0.0.

boucle vide() { int i = 0; //variable pour iteração float leitura = 0.0; //armazena comme leituras font AD Vrms = 0.0; //reinicia a variável Vrms

Code source - Capture et exécute les calculs individuels pour chaque échantillon

A ce stade, si i est plus petit que l'échantillon, nous commençons un cycle d'échantillonnage jusqu'à ce que i atteigne le nombre d'échantillons. Nous exécutons analogRead pour lire le port analogique et calculons la somme des carrés des tensions de lecture. Enfin, nous incrémentons l'itérateur.

while (i < amostras) { //inicia um ciclo de amostragem até que i alcance on 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); //calcule un soma dos quadrados das tensões lidas i++; //incrémenter l'itération }

Code source - Calculs généraux des échantillons et identification du maximum, du minimum et de la moyenne

Nous appliquons le fait de multiplication pour déterminer la valeur réelle des tensions. Nous détectons si la valeur est maximale ou minimale, et nous calculons la moyenne des valeurs maximales et minimales actuelles.

//Aplicando fator de multiplicação para determinar o valor real das tensões Vrms = (sqrt(Vrms / amostras)) * fatorMultiplicao; //détecte sa valeur et sa valeur maximale si (Vrms > Vmax) { Vmax = Vrms; } //détecte sa valeur minimale si (Vrms < Vmin) { Vmin = Vrms; } //calcula a média dos valores máximo e mínimo atuais Vmed = (Vmax + Vmin) / 2.0;

Code source - Options de sortie

Nous avons trois options pour "tracer" la valeur de sortie. Nous avons une sortie formatée sur le traceur série Arduino IDE, comme CSV ou Jason.

//saída formatada pour traceur série 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 como 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 como 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); */ }

Étape 14: Fichiers

Téléchargez les fichiers:

PDF

INO

Conseillé: