|

关键字:
新闻中心
法规标准
发动机系   行驶系   制 动 系   传 动 系   转 向 系   车    身   通 用 件
电气仪表   轮  胎   润 滑 油   汽车用品   车用材料   模具机床   汽配展会
轿车   客车  农机   卡车
摩托车  工程机械  专用车
维修养护
装饰改装
 您的位置: 首页 > 摩托车 > 摩托文化 > 正文  
自制的点火器

新闻出处:搜配网 发布时间: 2006-12-13 13:55

  去年夏天,一时高兴,帮一个朋友修点火器,连车拉回家里,本想运气应该没那么背,点火器一般不会坏,把全车线路捋清,几个星期天就能搞顶,结果那点火器不是一般的难搞,化了估计1个多月,把点火器都拆开了,耐着性子把元件从封胶里抠出来,检测里边进CPU的信号,都是正常的,可输出脚就是没输出,一点招没有了,以前一直想做个单片机控制的点火器,这次可有了充足的开工理由了,

计划:
先在面包板上搭出电路,调通程序后再用实验板做出实用的原形,先声明,我可不是搞电路的,对很多东西其实并不了解,很多东西都是闭门瞎琢磨或者凑合出来的。写这个东西希望能给大家提供一个更近距离了解数字式点火器的例子,毕竟机器是可以拆开看的,而点火器是用单片机程序控制的,看不见摸不着,很多人好象都有神秘感。

整个过程还算顺利,就是时间比较长,去年9月底放弃原车点火器后,10。1前开始打草稿,
搭出电路调程序到11月初,就被单位扔到外地出差,回来过了年2月份才收住心接着搞,
其实正经用的时间并不多,只能周末花些时间搞搞,还要刨出我那乱七八糟的事的时间,
具体过程就不说了, 前前后后为这个车几个朋友差不多吃了1年的饭,每次都是美其名曰开会讨论。


正式介绍前,先说下关于点火器的几个知识点
1,点火提前角,这个不用说了吧。
2,进口车的磁电机发出的触发波形
注意进口车的磁电机上一般有4个或6个磁块,而不是国产车上的1个,顺便说句:

只有一个触发磁块的国产车是没有可能实现程序控制进角的!

那些杂志上打广告说有自动进角功能的点火器纯粹骗人的,因为他们从原理上就不可能实现,

3,晶体管点火方式和CDI点火方式的区别,

这就是晶体管点火方式,功率晶体管直接带高压包的初级,通过短时间内改变线圈内的电流,在次级也就是火花塞上感应出高压火花

这是CDI方式:(不好意思,书店里拍的,怕被轰出去,手抖了)

CDI方式是通过电容储存电能,触发时用可控硅导通电容到地的通路,使电容和高压包的初级形成回路,使初级电流发生大的变化,在次级产生火花

要注意这两种形式用的高压包是不通用的,因为晶体管方式的初级是12V电压,而CDI方式中电容里要有2,300伏的电压才行,一般是通过磁电机里的一个充电线圈提供,现在所谓的DC-CDI就是把电池的电变成交流先升压成300V充到电容里,再通过高压包再次升压,你说象不象脱了裤子放屁!
说一点经验:晶体管方式下,通过高压包初级的电流除了要能达到接近2A的电流强度以外,还一定要保持足够的时间,这样才能给线圈储蓄足够的能量而产生火花,而这个时间并非随便很短就够的,有兴趣的可以从我的程序里看出这个时间是需要仔细决定的,在启动点火时需要强的火花,所以程序里让低转速时的导通时间长,而在高转速后需要精确和及时的点火位置,这时就缩短了很多,

再说下整个调试中一个重要的技术手段:自制的软件示波器,
没有这个,可以说根本无从调起,连磁电机真正发出的信号是什么样都不知道。
软件示波器,其实是通过声卡的录音通道采集信号,声卡是个相当好的模数转换工具,对于音频范围内的信号处理绰绰有余,别觉得这是因为没有真正的示波器因陋就简,普通示波器一般处理的信号大多频率在几十K到几十兆之间,即使有存储功能的,也很少有能观察秒级周期波形的。磁电机发出的信号周期相对来说很长,普通示波器看不到这种信号的全貌,于是请出了以前自己写的一个小程序:

