Skip to content

Commit

Permalink
Lifepo4 in the voltage lib based on docs (#94)
Browse files Browse the repository at this point in the history
  • Loading branch information
mj-xmr committed Jul 27, 2022
1 parent ca14fb7 commit aea54a6
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 4 deletions.
12 changes: 11 additions & 1 deletion src/system-cfg/batteries-template.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,21 @@
"name" : "Ca-Ca",
"count" : 2,
"discharge_rate_c_by" : 10,
"max_charge_v" : 13.7,
"max_charge_v" : 13.7,
"max_discharge_amp" : 11,
"max_capacity_amph" : 60,
"min_load_amph" : 30,
"discharge_per_hour_percent" : 0.9
},
{
"name" : "LiFePO4",
"count" : 0,
"discharge_rate_c_by" : 1,
"max_charge_v" : 14.0,
"max_discharge_amp" : 20,
"max_capacity_amph" : 60,
"min_load_amph" : 25,
"discharge_per_hour_percent" : 0.3
}
]
}
41 changes: 39 additions & 2 deletions src/voltage_lib.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@

from scipy import interpolate

DISCHARGE_RATE_1 = 1
DISCHARGE_RATE_3 = 3
DISCHARGE_RATE_5 = 5
DISCHARGE_RATE_10 = 10
Expand Down Expand Up @@ -78,9 +79,9 @@ def get_x_interp(charge):

def get_keys(charge):
if charge:
return [DISCHARGE_RATE_40, DISCHARGE_RATE_20, DISCHARGE_RATE_10, DISCHARGE_RATE_5]
return [DISCHARGE_RATE_40, DISCHARGE_RATE_20, DISCHARGE_RATE_10, DISCHARGE_RATE_5, DISCHARGE_RATE_1]
else:
return [DISCHARGE_RATE_100, DISCHARGE_RATE_20, DISCHARGE_RATE_10, DISCHARGE_RATE_5, DISCHARGE_RATE_3]
return [DISCHARGE_RATE_100, DISCHARGE_RATE_20, DISCHARGE_RATE_10, DISCHARGE_RATE_5, DISCHARGE_RATE_3, DISCHARGE_RATE_1]

def get_y_c_by_100():
y = []
Expand Down Expand Up @@ -235,13 +236,49 @@ def get_y_c_by_3():

return y


def get_y_life_po4():
y = []
y.append(10.0) # 0
y.append(12.1) # 10
y.append(12.9) # 20
y.append(13.0) # 30
y.append(13.1) # 40
y.append(13.13) # 50
y.append(13.17) # 60
y.append(13.2) # 70
y.append(13.25) # 80
y.append(13.3) # 90
y.append(13.6) # 100

return y

def get_y_life_po4_charge():
y = []
y.append(13.1) # 10
y.append(13.9) # 20
y.append(14.0) # 30
y.append(14.1) # 40
y.append(14.13) # 50
y.append(14.17) # 60
y.append(14.2) # 70
y.append(14.25) # 80
y.append(14.3) # 90
y.append(14.6) # 100
y.append(15.5) # 110
y.append(16.7 ) # 120

return y

DISCHARGE_RATE_DICT[DISCHARGE_RATE_1] = get_y_life_po4
DISCHARGE_RATE_DICT[DISCHARGE_RATE_3] = get_y_c_by_3
DISCHARGE_RATE_DICT[DISCHARGE_RATE_5] = get_y_c_by_5
DISCHARGE_RATE_DICT[DISCHARGE_RATE_10] = get_y_c_by_10
DISCHARGE_RATE_DICT[DISCHARGE_RATE_20] = get_y_c_by_20
DISCHARGE_RATE_DICT[DISCHARGE_RATE_40] = get_y_c_by_100
DISCHARGE_RATE_DICT[DISCHARGE_RATE_100] = get_y_c_by_100

CHARGE_RATE_DICT[DISCHARGE_RATE_1] = get_y_life_po4_charge
CHARGE_RATE_DICT[DISCHARGE_RATE_3] = get_y_c_by_5_charge
CHARGE_RATE_DICT[DISCHARGE_RATE_5] = get_y_c_by_5_charge
CHARGE_RATE_DICT[DISCHARGE_RATE_10] = get_y_c_by_10_charge
Expand Down
2 changes: 1 addition & 1 deletion src/voltage_plot.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ def plot_one(charge, plot_measurements):
print(len(x), len(y))
if plot_measurements:
plt.plot(x, y, 'o')
yy_c10 = voltage_lib.percentage_to_voltage(xx, disc_rate, charge)
yy_c10 = voltage_lib.percentage_to_voltage(xx, charge, disc_rate)
plt.plot(xx, yy_c10, '.')
if plot_measurements:
legend.append('c/{} meas.'.format(disc_rate))
Expand Down

0 comments on commit aea54a6

Please sign in to comment.