天天看點

單片機控制可控矽調壓

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的積分獲得,可參考下表。

單片機控制可控矽調壓

歡迎關注公衆号"嵌入式技術開發",大家可以背景給我留言溝通交流。如果覺得該公衆号對你有所幫助,也歡迎推薦分享給其他人。

單片機控制可控矽調壓