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

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

STM8S完成正弦波逆變器DIY

看論壇上有人用EG8010和TDS2285做逆變器,小弟現在再調試一款STM8S003的小板,感覺資源也夠,只要有PWM和ADC應該就差不多,試著想自己編一個程序試試

該程序主要完成STM TIM1的1,2通道互補輸出,20K的載波,50hz的基波

#include "IOSTM8S103K3.h"
#include "math.h"
#include 
unsigned char pwm_duty[100];

#define LED PC_ODR_ODR4

#define IN PD_IDR_IDR3

unsigned char t,v;

unsigned char a,i,j,count;

unsigned long k,sum,l;

void math(void)
{  
   unsigned char i;
   for(i=0; i<100; i++)
    {
    //if(j<= 50) pwm_duty[i]=(unsigned char)(0+(float)254*sin(2*3.1415926*(float)i*0.2/(float)20));
    //if(j> 50) pwm_duty[i]=(unsigned char)(254-(float)254*sin(2*3.1415926*(float)i*0.2/(float)20));
    pwm_duty[i]=(unsigned char)(127+(float)127*sin(2*3.1415926*(float)i*0.2/(float)20));
    } 
}

void delay_ms(unsigned int ms)
{
       unsigned char i;
       while(ms!=0)
       {
              for(i=0;i<250;i++)
              {}
              for(i=0;i<75;i++)
              {}
              ms--;
       }
}

void delay_us(unsigned int us)
{
       unsigned char j;
       while(us!=0)
       {
              for(j=0;j<250;j++)
              {}
              us--;
       }
} 

void Init_Timer4(void)
{  
    asm("sim"); 
    TIM4_CR1=0x01;//使能計數器
    TIM4_IER=0x01;//更新中斷使能
    TIM4_EGR=0x01;
    TIM4_CNTR=199;//計數器值
    TIM4_ARR=199;//自動重裝的值
    TIM4_PSCR=0x04;//分頻值128
    asm("rim");//開全局中斷,延時16.32ms
}
#pragma vector=TIM4_OVR_UIF_vector//0x19
__interrupt void TIM4_OVR_UIF_IRQHandler(void)//對應IAP的中斷地址:0x8060
{
  //asm("JP 0x9060\n");
     
    TIM4_SR=0x00;
    
     if(k>= 100) k=0;
     TIM1_CCR1L = pwm_duty[k];   
    TIM1_CCR2L = pwm_duty[k]; 

   k++;

      //return;
}


void TIM1_CH1_PWM_INIT(void)
 {
  CLK_PCKENR1|=0x80;//開啟定時器1外設時鐘 
  TIM1_EGR=0x01;//重新初始化TIM1
  TIM1_EGR|=0x20;//重新初始化TIM1
  TIM1_ARRH=0x00;//設定重裝載值
  TIM1_ARRL=255;
  
  TIM1_PSCRH=0;//預分頻
  TIM1_PSCRL=0x04;
  TIM1_CR1=0;//邊沿對齊,向上計數
  
  TIM1_CCER1=0x55;//高電平有效
  TIM1_CCMR1=0x60;//PWM模式1
  TIM1_CCMR2=0x60;//PWM模式1
    
  TIM1_DTR=0x04;
  TIM1_CCR1H=0;//占空比
  TIM1_CCR1L=254;
  TIM1_CCR2H=0;//占空比
  TIM1_CCR2L=254;
  TIM1_CR1|=0x01;//向上計數,無緩存,使能
  TIM1_BKR=0x80;//開啟剎車
 }

void TIM2_CH1_PWM_INIT(void)
 {
TIM2_CCMR1 = TIM2_CCMR1 | 0x70;// Output mode PWM2.
TIM2_CCMR3 = TIM2_CCMR3 | 0x70;// Output mode PWM2. 
// 通道2 被設置成比較輸出方式
// OC2M = 111,為PWM 模式2,
// 向上計數時,若計數器小于比較值,為無效電平
// 即當計數器在0 到比較值時,輸出為1,否則為0
TIM2_CCER1 = TIM2_CCER1 | 0x03;// CC polarity low,enable PWM output */
TIM2_CCER2 = TIM2_CCER2 | 0x03;
// CC2P = 1,低電平為有效電平
// CC2E = 1,開啟輸出引腳
//初始化自動裝載寄存器,決定PWM 方波的頻率,Fpwm=4000000/256=15625HZ
TIM2_ARRH = 0;
TIM2_ARRL = 0xFF;
//初始化比較寄存器,決定PWM 方波的占空比
TIM2_CCR1H = 0;
TIM2_CCR1L = 0;
TIM2_CCR3H = 0;
TIM2_CCR3L = 0;
// 初始化時鐘分頻器為2,即計數器的時鐘頻率為Fmaster=8MHZ
TIM2_PSCR = 1;
// 啟動計數
TIM2_CR1 = TIM2_CR1 | 0x01;
 }



