老夏利车没有发动机转速表,一直以来都是凭感觉、听声音估计发动机的转速,一直想直观的看到转速参数,自己又刚捡起了
51单片机的编程,说干就干,百度了一下夏利车的资料,我的这辆7101电喷,采用的发动机是TJ376QE型,具备ECU(电子控制单元,又称“行车电脑”)控制系统的。
这个就是ECU了。
ECU各端口功能说明,这下有戏了,本着先易后难的原则,此次DIY就只弄测量发电机转速和测量车内温度两个功能。本来想从分电器的“转速及旋转角度传感器”上取转速信号,后来拆下ECU后实际测量,发现此信号电平太低仅0.4~0.5V,要增加信号放大级,这样会使电路变的复杂。后来又想到取点火信号,实际测量点火信号在 14V左右,OK,就用它了!
点火信号电路图。
【转速表电路图】
为了提高开发的成功率,先对电路进行了仿真:
转速表电路图。
仿真时用信号发生器模拟点火脉冲信号:
电路仿真运行图。
单片机U1采用AT89C2051,为了节约IO口方便以后添加功能,LED显示部分使用了7段译码器U2 74LS47,如果只做转速和测温的话U2其实可以省略掉!LED采用7x4共阳数码管。位驱动Q1~Q4用任何小功率NPN管就行,测量温度U3用的 DS18B20,SW1是转速/测温切换开关,其它就是单片机的复位及时钟电路,就不多赘述了,硬件还是比较简单吧?
硬件说完现在说说软件,用了定时器T0做系统5ms节拍发生器,测量转速就简单的用计数器T1来数脉冲,为什么不用更精确的测量脉宽的方式呢?因为测量发动机转速精确到个位数是没必要的,我采用的方式是,1/2秒读1次T1的计数值,也就是1/2秒发动机的点火次数,我的老夏利是三缸四冲程的发动机,那么点火3次意味着曲轴旋转了2圈,这样就得到转速公式“ 转速/Min=1/2秒T1的计数值×120×2÷3",化简后就是”转速/Min=1/2秒T1的计数值×80“。
这样我的转速表精度也就是每分钟±80转的样子,LED的显示内容1/2秒刷新一次,实际用下来感觉还马马虎虎,也算灵敏。
18B20就不多说了,我是直接在本坛单片机区copy的的代码用的:)
用1个开关接在单片机的P3.0口作为转速及温度的切换选择。
【制作过程】
我是用洞洞板焊的整个电路,又忘记给电路板拍照了,就不去拆仪表盘了。
夏利车的ECU在副驾驶座储物箱的上方,拆开后就看见神器ECU了:
找出点火信号线,接上,(不好意思,手机拍的,都比较糊)不过就2根线
下面拆仪表台:
正面
背面
安装数码管:
单片机洞洞用3M的双面胶粘在仪表盘的底部,LED用电脑的硬盘排线引到洞洞板上。
电源就用仪表盘上的12V电,然后就组装回车上。试试效果吧,插钥匙-点火~~~
来了……
显示转速
显示车内温度
【总结】
在DIY的过程中,因为有了仿真的步骤,所以进行的很顺利,只是在搜索资料的时候,发现TAOBAO就有这样的东东在卖,也不贵,80元的样子。
使我差点放弃了
还有就是拆卸汽车的ECU并加接线路有一定的风险,我本人是在淘汰下来的老车上做实验练手的,各位想仿制的TX把自己的汽车ECU整成”砖头“
的话,本人慨不负责哟
最后附上本制作的电路图及全部源代码文件包!