99久久全国免费观看_国产一区二区三区四区五区VM_久久www人成免费看片中文_国产高清在线a视频大全_深夜福利www_日韩一级成人av

  • 回復
  • 收藏
  • 點贊
  • 分享
  • 發新帖

單片機做逆變器過零點波形不對,求幫助

單片機用的是PIC16F1936,外接20M晶振。程序如下:

#include

__CONFIG (FOSC_HS&WDTE_OFF&PWRTE_OFF&MCLRE_ON&CP_OFF&BOREN_ON&CLKOUTEN_OFF&WRT_OFF&          PLLEN_OFF&LVP_OFF&BORV_25);

#define uchar unsigned char

#define uint unsigned int

const uchar sin_table[100]={16 , 31 ,47 ,62 ,77 ,92 ,106 ,120 ,134 ,147,159 ,171 ,182 ,193 ,202 ,211 ,219 ,226 ,232 ,238,242 ,246 ,248 ,250 ,250 ,250 ,248 ,246 ,242 ,238,232 ,226 ,219 ,211 ,202 ,193 ,182 ,171 ,159 ,147,134 ,120 ,106 ,92 ,77 ,62 ,47 ,31 ,16 ,0,16 , 31 ,47 ,62 ,77 ,92 ,106 ,120 ,134 ,147,159 ,171 ,182 ,193 ,202 ,211 ,219 ,226 ,232 ,238,242 ,246 ,248 ,250 ,250 ,250 ,248 ,246 ,242 ,238,232 ,226 ,219 ,211 ,202 ,193 ,182 ,171 ,159 ,147,134 ,120 ,106 ,92 ,77 ,62 ,47 ,31 ,16 ,0};

uchar num_INT;

Init_IO();

Init_Timer2_clk();

Init_CCP1();/

*The main function of Sine wave inverter*/

void main()

{num_INT=0;

Init_IO();

Init_Timer2_clk();

Init_CCP1();

TMR2ON=1;

TRISB=0xC3;

while(1);}

Init_Timer2_clk()

{TMR2IF=0; //清定時器2中斷標志

TMR2IE=1; //定時器2中斷使能位

PEIE=1; //外設中斷使能

GIE=0; //全局中斷禁止

T2CON=0x18; //預分頻比為0,后分頻比為2

PR2=0xF9; //周期寄存器設置 249

TMR2=0x00;GIE=1;}

Init_IO()

{P2BSEL=1; //確定P2B位于RC0

CCP2SEL=1; //確定P2A位于RC1

ANSELB=0X03;

TRISB=0x03;}

Init_CCP1() //增強型PWM初始化設置

{CCP2CON=0x8c; //設置增強型PWM工作于半橋模式;PWM設置為高電平有效

CCPTMRS0=0xF3; //設置PWM模式下CCP2以Timer2作為定時器

PWM2CON=0X05; //死區設置為1us

STR2D=0;

STR2C=0;

STR2B=1;

STR2A=1;

CCPR2L=0;}

void interrupt TMR2INT()

{

    if(TMR2IE&TMR2IF)

    {

        TMR2IF=0;

        num_INT++;

            if(num_INT<=50)

                CCPR2L=sin_table[num_INT-1];

            else

                CCPR2L=250-sin_table[num_INT-1];

            if(num_INT==51)

                {

                    RB4=0;

                    NOP();NOP();NOP();NOP();

                    RB2=1;

                }

            if(num_INT==1)

                {

                    RB2=0;

                    NOP();NOP();NOP();NOP();

                    RB4=1;

                }

            if(num_INT==100)

                    num_INT=0;

    }

}

用以上程序進行單片機調試發現輸出波形在過零點有問題

tek00001

過零點的驅動波形如下

tek00000

用的是后分頻為2的中斷響應,不知道為什么工頻變換比高頻變換早不到一個周期,希望在此能得到師傅們的指點,不勝感激

全部回復(13)
正序查看
倒序查看
2014-05-21 15:10
替樓主頂一帖,希望得到老師們的幫助,謝謝!
0
回復
2014-05-21 16:04

分明是工頻臂超前了一個周期呀,看看是不是定時器使用了影子寄存器的自動重裝載,用這個功能可以避免定時器中斷程序設置過程對極小脈寬的影響,看你的波形應該是用了,那么pwm實際輸出滯后于中斷一個周期

工頻臂要在電感電流為0時進行切換,這個具體的時序需要配合輸出的lc參數來決定是超前還是滯后,但是因為逆變器的負載非常可能不是純阻性的,帶不同負載的時候過零點還是會出現失真,這方面雙極性的就好很多