网上也可以当到好几个类似的软件,不过没见过能一次抓下上百秒信号的,而我这个有个最大的特点就是可以抓下上百秒时间的信号,并且可以停下来仔细看这几百秒波形的每个细节。因为声卡都有2路声道,正好可以搞成双踪示波器,上边这个图里有个波比其他3个高,其实是另一路到高压包的点火信号叠加在上边了。这并非巧合,而是第2个波表示了活塞在上止点位置,这是点火提前角为0的波形。
要用这个软件录波形,需要用一个耳机线改造,一头的两根线作为两路探针,另一头仍然插在话筒或者line –in孔里,注意输入端一定要搞个分压电路。要不毁了声卡我可不管。

现在插播广告 :)

超大缓存! 超底成本!绿色安装,完全免费!先到先得,后到也有,超长待机………

呵呵,以前在单位闲极无聊半死半活之间写的小程序:
有兴趣可以试一下,别忘了先运行一下install,安装2个控件

关于我这个点火器,具体是这的:

这是原理图:A,B接触发头

怎么样够简练把,最后的实现成品中,整个材料中最贵的是那块实验板:花了6块。
板子最后做出来很小。如果用正规加工的印板而不是实验板,就更小了。

原理:
从磁电机说起,如下边箭头指的位置,我碰上的这个是4块,注意这4个磁条长度并不一样:1个最长,一个中长,2个短的。
红箭头所指位置:

经过触发线圈的时候会感应出这样的波形:从下边黑窗口可以看出正好是两个周期的波形,也就是说磁电机转了2圈的波形

经过二极管和LM339后会变成这样的波形:

再经过7400组成的触发器,形成下边这样的占宽比不同的波形,也是两个周期的波形。宽度正好对应磁电机磁条的宽度,这样程序才能根据不同的宽度,识别出每一圈的起始位置。

硬件电路选了不少方案,最后形成下边这个:大体是用二极管和LM339进行信号整形,然后经过7400搭的触发器转成可处理的占宽比方波,然后进入89C51单片机由程序识别,并控制点火

这是面包板上的原形:上边几个零件是还没插上去的功率管。板子上右下脚是个串口,没仿真器没法调程序,就只好靠这个串口打印数据调了,调完程序后就拆了,其实装在上边也很有用的。呵呵,小声的说:之所以拆了是出于一个很俗的目的:降低成本

这是做好的成品:

(已经给车主了,走的时候都忘了拍照纪念,得等别人补上了)

关于程序:
因为大多数人都没兴趣看程序,也因为我从来懒的写东西,这里就只列出了源代码,我只想大概说下流程,然后列几个经验点,要知道每条经验可都是经过几天或者几个星期换来的,
整好的波形经过I/O口,进入单片机,判断出最长的那个波,以它的下降沿作为起点,到第2个信号的上升沿,这之间是点火的区间,大概有不到40度,具体什么时候点,要根据转速决定,这个转速信息可以根据信号宽度得到,然后查表,得到点火数据,数据其实就是经过第一个波的下降沿后的延迟时间,然后延迟到时间后点火。

几点经验:
1尽量用移位代替乘除法,高转速下,指令执行速度影响很大的。
2 没必要判断出每个波形,只要判断出第一个,后边的累加递增就行了。
3 没事就置输出点火的IO口为底电平,防止死机的时候正好功率管在导通,容易烧毁。
4 给晶体管导通留够时间,否则无法打出足够强的火花。但因为转速原因太长时间是不允许的。这需要根据是否怠速做不同处理。
5 预置了256个数据,分别对应1200转到3800之间的提前角,再往高转就固定为提前30度点火了,实际使用感觉250个数也够用了,如果128个虽然查表方便,但太粗糙了。
6 其他的有兴趣的到程序里看把,很多做法都是有原因的。

程序里填的数据,是我根据磁电机尺寸和一般常用转速算出来的几个理论值,然后做个简单的中间插值得到的,其实这些数据很有搞头,不过我瞎填的这些数据感觉效果还不错,试车的时候没有觉得有什么不好的,加速一样很快,只是从怠速到高转之间开始的时候有个过度明显能感觉到有个“坎”,有点生硬,甚至觉得有点象2冲车的加速。这是因为我把怠速的值估计高了。总之,有兴趣的可以慢慢搞。

不足:
很显然,现在这个版本还不完善,
1,加上看门狗,防止死机,虽然实用中比想象的好的多,骑行时还没碰上过死机。
2,提高输入信号的抗干扰,
虽然很少死机,但输入的信号处理还很需要改进,现在的输入信号有时并非是标准的那样,这时就发生断火,要想避免,就要提高输入信号的纯净程度,不知道原装点火器怎么做到的,现在感觉要必须给信号线单走一路。并且加屏蔽。
3,改进数据。
4,改进程序,现在的有些处理方法显然不是最好的,我闭门造车想出来的方法很可能不是标准的处理方法。比如对转速的判断。

