Ligne 41 : |
Ligne 41 : |
| [[Fichier:SENSEUR-COURANT-ACS712-Montage.jpg|740px]] | | [[Fichier:SENSEUR-COURANT-ACS712-Montage.jpg|740px]] |
| | | |
− | == Code == | + | == Code == |
| + | Voici un programme d'exemple, effectuant des lectures sur le senseur ACS712 et transformant la valeur en courant (mA) puis en puissance (W). |
| + | |
| + | Le résultat est affiché sur le moniteur série d'Arduino. |
| + | |
| + | <nowiki>float zero_senseur; |
| + | int PIN_ACS712 = A0; |
| + | |
| + | // Obtient la valeur du senseur de courant ACS712 |
| + | // |
| + | // Effectue plusieurs lecture et calcule la moyenne pour pondérer |
| + | // la valeur obtenue. |
| + | float valeurACS712( int pin ){ |
| + | int valeur; |
| + | float moyenne = 0; |
| + | |
| + | int nbr_lectures = 50; |
| + | for( int i = 0; i < nbr_lectures; i++ ){ |
| + | valeur = analogRead( pin ); |
| + | moyenne = moyenne + float(valeur); |
| + | } |
| + | moyenne = moyenne / float(nbr_lectures); |
| + | return moyenne; |
| + | } |
| + | |
| + | void setup(){ |
| + | // calibration du senseur (SANS COURANT) |
| + | zero_senseur = valeurACS712( PIN_ACS712 ); |
| + | |
| + | Serial.begin( 9600 ); |
| + | } |
| + | |
| + | float courant; |
| + | float courant_efficace; |
| + | float tension_efficace = 230; // tension efficace du réseau electrique |
| + | float puissance_efficace; |
| + | float ACS712_RAPPORT = 100; // nbr de millivolts par ampère |
| + | |
| + | void loop(){ |
| + | float valeur_senseur = valeurACS712( PIN_ACS712 ); |
| + | // L'amplitude en courant est ici retournée en mA |
| + | // plus confortable pour les calculs |
| + | courant = (float)(valeur_senseur-zero_senseur)/1024*5/ACS712_RAPPORT*100000; |
| + | // Courant efficace en mA |
| + | courant_efficace = courant / 1.414; // divisé par racine de 2 |
| + | |
| + | // Calcul de la puissance. |
| + | // On divise par 1000 pour transformer les mA en Ampère |
| + | puissance_efficace = (courant_efficace * tension_efficace/1000); |
| + | |
| + | Serial.println( "zero_senseur - lecture - courant efficace (mA) - Puissance (W)" ); |
| + | Serial.print( zero_senseur ); |
| + | Serial.print( " - " ); |
| + | Serial.print( valeur_senseur ); |
| + | Serial.print( " - " ); |
| + | Serial.print( courant_efficace ); |
| + | Serial.print( "mA - " ); |
| + | Serial.print( puissance_efficace ); |
| + | Serial.println( " W" ); |
| + | |
| + | delay( 1000 ); // attendre une seconde |
| + | }</nowiki> |
| | | |
| == Plus d'informations == | | == Plus d'informations == |