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

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

2017/07/28 18:04:25
1
lmx10
万博国际娱乐币:11 | 积分:3 主题帖:1 | 回复帖:4
LV1
士兵
QQ截图20160321155901  高效、易用、便捷的万博国际娱乐调试助理——是德科技E36313A可编程直流万博国际娱乐测评 QQ截图20160321155901  在测试完智能手表的功耗之后,我发现了两个比较严重的问题……
QQ截图20160321155901  有几个人知道Tag 在不同工作状态下背后隐藏的秘密!

有没有人开贴具体讲spwm的数字实现,小白一个求交流
四通道3MHz低功耗低噪1.8V CMOS运算放大器 IO-Link数字输入集线器参考设计 低噪声稳压开关电容电压逆变器
单电流限流配电开关5-SOT-23 -40至85 带音频附件支持的USB Type-C™万博国际娱乐通道保护 具有40μA静态电流的 2A SIMPLE SWITCHER®、降压稳压器
12位,2.7-GSPS,RF采样模数转换器 单USB车载充电器带电缆补偿和电池短路保护 LP38798-ADJ Hi PSRR超低噪声 800mA低输入电压稳压器
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
微信关注
免费技术研讨会
获取一手干货分享