120 lines
4.1 KiB
C
120 lines
4.1 KiB
C
|
||
#include "soc.h"
|
||
|
||
// const float ocv_table[101] = {
|
||
// 2.80, 2.85, 2.90, 2.95, 3.00, 3.05, 3.10, 3.12, 3.14, 3.16, // 0-9%
|
||
// 3.18, 3.19, 3.20, 3.20, 3.20, 3.20, 3.21, 3.21, 3.21, 3.21, // 10-19%
|
||
// 3.22, 3.22, 3.22, 3.22, 3.22, 3.22, 3.23, 3.23, 3.23, 3.23, // 20-29%
|
||
// 3.23, 3.23, 3.23, 3.23, 3.23, 3.23, 3.23, 3.24, 3.24, 3.24, // 30-39%
|
||
// 3.24, 3.24, 3.25, 3.25, 3.25, 3.25, 3.25, 3.25, 3.25, 3.25, // 40-49%
|
||
// 3.25, 3.25, 3.25, 3.25, 3.25, 3.26, 3.26, 3.26, 3.26, 3.26, // 50-59%
|
||
// 3.26, 3.26, 3.26, 3.26, 3.26, 3.26, 3.27, 3.27, 3.27, 3.27, // 60-69%
|
||
// 3.28, 3.28, 3.28, 3.29, 3.29, 3.29, 3.30, 3.30, 3.31, 3.31, // 70-79%
|
||
// 3.32, 3.32, 3.33, 3.34, 3.35, 3.36, 3.38, 3.40, 3.42, 3.45, // 80-89%
|
||
// 3.48, 3.50, 3.52, 3.54, 3.56, 3.58, 3.60, 3.62, 3.63, 3.64, // 90-99%
|
||
// 3.65 // 100%
|
||
// };
|
||
|
||
// /**
|
||
// * 四节串联磷酸铁锂电池组 SOC-OCV 对应表 (SOC步长1%)
|
||
// * 电压范围:11.2V (0%) ~ 14.6V (100%)
|
||
// * 注意:
|
||
// * 1. 假设电池完全均衡,实际需考虑单体差异
|
||
// * 2. 电压单位:伏特(V)
|
||
// */
|
||
// const float ocv_table_4s[101] = {
|
||
// // 0-9% (单节2.80V~3.16V → 四节11.20V~12.64V)
|
||
// 11.20, 11.40, 11.60, 11.80, 12.00, 12.20, 12.40, 12.48, 12.56, 12.64, // 0-9%
|
||
|
||
// // 10-19% (单节3.18V~3.21V → 四节12.72V~12.84V)
|
||
// 12.72, 12.76, 12.80, 12.80, 12.80, 12.80, 12.84, 12.84, 12.84, 12.84, // 10-19%
|
||
|
||
// // 20-29% (单节3.22V~3.23V → 四节12.88V~12.92V)
|
||
// 12.88, 12.88, 12.88, 12.88, 12.88, 12.88, 12.92, 12.92, 12.92, 12.92, // 20-29%
|
||
|
||
// // 30-39% (单节3.23V~3.24V → 四节12.92V~12.96V)
|
||
// 12.92, 12.92, 12.92, 12.92, 12.92, 12.92, 12.92, 12.96, 12.96, 12.96, // 30-39%
|
||
|
||
// // 40-49% (单节3.24V~3.25V → 四节12.96V~13.00V)
|
||
// 12.96, 12.96, 13.00, 13.00, 13.00, 13.00, 13.00, 13.00, 13.00, 13.00, // 40-49%
|
||
|
||
// // 50-59% (单节3.25V~3.26V → 四节13.00V~13.04V)
|
||
// 13.00, 13.00, 13.00, 13.00, 13.00, 13.04, 13.04, 13.04, 13.04, 13.04, // 50-59%
|
||
|
||
// // 60-69% (单节3.26V~3.27V → 四节13.04V~13.08V)
|
||
// 13.04, 13.04, 13.04, 13.04, 13.04, 13.04, 13.08, 13.08, 13.08, 13.08, // 60-69%
|
||
|
||
// // 70-79% (单节3.28V~3.31V → 四节13.12V~13.24V)
|
||
// 13.12, 13.12, 13.12, 13.16, 13.16, 13.16, 13.20, 13.20, 13.24, 13.24, // 70-79%
|
||
|
||
// // 80-89% (单节3.32V~3.45V → 四节13.28V~13.80V)
|
||
// 13.28, 13.28, 13.32, 13.36, 13.40, 13.44, 13.52, 13.60, 13.68, 13.80, // 80-89%
|
||
|
||
// // 90-100% (单节3.48V~3.65V → 四节13.92V~14.60V)
|
||
// 13.92, 14.00, 14.08, 14.16, 14.24, 14.32, 14.40, 14.48, 14.52, 14.56, // 90-99%
|
||
// 14.60 // 100%
|
||
// };
|
||
|
||
|
||
/**
|
||
* 四节串联磷酸铁锂电池组 SOC-OCV 对应表 (SOC步长1%)
|
||
* 电压范围:11.2V (0%) ~ 14.6V (100%)
|
||
* 注意:
|
||
* 1. 假设电池完全均衡,实际需考虑单体差异
|
||
* 2. 电压单位:伏特(V)
|
||
*/
|
||
const float ocv_table_4s[21] = {
|
||
// 0-9% (单节2.80V~3.16V → 四节11.20V~12.64V)
|
||
12.00, 12.64, // 0-9%
|
||
|
||
// 10-19% (单节3.18V~3.21V → 四节12.72V~12.84V)
|
||
12.80, 12.84, // 10-19%
|
||
|
||
// 20-29% (单节3.22V~3.23V → 四节12.88V~12.92V)
|
||
12.88, 12.92, // 20-29%
|
||
|
||
// 30-39% (单节3.23V~3.24V → 四节12.92V~12.96V)
|
||
12.93, 12.96, // 30-39%
|
||
|
||
// 40-49% (单节3.24V~3.25V → 四节12.96V~13.00V)
|
||
12.98, 13.00, // 40-49%
|
||
|
||
// 50-59% (单节3.25V~3.26V → 四节13.00V~13.04V)
|
||
13.02, 13.04, // 50-59%
|
||
|
||
// 60-69% (单节3.26V~3.27V → 四节13.04V~13.08V)
|
||
13.05, 13.08, // 60-69%
|
||
|
||
// 70-79% (单节3.28V~3.31V → 四节13.12V~13.24V)
|
||
13.16, 13.24, // 70-79%
|
||
|
||
// 80-89% (单节3.32V~3.45V → 四节13.28V~13.80V)
|
||
13.40, 13.80, // 80-89%
|
||
|
||
// 90-100% (单节3.48V~3.65V → 四节13.92V~14.60V)
|
||
13.92, 14.24, // 90-99%
|
||
14.60 // 100%
|
||
};
|
||
|
||
|
||
/**
|
||
* @brief 得到通过电压得到当前SOC在数组中的位置
|
||
* @param
|
||
* @retval soc*100
|
||
*/
|
||
int find_soc(float voltage)
|
||
{
|
||
// static volatile int soc = 0;
|
||
// for(soc = 0; soc <= 100; soc++) {
|
||
for(int soc = 0; soc <= 100; soc++) {
|
||
if(ocv_table_4s[soc] >= voltage) {
|
||
return soc * 5;
|
||
}
|
||
}
|
||
return 100;
|
||
}
|
||
|
||
|
||
|
||
|