Le capteur de courant ACS714 est un composant électronique qui permet de mesurer le courant électrique dans un circuit. Il est très pratique pour les applications qui nécessitent une surveillance précise du courant. Dans cet article, nous allons tester le capteur de courant ACS714 avec un affichage sur un écran LCD et un ampèremètre 30A. Nous verrons comment le capteur peut être utilisé pour mesurer le courant et comment l’affichage sur l’écran LCD peut être configuré pour afficher les données. Nous verrons également comment l’ampèremètre 30A peut être utilisé pour vérifier la précision des mesures.
Test du capteur de courant ACS714 avec affichage sur écran LCD (ampèremètre 30A)

1. Présentation
Ce programme mesure une intensité à l’aide du capteur de courant 30 A ACS714 et affiche le résultat sur un écran LCD
Ce programme utilise les fonctionnalités suivantes :
- un afficheur LCD alphanumérique 4×20 en mode 4 bits
- la conversion analogique numérique 10bits sur les voies analogiques analog 0,
Voir la page : Capteur de courant -30A/+30A ACS 714
A noter que la capteur 30 A a un sensibilité moyenne de l’ordre de 66mV/A. Pour plus de précisions, préférer la modèle 5A qui a une précision de 180mV/A environ. Tout dépend de ce que l’on veut mesurer.
2. Matériel Nécessaire
2.1 L’espace de développement Arduino
- … pour éditer, compiler le programme et programmer la carte Arduino.

2.2 Le matériel suivant pour réaliser le montage associé
- une plaque d’essai pour montage sans soudures,

- des straps,

- Un capteur de courant ACS714

Acheté ici ( 9 Euros TTC seulement !) : http://www.watterott.com/en/ACS714-Current-Sensor-Carrier-30-to-30A
Une carte de chez Pololu : http://www.pololu.com/catalog/product/1187
Fiche technique (datasheet)du CI ACS714 : Datasheet du capteur ACS 714 – fabricant Allegro
3. Note technique
Un point important dans l’utilisation de ce capteur est que la résistance interne du convertisseur analogique-numérique crée un pont diviseur avec une résistance de sortie interne au capteur. Il en résulte une tension d’atténuation Vatt = Vo x k.
Pour connaître le facteur k, il suffit de faire le rapport Vo réelle / Vo théorique = k. Le plus simple est de faire une mesure de Vo à vide. Dès lors on a :
k = Vo à vide réelle / Vo à vide théorique = Vo à vide réelle / 2500 (en mV)
Et pour toute mesure on aura : Vo théorique = Vo réel / k = Vo réel x 2500 / Vo réel à vide
En ce qui me concerne, j’ai trouvé Vo réel à vide à 2443mV.
Voir le datasheet, notamment la figure 6 pour plus de détails.
Voir également le programme ci-dessous.
4. Instructions de montage
- Connecter sur la broche 6 la broche RS du LCD
- Connecter sur la broche 7 la broche E du LCD
- Connecter sur la broche 8 la broche D4 du LCD
- Connecter sur la broche 9 la broche D5 du LCD
- Connecter sur la broche 10 la broche D6 du LCD
- Connecter sur la broche 11 la broche D7 du LCD
- Broche Analog 0 (=broche 14) en entrée Analogique
5. Le schéma théorique du montage

Le schéma théorique du montage
6. Le circuit du montage

Le schéma du montage à réaliser
7. Explication du programme
7.1 Structure globale du programme
Ce programme simple comprend :
- une entête déclarative
- une partie « configuration » qui ne sera exécutée qu’une fois (fonction setup( ) )
- une partie constituée d’une boucle sans fin que le programme répètera à l’infini ( fonction loop( ) ) : c’est le coeur du programme.
7.2 Déroulement du programme
Le programme se déroule de la façon suivante :
- Après avoir pris en compte les instructions de la partie déclarative,
- puis après avoir exécuté la partie configuration ( fonction setup( ) ),
- le programme bouclera sans fin ( fonction loop ( ) ), exécutant de façon répétée le code compris dans la boucle sans fin.

