out d'abord, différentes bibliothèques sont incluses pour prendre en charge
les fonctionnalités nécessaires. Ces bibliothèques incluent Wire.h, qui facilite
la communication I2C, Adafruit_ADS1X15.h pour interagir avec les
convertisseurs analogique-numérique (CAN) ADS1115, RTClib.h pour la
gestion de l'horloge en temps réel, rgb_lcd.h pour le contrôle d'un écran
LCD RGB, et SoftwareSerial.h pour établir une communication série
logicielle.
La configuration est effectuée dans la fonction setup(). Les différentes
bibliothèques sont initialisées, y compris la communication série, le bus I2C,
le module RTC, les convertisseurs ADS1115, l'écran LCD et le relais.
Dans la boucle principale (fonction loop()), les mesures de puissance sont
effectuées. Les valeurs de courant et de tension sont lues à partir des
convertisseurs ADS1115, puis converties en valeurs réelles. La puissance
active est calculée en fonction des mesures de courant et de tension, ainsi
que du facteur de puissance. Les données sont ensuite affichées sur l'écran
LCD et transmises via la communication série.
De plus, une fonction checkOverload() vérifie si le courant mesuré dépasse
une valeur maximale prédéfinie. Si un dépassement est détecté, un message
d'avertissement est affiché sur l'écran LCD et un relais est activé pendant
une courte période.
Ce code permet donc de surveiller les mesures de puissance électrique en
temps réel, d'afficher les données sur un écran LCD et de détecter les
dépassements de courant. Il est conçu pour être utilisé dans des
applications nécessitant une surveillance et une protection de la puissance
électrique.
Tout d'abord, le code utilise le module ADS1115 pour mesurer le courant et
la tension. Il y a deux instances distinctes de la classe Adafruit_ADS1115 :
ads_current et ads_voltage. Chacune est utilisée pour lire les valeurs
analogiques correspondantes à l'aide de la méthode
readADC_SingleEnded(). Ces valeurs sont ensuite converties en courant réel
et en tension réelle à l'aide de formules spécifiques.
Le calcul de la puissance active se fait en multipliant la tension, le courant et
le facteur de puissance. Le facteur de puissance (pf) est calculé à partir de la
valeur de décalage de phase (phaseShift) entre le courant et la tension. Cela
permet d'obtenir une mesure plus précise de la puissance active
consommée.
Les valeurs de courant, de tension, de puissance active et de facteur de
puissance sont affichées sur l'écran LCD RGB à l'aide de la fonction
displayPhaseData(). Cette fonction prend également en compte la date et
l'heure actuelles provenant du module RTC pour afficher les informations
temporelles correspondantes.
De plus, la fonction displayTotalPower() est utilisée pour afficher la
puissance active totale sur l'écran LCD.
Les données de mesure sont également transmises via la communication
série à l'aide de la fonction transmitData(). Elle envoie les informations de
courant, de tension, de puissance active et de facteur de puissance pour
chaque phase individuellement, suivies de la puissance active totale.
Enfin, la fonction checkOverload() vérifie si le courant mesuré dépasse une
valeur maximale prédéfinie. Si un dépassement est détecté, un message
d'avertissement est affiché sur l'écran LCD, et le relais est activé pendant
une courte période. Cela peut servir à déclencher une action spécifique en
cas de dépassement de courant, par exemple, pour protéger le système ou
couper l'alimentation.
Ce code combine donc plusieurs fonctionnalités, notamment la mesure de
courant et de tension, le calcul de la puissance active, l'affichage des
données sur un écran LCD, la transmission des données via la
communication série et la détection des dépassements de courant. Il peut
être adapté et étendu selon les besoins spécifiques d'une application de
surveillance de puissance électrique.