• 回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

单相和三相SPWM

事隔多年,仍然对SPWM耿耿于怀。最进生意惨淡,有些时间重拾起PIC单片机。让大家看看成果吧。电源网没以前热闹了,想念钟工,老寿,张工。关于单片机编程咱是半路出家。大家将就看吧。

全部回复(30)
正序查看
倒序查看
zcq760622
LV.4
2
2016-12-16 16:53
单相的是用PIC16F877A做的。载波20KHZ。采样200点。三相可变频是用DSPIC30F4011做的。出波形都容易,难得是怎么控制。下一步准备研究电机FOC。
0
回复
2016-12-16 18:35
很多大神都功成身退了!看照片楼主自己做生意的?
0
回复
zcq760622
LV.4
4
2016-12-16 18:59
@guang卢
很多大神都功成身退了!看照片楼主自己做生意的?

是啊做工业自动化的。

0
回复
zwcyqxzcx
LV.6
5
2016-12-16 19:36
@zcq760622
是啊做工业自动化的。
三相也可PIC吧,关键是控制难...
0
回复
zcq760622
LV.4
6
2016-12-17 13:45

PIC16F877SPWM程序:

#include            
__CONFIG(HS&WDTDIS&LVPDIS);
bit sin_f;//换向标志位
const unsigned char sin_[]={0,3,7,11,15,19,23,27,31,35,39,42,46,50,54,58,
62,65,69,73,77,80,84,88,92,95,99,102,106,109,113,116,
120,123,127,130,133,137,140,143,146,150,153,156,159,162,165,168,
171,173,176,179,182,184,187,190,192,195,197,199,202,204,206,208,
211,213,215,217,219,220,222,224,226,227,229,230,232,233,235,236,
237,238,240,241,242,243,243,244,245,246,246,247,248,248,248,249,
249,249,249,249,250,249,249,249,249,249,248,248,248,247,246,246,
245,244,243,243,242,241,240,238,237,236,235,233,232,230,229,227,
226,224,222,220,219,217,215,213,211,208,206,204,202,199,197,195,
192,190,187,184,182,179,176,173,171,168,165,162,159,156,153,150,
146,143,140,137,133,130,127,123,120,116,113,109,106,102,99,95,
92,88,84,80,77,73,69,65,62,58,54,50,46,42,39,35,
31,27,23,19,15,11,7,3};
unsigned char sin_num;//SIN函数表查表变量指针
//-------------------------------------
void main(void)            
{ 
    TRISC1=1;
    TRISC2=1;
    PORTC=0;      
    TOUTPS0=0;             //1:1后分频比,TOUTPS0=0
    TOUTPS1=0;             //1:1后分频比,TOUTPS1=0
    TOUTPS2=0;             //1:1后分频比,TOUTPS2=0
    TOUTPS3=0;             //1:1后分频比,TOUTPS3=0
    TMR2ON=1;              //启动定时器T2
    TMR2IF=0;              //清除T2的中断标志
    TMR2IE=1;              //T2中断允许
    PEIE=1;                //外设中断允许,TMR2属于外设中断范围
    GIE=1;    
    PR2=0xf9;              //装载PR2寄存器设置PWM周期,频率为20khz
    CCP1CON=0x0C;          //CCP1模块工作在PWM模式
    CCPR1L=0x00;           //装载CCPR1L寄存器设置PWM占空比,为0%
    TMR2IF=0;              //清零PIR1寄存器中的TMR2IF中断标志位
    T2CKPS0=0;             //定时器TMR2设置1:1预分频比,T2CKPS0=0
    T2CKPS1=0;             //定时器TMR2设置1:1预分频比,T2CKPS1=0
    TMR2ON=1;              //T2CON寄存器中的TMR2ON位置1使能Timer2
    TRISC2=0;               //清零TRISC2位,使能CCP1引脚输出驱动器
    CCP2CON=0x0C;          //CCP2模块工作在PWM模式
    CCPR2L=0x00;           //装载CCPR2L寄存器设置PWM占空比,为0%
    TRISC1=0;              //清零TRISC1位,使能CCP2引脚输出驱动器
    sin_f=1; 
    sin_num=0;
    while(1)               
    {
     
    }
}
void interrupt ISR(void)   
{
    if(TMR2IF==1)         
    {
        TMR2IF=0;
        if(sin_num==199)
        {
            sin_num=0;
            sin_f=!sin_f;
        }
        if(sin_f)
        {
          CCPR2L=sin_[sin_num];
          CCPR1L=0;
        } 
        else
        {
           CCPR1L=sin_[sin_num];
           CCPR2L=0;
        } 
        sin_num++;
    }
}

