atzs 发表于 2023-8-6 03:31 给你几个建议吧 1,汽车锂电就不要用STC了,用PIC或者NXP,要么是TI吧,STC单片机还没达到汽车级的那个能力,虽然我业余玩得最多的是STC单片机 2,太阳能可以用 3,学STC,最好的选择,到现在为止,依然是KEIL,哪怕是汉化版本的,也比中文编程强 4,STC8在锂电上使用,是不需要外部参考电压的,STC的内部参考电压足够了 |
Y_G_G 发表于 2023-8-3 22:17 目标是大型锂电池组,比如汽车锂电或者太阳能锂电这类 |
1, 锂电池保护板不应该由软件控制 2,锂电池保护板的原则是电池低电压之后,比如2.60V,直接断电,电流几乎为0,但如果你用单片机来控制,单片机就算是进入了掉电模式,也会有接近1uA的电流,这样一来,单片机会一直给锂电池放电,直到单片机不耗电为止 但如果你是以学习为目的,或者是说锂电池很大个,那就另说了 |
yzwzfyz 发表于 2023-8-2 10:34 大佬新人不懂就问:在比较X30与P31目的是为了减少对端口输出吗,看我理解是否正确我以为如果P30一直保持高电平输出时候没隔100MS给一次高电平输出是不是单片机就判定P30保持高电平不变输出就不会有任何波动 |
liyonghua111 发表于 2023-8-2 14:38 大佬新人不懂就问:中断处理这个是什么原理,是不是在循环里无法直接读取ADC引脚数据吗? |
首先,你需要连接硬件以实现电压监测。你可以将锂电池的正极连接到单片机的ADC引脚上,然后将负极接地。另外,你需要将2个10K电阻串联,并将中间电压接到单片机的参考电压输入引脚上。 接下来,你需要在Keil 5中配置ADC模块并初始化代码。你可以使用STC8系列单片机自带的ADC模块来读取电压值。你可以设置参考电压为2.5V,采样精度为10位。 在初始化代码中,你需要设置ADC通道和其他相关参数。你可以选择一个可用的ADC通道来读取电压值。 然后,你需要设置中断来处理ADC转换完成的事件。当ADC转换完成时,中断将触发,你可以在中断处理程序中进行进一步的操作。 你可以根据电压的变化设置阈值来判断电压状态。如果电压高于4.175V,你可以断开充电NMOS;如果电压低于2.799V,你可以断开放电NMOS。 最后,你需要根据电流的状态执行相应的操作。例如,如果电流短路或断路,你可以通过控制相应的NMOS来停止充电或放电。 这只是一个基本的思路,你需要根据具体的需求和硬件来调整代码。希望这些提示对你有帮助! |
左边思路正确,这样每间隔100ms,都要改一下输出。 可以考虑需要变化时再改输出: 例如设置两变量,X30和X31,将你程序中的P30、P31用X30和X31替代。 再比较X30与P30、X31与P31,只当两者不同时,修改一下输出(P30、P31)。 |