Mesure du courant à l'aide d'un capteur de courant Allegro ACS758 et d'un écran OLED SSD1306 pour Arduino
Ce tutoriel vous guidera à travers le processus de mesure du courant à l'aide du capteur Allegro ACS758 et vous montrera comment afficher les résultats sur un écran OLED SSD1306. Le projet consistera à mesurer le courant circulant dans un circuit et à représenter visuellement ces données sur l'écran OLED, permettant une surveillance facile. Vous apprendrez comment connecter les composants, écrire le code et comprendre comment tout fonctionne ensemble.


Si vous souhaitez comprendre le code et son fonctionnement, assurez-vous de regarder la vidéo pour des explications plus détaillées (dans la vidéo à 02:45).
Le matériel expliqué
Les principaux composants de ce projet comprennent le capteur de courant Allegro ACS758 et l'écran OLED SSD1306. L'ACS758 est un capteur de courant à effet Hall qui mesure le courant circulant dans un conducteur avec une grande précision et fournit une tension de sortie proportionnelle à ce courant. Il peut supporter des courants allant jusqu'à 200 A et fonctionne sous une alimentation de 3,3 V ou 5 V.
L'afficheur OLED SSD1306 est un écran compact et peu gourmand en énergie qui communique via I2C. Il est couramment utilisé dans les projets Arduino en raison de sa facilité d'intégration et de sa capacité à afficher clairement des graphiques et du texte. Ensemble, ces composants créent un outil puissant pour surveiller le courant dans diverses applications.
Détails de la fiche technique
| Fabricant | Allegro Microsystems |
|---|---|
| Numéro de pièce | ACS758ECB-200U |
| Tension logique/E/S | 3,3 V / 5 V |
| Tension d'alimentation | 5 V |
| Courant de sortie (par canal) | 200 A |
| Courant de crête (par canal) | 200 A |
| Directives sur la fréquence PWM | Sans objet |
| Seuils logiques d'entrée | 0.3 V (basse), 2.7 V (haute) |
| Chute de tension / RDS(en conduction)/ saturation | 0,05 V |
| Limites thermiques | -40 à 125 °C |
| Paquet | SOIC à 8 broches |
| Notes / variantes | Modèles bidirectionnels et unidirectionnels disponibles |
- Assurez-vous que le capteur ACS758 est correctement orienté pour des mesures précises.
- Utilisez un dissipateur thermique si l'appareil fonctionne près des limites maximales de courant pour éviter la surchauffe.
- Découplez l'alimentation du capteur pour un fonctionnement stable.
- Vérifiez les connexions de câblage pour éviter les entrées flottantes qui pourraient entraîner des lectures erronées.
- Calibrez la sortie du capteur pour assurer des mesures de courant précises.
Instructions de câblage

Pour câbler le capteur de courant Allegro ACS758 et l'écran OLED SSD1306, commencez par connecter l'alimentation. Connectez la broche VCC de l'ACS758 à la sortie 5V de votre Arduino, et reliez la broche GND à la masse (GND) de l'Arduino. La broche de sortie du signal (Vout) de l'ACS758 doit être connectée à l'entrée analogique A0 de l'Arduino.
Ensuite, pour l'écran OLED SSD1306, connectez la broche VCC à la sortie 5V de l'Arduino et la broche GND à la masse. Connectez la broche SDA de l'OLED à la broche SDA de l'Arduino (A4 sur la plupart des cartes Arduino) et la broche SCL de l'OLED à la broche SCL (A5 sur la plupart des cartes Arduino). Assurez-vous que toutes les connexions sont sécurisées pour un fonctionnement fiable.
Exemples de code et guide pas à pas
#define VIN A0 // define the Arduino pin A0 as voltage input (V in)
const float VCC = 5.0; // supply voltage 5V or 3.3V
const int model = 2; // enter the model (see below)Dans le code, la variableVINest affecté à la broche analogique A0, qui lira la tension du capteur ACS758. LeVCCLa variable règle la tension d'alimentation, et lamodelLa variable définit quel modèle ACS758 est utilisé, ce qui affecte la sensibilité et les calculs de la tension de sortie.
void loop() {
float voltage_raw = (5.0 / 1023.0) * analogRead(VIN); // Read the voltage from sensor
float current = voltage / FACTOR; // Calculate the current based on voltage
}À l'intérieur duloop()fonction, le code lit la tension brute du capteur en utilisantanalogRead(VIN)et le convertit en une valeur de courant en fonction de la sensibilité définie. Cela permet de surveiller en temps réel le courant circulant dans le circuit.
if(abs(voltage) > cutOff) {
display.clearDisplay();
robojaxText("Current:", 0, 22, 2, false);
}Cette instruction conditionnelle vérifie si la valeur absolue de la tension est supérieure à lacutOfflimit. Si vrai, il efface l'affichage et met à jour l'écran OLED avec la mesure de courant actuelle. Cela garantit que seules les valeurs de courant significatives sont affichées, évitant l'encombrement de l'affichage.
Démonstration / À quoi s'attendre
Lorsque vous exécutez le programme, l'écran OLED affichera le courant mesuré en temps réel. S'il n'y a pas de courant, l'écran affichera le message Aucun courant. Assurez-vous que les connexions sont correctes pour éviter des problèmes tels que l'inversion de polarité, qui pourrait entraîner des mesures inexactes (dans la vidéo à 05:30).
Ce dont vous pourriez avoir besoin
-
Amazon
-
AmazonPurchase OLED 128x32 from Amazonamzn.to
-
AliExpressPurchase SSD1306 OLED 128x32 from AliExpresss.click.aliexpress.com
Ressources et références
Aucune ressource pour le moment.
Fichiers📁
Bibliothèques Arduino (zip)
-
SSD1306-OLED-Adafruit_SSD1306-master
application/zip0.02 MB
Fichier Fritzing
-
OLED Mono 0.56 inch 128x32
application/zip0.01 MB -
SSD1306 0.96in 128x64 I2C Monochrome OLED Display
application/zip0.01 MB
Manuel de l'Utilisateur
-
SSD1306 OLED manual
application/pdf1.79 MB