土巴兔网站开发方案,网站建设制作模板,关键词优化排名软件流量词,深圳网站制作 公司1.可控硅简介 可控硅#xff0c;也叫晶闸管#xff0c;广泛应用于交流控制系统中#xff0c;可实现小功率控制大功率设备。可控硅分单向可控硅和双向可控硅#xff0c;双向可控硅在结构上相当于两个单向可控硅反向连接#xff0c;可以实现双向导通。以BTA41为例#xff0… 1.可控硅简介 可控硅也叫晶闸管广泛应用于交流控制系统中可实现小功率控制大功率设备。可控硅分单向可控硅和双向可控硅双向可控硅在结构上相当于两个单向可控硅反向连接可以实现双向导通。以BTA41为例其电路符号及封装如下 G极为控制极当G极有正向或负向脉冲时双向可控硅导通直到交流信号过零点时关断如下图所示。因此要通过单片机控制输出电压首先需要检测交流信号的过零点然后延时一定时间后输出一个脉冲使可控硅导通。延时时间越长导通时间越短输出电压越低。 2.电路设计 首先过零检测电路如下。原理比较简单由一个整流桥和光耦组成。 输出波形如下图所示。上方为整流桥输出的波形下方为光耦输出的波形。光耦输出端直接接单片机IO口即可。 可控硅驱动一般采用专用的光耦该光耦内部集成了小功率的可控硅用于驱动外部大功率的可控硅。电路如下 3.程序设计 首先使能外部中断和一个定时器定时器打开溢出中断。初始化部分可参考之前的公众号文章。外部中断用于检测过零点定时器用于控制导通角和输出脉冲。 调压过程单片机外部中断被触发后检测到过零点根据要输出的电压计算导通角延时时间通过定时器设置延时时间开启定时器溢出中断。定时时间到后输出一个脉冲控制可控硅导通。程序如下 外部中断函数 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的积分获得可参考下表。 欢迎关注公众号嵌入式技术开发大家可以后台给我留言沟通交流。如果觉得该公众号对你有所帮助也欢迎推荐分享给其他人。