Batterij 4,6v monitoren spanning constant houden

hallo allemaal
ik heb een vraagje
ik maak een monitor om een 4,6 volt batterij te bewaken via blynk
en daar heb ik een volt gauge en een percentage gauge
maar dat werkt wel maar de volt waarde zou ik wat constanter willen dat je een noch presiezere
percentage hebt ik gebruike een ESP32 en om het te monitoren gebruik ik een tp4056 charging module daar heb ik een spannings deler tussen de ESP32 en tp4056 van twee weerstanden van 100k en ik meet de voltage via de aneloge pin 34

en hier bij de code wat ik heb

/* Fill in information from your Blynk Template here */
/* Read more: https://bit.ly/BlynkInject */
#define BLYNK_TEMPLATE_ID           "ssid"
#define BLYNK_TEMPLATE_NAME "naam project"

#define BLYNK_FIRMWARE_VERSION        "0.1.0"

#define BLYNK_PRINT Serial
//#define BLYNK_DEBUG

#define APP_DEBUG

// Uncomment your board, or configure a custom board in Settings.h
#define USE_ESP32_DEV_MODULE
//#define USE_ESP32C3_DEV_MODULE
//#define USE_ESP32S2_DEV_KIT
//#define USE_WROVER_BOARD
//#define USE_TTGO_T7
//#define USE_TTGO_T_OI

#include "BlynkEdgent.h"

float voltage;
int bat_percentage;
int analogInPin  = 34;    // Analog input pin
int sensorValue;
float calibration = 4.36; // Check Battery voltage using multimeter & add/subtract the value


void setup()
{
  Serial.begin(115200);
  delay(100);

  BlynkEdgent.begin();


}

void loop() {
  BlynkEdgent.run();

  sensorValue = analogRead(analogInPin);
  voltage = (((sensorValue * 4.6) / 1024) * 2 + calibration); //multiply by two as voltage divider network is 100K & 100K Resistor
  bat_percentage = mapfloat(voltage, 1.0, 4.6, 0, 100); //2.8V as Battery Cut off Voltage & 4.2V as Maximum Voltage
  if (bat_percentage >= 100)
  {
    bat_percentage = 100;
  }
  //if (bat_percentage )
  if (bat_percentage <= 0)
  {
    bat_percentage = 0;
  }
  
      //send data to blynk
    Blynk.virtualWrite(V3, voltage);  // for battery voltage
    Blynk.virtualWrite(V4, bat_percentage);  // for battery percentage
    delay(5000);
  
    //Print data on serial monitor
  Serial.print("Analog Value = ");
  Serial.println(sensorValue);
  Serial.print("Output Voltage = ");
  Serial.println(voltage);
  Serial.print("Batterij Percentage = ");
  Serial.println(bat_percentage);
  Serial.println();
  Serial.println("****************************");
  Serial.println();
  delay(1000);
 
       if (bat_percentage <=30)
    {
      Serial.println("Batterij level below 30%, Charge battery on time");
      //send notification
      Blynk.logEvent("batterij laag", "Batterij percentage is laag.... zet hem aan het stroom") ;
      delay(5000);
    }

}
float mapfloat(float x, float in_min, float in_max, float out_min, float out_max)
{
  return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}



vriendelijke groet jarno

gebruik een externe spanningsvolger van ongeveer 4 volt en meet deze ook en dan heb je een goede vergelijking met je batterij. denk er wel aan dat je voeding maar 3.3 volt is en die kun je dus ook meten meten is prima te doen met een arduino maar iets uitsturen is een stuk moeilijker

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.