battery management

This commit is contained in:
2022-01-04 17:02:02 +01:00
parent 14b25a9459
commit d27b693db1
7 changed files with 33 additions and 29 deletions

View File

@@ -22,5 +22,5 @@ build_flags =
-DHARDWARE=2 -DHARDWARE=2
-DCORE_DEBUG_LEVEL=4 -DCORE_DEBUG_LEVEL=4
-DNDEF_DEBUG=1 -DNDEF_DEBUG=1
#upload_protocol = espota upload_protocol = espota
#upload_port = muziekdoos.local upload_port = muziekdoos.local

View File

@@ -29,7 +29,7 @@
#define LED_PIN 12 #define LED_PIN 12
#define VBATTMIN 3600 #define VBATTMIN 3000 //before lowbatt cutoff
#define VBATTMAX 4180 #define VBATTMAX 4180
#define VBATTREF 3300 #define VBATTREF 3300
#define R12 4.7 #define R12 4.7

View File

@@ -25,7 +25,6 @@ void SetLedColor(CRGB color, bool blink)
setLedBlink(blink); setLedBlink(blink);
} }
void initLed(void) void initLed(void)
{ {
FastLED.addLeds<SK6812, LED_PIN, GRB>(leds, NUM_LEDS); // GRB ordering is typical FastLED.addLeds<SK6812, LED_PIN, GRB>(leds, NUM_LEDS); // GRB ordering is typical
@@ -37,7 +36,9 @@ void handleLed(void)
uint32_t timeNow = millis(); uint32_t timeNow = millis();
if (timeNow - lastLedTime > LEDTIMEOUT) if (timeNow - lastLedTime > LEDTIMEOUT)
{ {
if (blinkState && (timeNow - lastBlinkTime > LEDBLINKTIME)) if (blinkState)
{
if (timeNow - lastBlinkTime > LEDBLINKTIME)
{ {
if (!ledstate) if (!ledstate)
{ {
@@ -50,6 +51,7 @@ void handleLed(void)
ledstate = !ledstate; ledstate = !ledstate;
lastBlinkTime = timeNow; lastBlinkTime = timeNow;
} }
}
else else
{ {
leds[0] = ledcolor; leds[0] = ledcolor;

View File

@@ -36,17 +36,17 @@ void loop()
looptime = millis(); looptime = millis();
handlePower(); handlePower();
handleBatterySensor();
handleLed(); handleLed();
if (getPowerState() == POWERSTATES::on) if (getPowerState() == POWERSTATES::on)
{ {
handleAudio(); handleAudio();
handleRfid(); handleRfid();
handleSensor();
handleHallSensor(); handleHallSensor();
handleGame(); handleGame();
} }
else if(getPowerState() == POWERSTATES::overTheAir2) else if (getPowerState() == POWERSTATES::overTheAir2)
{ {
handleOta(); handleOta();
} }
@@ -55,5 +55,4 @@ void loop()
/* noting */ /* noting */
} }
log_v("main: looptime = %d", millis() - looptime); log_v("main: looptime = %d", millis() - looptime);
} }

View File

@@ -130,7 +130,7 @@ void handlePowerState(void)
if (getLowBatt()) if (getLowBatt())
{ {
log_w("on: Lowbat"); log_w("on: Lowbat");
// powerstate = lowBatt; powerstate = lowBatt;
SetLedColor(CRGB::Red, true); SetLedColor(CRGB::Red, true);
break; break;
} }
@@ -184,10 +184,14 @@ void handlePowerState(void)
case lowBatt: case lowBatt:
{ {
// add delay // add delay
powerstate = off; //powerstate = off;
for (int i = 0; i < 6; i++) if(!getLowBatt())
{
powerstate = on;
SetLedColor(CRGB::Green);
}
else
{ {
log_w("lowbatt");
SetLedColor(CRGB::Red, true); SetLedColor(CRGB::Red, true);
} }
} }

View File

@@ -8,6 +8,7 @@ uint32_t lastVbatt = 0;
bool batteryLow = false; bool batteryLow = false;
uint16_t BatterySensor = 0; uint16_t BatterySensor = 0;
uint16_t BatteryVoltage = 0;
uint16_t HallSensor = 0; uint16_t HallSensor = 0;
uint32_t last_hall_read = 0; uint32_t last_hall_read = 0;
@@ -66,14 +67,14 @@ bool CheckBattery(void)
{ {
int16_t battticks = ADS.readADC(MEAS_ADC); int16_t battticks = ADS.readADC(MEAS_ADC);
float vbattraw = ADS.toVoltage(battticks); float vbattraw = ADS.toVoltage(battticks);
uint16_t vbatt = battery.voltage(vbattraw * 1000); BatteryVoltage = battery.voltage(vbattraw * 1000);
BatterySensor = battery.level(vbatt); BatterySensor = battery.level(BatteryVoltage);
digitalWrite(MEAS_EN, HIGH); digitalWrite(MEAS_EN, HIGH);
log_i("read batt, ticks=%d, raw=%4.2f, vbatt=%d, level=%d", battticks, vbattraw, vbatt, BatterySensor); log_i("read batt, ticks=%d, raw=%4.2f, vbatt=%d, level=%d", battticks, vbattraw, BatteryVoltage, BatterySensor);
if (vbatt < VBATTMIN) if (BatteryVoltage < VBATTMIN)
{ {
return true;
batteryLow = true; batteryLow = true;
return true;
} }
batteryLow = false; batteryLow = false;
return false; return false;
@@ -84,7 +85,7 @@ bool getLowBatt(void)
return batteryLow; return batteryLow;
} }
void handleSensor(void) void handleBatterySensor(void)
{ {
uint32_t timeNow = millis(); uint32_t timeNow = millis();
@@ -103,8 +104,6 @@ void handleSensor(void)
else if(BatterySensor > 20) SetLedColor(CRGB::Red); else if(BatterySensor > 20) SetLedColor(CRGB::Red);
lastVbatt = timeNow; lastVbatt = timeNow;
} }
log_v("Read sensor: Hall=%d, vbatt=%d", HallSensor, BatterySensor);
} }
void handleHallSensor(void) void handleHallSensor(void)

View File

@@ -16,7 +16,7 @@
void initSensor(void); void initSensor(void);
void handleSensor(void); void handleBatterySensor(void);
void handleHallSensor(void); void handleHallSensor(void);