4,改成用 ARM 芯片做控制,毕竟51单片机都快30 年的东西,现在还用太老土了,而ARM片子已经很平易近人了,性能差的不是一点二点。用51感觉精度还是太糙

程序如下:这是最后版本
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 点火器程序
; 运行于51单片机
; By Bigtail 2005.9.25
; T1作为点火用定时器,溢出时马上点火
;
; 21h:T1 定时器预装载数的高8位
; 22h: 磁电机运行位置(状态),分别用 1,2,3,4 表示,
; 23h: 上上次状态
;
; 信号波形位置状态表示方法:
;
; 状态: 1 2 3 4
; ......____|------|_______|--|___________|-|___________|-|_______......
;
;
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

ORG 0000H
ajmp INIT
ORG 0003H
ajmp INT_0
ORG 000bH
ajmp OFW0
ORG 0013H
ajmp INT_1
ORG 001bH
ajmp OFW1

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;预置点火提前角数据
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

IGN_DATA_LOW:
DW 0ffffh,0ffe9h,0ffd2h,0ffbbh,0ffa4h,0ff8dh,0ff77h,0ff60h,0ff49h,0ff32h ;0---9
DW 0ff1bh,0ff05h,0feeeh,0fed7h,0fec0h,0fea9h,0fe93h,0fe7ch,0fe65h,0fe4eh ;10---19
DW 0fe37h,0fe21h,0fe0ah,0fdf3h,0fddch,0fdc5h,0fdafh,0fd98h,0fd81h,0fd6ah ;20---29
DW 0fd53h,0fd3dh,0fd26h,0fd0fh,0fcf8h,0fce1h,0fccbh,0fcb4h,0fc9dh,0fc86h ;30---39
DW 0fc6fh,0fc59h,0fc42h,0fc2bh,0fc14h,0fbfdh,0fbe7h,0fbd0h,0fbb9h,0fba2h ;40---49
DW 0fb8bh,0fb75h,0fb5eh,0fb47h,0fb30h,0fb19h,0fb03h,0faech,0fad5h,0fabeh ;50---59
DW 0faa7h,0fa91h,0fa7ah,0fa63h,0fa4ch,0fa35h,0fa1fh,0fa08h,0f9f1h,0f9dah ;60---69
DW 0f9c3h,0f9adh,0f996h,0f97fh,0f968h,0f951h,0f93bh,0f924h,0f90dh,0f8f6h ;70---79
DW 0f8dfh,0f8c9h,0f8b2h,0f89bh,0f884h,0f86dh,0f857h,0f840h,0f829h,0f812h ;80---89
DW 0f7fbh,0f7e5h,0f7ceh,0f7b7h,0f7a0h,0f789h,0f773h,0f75ch,0f745h,0f72eh ;90---99
DW 0f717h,0f701h,0f6eah,0f6d3h,0f6bch,0f6a5h,0f68fh,0f678h,0f661h,0f64ah ;100---109
DW 0f633h,0f61dh,0f606h,0f5efh,0f5d8h,0f5c1h,0f5abh,0f594h,0f57dh,0f566h ;110---119
DW 0f54fh,0f539h,0f522h,0f50bh,0f4f4h,0f4ddh,0f4c7h,0f4b0h ;120---127
IGN_DATA_HIGH:
DW 0f499h,0f482h ;128---129
DW 0f46bh,0f455h,0f43eh,0f427h,0f410h,0f3f9h,0f3e3h,0f3cch,0f3b5h,0f39eh ;130---139
DW 0f387h,0f371h,0f35ah,0f343h,0f32ch,0f315h,0f2ffh,0f2e8h,0f2d1h,0f2bah ;140---149
DW 0f2a3h,0f28dh,0f276h,0f25fh,0f248h,0f231h,0f21bh,0f204h,0f1edh,0f1d6h ;150---159
DW 0f1bfh,0f1a9h,0f192h,0f17bh,0f164h,0f14dh,0f137h,0f120h,0f109h,0f0f2h ;160---169
DW 0f0dbh,0f0c5h,0f0aeh,0f097h,0f080h,0f069h,0f053h,0f03ch,0f025h,0f00eh ;170---179
DW 0eff7h,0efe1h,0efcah,0efb3h,0ef9ch,0ef85h,0ef6fh,0ef58h,0ef41h,0ef2ah ;180---189
DW 0ef13h,0eefdh,0eee6h,0eecfh,0eeb8h,0eea1h,0ee8bh,0ee74h,0ee5dh,0ee46h ;190---199
DW 0ee2fh,0ee19h,0ee02h,0edebh,0edd4h,0edbdh,0eda7h,0ed90h,0ed79h,0ed62h ;200---209
DW 0ed4bh,0ed35h,0ed1eh,0ed07h,0ecf0h,0ecd9h,0ecc3h,0ecach,0ec95h,0ec7eh ;210---219
DW 0ec67h,0ec51h,0ec3ah,0ec23h,0ec0ch,0ebf5h,0ebdfh,0ebc8h,0ebb1h,0eb9ah ;220---229
DW 0eb83h,0eb6dh,0eb56h,0eb3fh,0eb28h,0eb11h,0eafbh,0eae4h,0eacdh,0eab6h ;230---239
DW 0ea9fh,0ea89h,0ea72h,0ea5bh,0ea44h,0ea2dh,0ea17h,0ea00h,0e9e9h,0e9d2h ;240---249
DW 0e9bbh,0e9a5h,0e98eh,0e977h,0e960h
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;主程序
;完成初始化功能
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
INIT: nop
nop
nop
nop
clr p1.5
MOV TMOD,#19H ;置定时器方式,t0 模式1,t1 模式1
MOV TCON,#05H ;后沿触发
setb C
orl C,PSW.3
orl C,PSW.4
mov IE,#8fh ;总中断允许
clr tr0
clr TR1
MOV TL0,#0H
MOV TH0,#0H
mov tl1,#0h
mov th1,#0h
; setb tr1
setb tr0
; mov scon,#01000000b
MAIN:
clr p1.7
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
setb p1.7
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
setb p1.6
clr p1.6
sjmp MAIN ;主程序循环挂起


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;外部中断1响应程序
;即方波信号的上升沿触发,
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
INT_1:
mov a,22h
cjne a,#1h,INT_1_EXIT ;前一状态是1否
mov a,23h
cjne a,#4h,INT_1_EXIT ;上上次状态是4否
mov a,21h
cjne a,#0ffh,INT_1_EXIT ;是ffh则在状态2的上升沿点一次火
call ign_long
INT_1_EXIT:
nop
nop
nop
reti
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;外部中断0响应程序
;方波高电平脉宽测定完成,先保存原r0r1到r4r5,再保存记数到r0r1
;先检查是不是状态1,若不是则前一状态步进1作为当前状态,
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
INT_0: clr tr0
mov A,r0
mov r4,A
mov A,r1
mov r5,A
mov r0,tl0
mov r1,th0
mov tl0,#0h
mov th0,#0h
setb tr0 ;T0继续记时
clr p1.5

