久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: 市電過零檢測相關-STC/AI 8G單片機通過PCA模塊捕獲市電脈沖寬度,測量結果有誤 [打印本頁]

作者: ziqidong    時間: 2025-6-6 09:22
標題: 市電過零檢測相關-STC/AI 8G單片機通過PCA模塊捕獲市電脈沖寬度,測量結果有誤
單片機型號為STC/AI 8G1K08A

工程前半部分做了市電的過零檢測,P33引腳通過限流電阻、RC濾波結構直連市交流電(火線),并開啟外部中斷INT1,檢測到下降沿后,在INT1中斷內開啟定時器進行延時補償(考慮到繼電器響應到吸合需要一定時間)

為了驗證延時的效果,使用單片機P32端口監控用電器端的電壓情況(反饋腳),繼電器吸合后用電器與火線相連接入市電,那么,只要測量P32端口初次通電的脈沖寬度,即可確認火線進入用電器端的初始相位

測量脈沖寬度的方法是,當P32端口(ADC2)采集到高電平時,立即開啟PCA計數,記錄初始PCA數值,并配置為下降沿中斷,中斷觸發后記錄當前計數值,兩者相減,即為高電平持續時間,即脈沖寬度


理想情況下,經定時器延時補償 T1 + 繼電器響應時間 T2 后,如果在P32端口 測量初次通電的脈沖寬度為 10 ms(近似),說明繼電器觸頭導通瞬間,恰好正是市電零點



PCA 配置:

void PCA_Init(void){
        P_SW1 &= 0x00;        //P_SW1 是外設功能腳切換寄存器,可以控制相關引腳啟用串口、PCA、SPI等功能,本例中置位 00 ,使得CCP0功能映射到 P3.2 端口上,其實也是CCP0的默認引腳
        CMOD = 0x0C;          //PCA 模式寄存器,[3:1] 控制PCA 計數脈沖源選擇位即單次計數的周期 末位ECF-是否允許PCA 計數器溢出中斷,0-禁止 1-使能
                                       //0000 1100 系統時鐘/6  禁止計數器溢出中斷
        CCON = 0x00;          //B7-CF:PCA計數器溢出中斷標志 B6-CR:PCA計數器允許控制位 B[2:0]-CCFn PCA模塊中斷標志
                                       //PCA 控制寄存器  0000 0000 清除所有標志位             
        CL=CH=0;                //清零PCA 計數器
        EA = 1;
}

PCA中斷服務函數:

void PCA_ISP() interrupt 7{
         unsigned int capture=0;    //記錄此時進入中斷的時間節點
         
         if(CCF0){                        //PCA 模塊只有一個中斷向量而包含多個中斷源, 需要先分辨中斷源再進行中斷操作
                 CCF0=0;                //清除標志
                 capture=((unsigned int)CH) <<8|(unsigned int)CL;
                 T_end = capture;
                 T_state = 1;
                 CR=0;
         }
}

PCA計數調用:

             if(check_flag){
                        Va=ADC_Read(2);                                      //ADC采樣P32端口電壓
                        if(Va>370){                                               //采樣值370轉換為電壓值為 1.2V 只有當檢測到高電平時才會啟用PCA 計數功能
                                CR=1;
                                T_start = ((unsigned int)CH )<<8|(unsigned int)CL;    //記錄當前計數值
                                CCAPM0 = 0x11;                               //CCAPMn PCA模塊模式控制寄存器 詳情參見數據手冊  
                                                                                       //B5-CCAPPn 允許 PCA模塊n進行上升沿捕獲;  B4-CCAPNn 允許 PCA模塊n進行下降沿捕獲; B0 ECCFn 允許 PCA模塊n 的匹配/捕獲中斷
                                                                                       //0001 0001 下降沿捕獲并使能中斷                       
                                check_flag=0;
                                }      
                        }
                        if(T_state){
                                if(T_start<=T_end)
                                        high_time=T_end-T_start;
                                else
                                        high_time=65536-T_start+T_end;
                                        T_state=0;
                                       
                                }
                                if(timer>=(high_time/100)){          //PCA計數周期是1us,定時器變量timer 的計時基準是100ms,high_time/1000得到ms量級,將ms量級的數字,乘以1000轉換為秒量級,觀察燈亮時間(秒級別),即可獲得脈沖寬度
                                        state=OFF;
                                        timer=0;
                                }


經測試,定時器補償3ms時,PCA測量脈沖寬度為15.8ms
             定時器補償1ms時,PCA測量脈沖寬度為17.8ms;

可以發現,定時器補償部分正常運行,但PCA脈沖測量結果出現極大偏差,理論上最大值僅為10ms(市電周期20ms的一半)

求大佬幫忙看看,是哪里配置有誤?
作者: gpdt3209    時間: 2025-6-6 17:22
繼電器是機械切換有延時
作者: 人工置頂員    時間: 2025-6-7 22:10
頂一下
作者: 人工置頂員    時間: 2025-6-11 14:47
頂一下




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 伊人狠狠干 | 中文字幕精品一区 | 日韩成人专区 | 亚洲黄色国产 | 天天摸天天看 | 亚洲精品www| 91资源在线 | 91视频国产一区 | 日韩一区在线播放 | 欧美日韩成人在线 | 中文字幕在线不卡播放 | 欧美淫| 国产一区二区三区在线 | 国产精品国产a | 综合二区 | 国产成人精品网站 | 91免费小视频 | 亚洲欧美日韩精品久久亚洲区 | 精品久久中文字幕 | 日韩欧美视频免费在线观看 | 精品亚洲一区二区 | 欧美激情 一区 | 成人做爰www免费看视频网站 | 久久久影院 | 91精品国产一区二区三区蜜臀 | 欧美日韩一区二区在线观看 | 亚洲精彩视频在线观看 | 亚洲精品www久久久久久广东 | 成人欧美 | 国产黄色在线观看 | 日韩视频在线播放 | 99pao成人国产永久免费视频 | aaaaaa大片免费看最大的 | 成人在线观看欧美 | www.玖玖玖 | 日本 欧美 国产 | 97av视频| 综合网伊人 | 成人毛片网站 | 日本不卡免费新一二三区 | 国产日韩欧美二区 |