battery management
This commit is contained in:
@@ -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
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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,18 +36,21 @@ 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 (!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
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
|
|
||||||
void initSensor(void);
|
void initSensor(void);
|
||||||
void handleSensor(void);
|
void handleBatterySensor(void);
|
||||||
void handleHallSensor(void);
|
void handleHallSensor(void);
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user