void main( void )
{



          CLK_CKDIVR=0x00;
          math();   
          PA_DDR|=0x08;
	  PA_CR1|=0x08;
	  PA_CR2|=0x00;
          
          PA_ODR|=0x08;
          
          PC_DDR|=0x58;
	  PC_CR1|=0x58;
	  PC_CR2|=0x00;
          
       //   PC_ODR|=0x58;
          
          PD_DDR|=0x10;
	  PD_CR1|=0x10;
	  PD_CR2|=0x00;
          

        
        Init_Timer4();
        
        TIM1_CH1_PWM_INIT();
        
   //     TIM2_CH1_PWM_INIT();
        
        TIM2_CCR1L = 128;
        TIM2_CCR3L = 0;
        TIM1_CCR1L=128;
        TIM1_CCR2L=128;
             while(1)			
	{

 
 
}

}

 

全部回復(48)
正序查看
倒序查看
2015-01-23 15:16

下面手工焊接硬件

硬件H橋使用4個NCE7580,濾波用的5mh電感(胡亂拿的現成的,沒有自己繞),電容用的400V1.5UF 的CBB,LCL濾波結構,驅動使用兩片IR2110,電路和EG8010的樣板一樣

 

0
回復
2015-01-23 15:20
@想飛的狼
下面手工焊接硬件硬件H橋使用4個NCE7580,濾波用的5mh電感(胡亂拿的現成的,沒有自己繞),電容用的400V1.5UF的CBB,LCL濾波結構,驅動使用兩片IR2110,電路和EG8010的樣板一樣[圖片] 

焊好的硬件如下圖示,單片機是TSSOP20的,我直接從現有的要調試的PCB飛線過去,下載程序需要用ST的工具把單片機引腳互用功能調好

 

 

0
回復
2015-01-23 15:25
@想飛的狼
焊好的硬件如下圖示,單片機是TSSOP20的,我直接從現有的要調試的PCB飛線過去,下載程序需要用ST的工具把單片機引腳互用功能調好[圖片][圖片]  

在公司不敢玩高壓,爆了被老板看到就玩完了,直接用直流電源做H橋的輸入,波形如下

下管互補波形

上管波形也測下,不過只能測一個管子的,上面兩個管子不工地

由于沒有穩壓和保護算法,整流后帶載電壓下降,并且波形畸變

 

0
回復
2015-01-23 15:29
@想飛的狼
在公司不敢玩高壓,爆了被老板看到就玩完了,直接用直流電源做H橋的輸入,波形如下[圖片]下管互補波形[圖片]上管波形也測下,不過只能測一個管子的,上面兩個管子不工地[圖片]由于沒有穩壓和保護算法,整流后帶載電壓下降,并且波形畸變[圖片][圖片] 

綜上所訴,感覺做一個單片機的SPWM程序不難,不過要完成其穩壓和保護功能,其實波形的失真與否輸出和芯片關系不大,主要是濾波器的設置。不過STM8S成本低,如果不接外部晶振穩定性還行,可以試一試

 

我這邊只是我的一些個人見解,論壇里面牛人很多,請指教了

0
回復
mvip
LV.3
6
2015-01-23 15:50
@想飛的狼
綜上所訴,感覺做一個單片機的SPWM程序不難,不過要完成其穩壓和保護功能,其實波形的失真與否輸出和芯片關系不大,主要是濾波器的設置。不過STM8S成本低,如果不接外部晶振穩定性還行,可以試一試 我這邊只是我的一些個人見解,論壇里面牛人很多,請指教了

值得借鑒,如果正弦波也用stm8就更牛了。

謝謝分享

0
回復
mvip
LV.3
7
2015-01-23 15:56

我覺得完成升壓輸出,單片機綽綽有余。如果加上正弦波輸出和保護穩壓之類功能有點資源不夠。

