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"); }