mov psw,#0h ;比较r0r1 和r4r5大小
mov A,r4
subb A,r0
mov A,r5
subb A,r1
jnc is_234 ;r4r5>r0r1
mov a,r0
mov r2,a
mov a,r1
mov r3,a ;r0r1=>r2r3
if_1:
mov psw,#0h ;1,r2r3减r4r5看够不够减
mov a,r2
subb a,r4
mov r2,a
mov a,r3
subb A,r5
mov r3,a
jc is_234
mov psw,#0h ;2,r2r3减r4r5看够不够减
mov a,r2
subb a,r4
mov r2,a
mov a,r3
subb A,r5
mov r3,a
jc is_234
mov psw,#0h ;3,r2r3减r4r5看够不够减
mov a,r2
subb a,r4
mov r2,a
mov a,r3
subb A,r5
mov r3,a
jc is_234
mov psw,#0h ;4,r2r3减r4r5看够不够减
mov a,r2
subb a,r4
mov r2,a
mov a,r3
subb A,r5
mov r3,a
jnc is_pos_1 ;如差不多大不够减4次,则不是状态1

is_234:
nop
nop
clr c
mov 23h,#0h
mov a,22h
cjne a,#1h,if_pos_3 ;前一状态是1否
is_pos_2: ;是状态2
nop
mov 23h,#1h
mov 22h,#2h
nop
ajmp exit
if_pos_3:
cjne a,#2h,if_pos_4 ;前一状态是2否
is_pos_3:
mov 23h,#2h
mov 22h,#3h ;是状态3
nop
nop
ajmp exit

