可控硅,也叫晶閘管,廣泛應用於交流控制系統中,可實現小功率控制大功率設備。可控硅分單向可控硅和雙向可控硅,雙向可控硅在結構上相當於兩個單向可控硅反向連接,可以實現雙嚮導通。
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的積分獲得,可參考下表:
作者:Mr張工
來源:嵌入式技術開發
版權歸原作者所有,如有侵權,請聯繫刪除。
鑽石舞台 發表在 痞客邦 留言(0) 人氣()