mirror of
https://github.com/goldenfishs/MRobot.git
synced 2026-02-04 18:00:19 +08:00
主要更改: - 将所有BSP外设文件移动到独立子文件夹(can/, fdcan/, uart/等) - 将所有Component文件移动到独立子文件夹(pid/, filter/, cmd/等) - 将所有Device文件移动到独立子文件夹(dr16/, bmi088/等) - 更新代码生成器以支持新的文件夹结构 - 保持向后兼容性,支持从子文件夹或根目录加载模板 - 添加STRUCTURE.md文档说明新的目录结构 优势: ✅ 更好的代码组织和管理 ✅ 便于添加、删除、修改模板 ✅ 清晰的模块划分 ✅ 向后兼容现有结构
71 lines
1.3 KiB
C
71 lines
1.3 KiB
C
/*
|
|
剩余电量算法。
|
|
通过电压值计算剩余电量。
|
|
*/
|
|
|
|
#include "capacity.h"
|
|
|
|
/* USER INCLUDE BEGIN */
|
|
|
|
/* USER INCLUDE END */
|
|
|
|
/* USER DEFINE BEGIN */
|
|
|
|
/* USER DEFINE END */
|
|
|
|
/**
|
|
* @brief 通过电压计算电池剩余电量
|
|
*
|
|
* @param volt 电压值
|
|
* @return float 剩余电量比例
|
|
*/
|
|
float Capacity_GetBatteryRemain(float volt) {
|
|
float percentage;
|
|
float volt_2 = volt * volt;
|
|
float volt_3 = volt_2 * volt;
|
|
|
|
if (volt < 19.5f)
|
|
percentage = 0.0f;
|
|
|
|
else if (volt < 21.9f)
|
|
percentage = 0.005664f * volt_3 - 0.3386f * volt_2 + 6.765f * volt - 45.17f;
|
|
|
|
else if (volt < 25.5f)
|
|
percentage = 0.02269f * volt_3 - 1.654f * volt_2 + 40.34f * volt - 328.4f;
|
|
|
|
else
|
|
percentage = 1.0f;
|
|
|
|
if (percentage < 0.0f)
|
|
percentage = 0.0f;
|
|
|
|
else if (percentage > 1.0f)
|
|
percentage = 1.0f;
|
|
|
|
return percentage;
|
|
}
|
|
|
|
/**
|
|
* @brief
|
|
*
|
|
* @param vcap 电容电压
|
|
* @param vbat 电池电压
|
|
* @param v_cutoff 截止电压
|
|
* @return float 电容剩余电量比例
|
|
*/
|
|
float Capacity_GetCapacitorRemain(float vcap, float vbat, float v_cutoff) {
|
|
float percentage = (vcap - v_cutoff) / (vbat - v_cutoff);
|
|
|
|
if (percentage < 0.0f)
|
|
percentage = 0.0f;
|
|
|
|
else if (percentage > 1.0f)
|
|
percentage = 1.0f;
|
|
|
|
return percentage;
|
|
}
|
|
|
|
/* USER FUNCTION BEGIN */
|
|
|
|
/* USER FUNCTION END */
|