单相电流控制器

单相电流控制器



前言

为了保护负载和系统电源有时就需要对负载电流进行限制, 当负载电流超出某个值就把断开负载供电, 待恢复后再供电。


一、概述

  这些单一的功能且要求价格低廉的产品, 用通用MCU就非常不划算, OTP类MCU是一个不错的选择, 价格低至几毛钱以下。OTP(One Time Programmable)是MCU的一种存储器类型, 意思是一次性可编程, 程序烧入单片机后,将不可再次更改和清除, 平时调试程序需要厂家提供的仿真器, 不能像其它MCU那样可通过ISP下载。本电路采用台湾远翔科技的FM8PC712A型号MCU来实现电流控制器功能。

二、电路和原理

1.电路图

在这里插入图片描述

2.原理概述

  交流电输入通过RC降压得到12V直流电源, 再通LM7805降压给MCU供电, 同时12V电源给继电器提供电源, 由MCU控制继电器的闭合或断开。J6是电流互感器, 来测量继电器触点端的电流, 即给负载供电电流, 再通过D7、R1、R2和R3等器件半波整流, 把小交流电整成直流电让MCU的ADC采集。拨码开关用来设置电流档位。

三、程序设计

  该MCU是8位机, 只支持厂家的汇编语言。

1.程序流程图

在这里插入图片描述

2.程序简述

  接入AC220V电源通电,给设备供电后先稳定3秒。进行第一次电流采集对比,没有超过将继续采集对比;若超过延时5秒后再进行第二次电流采集对比,仍然没有超过再返回到第一次,若超出设定电流即继电器断电1分钟,之后再稳定3秒后通电再返回到第一次电流采集对比,如此反复运行。

3.汇编程序代码

;=====================================================================          
;-------------------------- ROM Areas --------------------------------  
;=====================================================================                                                                          
                                             
                ORG     000H                                
                GOTO    reset                            
                                                                           
                ORG     003H          ;interrupt                             
                GOTO    int_vector                                                    
                                                                        
;---------------------------------------------------------------------  
;---------------------------------------------------------------------  
INT_VECTOR:                                                   
                MOVAR   INTACCTMP               ;07DH         
                SWAPR   STATUS,A                           
                MOVAR   INTSTATMP               ;Push Stack 
                                                           
                BTRSC   PWM0CR,P0TMIF_B
                GOTO    P0TMItask               ;P0TM
                                                                                                        
                BTRSC   PWM1CR,P1TMIF_B                         
                GOTO    P1TMItask               ;P1TM
      
                BTRSC   ADCON_2,ADCIF_B                       
                GOTO    ADCItask                ;ADC  
                                                               
                //BTRSC   INTFLAG,LVDT30IF_B       
                //GOTO    LVDT30Itask             ;LVDT30  
                
                //BTRSC   INTFLAG,LVDT24IF_B                                
                //GOTO    LVDT24Itask             ;LVDT24 

                BTRSC   INTFLAG,TM0IF_B       
                GOTO    TM0Itask                ;TM0
                                                                                            
                BTRSC   INTFLAG,INT0IF_B       
                GOTO    INT0Itask               ;INT0                               
                
                BTRSC   INTFLAG,INT1IF_B                                  
                GOTO    INT1Itask               ;INT1
                
                BTRSC   CMPCON1,CMPRIF1_B       ;(CP > CN)       
                GOTO    CMPR1Itask              ;CMP1 raising    
                                              
                BTRSC   CMPCON1,CMPFIF1_B       ;(CP < CN)       
                GOTO    CMPF1Itask              ;CMP1
                            
                BTRSC   CMPCON2,CMPRIF2_B       ;(CP > CN)       
                GOTO    CMPR2Itask              ;CMP2 raising     
                
                BTRSC   CMPCON2,CMPFIF2_B       ;(CP < CN)       
                GOTO    CMPF2Itask              ;CMP2                                                                                                           
                                      
                                                            
int_exit:               
                SWAPR   INTSTATMP,A             ;Pop Stack                                       
                MOVAR   STATUS                            
                SWAPR   INTACCTMP,R 
                SWAPR   INTACCTMP,A             ;WHY
                RETFIE                

;=====================================================================
;------------------ Main Programme Beginning -------------------------
;=====================================================================

;=====================================================================
                                                                          
reset:                                                    
             clrwdt                                          
             BCR    WDT,WDTE_B         ;Disable Watch dog timer  
             nop                                                                                 
             nop                                                                                                             
             CALL   CLEAR_RAM                                                                                                                                                 
             CALL   RESET_INIT                                                             
             BTRSS  PCON,LVDT24_B                                                                            
             GOTO   reset   
             
             BSR    CLKCFG,SELCLK0_B      //1M
             BCR    CLKCFG,SELCLK1_B           
             BCR    CLKCFG,SELCLK2_B                                                         
             BSR    CLKCFG,INCODS_B  ;bit2        //XOUT Enable(0)/Disable(1)  
             BCR    CLKCFG,ATSW_B          //Disable auto clock switch Fcpu to 4Mhz clock when SELOPR=0 and VDD < 3.0V  
             NOP   
             
             CALL  GPIO_INIT           
             FM_Delay_ms 1                 
             BCR   RELAY_OUT  ///
             CALL  ReadKeyVau
             CALL  SECCURRENT   
             CALL  ADC_INIT        
             FM_Delay_ms 1EH
MAIN_LOOP:                                                           
             CALL  ADC_CONVERT      
             MOVR  TEMPH,A       
             SUBAR CURRENTTH_H,A    
             BTRSS STATUS,C_B    
             GOTO  RECHECK        
             ANDIA FFH     
             BTRSS STATUS,Z_B
             GOTO  MAIN_LOOP 
             MOVR  TEMPL,A                      
             SUBAR CURRENTTH_L,A  
             BTRSC STATUS,C_B   
             GOTO  MAIN_LOOP 
RECHECK:     FM_Delay_ms 32H               
             CALL  ADC_CONVERT      
             MOVR  TEMPH,A       
             SUBAR CURRENTTH_H,A    
             BTRSS STATUS,C_B    
             GOTO  RELAYOFF 
             ANDIA FFH
             BTRSS STATUS,Z_B     
             GOTO  MAIN_LOOP
             MOVR  TEMPL,A                      
             SUBAR CURRENTTH_L,A  
             BTRSC STATUS,C_B   
             GOTO  MAIN_LOOP    
RELAYOFF:   
//             BCR   RELAY_OUT  
             BSR   RELAY_OUT           
             MOVIA 06H                        
             MOVAR COUNT                     
DELAY1MIN:   FM_Delay_ms 64H   
             DECR  COUNT,R          
             MOVIA 0FH
             ANDAR COUNT,A                                                    
             BTRSS STATUS,Z_B
             GOTO DELAY1MIN              
             BCR   RELAY_OUT            
//             BSR   RELAY_OUT
             FM_Delay_ms 1EH       
             GOTO MAIN_LOOP

四、技术参数要求

1.输入交流220V/50Hz

2.输出交流220V/50Hz,最大16A

五、总结

  实际测试发生精度不太准, 问题出现在电流互感器转变成小交流电再半波整流这个电路, 不是ADC精度问题, 该方案稳定性和精度都较很差, 所以这是一个失败的产品。


免责申明: 作者难免技术水平有限,如有错误拒不承认,本文技术资料只适于学习和参考,不可商用,若要商用,不必告知我,跟我没一毛关系。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值