#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; }