0
回復
2014-05-22 10:58
@wangshujun
分明是工頻臂超前了一個周期呀,看看是不是定時器使用了影子寄存器的自動重裝載,用這個功能可以避免定時器中斷程序設置過程對極小脈寬的影響,看你的波形應該是用了,那么pwm實際輸出滯后于中斷一個周期工頻臂要在電感電流為0時進行切換,這個具體的時序需要配合輸出的lc參數來決定是超前還是滯后,但是因為逆變器的負載非常可能不是純阻性的,帶不同負載的時候過零點還是會出現失真,這方面雙極性的就好很多
感謝師傅的回帖,非常感激。再給您看個圖

上圖是我后分頻為4的一個輸出,使用的是高電平有效,確實使用了自動重載功能。如果我將上面中斷中的程序改為

if(num_INT==50)

{

RB4=0;

NOP();NOP();NOP();NOP();

RB2=1;

}

if(num_INT==100)

{RB2=0

;NOP();NOP();NOP();NOP();

RB4=1;

}

那結果就變成

兩圖相比,差一個載波周期,所以說,我的工頻輸出已經在時序上補償了一個中斷的,但結果卻差的是一個載波周期,這就讓我很不理解,希望師傅給看看,謝謝

0
回復
2014-05-22 13:58
@熊貓酒仙
感謝師傅的回帖,非常感激。再給您看個圖[圖片]上圖是我后分頻為4的一個輸出,使用的是高電平有效,確實使用了自動重載功能。如果我將上面中斷中的程序改為if(num_INT==50){RB4=0;NOP();NOP();NOP();NOP();RB2=1;}if(num_INT==100){RB2=0;NOP();NOP();NOP();NOP();RB4=1;}那結果就變成[圖片]兩圖相比,差一個載波周期,所以說,我的工頻輸出已經在時序上補償了一個中斷的,但結果卻差的是一個載波周期,這就讓我很不理解,希望師傅給看看,謝謝

你這個圖,似乎4個pwm周期才改變一次占空比的,使用了pwm的重復定時器?每四次改變一次pwm

你正弦表是100個的,重復4次,每周期是400個載頻周期,載頻是20k,正好是這樣

如果運算能力夠用的話,不用重復寄存器,軟件管理重復就好辦了,另外做成200點的半周期正弦表效果會好得多呀,你現在正弦表的前后是重復的,沒必要,可以去掉一半的,然后正弦表分辨率擴大4倍正好

你改成這樣是差了5個周期了,超前更多了,如果繼續使用重復寄存器修改的話會出現要么超前1個,要么之后3個的問題,工頻臂切換時間最好能做到按照周期調節比較好。

0
回復
2014-05-22 14:05
@wangshujun
你這個圖,似乎4個pwm周期才改變一次占空比的,使用了pwm的重復定時器?每四次改變一次pwm你正弦表是100個的,重復4次,每周期是400個載頻周期,載頻是20k,正好是這樣如果運算能力夠用的話,不用重復寄存器,軟件管理重復就好辦了,另外做成200點的半周期正弦表效果會好得多呀,你現在正弦表的前后是重復的,沒必要,可以去掉一半的,然后正弦表分辨率擴大4倍正好你改成這樣是差了5個周期了,超前更多了,如果繼續使用重復寄存器修改的話會出現要么超前1個,要么之后3個的問題,工頻臂切換時間最好能做到按照周期調節比較好。
我不理解的就是為什么會差5個周期,我是四個載波周期進一次中斷的,如果說滯后應該滯后4的整數倍,怎么會出現5個呢,麻煩您能不能給我解釋的稍微詳細點,謝謝

剛看完您的回復,這款單片機的運算能力有限,后面還要做AD和PI調節,所以時候用四個點調節為爭取一點時間。您說的不用重復寄存器,用軟件管理重復是怎么個意思,沒太明白,您能稍微解釋下嗎?您的QQ多少,方便給我發下嘛

0
回復
2014-05-22 14:16
@熊貓酒仙
我不理解的就是為什么會差5個周期,我是四個載波周期進一次中斷的,如果說滯后應該滯后4的整數倍,怎么會出現5個呢,麻煩您能不能給我解釋的稍微詳細點,謝謝剛看完您的回復,這款單片機的運算能力有限,后面還要做AD和PI調節,所以時候用四個點調節為爭取一點時間。您說的不用重復寄存器,用軟件管理重復是怎么個意思,沒太明白,您能稍微解釋下嗎?您的QQ多少,方便給我發下嘛

有一個額外的pwm滯后周期是自動重裝導致的,你做4次重復必然是這個結果

0
回復
2014-05-22 20:57
@熊貓酒仙
感謝師傅的回帖,非常感激。再給您看個圖[圖片]上圖是我后分頻為4的一個輸出,使用的是高電平有效,確實使用了自動重載功能。如果我將上面中斷中的程序改為if(num_INT==50){RB4=0;NOP();NOP();NOP();NOP();RB2=1;}if(num_INT==100){RB2=0;NOP();NOP();NOP();NOP();RB4=1;}那結果就變成[圖片]兩圖相比,差一個載波周期,所以說,我的工頻輸出已經在時序上補償了一個中斷的,但結果卻差的是一個載波周期,這就讓我很不理解,希望師傅給看看,謝謝

