问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

单片机控制可控硅调压原理与实现

创作时间:
作者:
@小白创作中心

单片机控制可控硅调压原理与实现

引用
CSDN
1.
https://blog.csdn.net/zhang062061/article/details/114987009

本文详细介绍了如何使用单片机控制可控硅实现交流电压调压。文章从可控硅的基本原理出发,逐步讲解了过零检测电路的设计、驱动电路的实现以及具体的程序代码,适合对嵌入式系统和电子控制感兴趣的读者深入学习。

可控硅简介

可控硅,也叫晶闸管,广泛应用于交流控制系统中,可实现小功率控制大功率设备。可控硅分单向可控硅和双向可控硅,双向可控硅在结构上相当于两个单向可控硅反向连接,可以实现双向导通。以BTA41为例,其电路符号及封装如下:

G极为控制极,当G极有正向(或负向)脉冲时,双向可控硅导通,直到交流信号过零点时关断,如下图所示。因此,要通过单片机控制输出电压,首先需要检测交流信号的过零点,然后延时一定时间后,输出一个脉冲,使可控硅导通。延时时间越长,导通时间越短,输出电压越低。

电路设计

过零检测电路

过零检测电路如下图所示。原理比较简单,由一个整流桥和光耦组成。

输出波形如下图所示。上方为整流桥输出的波形,下方为光耦输出的波形。光耦输出端直接接单片机IO口即可。

可控硅驱动电路

可控硅驱动一般采用专用的光耦,该光耦内部集成了小功率的可控硅,用于驱动外部大功率的可控硅。电路如下:

程序设计

首先使能外部中断和一个定时器,定时器打开溢出中断。初始化部分可参考之前的公众号文章。外部中断用于检测过零点,定时器用于控制导通角和输出脉冲。

调压过程

单片机外部中断被触发后(检测到过零点),根据要输出的电压,计算导通角(延时时间),通过定时器设置延时时间,开启定时器溢出中断。定时时间到后输出一个脉冲,控制可控硅导通。程序如下:

外部中断函数:

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){       
    ac_flag = 0;       
    if(VoltFan != 0)       
    {              
        if(VoltFan > 220)//大于220V 直接导通              
        {                     
            HAL_GPIO_WritePin(DOUT2_GPIO_Port,DOUT2_Pin,GPIO_PIN_SET);              
        }              
        else              
        {                     
            ac_delay = ac_delay_us[VoltFan/5];//查表获得延时时间                     
            __HAL_TIM_SET_AUTORELOAD(&htim2,ac_delay);//设置定时器延时时间                     
            __HAL_TIM_ENABLE_IT(&htim2,TIM_IT_UPDATE);                     
            __HAL_TIM_ENABLE(&htim2);              
        }       
    }}

定时器中断函数:

void TIM2_IRQHandler(void){  
    /* USER CODE BEGIN TIM2_IRQn 0 */  
    /* USER CODE END TIM2_IRQn 0 */  
    //HAL_TIM_IRQHandler(&htim2);  
    /* USER CODE BEGIN TIM2_IRQn 1 */       
    if (__HAL_TIM_GET_IT_SOURCE(&htim2, TIM_IT_UPDATE) != RESET)       
    {              
        if(ac_flag == 0)              
        {                     
            ac_flag = 1;                     
            HAL_GPIO_WritePin(DOUT2_GPIO_Port,DOUT2_Pin,GPIO_PIN_SET);//输出脉冲                     
            __HAL_TIM_CLEAR_IT(&htim2, TIM_IT_UPDATE);                     
            __HAL_TIM_SET_AUTORELOAD(&htim2,100);//设置定时时间100us(脉冲宽度)              
        }              
        else if(ac_flag == 1)              
        {                     
            HAL_GPIO_WritePin(DOUT2_GPIO_Port,DOUT2_Pin,GPIO_PIN_RESET);//100us时间到 关闭脉冲                     
            __HAL_TIM_CLEAR_IT(&htim2, TIM_IT_UPDATE);                     
            __HAL_TIM_DISABLE(&htim2);              
        }       
    }  
    /* USER CODE END TIM2_IRQn 1 */}

可控硅的触发脉冲一般在20~50us即可,感性负载脉冲宽度需要加大,一般不小于100us。

程序中延时时间是预先计算好通过查表获得的。计算方法通过计算sinx的积分获得,可参考下表。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号