SENSEUR-COURANT-ACS712

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche

Introduction

SENSEUR-COURANT-ACS712.jpg

Basé sur l'ACS712 d'Allegro (et ACS724, ACS720), ce senseur se branche en série avec la charge sur un circuit alternatif et permet de mesurer le courant qui traverse le senseur. Le senseur utiliser le champ magnétique généré par le courant (et donc l'effet hall) pour mesurer le courant qui le traverse.. Le senseur produit en sortie une tension continue proportionnelle au courant à raison de 0.100V/A (100 mV par ampère). Vous pouvez donc lire cette tension sur une entrée analogique de votre Arduino.

Attention: ce senseur est sensible au champ magnétique, ce qui pourrait fausser vos lectures. Le simple fait d'approcher un aimant de l'ACS712 modifie la tension de sortie du senseur.

Note: Il est important de faire une lecture a vide (sans courant) pour obtenir la valeur de calibration du senseur.

Réseau électrique - Mise en garde

Le montage sur Breadboard ou plaque de prototypage expose la partie haute tension de votre montage à un contact accidentel. Faire des raccordements sur le réseau électrique n'est pas sans risque et certain accidents peuvent conduire à de graves brûlures, voire à la mort dans les cas les plus graves!

Il convient donc d'être prudent.

Si vous ne disposez pas de compétence en haute tension où si vous hésitez, n'hésitez pas à faire appel à quelqu'un disposant des compétences nécessaires.

Un fois votre montage/raccordement terminé, il est préférable de le placer dans un environnement permettant d'éviter tout contact accidentel (ex: une boite hermétique prévu à cet effet). Toujours fixer un senseur/composant/montage pouvant exposer un risque de contact avec sa partie haute tension.

Détails techniques

  • Sensibilité: 100 mV par ampère pour le capteur 20A (400 mv/A pour un capteur 5A)
  • Tension logique: 4.5V - 5.5VV
  • Consommation: 10mA
  • Isolation 2.1kV
  • Délai de répercussion sur la sortie: 5µS
  • Erreur: 1.5% à 25°C
  • Résistance interne de conduction: 1.2 mOhms
  • Tension de sortie stable
  • Presque pas d'hystérésis magnétique
  • Poids: ~2gr
  • Bruit sur l'ACS712 - environ 130mA avec la capacité de filtrage de 10nF. Le bruit peut être significativement réduit en utilisant une capacité de 470nF
  • Fiche technique de l'allégro ACS712 (PDF, Allegro)

ACSENS-20A-ACS712-board.jpg

ACSENS-20A-ACS712-schema.jpg

Brancher

Voici comment insérer un senseur ACS712 dans un circuit électrique.

SENSEUR-COURANT-ACS712-Montage.jpg

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.

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 
}

Plus d'informations

Vous pourrez trouver des informations utiles sur les deux vidéos suivantes:

Ou acheter