第四個圖的上面藍色和紫色的線在零點重合,你的問題就解決了。

加油,你只差一點點了。呵呵

0
回復
2014-05-22 21:04
@熊貓酒仙
我不理解的就是為什么會差5個周期,我是四個載波周期進一次中斷的,如果說滯后應該滯后4的整數倍,怎么會出現5個呢,麻煩您能不能給我解釋的稍微詳細點,謝謝剛看完您的回復,這款單片機的運算能力有限,后面還要做AD和PI調節,所以時候用四個點調節為爭取一點時間。您說的不用重復寄存器,用軟件管理重復是怎么個意思,沒太明白,您能稍微解釋下嗎?您的QQ多少,方便給我發下嘛

印象中1936時鐘可以到32M,都有8MIPS了,做這個應該來得及

另外,你可以改成用2個ECCP做這個,他好像有幾個ECCP的。應該很容易實現這個。

 

0
回復
2014-05-22 22:09
@lizlk
印象中1936時鐘可以到32M,都有8MIPS了,做這個應該來得及另外,你可以改成用2個ECCP做這個,他好像有幾個ECCP的。應該很容易實現這個。 

首先非常感謝張工能來看我的問題,在此深表感謝。

現在問題就卡在這里了,不知道為什么會多出來一個載波周期,試了自己能想到的所有辦法,都沒能搞定,上面師傅說“有一個額外的PWM滯后周期是自動重裝導致的”,這點始終沒想通,明天按著張工所說的用兩個ECCP去試試,到時候再通報結果。

0
回復
wangshujun
LV.8
11
2014-05-23 08:30
@lizlk
印象中1936時鐘可以到32M,都有8MIPS了,做這個應該來得及另外,你可以改成用2個ECCP做這個,他好像有幾個ECCP的。應該很容易實現這個。 
用了自動重裝的影子寄存器最好用別再用重復寄存器,否則沒法調整到正好
0
回復
wangshujun
LV.8
12
2014-05-23 09:43
@lizlk
印象中1936時鐘可以到32M,都有8MIPS了,做這個應該來得及另外,你可以改成用2個ECCP做這個,他好像有幾個ECCP的。應該很容易實現這個。 
這個片子似乎不算便宜呀,比新塘的m0還貴呢,處理能力差了不是一點半點呀
0
回復
2014-05-23 09:56
@wangshujun
用了自動重裝的影子寄存器最好用別再用重復寄存器,否則沒法調整到正好

師傅所說的有點不理解,這個程序中用了自動重裝的PWM模塊,中斷響應是進行了后分頻設置(設置為4),您所說的重復寄存器是不是指的就是我使用的后分頻的功能?

您再看兩個圖

0
回復
wangshujun
LV.8
14
2014-05-23 10:06
@熊貓酒仙
師傅所說的有點不理解,這個程序中用了自動重裝的PWM模塊,中斷響應是進行了后分頻設置(設置為4),您所說的重復寄存器是不是指的就是我使用的后分頻的功能?您再看兩個圖[圖片][圖片]

應該就是后分頻功能,不同廠家的pwm發生器定義不同

做逆變器不建議用這個功能

0
回復
主站蜘蛛池模板: 99久久精品免费看蜜桃的推荐词 | 日韩一区二区在线观看视频 | 国产精品VA在线观看老妇女 | 日韩1级 | 国产亚洲AV人片在线观看 | 草久在线视频 | 伊人久久综合一区二区 | 噜噜在线视频 | 亚洲日韩av片在线观看 | 99免费精品视频 | 91精品导航 | 午夜在线观看影院 | 中文字幕亚洲色妞精品天堂 | 视频一区二区不卡 | 国产精品无码dvd在线观看 | 亚洲欧美不卡 | 欧美在线视频免费 | 性xxxx18免费观看视频软件 | 久久爱九九伊人 | 国产人妻高清国产拍精品 | 亚洲日韩在线中文字幕线路2区 | 天天澡日日澡狠狠欧美老妇 | 伊人春色精品 | 夜夜夜夜曰天天天天拍国产 | 免费在线不卡视频 | www日韩高清| 最好看的中文视频最好的中文 | 亚洲成人资源在线观看 | 精品在线观看一区二区 | 扒开双腿猛进入喷水高潮视频 | 亚洲一区二区三区不卡国产欧美 | WWW国产精品内射老师 | 亚洲中文字幕国产综合 | 国产最顶级的黄色片在线免费观看 | 日韩av中文字幕第一页 | 久久久精品一区二区三区 | av在线色 | 好大好硬好湿免费视频 | 精品视频www| 亚洲人成免费网站 | 久做在线视频免费观看 |