自制可以显示启动时电瓶最低电压的小模块
自从换了电瓶后,就一直很好奇,车辆启动时,电瓶电压会掉到多少。用万用表量基本没法看出,一来万用表的刷新频率太慢,二来万用表没有记忆最低数值的功能。当时就打算自己做一下电压表,还能记录最低电压的。刚好看到有款0.91寸的OLED单色显示屏,觉得放在双闪灯开关旁边那个位置会比较合适。但拖延症外加后来工作上比较忙,就一直没有空搞了。盘算着写程序可以还要花点时间,于是先把核心的零件买回来了。
主控核心用STM32103C8T6的最小系统板,如下图。
0.91寸的OLED单色显示屏。这个显示屏的效果还是很不错的,由于是黑色底的,所以在阳光下也不会不清晰,而晚上黑暗的环境下,光线也不会刺眼。
STM32单片机的性能很强大,电压测量跟显示的程序也很快就写好了,跟万用表对比一下,精度还是很不错的。
这时又想,只是显示个电压,那也太单调了吧,系统板上还有这么多的扩展接口可用,要不多加个温度传感器,可以显示一下车内的温度吧。查了一下有什么比较好的传感器,发现了一款性能指标等参数很不错的传感器,而且是可以测量出温度跟相对湿度。
尽管价格不算便宜,但为了满足好奇心,也买回来了。
同样,写程序驱动一下这个传感器,还好,很容易就写出来了。
整个程序的思路就是,系统上电,20秒内显示电压,用于看启动前的电瓶电压,若20秒内电压没有低于11.5V(即没有启动发动机),就转为显示温度跟相对湿度。在任何时候,如果检测到电压低于11.5V后,就转为显示电压值,当电压回升到12V或以上时,闪烁显示测得的电压最低值,然后返回显示温度跟湿度。
因为ACC电源跟ON电压在启动时是没有电压输出的(自动启停生效的启动除外),所以这个小模块要接常电,为免接常电造成车子的静态电流增加,所以要另加了一个延时断开电路,这个以前有介绍过,就是当ACC电断开后,继续用常电的线供给模块工作15秒左右,然后继电器断开,整个模块断电,实现0待机电流
这样做了一个试装板,看了效果以后,有几个车友都说感兴趣希望也帮做一个,凑了一下人数,可以分担一下打版的费用,于是就去打版制作了。在决定打板制作后,设计上要更加严谨了,原本设计上的那些BUG,自己用的话没所谓,这次可以借打版的机会一并解决。原本的设计,测量电压的基准是用STM32内部的基准做参考,实际使用上,这个基准会有点轻微的飘移,造成最后测量的电压最大会有0.2V左右偏差,新的设计改用了外接TL431做基准电压,这样稳定性就提高了不少了,基本上最大只有0.03V的偏差了。不过,为了防止TL431出故障时系统还能继续使用,所以增加了检测TL431是否工作正常,如果不正常,就改回使用STM32的内部基准电压做参考。接着是使用温湿度传感器DHT22,原程序里面没做负温度的处理,考虑到有北方的车友使用,所以程序上要增加负温度的处理了,还有原程序中,如果DHT22传感器出现故障,就会出现显示卡死的现像,新程序就改进了,若传感器故障,就提示传感器故障,并改为显示电压值。程序的最后改进,就是STM32工常工作时,在后台每秒进行20次电压检测,若发现低于11.5V,则改为显示电压值。程序接近是推倒重写了,代码多了非常多,不过估计这里对源程序感兴趣的车友不多,所以就不贴出来了。
过了一个星期,打板就发回来了,先焊好一块测试一下,通过没有问题。
着手开始程序的重写,首先是较简单的基准电压转换,用TL431做基准时,电压测量值可以达到很高的精确度。
一但外部基准电压出故障了,就自动转为使用内部基准电压,这时的测量电压精确度会降低一点。
接着是负温度下的显示,花了点时间,还是可以达到效果的。
如果温湿度传感器出了故障,就改为显示电压值。
最后成品如图。需要接上三条线,常电、ACC、地线。当ACC线断电后,模块继续工作15秒,然后继电器断开,整机断电,实现0待机电流。
在车上安装OLED显示屏,之前再多买了一个双闪灯开关,打算开个好看点的孔,再在外面盖上一块透明的亚克力板,感觉这样子会好看点。拿着去问了一下激光开孔的人,价格吓退,只得买了点工具回来,再次用自己的手艺试试。其实就是美工刀、小电磨、什锦挫。
手艺不精,花了近半天时间才开好孔,卡上了亚克力板。
把OLED显示屏装上去,调整好位置,打上胶水,看了一下,效果还是可以接受的。
下一步就是开拆双闪开关了。长安铃木维特拉的双闪开关的内部是这个样子的
电磨在这里发挥了非常大的作用,各种改,再难看也不怕,显示板的盖子盖上了,就看不见了。线就从后端引出来。
穿好线打磨好安装位置后,把双闪开关组装好,通电看看效果
最后安装回车上,效果:
整体的效果,可以参看视频: https://v.youku.com/v_show/id_XNDc3NjQzODU4MA==.html 创意挺好,动手能力强大!必须点赞! 精彩制作。赞一个。 怎么样把启动瞬间的电压被单片机AD采样捕捉到? 能否加上一个水温报警,声音报警,这个可是有大用处的 jiachangchun 发表于 2020-8-5 20:18
能否加上一个水温报警,声音报警,这个可是有大用处的
买个OBD显示仪,大都有水温过高报警的设置了。 richard1984 发表于 2020-8-5 19:52
怎么样把启动瞬间的电压被单片机AD采样捕捉到?
方法很多种呀,我就是用定时器中断方法,每50ms进行一次电压取样,记录最低电压值即可。 做的很不错。赞一个。 创意很好,可以给汽车厂家做配套了:victory: 给楼主提个建议,平时正常工作时可以温、湿度和电压轮流显示,这样车辆发动后可以观察发电机电压是否正常,最好再加上时钟功能(利用STM32的实时钟功能),加个纽扣电池给实时钟供电,然后显示屏一行显示时钟,另一行轮流显示电压、温度、湿度。
以上纯属个人见解 lw86 发表于 2020-8-6 21:22
给楼主提个建议,平时正常工作时可以温、湿度和电压轮流显示,这样车辆发动后可以观察发电机电压是否正常, ...
谢谢建议。因为起初设计的目的是看启动时电瓶的最低电压,我车子的点烟口上也插着电压显示器了,所以轮流显示这块就没有做了,当然要改也是非常容易的事情。时间的显示起初也想过,但带来两个问题,一个是时间的调整,要另外增加按钮,在我的车上难找合适的位置(另外我的车中控台上原车也自带时钟了)。二来我测试过买来的几块STM32最小系统板,内部的实时时钟似乎都不怎么稳定,而且偏差也比较大,基本只能用于实验用途,以前也试过几款实时时钟芯片,基本不带温度补偿的,精度都不能令人满意。 本帖最后由 sandan 于 2020-8-6 22:29 编辑
楼主搞的电路我真不懂,谢谢分享,学习了
应该测启动电流才有实际意义吧?
测电瓶带载下降电压(启动电流引起的), 万用表的最小值可测、可记忆、可更新的。
要正确可用万用表的DCV峰值档或示波器。 sandan 发表于 2020-8-6 22:27
楼主搞的电路我真不懂,谢谢分享,学习了
应该测启动电流才有实际意义吧?
手头上的万用表没有这个功能呀,示波器公司里有,但体积大且要用220V电,带不出来。其实去朋友的修车档接上电瓶检测仪也是可以测到启动时的电压,还能测出内阻跟电瓶的CCA值,只是这些都只能是单次操作,达不到我想要的看每次启动时的电压,记录一下电瓶的老化过程的想法。 楼主做一批造福坛友。