0
回复
2016-12-19 10:27
帖子已被设置为头条,恭喜楼主可添加电源网私人官网微信(dianyuan_com)为好友,领取现金红包(备注信息:头条红包)

      注:现金红包仅限当日领取

      活动介绍:http://www.dianyuan.com/bbs/1531738.html

     

0
回复
2016-12-19 11:00

三相SPWM调试频率都用的很低吗,我这里做的三相逆变用的工频电感滤波,可以听到调试声音~

0
回复
zcq760622
LV.4
9
2016-12-19 11:40
@电源技术砖家
三相SPWM调试频率都用的很低吗,我这里做的三相逆变用的工频电感滤波,可以听到调试声音~

不会啊,用到20KHZ都行。看你的DSP。我用的载波是16KHZ的。采样点数256.

0
回复
2016-12-19 12:59
楼主编程高手!
0
回复
zcq760622
LV.4
11
2016-12-19 21:42
用dsPIC30f4011做变频器真是太方便了。用硬件绝大部分功能就能实现。只要配置好各个寄存器,三相SPWM波形就出来了。示波器上就可以看到频率和幅度的变化。

0
回复
2016-12-20 11:42
已经被添加到社区经典图库喽
http://www.dianyuan.com/bbs/classic/
0
回复
2016-12-20 21:38
@zcq760622
用dsPIC30f4011做变频器真是太方便了。用硬件绝大部分功能就能实现。只要配置好各个寄存器,三相SPWM波形就出来了。示波器上就可以看到频率和幅度的变化。[图片][图片][图片]
我在制作600A相电流 300A母线电流的正弦波无刷电机控制器。能否指点下呢
0
回复
zcq760622
LV.4
14
2016-12-20 22:32
@zhiyiyunmeng
我在制作600A相电流300A母线电流的正弦波无刷电机控制器。能否指点下呢

怎么指点?你需要什么信息。

0
回复
fayehuang99
LV.6
15
2016-12-21 08:34
@zcq760622
怎么指点?你需要什么信息。
他要你的原代码
0
回复
ruohan
LV.9
16
2016-12-21 09:48
@fayehuang99
他要你的原代码

把图纸给看看最好,最近也在学习PIC的单片机,

软硬件对不上,

0
回复
zcq760622
LV.4
17
2016-12-21 10:38
@ruohan
把图纸给看看最好,最近也在学习PIC的单片机,软硬件对不上,
认真看看器件手册。详细看看各个寄存器的说明,现在手册都是中文的认真看只要学历不低应该都能看懂。
0
回复
2016-12-22 09:09
主要是现在制造业很难混,大家都忙所以没时间来电源网了。还有就是有些人离开逆变器这个行业,转行做其他产品了。所以不来了,我去年也是做逆变器的,现在转行做多普勒雷达产品。中国老板只想着赚钱,不考虑产品质量。中国的很多老板认为技术不值钱,中国的工程师遍地都是。中国老板喜欢过河拆桥,中国拿高工资的都是老板,大家崇拜的都是马云,王健林,还有就是歌星影星,这些人每一个是玩高科技的,而美国崇拜的是科技人员,特斯拉,乔布斯等科技研发人员。中国玩虚的都赚钱了,搞实业的很难生存。为了生存很多实业家转行玩虚的。所以人少了。再过一两年我也去玩虚的,赚钱养家。
0
回复
zcq760622
LV.4
19
2016-12-22 09:54
@空军通信兵
主要是现在制造业很难混,大家都忙所以没时间来电源网了。还有就是有些人离开逆变器这个行业,转行做其他产品了。所以不来了,我去年也是做逆变器的,现在转行做多普勒雷达产品。中国老板只想着赚钱,不考虑产品质量。中国的很多老板认为技术不值钱,中国的工程师遍地都是。中国老板喜欢过河拆桥,中国拿高工资的都是老板,大家崇拜的都是马云,王健林,还有就是歌星影星,这些人每一个是玩高科技的,而美国崇拜的是科技人员,特斯拉,乔布斯等科技研发人员。中国玩虚的都赚钱了,搞实业的很难生存。为了生存很多实业家转行玩虚的。所以人少了。再过一两年我也去玩虚的,赚钱养家。
现实击垮了多少人的梦想,还是坚守自己的信念吧。还能有梦想的时间不多了。
0
回复
zcq760622
LV.4
20
2016-12-24 18:28
@zcq760622
现实击垮了多少人的梦想,还是坚守自己的信念吧。还能有梦想的时间不多了。
过段时间贴三相源代码
0
回复
ruohan
LV.9
21
2016-12-28 19:06
@zcq760622
过段时间贴三相源代码

MARK

0
回复
2016-12-29 09:32

楼主,这平板示波器多少钱

质量怎么样,我想买一台