Le déroulement du programme
8. Au niveau de la partie déclarative :
Inclusion des librairies utilisées
- On inclut les librairies des fonctionnalités utilisées :
- Inclusion de la librairie pour l’afficheur LCD alphanumérique :
#include <LiquidCrystal.h> // Inclusion de la librairie pour afficheur LCD
Déclaration de constantes utiles
- On déclare les constantes utiles dans le programme :
Déclaration des constantes de broches
- Déclaration des constantes pour les broches utilisées dans le programme :
const int RS=6; //declaration constante de broche const int E=7; //declaration constante de broche const int D4=8; //declaration constante de broche const int D5=9; //declaration constante de broche const int D6=10; //declaration constante de broche const int D7=11; //declaration constante de broche const int Voie_0=0; //declaration constante de broche analogique
Déclaration des variables globales
- Déclaration des variables globales du programmes :
- Déclaration des variables globales utilisées pour la conversion analogique-numérique
int mesure_brute=0;// Variable pour acquisition résultat brut de conversion analogique numérique float mesuref=0.0;// Variable pour calcul résultat décimal de conversion analogique numérique
Déclarations des objets utiles pour les fonctionnalités utilisées
- Déclaration des objets utiles pour les fonctionnalités utilisées :
- Déclaration d’un objet LCD alphanumérique :
LiquidCrystal lcd(RS, E, D4, D5, D6, D7);// Création d'un objet LiquidCrystal = initialisation LCD en mode 4 bits
9. Au niveau de la fonction d’initialisation setup( ) :
Initialisation des fonctionnalités utilisées :
- On initialise les différentes fonctionnalités utilisées :
- Initialisation de l’utilisation de l’afficheur LCD alpha-numérique
lcd.begin(20,4); // Initialise le LCD avec 20 colonnes x 4 lignes delay(10); // pause rapide pour laisser temps initialisation
-
- Test de l’afficheur LCD alpha-numérique
// Test du LCD lcd.print("LCD OK") ; // affiche la chaîne texte - message de test delay(2000); // pause de 2 secondes lcd.clear(); // // efface écran et met le curseur en haut à gauche delay(10); // pour laisser temps effacer écran
configuration des broches utilisées :
- Configuration des broches en sortie :
- Configuration des broches en entrée :
- Activation du rappel au + interne des broches en entrée si nécessaire :
10. Au niveau de la boucle principale, la fonction loop ( ) :
- …
// --- ici instructions à exécuter par le programme principal ---
- …
// --- ici instructions à exécuter par le programme principal ---
- Le programme recommence en boucle les instructions de la fonction loop( ).
Se reporter aux commentaires présents dans le programme pour plus de détails.
11. Autres Fonctions du programme :
- …
// --- ici instructions à exécuter par la fonction ---
12. Mise en oeuvre du programme
12.1 Préparation du montage et programmation de la carte Arduino :
- Commencer par réaliser le montage indiqué sur plaque d’expérimentation
- Ensuite, programmer la carte Arduino avec ce programme (en bas de page) selon la procédure habituelle
12.2 Fonctionnement
- …
13. Le programme complet en langage Arduino :
A copier/coller directement dans l’éditeur Arduino
// --- Programme Arduino --- // par X. HINAULT - Le 13/03/2010 // www.mon-club-elec.fr // --- Que fait ce programme ? --- /* mesure une intensité à l'aide du capteur de courant 30 A ACS714 et affiche le résultat sur un écran LCD le capteur fournit une tension de sortie analogique 2.5V +/- 66mV/A */ // --- Fonctionnalités utilisées --- // Utilise un afficheur LCD alphanumérique4x20 en mode 4 bits // Utilise la conversion analogique numérique 10bits sur les voies analogiques analog 0, // --- Circuit à réaliser --- // Connecter sur la broche 6 la broche RS du LCD // Connecter sur la broche 7 la broche E du LCD // Connecter sur la broche 8 la broche D4 du LCD // Connecter sur la broche 9 la broche D5 du LCD // Connecter sur la broche 10 la broche D6 du LCD // Connecter sur la broche 11 la broche D7 du LCD // Broche Analog 0 (=broche 14) en entrée Analogique //**************** Entête déclarative ******* // A ce niveau sont déclarées les librairies, les constantes, les variables... // --- Inclusion des librairies utilisées --- #include <LiquidCrystal.h> // Inclusion de la librairie pour afficheur LCD // --- Déclaration des constantes --- // --- constantes des broches --- const int RS=6; //declaration constante de broche const int E=7; //declaration constante de broche const int D4=8; //declaration constante de broche const int D5=9; //declaration constante de broche const int D6=10; //declaration constante de broche const int D7=11; //declaration constante de broche const int Voie_0=0; //declaration constante de broche analogique // --- Déclaration des variables globales --- int mesure_brute=0;// Variable pour acquisition résultat brut de conversion analogique numérique float mesuref=0.0;// Variable pour calcul résultat décimal de conversion analogique numérique long intensite; // variable de calcul de l'intensite // --- Déclaration des objets utiles pour les fonctionnalités utilisées --- LiquidCrystal lcd(RS, E, D4, D5, D6, D7);// Création d'un objet LiquidCrystal = initialisation LCD en mode 4 bits //**************** FONCTION SETUP = Code d'initialisation ***** // La fonction setup() est exécutée en premier et 1 seule fois, au démarrage du programme void setup() { // debut de la fonction setup() // --- ici instructions à exécuter au démarrage --- lcd.begin(20,4); // Initialise le LCD avec 20 colonnes x 4 lignes delay(10); // pause rapide pour laisser temps initialisation // Test du LCD lcd.print("LCD OK") ; // affiche la chaîne texte - message de test delay(2000); // pause de 2 secondes lcd.clear(); // // efface écran et met le curseur en haut à gauche delay(10); // pour laisser temps effacer écran // ------- Broches en sortie ------- // ------- Broches en entrée ------- // ------- Activation du rappel au + interne des broches en entrée si nécessaire ------- } // fin de la fonction setup() // ******************************************************************************** //*************** FONCTION LOOP = Boucle sans fin = coeur du programme ************* // la fonction loop() s'exécute sans fin en boucle aussi longtemps que l'Arduino est sous tension void loop(){ // debut de la fonction loop() // --- ici instructions à exécuter par le programme principal --- // --- mesure brute --- mesure_brute=analogRead (Voie_0); // réalise une mesure analogique sur la voie 0 lcd.setCursor(0,0); lcd.print("CAN brute = "); lcd.print(mesure_brute); lcd.print(" "); // espace propreté // --- tension en mV --- //mesure_brute=mesure_brute-512; // sortie analogique centrée sur 2.5V mesuref=mesure_brute*5000.0/1023.0; // calcul de la tension en mV mesuref=mesuref*2500.0/2443.0; // correction diviseur tension sortie capteur Vo théorique àvide / Vo réel à vide // cf fig 6 datasheet capteur acs714 mesuref=mesuref-2500.0; // sortie analogique centrée sur 2.5V lcd.setCursor(0,1); lcd.print("Mesure mV = "); lcd.print(mesuref,2); // float avec 2 décimales lcd.print(" "); // espace propreté // ---- calcul intensité en mA --- intensite=map(long(mesuref),0,66,0,1000); // calcul intensité en mA lcd.setCursor(0,2); lcd.print("Intensite = "); lcd.print(intensite); lcd.print(" "); // espace propreté delay(100); // entre 2 mesures } // fin de la fonction loop() - le programme recommence au début de la fonction loop sans fin // ******************************************************************************** //*************** Autres Fonctions du programme ************* // --- Fin programme ---
Articles similaires:
- Afficher du texte sur un afficheur LCD alphanumérique
- Calcul de la charge d’une batterie 12V
- Mesure simple de la tension d’une batterie 12V
- Contrôle du sens et de la vitesse de rotation d’un moteur CC (courant continu) à l’aide d’un bouton poussoir et d’une résistance variable
- Afficher les chiffres 0 à 9 sur un digit à cathode commune
Articles Liés
- "Radar" de distance à capteur GP2D12 monté sur servomoteur et affichage sur écran couleur S65
Le radar de distance à capteur GP2D12 monté sur servomoteur et affichage sur écran couleur…
- Ethernet en mode serveur Arduino : faire un test ping depuis le PC vers la carte Arduino
L'Ethernet est un protocole de communication réseau très populaire et largement utilisé. Il est souvent…
- Mesure de distance à l'aide d'un capteur GP2D12 et affichage dans moniteur série
La mesure de distance est une fonctionnalité très utile dans de nombreuses applications. Dans cet…