From d27b693db1bfbb695a2581ee9a7d080de8dc53f1 Mon Sep 17 00:00:00 2001 From: willem Date: Tue, 4 Jan 2022 17:02:02 +0100 Subject: [PATCH] battery management --- FW/leo_muziekdoos_esp32/platformio.ini | 4 ++-- FW/leo_muziekdoos_esp32/src/board.h | 2 +- FW/leo_muziekdoos_esp32/src/led.cpp | 22 ++++++++++++---------- FW/leo_muziekdoos_esp32/src/main.cpp | 5 ++--- FW/leo_muziekdoos_esp32/src/power.cpp | 12 ++++++++---- FW/leo_muziekdoos_esp32/src/sensor.cpp | 15 +++++++-------- FW/leo_muziekdoos_esp32/src/sensor.h | 2 +- 7 files changed, 33 insertions(+), 29 deletions(-) diff --git a/FW/leo_muziekdoos_esp32/platformio.ini b/FW/leo_muziekdoos_esp32/platformio.ini index a44fa88..565f444 100644 --- a/FW/leo_muziekdoos_esp32/platformio.ini +++ b/FW/leo_muziekdoos_esp32/platformio.ini @@ -22,5 +22,5 @@ build_flags = -DHARDWARE=2 -DCORE_DEBUG_LEVEL=4 -DNDEF_DEBUG=1 -#upload_protocol = espota -#upload_port = muziekdoos.local \ No newline at end of file +upload_protocol = espota +upload_port = muziekdoos.local \ No newline at end of file diff --git a/FW/leo_muziekdoos_esp32/src/board.h b/FW/leo_muziekdoos_esp32/src/board.h index 5ff54fd..265206a 100644 --- a/FW/leo_muziekdoos_esp32/src/board.h +++ b/FW/leo_muziekdoos_esp32/src/board.h @@ -29,7 +29,7 @@ #define LED_PIN 12 - #define VBATTMIN 3600 + #define VBATTMIN 3000 //before lowbatt cutoff #define VBATTMAX 4180 #define VBATTREF 3300 #define R12 4.7 diff --git a/FW/leo_muziekdoos_esp32/src/led.cpp b/FW/leo_muziekdoos_esp32/src/led.cpp index 0f711db..23f465b 100644 --- a/FW/leo_muziekdoos_esp32/src/led.cpp +++ b/FW/leo_muziekdoos_esp32/src/led.cpp @@ -25,7 +25,6 @@ void SetLedColor(CRGB color, bool blink) setLedBlink(blink); } - void initLed(void) { FastLED.addLeds(leds, NUM_LEDS); // GRB ordering is typical @@ -37,18 +36,21 @@ void handleLed(void) uint32_t timeNow = millis(); if (timeNow - lastLedTime > LEDTIMEOUT) { - if (blinkState && (timeNow - lastBlinkTime > LEDBLINKTIME)) + if (blinkState) { - if (!ledstate) + if (timeNow - lastBlinkTime > LEDBLINKTIME) { - leds[0] = CRGB::Black; + if (!ledstate) + { + leds[0] = CRGB::Black; + } + else + { + leds[0] = ledcolor; + } + ledstate = !ledstate; + lastBlinkTime = timeNow; } - else - { - leds[0] = ledcolor; - } - ledstate = !ledstate; - lastBlinkTime = timeNow; } else { diff --git a/FW/leo_muziekdoos_esp32/src/main.cpp b/FW/leo_muziekdoos_esp32/src/main.cpp index a5487c6..4f52cbf 100644 --- a/FW/leo_muziekdoos_esp32/src/main.cpp +++ b/FW/leo_muziekdoos_esp32/src/main.cpp @@ -36,17 +36,17 @@ void loop() looptime = millis(); handlePower(); + handleBatterySensor(); handleLed(); if (getPowerState() == POWERSTATES::on) { handleAudio(); handleRfid(); - handleSensor(); handleHallSensor(); handleGame(); } - else if(getPowerState() == POWERSTATES::overTheAir2) + else if (getPowerState() == POWERSTATES::overTheAir2) { handleOta(); } @@ -55,5 +55,4 @@ void loop() /* noting */ } log_v("main: looptime = %d", millis() - looptime); - } diff --git a/FW/leo_muziekdoos_esp32/src/power.cpp b/FW/leo_muziekdoos_esp32/src/power.cpp index 81a6d28..176cbb3 100644 --- a/FW/leo_muziekdoos_esp32/src/power.cpp +++ b/FW/leo_muziekdoos_esp32/src/power.cpp @@ -130,7 +130,7 @@ void handlePowerState(void) if (getLowBatt()) { log_w("on: Lowbat"); - // powerstate = lowBatt; + powerstate = lowBatt; SetLedColor(CRGB::Red, true); break; } @@ -184,10 +184,14 @@ void handlePowerState(void) case lowBatt: { // add delay - powerstate = off; - for (int i = 0; i < 6; i++) + //powerstate = off; + if(!getLowBatt()) + { + powerstate = on; + SetLedColor(CRGB::Green); + } + else { - log_w("lowbatt"); SetLedColor(CRGB::Red, true); } } diff --git a/FW/leo_muziekdoos_esp32/src/sensor.cpp b/FW/leo_muziekdoos_esp32/src/sensor.cpp index 40c08b1..2010d2f 100644 --- a/FW/leo_muziekdoos_esp32/src/sensor.cpp +++ b/FW/leo_muziekdoos_esp32/src/sensor.cpp @@ -8,6 +8,7 @@ uint32_t lastVbatt = 0; bool batteryLow = false; uint16_t BatterySensor = 0; +uint16_t BatteryVoltage = 0; uint16_t HallSensor = 0; uint32_t last_hall_read = 0; @@ -66,14 +67,14 @@ bool CheckBattery(void) { int16_t battticks = ADS.readADC(MEAS_ADC); float vbattraw = ADS.toVoltage(battticks); - uint16_t vbatt = battery.voltage(vbattraw * 1000); - BatterySensor = battery.level(vbatt); + BatteryVoltage = battery.voltage(vbattraw * 1000); + BatterySensor = battery.level(BatteryVoltage); digitalWrite(MEAS_EN, HIGH); - log_i("read batt, ticks=%d, raw=%4.2f, vbatt=%d, level=%d", battticks, vbattraw, vbatt, BatterySensor); - if (vbatt < VBATTMIN) + log_i("read batt, ticks=%d, raw=%4.2f, vbatt=%d, level=%d", battticks, vbattraw, BatteryVoltage, BatterySensor); + if (BatteryVoltage < VBATTMIN) { - return true; batteryLow = true; + return true; } batteryLow = false; return false; @@ -84,7 +85,7 @@ bool getLowBatt(void) return batteryLow; } -void handleSensor(void) +void handleBatterySensor(void) { uint32_t timeNow = millis(); @@ -103,8 +104,6 @@ void handleSensor(void) else if(BatterySensor > 20) SetLedColor(CRGB::Red); lastVbatt = timeNow; } - - log_v("Read sensor: Hall=%d, vbatt=%d", HallSensor, BatterySensor); } void handleHallSensor(void) diff --git a/FW/leo_muziekdoos_esp32/src/sensor.h b/FW/leo_muziekdoos_esp32/src/sensor.h index d02d6c0..b97f6d2 100644 --- a/FW/leo_muziekdoos_esp32/src/sensor.h +++ b/FW/leo_muziekdoos_esp32/src/sensor.h @@ -16,7 +16,7 @@ void initSensor(void); -void handleSensor(void); +void handleBatterySensor(void); void handleHallSensor(void);