
电池电量检测仪 v1.1
简介
基于 STC8G1K08A 的ADC检测电池电压应用
简介:基于 STC8G1K08A 的ADC检测电池电压应用开源协议
:GPL 3.0
描述
原作:电池电量检测仪
原作:电池电量检测仪
因为原作品没看到附件,所以自己用网上资料+AI写了一份
调试过程问题重重,最终还是搞出来了
左边百分比代表碱性碳性电池剩余量 右边百分比代表镍氢电池剩余量


特性:
1. 基于 STC8G1K08A + ST7735的 0.96 TFT显示,成本极低
2. 单节碳性碱性、镍氢电池驱动
3. 当电池电压过低,无法完成升压时,可外接typec供电(不过这时候电池基本上也放不出电了,仅做电池电压参考)
4. 外置供电防倒灌,防止LDO给电池充电
5. 两种电池的百分比显示(碱性碳性1.5V、镍氢电池1.2V)
列出调试过程中遇到的问题,供参考
| 问题 | 原因 | 解决方法 |
| 在板上无法烧录 | 单片机VCC电容充电导致无法进入烧录模式 | 烧录、调试前把VCC 10uF电容拆了 |
| 栅极有3.3V电压 | PW5100升压后,从LDO输出倒灌到输入,进而倒灌到AO3401栅极 | 已在板上添加1N5819二极管截止 |
| 3.3V倒灌到电池 | LDO降压后的输出,通过PW5100的输出倒灌到输入,进而倒灌到电池 | 已通过AO3401体二极管进行截止 |
| 显示屏部分字符乱码 | 未知,神秘bug | 暂无 |
| 显示屏上部和左部有部分像素行像素列花屏 | 与屏幕偏移有关 |
不清楚 |
| 显示屏反色 | 与屏幕驱动代码有关 |
不清楚 |
第一次玩这种51单片机,代码仅供参考,这个ST7735的驱动也是在网上找半天,看得一头雾水(被esphome和arduino惯坏了),好在最终还是能跑起来
有两个电路板,一个对应PFC焊接款(13P),一个对应PFC插拔款(8P 长排线)
均为ST7735 0.96寸 TFT-LCD
电池壳买那种单节电池插针焊接式5号单节插座(负极为弹簧)的款式即可,兼容7号电池
碱性、镍氢电压电量曲线算法参考:


// 碱性电池电量计算函数
float convertAlkalineVoltageToCapacity(float v) {
if (v >= 1.55)
return 100.0; //static value
else if (v <= 0)
return 0.0; //static value
else if (v > 1.4)
return 60.60606*v + 6.060606; //linear regression
else if (v < 1.1)
return 8.3022*v; //linear regression
else
return 9412 - 23449*v + 19240*v*v - 5176*v*v*v; // cubic regression
}
// 镍氢电池电量计算函数
float convertNimhVoltageToCapacity_mv(u16 v_mv) {
if (v_mv >= 1400) {
return 100.0f;
} else if (v_mv > 1220) {
return 90.0f + (10.0f * (v_mv - 1220) / (1400 - 1220));
} else if (v_mv > 1150) {
return 15.0f + (75.0f * (v_mv - 1150) / (1220 - 1150));
} else if (v_mv > 1000) {
return 15.0f * (v_mv - 1000) / (1150 - 1000);
} else {
return 0.0f;
}
}
设计图
未生成预览图,请在编辑器重新保存一次BOM
暂无BOM
克隆工程

评论