0
回復
ssff
LV.5
8
2015-01-23 16:03
@想飛的狼
綜上所訴,感覺做一個單片機的SPWM程序不難,不過要完成其穩壓和保護功能,其實波形的失真與否輸出和芯片關系不大,主要是濾波器的設置。不過STM8S成本低,如果不接外部晶振穩定性還行,可以試一試 我這邊只是我的一些個人見解,論壇里面牛人很多,請指教了

不錯啊,很牛的技術。

你這個是和EG8010的SPWM波形一樣嗎?

0
回復
2015-01-23 16:48
@ssff
不錯啊,很牛的技術。你這個是和EG8010的SPWM波形一樣嗎?
波形不一定一樣,因為PWM的分辨率和更新周期不一定相同
0
回復
2015-01-23 16:49
@mvip
我覺得完成升壓輸出,單片機綽綽有余。如果加上正弦波輸出和保護穩壓之類功能有點資源不夠。

升壓也可以完成,但是要考慮兩級的隔離

0
回復
2015-01-23 16:53
@想飛的狼
升壓也可以完成,但是要考慮兩級的隔離

非常不錯,鼓勵下,置頂!

0
回復
ssff
LV.5
12
2015-01-23 17:11
@想飛的狼
波形不一定一樣,因為PWM的分辨率和更新周期不一定相同

不錯啊,被版主置頂了,可見大神們對你很看重啊

你這個是一邊半橋是高頻,一邊是工頻50HZ的嗎?

0
回復
2015-01-23 17:53
@ssff
不錯啊,被版主置頂了,可見大神們對你很看重啊你這個是一邊半橋是高頻,一邊是工頻50HZ的嗎?

不是的,兩個半橋都是高頻

0
回復
ssff
LV.5
14
2015-01-23 20:33
@想飛的狼
不是的,兩個半橋都是高頻
站內短信聯系你了,有事請較
0
回復
znzl
LV.3
15
2015-01-23 21:09
@想飛的狼
在公司不敢玩高壓,爆了被老板看到就玩完了,直接用直流電源做H橋的輸入,波形如下[圖片]下管互補波形[圖片]上管波形也測下,不過只能測一個管子的,上面兩個管子不工地[圖片]由于沒有穩壓和保護算法,整流后帶載電壓下降,并且波形畸變[圖片][圖片] 
高人
0
回復
2015-01-24 14:06
@xzszrs
非常不錯,鼓勵下,置頂!

 

穩壓按照峰值采樣,

采的峰值電壓改變,你載波的每個周期占空比就改變,就改變你的輸出電壓,

我測過其中一段SPWM的波形,規律如下,

 導通14uS   截止28uS,     導通14uS    截止28uS,    導通15uS   截止27uS, 導通15uS    截止27uS,

 導通16uS   截止26uS,     導通16uS    截止26uS,    導通17uS   截止25uS, 導通17uS    截止25uS,

 導通18uS   截止24uS,     導通18uS    截止24uS,     導通19uS   截止23uS, 導通19uS    截止23uS,

  導通20uS   截止22uS,    導通20uS    截止22uS,   .........................................

 

也就是載波的每2個周期遞增1uS, 到了占空比最大時,然后每2個周期遞減1uS

 

 

 

 

 

0
回復
shinesz
LV.4
17
2015-01-24 21:18
STM8應該是夠用了的,正弦表可以放在flash內,關鍵是穩壓部分吧,EG8010穩壓就做得挺好的
0
回復
2015-01-24 22:28
@水鄉電源
 穩壓按照峰值采樣,采的峰值電壓改變,你載波的每個周期占空比就改變,就改變你的輸出電壓,我測過其中一段SPWM的波形,規律如下, 導通14uS  截止28uS,    導通14uS   截止28uS,   導通15uS  截止27uS,導通15uS   截止27uS, 導通16uS  截止26uS,    導通16uS   截止26uS,   導通17uS  截止25uS,導通17uS   截止25uS, 導通18uS  截止24uS,    導通18uS   截止24uS,    導通19uS  截止23uS,導通19uS   截止23uS, 導通20uS  截止22uS,   導通20uS   截止22uS,  ......................................... 也就是載波的每2個周期遞增1uS,到了占空比最大時,然后每2個周期遞減1uS     

樓主是把50HZ分成多少等份(也就是采樣多少點) ?

幾個周期改變一次站空比?(幾倍頻)

 

