• 回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

请教关于单片机控制的半桥感应加热电路

我是初学感应加热,看了一些资料,按照我的理解,我想用单片机输出两路信号,一路做为死区,一路作为开关信号,连接74LS10与非门,实现对称信号的输出,同时用单片机的外部中断脚检测电流过零信号,当过零时触发中断,进行换流。不知道这个思路可行吗,我已经进行了实验,输出不尽人意,不知道是什么原因,是不是速度不够啊。我用S52,24M,应该来说够快了啊,请前辈指教。

 

 

;*************************

POWER  BIT  P0.4 ; 开关信号
SQ     BIT  P0.5 ;死区

 

;**********************************************
ORG 0000H          ;程序首址
AJMP START         ;跳初始化开始

 

ORG 0003H   ;中断0入口
AJMP GUOLIU     ; 跳转到过零服务程序

      ;
ORG 0013H  ; 中断1入口
AJMP GL  ;跳转到过流处理程序


ORG 0100H          ;初始化地址
START:MOV SP,#27H  ;设置堆栈

 

 


ST2:MOV P0,#0FFH       ;P0置位,所显示器,LED灭
    MOV P1,#0FFH       ;P2置位
    MOV P2,#0FFH       ;P2置位
    MOV P3,#0FFH       ;P3置位
   

CLR SQ
 
SETB EX0   ;允许外部中断0   ;
SETB EX1   ;允许外部中断1
MOV IP,#00000001B;中断1中断优先控制位,外部中断为过流中断

SETB IT0           ;   脉冲触发控制位
SETB IT1           ;   脉冲触发控制位
LCALL DELAY2
LCALL DELAY2
LCALL DELAY2

SETB EA            ;   开中断总允许位
SETB SQ      ;打开功率管

;***********************************************************
LOOP: NOP ;等待
   NOP
   NOP
   NOP
    AJMP LOOP

;***********************************************************
;       震荡信号程序,过零中断程序
;********************************************************
GL:CLR SQ;          关闭所有信号,进入死区
   CPL POWER   ;0.5US   信号取反
   NOP     ;0.5US 死区时间
   NOP     ;0.5US
   NOP     ;0.5US
   NOP     ;0.5US
   NOP     ;0.5US      ;
     SETB SQ    ; 打开开关信号,此时换流
      ;
   CPL P1.4  ; 正负开关信号指示灯
    FH:RETI   ;退出中断


;************************************************************
;    过流处理程序
;**********************************************************
GUOLIU:MOV P0,#00H  ;关闭所有输出
    CLR P1.3     ;打开过流指示灯
AJMP GUOLIU ;自锁

RETI

;***************************************************************************
;延时程序
;*****************************************************************************
DELAY:MOV R7,#010H
D11: MOV R6,#010H
DJNZ R6,$
DJNZ R7,D11
RET
 
 
DELAY2:MOV R7,#0FFH
D111: MOV R6,#0FFH
DJNZ R6,$
DJNZ R7,D111
RET

 

全部回复(10)
正序查看
倒序查看
2010-11-09 15:34
呵呵,楼主好创新!!我觉得这个思路可以吧,你说的输出不尽人意是怎样?功率不够?
0
回复
2010-11-09 16:44
@京睿电源
呵呵,楼主好创新!!我觉得这个思路可以吧,你说的输出不尽人意是怎样?功率不够?
输出混乱,频率低,噪音大,管子还发热,都是些怪现象,电流互感器信号根本不对,乱波,加热的话,可以烧红小钻头。
0
回复
2010-11-09 17:29
@中电感应
输出混乱,频率低,噪音大,管子还发热,都是些怪现象,电流互感器信号根本不对,乱波,加热的话,可以烧红小钻头。
AT89S52??????你的PWM信号用什么写的?
0
回复
qinranran
LV.2
5
2010-11-09 22:20

楼主的想法在理想情况下是可行的,但是不知你用的硬件电路能不在高频情况下能不能正常工作?

0
回复
qinranran
LV.2
6
2010-11-09 22:21

楼主的想法在理想情况下是可行的,但是不知你用的硬件电路能不在高频情况下能不能正常工作?

0
回复
2010-11-10 11:52
@qinranran
楼主的想法在理想情况下是可行的,但是不知你用的硬件电路能不在高频情况下能不能正常工作?
S52指令周期0.5US,输出直接连接74LS10,速度10NS左右,74LS10直接连接EXB841,驱动IGBT。电流反馈用互感器,加339整形,速度也可以了吧,339直接到外部中断口,搞不懂理论上应该可以啊,单就是不行。
0
回复
2010-11-10 15:23
@firefox886
AT89S52??????你的PWM信号用什么写的?
PWM信号其实没有,该思路为自激震荡形式,如果第一次打开第一个IGBT后,没有反馈回来过零信号,则会停振,按照理想状态下,电感充磁后,总会出现过零点的,所以他的震荡频率是谐振回路自己控制的,中断使用边沿触发方式。
0
回复
irex
LV.5
9
2010-11-11 07:44
@中电感应
S52指令周期0.5US,输出直接连接74LS10,速度10NS左右,74LS10直接连接EXB841,驱动IGBT。电流反馈用互感器,加339整形,速度也可以了吧,339直接到外部中断口,搞不懂理论上应该可以啊,单就是不行。

硬件是對的,但軟件處理是有多缺失

重點在于MCU中斷處理上問題

MCU處理中段有下列問題必須注意

1.進入中斷必須完成目前指令動作,依指令不同時間不同,可以詳看指令週期(約0.5us-2us).

2.進入中段執行程式要占用一基本時間,這看你MCU速度與進入處理時間.

3.比如你諧震頻率20khz(50us),那整各中斷進入MCU有1+2未定時間這影響會非常大.

4.半橋電路特性一但進入容性區(串聯諧振),fw < fx (MCU輸出頻率小於諧振頻率)這將導至電路嚴重返磁能量干擾,此時MCU容易被干擾.

5.用八位元MCU做感應是完全可行,但是注意指令週期必須詳細計算與預估,預估合理你可以直接使用單管IGBT既可以做到大功率而不需使用模塊.

6.數位精確計算可以降低IGBT損耗,但是這必須使用示波器作時序分析,建議買優利得的示波器,價格1650RMB.

7.底下是我門使用MCU做的15KW KPM 板,加油! 祝福你成功!

 

 

0
回复
2010-11-11 09:33
@irex
硬件是對的,但軟件處理是有多缺失重點在于MCU中斷處理上問題MCU處理中段有下列問題必須注意1.進入中斷必須完成目前指令動作,依指令不同時間不同,可以詳看指令週期(約0.5us-2us).2.進入中段執行程式要占用一基本時間,這看你MCU速度與進入處理時間.3.比如你諧震頻率20khz(50us),那整各中斷進入MCU有1+2未定時間這影響會非常大.4.半橋電路特性一但進入容性區(串聯諧振),fw

谢谢前辈指点,我个人觉得,我在软件处理上,应该是很快了,在打开开关信号后,利用空命令一直在等待,过零信号,到出现中断,最多延时0.5US才相应中断,不知道这样的理解对吗。请问对于电流互感器取样延时方面,你是怎么处理的。

0
回复
fuhanwen
LV.4
11
2010-11-29 20:27
@firefox886
AT89S52??????你的PWM信号用什么写的?

用任意IO都可以做PWM输出.看你的程序了

0
回复