Étape 5: Mesure de l’Arduino Routine
- Pendant 5 secondes
- Prenons un échantillon de l’ADC
- Composant de filtre Out the DC du potentiel Circuit diviseur et bruit à l’aide d’un filtre de passer de la bande numérique
- Calculer la valeur quadratique moyenne (MS) du courant (c.-à-d. carré les valeurs et obtenir la course moyenne)
- Calculer la valeur efficace de la valeur de MS en place-l’enracinement.
- Multiplier par la tension de RMS (230V en Irlande / Royaume-Uni, 110V aux USA).
- Échelle pour permettre le gain en courant transformateur et ADC.
Voici la section de code correspondant
voidloop() { // send the value of analog input 0: r2 = r1; r1 = r0; r0 = analogRead(A0); u2 = u1; u1 = u0; // 0.5Hz to 200Hz Band Pass Filter u0 = 0.2929*(r0-r2) + 1.411*u1 -0.4142*u2; v = u0; // Calculate Mean-Square Current (Amps) AMS = 0.99*AMS +0.01*v*v; // Calculate Root-Mean-Square (Amps) Arms = sqrt(AMS); // Convert to RMS Power: // Multipy by 230V (rms) // 30*5/1024 accounts for the gain of the Current Transformer and ADC Prms = 230*30*Arms*5/1024; delay(1);
Le calcul de filtre numérique mérite sans doute une mention spéciale.
Vous n’avez pas besoin de le comprendre pour réaliser le projet, mais vous trouverez peut-être intéressant.
Il est implémenté dans la ligne de code suivante :
u0 = 0.2929*(r0-r2) + 1.411 * u1-0.4142 * u2 ;
C’est un filtre IIR car elle opère sur des valeurs d’entrée (passé et présent) et de ses valeurs de sortie (anciens et actuels). La réponse de la FPB est montrée ci-dessus.
Son pôle z-domaine / fonction de transfert de zéro est :
0.2929 (z+1)(z-1)
=================
(z-0.9952) (z-0.4162)
Une technique similaire est utilisée pour filtrer les lectures actuelles pour donner la valeur quadratique moyenne actuelle.
AMS = 0,99 * AMS + 0,01 * v * v;
C’est simplement un filtre passe-bas pour former une moyenne à long terme de sa contribution (v ^ 2).