0
回复
okayem
LV.2
23
2017-01-14 20:35
@三剑客归来
楼主,这平板示波器多少钱质量怎么样,我想买一台[图片]
楼主这示波器屏真大,看多通道清晰简单,赞!!!
0
回复
2017-01-14 20:51
@okayem
楼主这示波器屏真大,看多通道清晰简单,赞!!!
他这测的工频信号随便一个都可以,要是用来测高频的估计没卵用的
0
回复
zcq760622
LV.4
25
2017-01-16 10:39
@xiashengcheng
他这测的工频信号随便一个都可以,要是用来测高频的估计没卵用的[图片]
你有用过吗?这么快下结论。
0
回复
无锡市
LV.4
26
2017-02-04 18:45
@zcq760622
单相的是用PIC16F877A做的。载波20KHZ。采样200点。三相可变频是用DSPIC30F4011做的。出波形都容易,难得是怎么控制。下一步准备研究电机FOC。
楼主你好 请问你做的三相逆变能并网吗 如果可以加我QQ聊聊574149043
0
回复
xiao_zhi
LV.1
27
2017-02-12 09:29
楼主您好,斗胆问下,您这个实验的硬件上是什么样子的,我小白。
0
回复
2017-08-11 00:05
@zcq760622
PIC16F877SPWM程序:#include__CONFIG(HS&WDTDIS&LVPDIS);bitsin_f;//换向标志位constunsignedcharsin_[]={0,3,7,11,15,19,23,27,31,35,39,42,46,50,54,58,62,65,69,73,77,80,84,88,92,95,99,102,106,109,113,116,120,123,127,130,133,137,140,143,146,150,153,156,159,162,165,168,171,173,176,179,182,184,187,190,192,195,197,199,202,204,206,208,211,213,215,217,219,220,222,224,226,227,229,230,232,233,235,236,237,238,240,241,242,243,243,244,245,246,246,247,248,248,248,249,249,249,249,249,250,249,249,249,249,249,248,248,248,247,246,246,245,244,243,243,242,241,240,238,237,236,235,233,232,230,229,227,226,224,222,220,219,217,215,213,211,208,206,204,202,199,197,195,192,190,187,184,182,179,176,173,171,168,165,162,159,156,153,150,146,143,140,137,133,130,127,123,120,116,113,109,106,102,99,95,92,88,84,80,77,73,69,65,62,58,54,50,46,42,39,35,31,27,23,19,15,11,7,3};unsignedcharsin_num;//SIN函数表查表变量指针//-------------------------------------voidmain(void){TRISC1=1;TRISC2=1;PORTC=0;TOUTPS0=0;//1:1后分频比,TOUTPS0=0TOUTPS1=0;//1:1后分频比,TOUTPS1=0TOUTPS2=0;//1:1后分频比,TOUTPS2=0TOUTPS3=0;//1:1后分频比,TOUTPS3=0TMR2ON=1;//启动定时器T2TMR2IF=0;//清除T2的中断标志TMR2IE=1;//T2中断允许PEIE=1;//外设中断允许,TMR2属于外设中断范围GIE=1;PR2=0xf9;//装载PR2寄存器设置PWM周期,频率为20khzCCP1CON=0x0C;//CCP1模块工作在PWM模式CCPR1L=0x00;//装载CCPR1L寄存器设置PWM占空比,为0%TMR2IF=0;//清零PIR1寄存器中的TMR2IF中断标志位T2CKPS0=0;//定时器TMR2设置1:1预分频比,T2CKPS0=0T2CKPS1=0;//定时器TMR2设置1:1预分频比,T2CKPS1=0TMR2ON=1;//T2CON寄存器中的TMR2ON位置1使能Timer2TRISC2=0;//清零TRISC2位,使能CCP1引脚输出驱动器CCP2CON=0x0C;//CCP2模块工作在PWM模式CCPR2L=0x00;//装载CCPR2L寄存器设置PWM占空比,为0%TRISC1=0;//清零TRISC1位,使能CCP2引脚输出驱动器sin_f=1;sin_num=0;while(1){}}voidinterruptISR(void){if(TMR2IF==1){TMR2IF=0;if(sin_num==199){sin_num=0;sin_f=!sin_f;}if(sin_f){CCPR2L=sin_[sin_num];CCPR1L=0;}else{CCPR1L=sin_[sin_num];CCPR2L=0;}sin_num++;}}
请问这是三想spwm代码吗
0
回复
shacat
LV.1
29
2018-01-10 12:41
@zcq760622
你有用过吗?这么快下结论。
楼主,三相代码可以共享么
0
回复
adrain001
LV.2
30
2018-01-11 13:47
@zcq760622
你有用过吗?这么快下结论。
查表的同时,是怎么实现调节幅值输出的?
0
回复
shacat
LV.1
31
2018-01-12 13:32
@adrain001
查表的同时,是怎么实现调节幅值输出的?
給占空比的數值乘上一個數值就可以
0
回复