if_pos_4:
cjne a,#3h,err ;前一状态是3否
is_pos_4:
clr tr1
mov 23h,#3h
mov 22h,#4h ;是状态4
nop
nop
ajmp exit

is_pos_1:
mov a,22h
mov 23h,a
mov 22h,#1h ;是状态1
cjne a,#4h,err ;上次不是4,不点火,但记录本次状态为1作为开始状态
mov psw,#0h
mov a,r1
subb a,#15h
jc h_1200r ;转速低于1200提前角恒为0
mov 21h,#0ffh
ajmp exit ;直接返回,不点火,由状态2点火
h_1200r:
mov a,r1
mov r3,a
mov a,r0
mov r2,a
mov psw,#0h
mov a,r3
rrc a
mov r3,a
mov a,r2
rrc a
mov r2,a
mov psw,#0h
mov a,r3
rrc a
mov r3,a
mov a,r2
rrc a
mov r2,a
mov psw,#0h
mov a,r3
rrc a
mov r3,a
mov a,r2
rrc a
mov r2,a
mov psw,#0h
mov a,r3
rrc a
mov r3,a
mov a,r2
rrc a
mov r2,a

mov psw,#0h
subb a,#064h
mov r7,a
mov a,r3
subb a,#0h
jc h_4140r

mov a,r7
subb a,#80h
jc low_256
mov dptr,#IGN_DATA_HIGH
ajmp get_ign_data
low_256:
mov psw,#0h
mov a,r7
mov dptr,#IGN_DATA_LOW
get_ign_data:
mov b,#2h
mul ab
mov r7,a
movc a,@a+dptr
mov th1,a
mov a,r7
inc a
movc a,@a+dptr
mov tl1,a
setb tr1
ajmp exit
h_4140r:
nop
nop
call ign_2_loop
exit:
err: nop
nop
clr p1.5
reti

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;点火子程序,低转速下延长打火时间
ign_2_loop:
setb p1.5
mov a,#0ffh
ign_loop:
dec a
nop
jnz ign_loop
clr p1.5
nop
nop
ret

;点火子程序
ign_long:
setb p1.5
mov a,#0ffh
ign_long_loop:
dec a
nop
nop
nop
nop
nop
nop
nop
nop
jnz ign_long_loop
clr p1.5
nop
nop
ret
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;定时器T0溢出中断响应程序
;正常情况T0不应溢出,否则说明磁电机转速太慢了,造成计数溢出
;这种情况下清空继续计数
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
OFW0: nop
nop
clr tr0
mov tl0,#0h
mov th0,#0h
setb tr0
clr p1.5
nop
nop
nop
reti

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;定时器T1溢出中断响应程序
;T1溢出,开始点火
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
OFW1: clr tr1
mov a,22h
cjne a,#1h,ign_exit ;不是状态1不要点火,3-4之间还要记数测转速
; mov a,23h
; cjne a,#4h,ign_exit ;上上次不是状态4不要点火,
call ign_2_loop
ign_exit:
mov tl1,#0h
mov th1,#0h
clr p1.5
nop
nop
reti
;---------------------------------------------------------------------------
nop
nop
clr p1.5
END

 

本信息真实性未经搜配网证实,仅供您参考。未经许可,不得转载。
我要投稿】【生意人使用生意宝,生意越来越旺盛!】【发表评论】【打印本页】【 】【关闭窗口】【回顶部
天凉换“新装”
天凉换“新装”
奥迪全新一代MM
奥迪全新一代MM
车载导航后视镜
车载导航后视镜
飞歌东风本田新C
飞歌东风本田新C
 
 一周热门资讯排行
搬迁通知
人事变更公告
2009年汽车电子供应商将面临困难局面
2009年潍柴动力受益工程机械产业投资拉动
塔塔汽车12月销量较上年下滑47% TVS销量下滑8.5%
后座乘客不系安全带实行重罚
襄樊全力建设车城襄樊基地
09土耳其汽车行业预计将全面缩水35%
乌克兰将大幅提高进口车辆关税
国际巨头掘金全球7000亿元零部件售后市场
中档轿车 进口车
奥克斯 雪弗兰
丰田 fiata
悍马 大迪
benz 路虎
中国汽车万维网·新闻新车
     ICP证号: 浙B2-20050253          广告经营许可证:3301082100383
未经sinopart.com 同意,不得转载本网站之所有产品及企业信息。