Lecture de courant par effet Hall utilisant deux circuits D-1085 basé sur le ACS758 – 50 ampères
Affichage du résultat sur tout mobile ou ordinateur compatible Bluetooth à partir d’un émulateur de terminal

Affichage des lectures capturées avec l’application « Serial Bluetooth Terminal » sur Android

Programme « lecture_courant_D-1085_50_amp_plus_ADS1115_00.ino »
/*
* lecture_courant_D-1085_50_amp_plus_ADS1115_00
*
* Création : 2021-11-13
* Auteur : Richard Morel
*
* Lecture de courant par effet Hall
* deux circuits D-1085 basé sur le ACS758 - 50 ampères
*
* Affichage du résultat sur tout mobile ou ordinateur compatible Bluetooth,
* à partir d'un émulateur de terminal
*
* #18 ADS1115 Analog-to-Digital Converter Tutorial
* https://www.youtube.com/watch?v=tnfBslyfLRQ&list=PLrfG_Hi1Epg5ChswqLZT6xrwM1xCCeVi8&index=7&t=347s
*
* Remarque :
* L'ACS758 donne un écart de voltage de sortie différent selon le sens du courant
* pour un courant de même valeur.
*
* La source d'alimentation 5 volts doit être très stable
*
*
*/
#include<ADS1115_lite.h>
ADS1115_lite ads(ADS1115_DEFAULT_ADDRESS); // 0x48 addr pin connected to GND
float VoltageLeft;
float VoltageRight;
int16_t adc0;
int16_t adc1;
float AmpLeft;
float AmpRight;
float voltInullLeft = 2.512;
float voltInullRight = 2.509;
float sensitivityACS758_50A_Left = 0.040; // Volt/A
float sensitivityACS758_50A_Right = 0.040; // Volt/A
//****** Bluetooth pour le transfert de données *********************
#include "BluetoothSerial.h"
#if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED)
#error Bluetooth is not enabled! Please run `make menuconfig` to and enable it
#endif
BluetoothSerial SerialBT;
#define MAX_PACKETSIZE 32 //Serial receive buffer
char buffUART[MAX_PACKETSIZE];
unsigned int buffUARTIndex = 0;
unsigned long preUARTTick = 0;
// ******* Traite les échanges sur BLUETOOTH ********
#include "echange_Bluetooth_et_traitement.h"
//************************************************************************
//
// FONCTION FONCTION FONCTION FONCTION FONCTION FONCTION FONCTION FONCTION
//
//************************************************************************
void ads_config(){
ads.setGain(ADS1115_REG_CONFIG_PGA_6_144V); // +/-6.144V range = Gain 2/3 - 1 bit =0.1875mV
ads.setSampleRate(ADS1115_REG_CONFIG_DR_8SPS); // Set to the fastest MODE 8Samples per sec
//ads.setSampleRate(ADS1115_REG_CONFIG_DR_860SPS); // Set to the fastest MODE 860Samples per sec
}
int16_t ads_read_0(){
ads.setMux(ADS1115_REG_CONFIG_MUX_SINGLE_0); // Single mode input on AIN0 (AIN0 - GND)
ads.triggerConversion(); // Triggered mannually
return ads.getConversion(); // returns int16_t value
}
int16_t ads_read_1(){
ads.setMux(ADS1115_REG_CONFIG_MUX_SINGLE_1); // Single mode input on AIN1 (AIN1 - GND)
ads.triggerConversion(); // Triggered mannually
return ads.getConversion(); // returns int16_t value
}
//************************************************************************
//
// SETUP SETUP SETUP SETUP SETUP SETUP SETUP SETUP SETUP
//
//************************************************************************
void setup(){
Serial.begin(115200);
delay(10);
Serial.println("Programme : lecture_courant_D-1085_50_amp_plus_ADS1115_00");
ads_config(); // call to ads_config function
// *********** BLUETOOTH ****************************
// Ce Bluetooth n'est pas pris en charge pas IOS
if(!SerialBT.begin("ESP32_Telemetrie_00")){ //Bluetooth device name , NIP non disponible
Serial.println("Erreur lors de l'initialisation du Bluetooth");
}else{
Serial.println("Bluetooth initialisé");
}
Serial.println("PRÊT");
}
//************************************************************************
//
// LOOP LOOP LOOP LOOP LOOP LOOP LOOP LOOP LOOP
//
//************************************************************************
void loop(){
adc0 = (ads_read_0());
VoltageLeft = (adc0 * 0.1875)/1000;
AmpLeft= (VoltageLeft-voltInullLeft)/sensitivityACS758_50A_Left;
//Serial.println(adc0);
/*Serial.print(" VoltageLeft : ");
Serial.print(VoltageLeft, 3);
Serial.print(" AmpLeft :");
Serial.print(AmpLeft);*/
adc1 = (ads_read_1());
VoltageRight = (adc1 * 0.1875)/1000;
AmpRight= (VoltageRight-voltInullRight)/sensitivityACS758_50A_Right;
//Serial.println(adc1);
/*Serial.print(" *** VoltageRight : ");
Serial.print(VoltageRight, 3);
Serial.print(" AmpRight :");
Serial.println(AmpRight);*/
envoieDataVersClient();
delay(300);
}
« echange_Bluetooth_et_traitement.h »
// -------------------------------------------------------------------------------
// ÉCHANGE ET TRAITEMENT BLUETOOTH
// -------------------------------------------------------------------------------
//
//***** Renvoi des données du ESP32 vers le Client ****
// ****Trame de réponse : [ |DATA|#|#|#|#|#| ] # est un nombre.
void envoieDataVersClient(){
//delay(0);
int inPauseDeTransmission = 0; // > 50 Temporisation pour éviter les engorgements si requis
SerialBT.print("[ |"); delay(inPauseDeTransmission);
SerialBT.print("VoltageLeft|"); delay(inPauseDeTransmission);
SerialBT.print(VoltageLeft, 3); delay(inPauseDeTransmission);
SerialBT.print("|"); delay(inPauseDeTransmission);
SerialBT.print("Courant Moteur Gauche|"); delay(inPauseDeTransmission);
SerialBT.print(AmpLeft); delay(inPauseDeTransmission);
SerialBT.print("|"); delay(inPauseDeTransmission);
SerialBT.print("VoltageRight|"); delay(inPauseDeTransmission);
SerialBT.print(VoltageRight, 3); delay(inPauseDeTransmission);
SerialBT.print("|"); delay(inPauseDeTransmission);
SerialBT.print("Courant Moteur Droit"); delay(inPauseDeTransmission);
SerialBT.print("|"); delay(inPauseDeTransmission);
SerialBT.print(AmpRight); delay(inPauseDeTransmission);
SerialBT.print("| ]"); delay(inPauseDeTransmission);
SerialBT.print("\n");
}