Utilisation d'un capteur de courant Allegro ACS712 pour courant continu et alternatif avec du code Arduino
Dans ce tutoriel, nous apprendrons comment utiliser le capteur de courant Allegro ACS712 pour mesurer à la fois le courant alternatif (AC) et le courant continu (DC) avec un Arduino. Le capteur ACS712 fournit une tension proportionnelle au courant le traversant, ce qui nous permet de lire et d'afficher facilement les valeurs de courant sur le moniteur série de l'Arduino. Ce projet est idéal pour ceux qui souhaitent surveiller le courant dans diverses applications, telles que les alimentations électriques ou les systèmes de batteries.

Nous allons construire un circuit simple qui connecte le capteur ACS712 à l'Arduino, puis écrire un programme pour lire la sortie du capteur. Le résultat attendu est d'obtenir des mesures de courant en temps réel affichées sur le moniteur série. Pour des précisions sur la mise en œuvre, assurez-vous de consulter la vidéo (à 02:00).
Le matériel expliqué
Le capteur de courant Allegro ACS712 est un module compact qui peut mesurer des courants allant jusqu'à 30 A, selon la version choisie. Il possède trois broches : VCC pour l'alimentation, GND pour la masse, et une broche de sortie qui fournit la tension correspondant au courant mesuré. Le capteur utilise le principe de l'effet Hall, où le courant traversant un conducteur génère un champ magnétique. Ce champ est détecté et converti en une tension, qui est ensuite envoyée à l'Arduino.
Le module est disponible avec différentes intensités nominales (5 A, 20 A et 30 A) et délivre des niveaux de tension de 185 mV/A, 100 mV/A et 66 mV/A, respectivement. Cela signifie que pour chaque ampère de courant traversant le capteur, vous obtiendrez une tension correspondante que vous pourrez lire et traiter. Cette caractéristique le rend polyvalent pour de nombreuses applications.
Détails de la fiche technique
| Fabricant | Allegro Microsystems |
|---|---|
| Numéro de pièce | ACS712ELCTR-30A-T |
| Tension logique / E/S | 4,5-5,5 V |
| Tension d'alimentation | 5 V |
| Courant de sortie (par canal) | 30 A max. |
| Conseils sur la fréquence PWM | S/O |
| Seuils logiques d'entrée | Sans objet |
| Chute de tension / RDS(on)/ saturation | 1,2 mΩ |
| Limites thermiques | 150 °C max |
| Paquet | TO-220 |
| Notes / variantes | Disponible en 5 A, 20 A et 30 A |
- Veillez à un câblage approprié pour éviter les courts-circuits.
- Utilisez un conducteur de calibre approprié pour l'intensité (AWG 12 pour 30 A).
- Surveillez la température du module pendant son fonctionnement.
- Envisagez d'ajouter un dissipateur thermique pour les applications nécessitant un courant plus élevé.
- Calibrez la sortie du capteur en fonction de votre application spécifique.
Instructions de câblage

Pour câbler le capteur Allegro ACS712 à votre Arduino, commencez par connecter la broche VCC de l'ACS712 à la broche 5V de l'Arduino. Ensuite, connectez la broche GND du capteur à l'une des broches GND de l'Arduino. La broche de sortie de l'ACS712 doit être connectée à la broche d'entrée analogique A0 de l'Arduino.
Pour la mesure du courant, connectez la charge en série avec le capteur de courant. Cela signifie que le fil positif de votre source d'alimentation doit être branché sur l'une des bornes d'entrée du capteur de courant, tandis que l'autre borne est reliée à la charge. L'autre côté de la charge doit être relié à la source d'alimentation, complétant ainsi le circuit. Assurez-vous d'utiliser une section de câble adaptée au courant que vous mesurez afin d'éviter toute surchauffe.
Exemples de code et guide pas à pas
L'extrait de code suivant initialise la broche analogique et configure le moniteur série :
#define VIN A0 // define the Arduino pin A0 as voltage input (V in)
const float VCC = 5.0; // supply voltage is from 4.5 to 5.5V. Normally 5V.
Ici, nous définissonsVINcomme la broche d'entrée analogique à laquelle la sortie du capteur est connectée. Nous réglons également la tension d'alimentationVCCà 5 V.

Dans la fonction loop(), nous lisons la tension du capteur ACS712 et calculons le courant :
float voltage_raw = (5.0 / 1023.0) * analogRead(VIN); // Read the voltage from sensor
float current = voltage / sensitivity[model]; // Calculate current based on sensitivity
Ici, nous lisons la tension brute fournie par le capteur et la convertissons en courant réel à l'aide du tableau de sensibilité correspondant au modèle du capteur utilisé.
Enfin, nous affichons les mesures de courant sur le moniteur série :
if (abs(current) > cutOffLimit) {
Serial.print("V: ");
Serial.print(voltage, 3); // print voltage with 3 decimal places
Serial.print("V, I: ");
Serial.print(current, 2); // print the current with 2 decimal places
Serial.println("A");
} else {
Serial.println("No Current");
}
Cette section vérifie si le courant dépasse une limite de coupure définie et affiche les mesures de tension et de courant sur le moniteur série. Si le courant est inférieur au seuil, il affiche Aucun courant.
Pour le code complet, veuillez vous référer au code chargé sous l'article.
Démonstration / À quoi s'attendre
Lorsque vous exécutez le code et alimentez le circuit, vous devriez voir des relevés de courant affichés sur le moniteur série. En ajustant la charge, ces relevés devraient évoluer en conséquence, à condition que le courant soit au-dessus de la limite de coupure. Faites attention à la température du capteur, surtout lorsque vous l'utilisez près de ses limites maximales.
Ressources et références
Aucune ressource pour le moment.
Fichiers📁
Fiche technique (pdf)
-
Allegro ACS712 AC/DC 4A, 20A, 30A Current Sensor Datasheet
application/pdf0.65 MB
Fichier Fritzing
-
Allegre ACS712 Current Sensor
application/zip0.03 MB