您好, 登录| 注册|
论坛导航
您好, 登录| 注册|
子站:
商城:
论坛首页    逆变/光伏/并网
  •  发帖
  • 收藏

spwm调制单片机实现
阅读: 990 |  回复: 1 楼层直达

2017/07/28 18:04:25
1
lmx10
万博国际娱乐币:11 | 积分:4 主题帖:2 | 回复帖:4
LV1
士兵

QQ截图20160321155901 测试测量版区上线啦!送祝福赢好礼
QQ截图20160321155901 老铁我等你!百台示波器免费送 邀请有礼


有没有人开贴具体讲spwm的数字实现,小白一个求交流
汽车类单门逆变器门5-SOT-23 -40至125 立体声或2.1应用的超值条形音箱参考设计套件 如何着手万博国际娱乐设计
增强型产品单路2输入正门和门-55至125 针对GaN音频应用的150W双通道同步升压 创造一个带有较低额定输入电压控制器的150V非同步降压解决方案
32通道电流输入20位ADC 64-NFBGA 0至70 采用LDO实现LED控制和亮度匹配参考设计 通过万博国际娱乐模块提高电动工具设计的性能
2017/08/02 16:13:24
2
ykwn
万博国际娱乐币:3 | 积分:0 主题帖:0 | 回复帖:2
LV1
士兵
首先做个0-90度的正弦表格,再用查表法周期性取表格数据再乘个系数,用定时器输出相应脉宽的PWM就可以了,以下是我自己计算的表格及程序源码,供参考。 const uint16_t sineTable[201] ={      0,   4,   8,  12,  16,  20,  24,  28,  32,  36,     40,  44,  48,  52,  56,  60,  64,  68,  72,  76,     80,  84,  88,  92,  96, 100, 104, 108, 112, 116,    120, 123, 127, 131, 135, 139, 143, 147, 151, 154,    158, 162, 166, 170, 173, 177, 181, 185, 188, 192,    196, 200, 203, 207, 211, 214, 218, 222, 225, 229,    232, 236, 240, 243, 247, 250, 254, 257, 261, 264,    268, 271, 274, 278, 281, 284, 288, 291, 294, 298,    301, 304, 307, 311, 314, 317, 320, 323, 326, 329,    333, 336, 339, 342, 345, 348, 350, 353, 356, 359,    362, 365, 368, 370, 373, 376, 379, 381, 384, 387,    389, 392, 395, 397, 400, 402, 405, 407, 409, 412,    414, 417, 419, 421, 423, 426, 428, 430, 432, 434,    437, 439, 441, 443, 445, 447, 449, 451, 452, 454,    456, 458, 460, 462, 463, 465, 467, 468, 470, 471,    473, 475, 476, 478, 479, 480, 482, 483, 484, 486,    487, 488, 489, 491, 492, 493, 494, 495, 496, 497,    498, 499, 500, 501, 501, 502, 503, 504, 504, 505,    506, 506, 507, 507, 508, 508, 509, 509, 510, 510,    510, 511, 511, 511, 511, 512, 512, 512, 512, 512,    512}; void Pwm_UPDATE(void) {         uint16_t  Mod_UH, Mod_UL, modIndex_temp;         uint16_t volatile angle_Temp;         Inv_SinAngle += Inv_Angu_Freq;         if(Inv_SinAngle >= 800)         {                 Inv_SinAngle -= 800;         }         if(Inv_SinAngle >= 600)                                                     //把角度值变换成0~90度之间(1/4正弦周期,正弦表取值范围内)                 angle_Temp = 800 - Inv_SinAngle;        else if(Inv_SinAngle >= 400)                 angle_Temp = Inv_SinAngle - 400;         else if(Inv_SinAngle >= 200)                 angle_Temp = 400 - Inv_SinAngle;         else                 angle_Temp = Inv_SinAngle;         modIndex_temp = sineTable[angle_Temp];         //单极性调制         Mod_UH = ((uint32_t)Mod_output * modIndex_temp) >> 9;        Mod_UL = 0;         if(Mod_UH > Pulse_MAX)             Mod_UH = Pulse_MAX;         if(Inv_SinAngle < Inv_PWMTAB_180)         {                 TIM1_SetCompare2(Mod_UH);                TIM1_SetCompare1(Mod_UL);         }         else                                                                        //负半周         {                 TIM1_SetCompare1(Mod_UH);                TIM1_SetCompare2(Mod_UL);         } }
该帖有赏
关注我们
新浪微博
官方Q群
客服热线
服务时间:周一至周五9:00-18:00
微信关注
免费技术研讨会
获取一手干货分享