Tagged: ai tools
- This topic has 3 replies, 2 voices, and was last updated 1 year, 2 months ago by
Sid.
-
AuthorPosts
-
-
5 March 2024 at 03:24 #29890
Hi Renzo,
This is off-topic but I don’t know where else to turn.
I want to monitor the battery voltage of this LoRa node. My understanding is that the Li-ion batteries charge at 4.2v so I’m sending that max voltage through a voltage divider to a (3.3v) ADC pin on the ESP32. Strangely (to me) the ADC is returning 4095 always, no matter what the source voltage is. Can you see what I’m doing wrongly? Thanks.
`int ADCvalue;
const int ADC = 25; // battery voltage pinvoid setup() {
// put your setup code here, to run once:
Serial.begin(9600);
delay(500);
pinMode(ADC, INPUT);
pinMode(ADC, INPUT_PULLDOWN);
}void loop() {
ADCvalue = analogRead(ADC);
Serial.print(ADCvalue); Serial.print(” “);
float batVoltage = ADCvalue * 4.2 / 4096; // get battery voltage
Serial.println(batVoltage);
delay(1000);
}’-
This topic was modified 1 year, 2 months ago by
Renzo Mischianti.
-
This topic was modified 1 year, 2 months ago by
Renzo Mischianti.
-
This topic was modified 1 year, 2 months ago by
Renzo Mischianti. Reason: Add the image also as attach
Attachments:
You must be logged in to view attached files. -
This topic was modified 1 year, 2 months ago by
-
7 March 2024 at 15:23 #29925
Hi Sid,
for my projects, I use this functionfloat getBatteryVoltage(){ //************ Measuring Battery Voltage *********** float sample1 = 0; for (int i = 0; i < 100; i++) { sample1 = sample1 + analogRead(A0); //read the voltage from the divider circuit delay(2); } sample1 = sample1 / 100; DEBUG_PRINT(F("AnalogRead...")); DEBUG_PRINTLN(sample1); float batVolt = (sample1 * 3.3 * (BAT_RES_VALUE_VCC + BAT_RES_VALUE_GND) / BAT_RES_VALUE_GND) / 1023; int bvI = batVolt * 100; batVolt = (float)bvI/100; return batVolt; }
Where
BAT_RES_VALUE_VCC is the resistor value of VCC part
BAT_RES_VALUE_GND is the resistor value of GND part
3.3 is the reference voltage of the ESP8266
and 1023 is the divider of the analog pin.I use 20k and 10k resistor.
I do multiple reads to be sure that the reading is correct without voltage oscillation.
Bye Renzo -
7 March 2024 at 15:33 #29926
But I think it’s not safe to connect the output battery directly to the ESP32. It’s better to use a step-up and connect to the 5v (and use this for the ESP32 and LoRa module).
I usually do this: I use a TP4056 to charge the 18650 battery, a step-up to convert the battery’s voltage to a fixed 5v, and from there, I power both the Arduino and the LoRa device (do not power at 3.3v as it reduces the range).
Here you can find a detail.
Emergency power bank homemadeBye Renzo
-
8 March 2024 at 18:47 #29934
Thank you Renzo, very helpful.
-
-
-
AuthorPosts
- You must be logged in to reply to this topic.