0
回復
2015-01-25 08:35
@水鄉電源
樓主是把50HZ分成多少等份(也就是采樣多少點)?幾個周期改變一次站空比?(幾倍頻) 
是的,把正弦波分成100個等分,4個定時周期改變一次,這樣就是400個周期完成一次正弦波調制
0
回復
2015-01-25 08:39
@水鄉電源
 穩壓按照峰值采樣,采的峰值電壓改變,你載波的每個周期占空比就改變,就改變你的輸出電壓,我測過其中一段SPWM的波形,規律如下, 導通14uS  截止28uS,    導通14uS   截止28uS,   導通15uS  截止27uS,導通15uS   截止27uS, 導通16uS  截止26uS,    導通16uS   截止26uS,   導通17uS  截止25uS,導通17uS   截止25uS, 導通18uS  截止24uS,    導通18uS   截止24uS,    導通19uS  截止23uS,導通19uS   截止23uS, 導通20uS  截止22uS,   導通20uS   截止22uS,  ......................................... 也就是載波的每2個周期遞增1uS,到了占空比最大時,然后每2個周期遞減1uS     
工頻是50HZ,載波是20k,所以400次完成一次正弦波輸出,我把一個正弦波分成100等分放在ram里面,剛開始的時候計算好,你的說法是正確的,不過我的是雙極性調制,每4個載波周期改變一次PWM輸出
0
回復
2015-01-25 09:20
@shinesz
STM8應該是夠用了的,正弦表可以放在flash內,關鍵是穩壓部分吧,EG8010穩壓就做得挺好的
任何PWM的單片機都可以產生正弦波輸出的,但是要做好穩壓是不容易的
0
回復
ssff
LV.5
22
2015-01-25 15:42
@shinesz
STM8應該是夠用了的,正弦表可以放在flash內,關鍵是穩壓部分吧,EG8010穩壓就做得挺好的

聽大神說過,EG8010的動態穩壓范圍不好,犧牲動態穩壓精度,來保證靜態的穩壓。正弦波穩壓好像都是這樣,不知道樓主可以打破這個局限不?

0
回復
ssff
LV.5
23
2015-01-25 15:44
@想飛的狼
是的,把正弦波分成100個等分,4個定時周期改變一次,這樣就是400個周期完成一次正弦波調制
兄臺,可以做個電壓前饋方式,引入母線高壓反饋,這樣應該會最快,加上后端的交流采樣,2者合成,估計穩壓好做了。
0
回復
ssff
LV.5
24
2015-01-25 15:48
@世紀逆變
任何PWM的單片機都可以產生正弦波輸出的,但是要做好穩壓是不容易的[圖片]
,確實,做正弦波的芯片太多了,已經一點都不神秘了。
0
回復
2015-01-25 18:17
@ssff
聽大神說過,EG8010的動態穩壓范圍不好,犧牲動態穩壓精度,來保證靜態的穩壓。正弦波穩壓好像都是這樣,不知道樓主可以打破這個局限不?
還沒想過,因為不是本行,玩玩還行,如果要我做的話就采樣輸出電壓,改變乘法因子,其中算法可以使用開關  滯環做,不過有一定穩定誤差
0
回復
2015-01-25 21:38
@想飛的狼
還沒想過,因為不是本行,玩玩還行,如果要我做的話就采樣輸出電壓,改變乘法因子,其中算法可以使用開關 滯環做,不過有一定穩定誤差

 

樓主分成100等份,4個周期改變一次占空比,這樣你的諧波大,正弦波也不好看,穩壓性能也不會好,

至少要200等份,最多2個周期改變一次占空比,

等份越多,輸出的正弦越好看,穩壓效果越好,

 

采樣輸出的正弦波,電阻分壓后單片機A/D檢測,控制載波的脈沖占空比,呈反比例線性變化,達到穩壓目的,

 

每個周期改變占空比是最好的,純硬件做的SPWM,每個周期占空比都會改變,所以純硬件的動態穩壓效果很好,

8010的穩壓效果好,波形也漂亮,

8010是50HZ采樣234點,每2個周期改變一次占空比,載波23.4K,50*234*2=23.4K

8010是60HZ采樣195點,每2個周期改變一次占空比,載波23.4K,所以老壽那個大IGBT驅動板,12M晶振換成10M晶振,

接成60HZ形式輸出50HZ,載波是19.5K的原因就是195點,60*195*2=23.4K,50*195*2=19.5K

