Skip to content

Commit bfb9cf7

Browse files
committed
battery percentage is negative if discharging
1 parent ac54a92 commit bfb9cf7

File tree

4 files changed

+21
-9
lines changed

4 files changed

+21
-9
lines changed

examples/firmware/firmware.ino

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -329,7 +329,7 @@ void loop(){
329329
if (millis()-tbattery>1000){
330330
tbattery = millis();
331331
alvik.updateBMS();
332-
msg_size = packeter.packetC1F('p', alvik.getBatteryChargePercentage());
332+
msg_size = packeter.packetC1F('p', alvik.isBatteryCharging()*alvik.getBatteryChargePercentage());
333333
alvik.serial->write(packeter.msg,msg_size);
334334
}
335335
}

src/Arduino_AlvikCarrier.cpp

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -269,13 +269,20 @@ void Arduino_AlvikCarrier::disconnectExternalI2C(){
269269
/******************************************************************************************************/
270270

271271
int Arduino_AlvikCarrier::beginBMS(){
272+
charging = 0.0;
272273
while(digitalRead(NANO_CHK)==HIGH){}
273274
return bms->begin();
274275
}
275276

276277
void Arduino_AlvikCarrier::updateBMS(){
277278
voltage = bms->readVCell();
278279
state_of_charge = bms->readSoc();
280+
if (bms->isCharging()){
281+
charging = 1.0;
282+
}
283+
else{
284+
charging = -1.0;
285+
}
279286
}
280287

281288

@@ -287,6 +294,10 @@ float Arduino_AlvikCarrier::getBatteryChargePercentage(){
287294
return state_of_charge;
288295
}
289296

297+
float Arduino_AlvikCarrier::isBatteryCharging(){
298+
return charging;
299+
}
300+
290301

291302

292303
/******************************************************************************************************/
@@ -997,15 +1008,15 @@ void Arduino_AlvikCarrier::updateBehaviours(){
9971008
// battery alert
9981009
if ((1<<(BATTERY_ALERT-1)) & behaviours){
9991010
if (getBatteryVoltage()<BATTERY_ALERT_MINIMUM_VOLTAGE){
1000-
if (battery_alert_time-millis()>battery_alert_wave){
1011+
if (millis()-battery_alert_time>battery_alert_wave){
10011012
battery_alert_time = millis();
1002-
if (battery_alert_wave==100){
1003-
setAllLeds(COLOR_RED);
1004-
battery_alert_wave=400;
1013+
if (battery_alert_wave==400){
1014+
setLeds(COLOR_RED);
1015+
battery_alert_wave=100;
10051016
}
10061017
else{
1007-
setAllLeds(COLOR_BLACK);
1008-
battery_alert_wave=100;
1018+
setLeds(COLOR_BLACK);
1019+
battery_alert_wave=400;
10091020
}
10101021
setRpm(0,0);
10111022
motor_left->stop();

src/Arduino_AlvikCarrier.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ class Arduino_AlvikCarrier{
4545

4646

4747
MAX17332 * bms;
48-
float voltage, state_of_charge;
48+
float voltage, state_of_charge, charging;
4949

5050

5151
AT42QT2120 * touch_sensor;
@@ -158,6 +158,7 @@ class Arduino_AlvikCarrier{
158158
void updateBMS(); // update the BMS
159159
float getBatteryVoltage(); // get Voltage
160160
float getBatteryChargePercentage(); // get battery percentage
161+
float isBatteryCharging(); // return -1 if battery discharge or 1 if charging
161162

162163

163164

src/definitions/robot_definitions.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ const float MOTION_FX_PERIOD = (1000U / MOTION_FX_FREQ);
9696
#define VERSION_BYTE_LOW 3
9797

9898
// Battery stats
99-
#define BATTERY_ALERT_MINIMUM_VOLTAGE 3.4
99+
#define BATTERY_ALERT_MINIMUM_VOLTAGE 4.0
100100

101101

102102

0 commit comments

Comments
 (0)