0
回復
35956911
LV.8
27
2015-01-25 22:03
@水鄉電源
 樓主分成100等份,4個周期改變一次占空比,這樣你的諧波大,正弦波也不好看,穩壓性能也不會好,至少要200等份,最多2個周期改變一次占空比,等份越多,輸出的正弦越好看,穩壓效果越好, 采樣輸出的正弦波,電阻分壓后單片機A/D檢測,控制載波的脈沖占空比,呈反比例線性變化,達到穩壓目的, 每個周期改變占空比是最好的,純硬件做的SPWM,每個周期占空比都會改變,所以純硬件的動態穩壓效果很好,8010的穩壓效果好,波形也漂亮,8010是50HZ采樣234點,每2個周期改變一次占空比,載波23.4K,50*234*2=23.4K8010是60HZ采樣195點,每2個周期改變一次占空比,載波23.4K,所以老壽那個大IGBT驅動板,12M晶振換成10M晶振,接成60HZ形式輸出50HZ,載波是19.5K的原因就是195點,60*195*2=23.4K,50*195*2=19.5K
你會C語言不,幫我改個收音機程序
0
回復
2015-01-26 10:20
@水鄉電源
 樓主分成100等份,4個周期改變一次占空比,這樣你的諧波大,正弦波也不好看,穩壓性能也不會好,至少要200等份,最多2個周期改變一次占空比,等份越多,輸出的正弦越好看,穩壓效果越好, 采樣輸出的正弦波,電阻分壓后單片機A/D檢測,控制載波的脈沖占空比,呈反比例線性變化,達到穩壓目的, 每個周期改變占空比是最好的,純硬件做的SPWM,每個周期占空比都會改變,所以純硬件的動態穩壓效果很好,8010的穩壓效果好,波形也漂亮,8010是50HZ采樣234點,每2個周期改變一次占空比,載波23.4K,50*234*2=23.4K8010是60HZ采樣195點,每2個周期改變一次占空比,載波23.4K,所以老壽那個大IGBT驅動板,12M晶振換成10M晶振,接成60HZ形式輸出50HZ,載波是19.5K的原因就是195點,60*195*2=23.4K,50*195*2=19.5K
我只是試試,本身我不做逆變器的,從單片機資源上來說,沒什么問題
0
回復
2015-01-26 10:21
@35956911
你會C語言不,幫我改個收音機程序
不敢說精通,但是沒做過收音機,建議找專門做收音機的搞
0
回復
2015-01-26 10:25
帖子非常不錯,推薦到帖子底部經典圖庫。更多請點擊哦:http://www.daogou-taobao.cn/bbs/classic/
0
回復
HL_ZXM
LV.4
31
2015-01-27 16:26
@想飛的狼
我只是試試,本身我不做逆變器的,從單片機資源上來說,沒什么問題

呵呵!5mha?大啊,當做2KW時就是10A220V的銅絲,可能有2,3個變壓器那樣打了-------成本就不低

以前做過這樣的板,0.5mh,1.2元/片16腳的合泰單片機。

0
回復
主站蜘蛛池模板: 女人本色免费观看 | 区区久久久狼 | 日本二三本的区别免费 | 亚洲欭美日韩颜射在线二 | 国产呦系列呦交 | 在线视频麻豆 | 国产精品一区二区av日韩在线 | 蜜桃视频无码区在线观看 | 中文字幕av一区二区三区 | 欧美三日本三级少妇三级99观看视频 | 国产在线毛片 | 国精品无码一区二区三区在线 | 日本黄页网站免费大全1688 | 在线一区视频 | 青娱乐99| 欧美精品乱码久久久久久 | 黄色a级片网站 | 日韩a级作爱片一二三区免费观看 | 超碰在线观看98 | 亚洲AV无码一区二区三区观看 | 四虎影视在线影院在线观看 | 日本久久二区 | 国产美女久久久 | 99久e精品热线免费 狠狠躁夜夜a产精品视频 | 精品麻豆一卡2卡三卡4卡乱码 | 夜夜操综合 | 在线观看91精品国产入口 | www.日韩| haoleav.com在线| 九色新网址| 欧洲成人免费 | 青草久久人人97超碰 | 欧美Ⅴ永久无码精品毛片 | 中文有码无码人妻在线 | 九色国产精品入口 | 在线无码成本人视频动漫 | 成人毛片100部 | 久久99精品久久久 | 日本在线观看网址 | 日本成人高清视频 | 中国美女a级毛片 |