什么是SPWM?
在進(jìn)行脈寬調(diào)制時(shí),使脈沖系列的占空比按正弦規(guī)律來(lái)安排。當(dāng)正弦值為最大值時(shí),脈沖的寬度也最大,而脈沖間的間隔則最小,反之,當(dāng)正弦值較小時(shí),脈沖的寬度也小,而脈沖間的間隔則較大,這樣的電壓脈沖系列可以使負(fù)載電流中的高次諧波成分大為減小,稱(chēng)為正弦波脈寬調(diào)制,即SPWM
==========================================
SPWM代碼參考
下面是用STM32F103C8T6產(chǎn)生兩路互補(bǔ)的SPWM部分代碼,有興趣的網(wǎng)友可以看看。
#include "stm32f10x.h"
#include "timer.h"
double K_Voltage = 1.0;
const u32 spwm[600]={
0x4000,0x40AC,0x4157,0x4203,0x42AE,0x4359,0x4405,0x44B0,0x455B,0x4606,
0x46B0,0x475B,0x4805,0x48AF,0x4959,0x4A03,0x4AAC,0x4B55,0x4BFE,0x4CA6,
0x4D4E,0x4DF6,0x4E9D,0x4F44,0x4FEA,0x5090,0x5136,0x51DB,0x527F,0x5323,
0x53C7,0x546A,0x550C,0x55AE,0x564F,0x56EF,0x578F,0x582E,0x58CD,0x596A,
0x5A08,0x5AA4,0x5B40,0x5BDA,0x5C74,0x5D0E,0x5DA6,0x5E3E,0x5ED5,0x5F6A,
0x6000,0x6094,0x6127,0x61B9,0x624A,0x62DB,0x636A,0x63F9,0x6486,0x6512,
0x659E,0x6628,0x66B1,0x6739,0x67C0,0x6846,0x68CB,0x694F,0x69D1,0x6A52,
0x6AD2,0x6B51,0x6BCF,0x6C4B,0x6CC7,0x6D41,0x6DB9,0x6E31,0x6EA7,0x6F1B,
0x6F8F,0x7001,0x7072,0x70E1,0x714F,0x71BC,0x7227,0x7291,0x72FA,0x7361,
0x73C6,0x742A,0x748D,0x74EE,0x754E,0x75AC,0x7609,0x7664,0x76BD,0x7716,
0x776C,0x77C1,0x7815,0x7866,0x78B7,0x7905,0x7952,0x799E,0x79E8,0x7A30,
0x7A77,0x7ABC,0x7AFF,0x7B41,0x7B81,0x7BBF,0x7BFB,0x7C36,0x7C70,0x7CA7,
0x7CDD,0x7D11,0x7D44,0x7D74,0x7DA3,0x7DD1,0x7DFC,0x7E26,0x7E4E,0x7E74,
0x7E99,0x7EBC,0x7EDD,0x7EFC,0x7F1A,0x7F35,0x7F4F,0x7F67,0x7F7E,0x7F92,
0x7FA5,0x7FB6,0x7FC6,0x7FD3,0x7FDF,0x7FE9,0x7FF1,0x7FF7,0x7FFB,0x7FFE,
0x7FFF,0x7FFE,0x7FFB,0x7FF7,0x7FF1,0x7FE9,0x7FDF,0x7FD3,0x7FC6,0x7FB6,
0x7FA5,0x7F92,0x7F7E,0x7F67,0x7F4F,0x7F35,0x7F1A,0x7EFC,0x7EDD,0x7EBC,
0x7E99,0x7E74,0x7E4E,0x7E26,0x7DFC,0x7DD1,0x7DA3,0x7D74,0x7D44,0x7D11,
0x7CDD,0x7CA7,0x7C70,0x7C36,0x7BFB,0x7BBF,0x7B81,0x7B41,0x7AFF,0x7ABC,
0x7A77,0x7A30,0x79E8,0x799E,0x7952,0x7905,0x78B7,0x7866,0x7815,0x77C1,
0x776C,0x7716,0x76BD,0x7664,0x7609,0x75AC,0x754E,0x74EE,0x748D,0x742A,
0x73C6,0x7361,0x72FA,0x7291,0x7227,0x71BC,0x714F,0x70E1,0x7072,0x7001,
0x6F8F,0x6F1B,0x6EA7,0x6E31,0x6DB9,0x6D41,0x6CC7,0x6C4B,0x6BCF,0x6B51,
0x6AD2,0x6A52,0x69D1,0x694F,0x68CB,0x6846,0x67C0,0x6739,0x66B1,0x6628,
0x659E,0x6512,0x6486,0x63F9,0x636A,0x62DB,0x624A,0x61B9,0x6127,0x6094,
0x6000,0x5F6A,0x5ED5,0x5E3E,0x5DA6,0x5D0E,0x5C74,0x5BDA,0x5B40,0x5AA4,
0x5A08,0x596A,0x58CD,0x582E,0x578F,0x56EF,0x564F,0x55AE,0x550C,0x546A,
0x53C7,0x5323,0x527F,0x51DB,0x5136,0x5090,0x4FEA,0x4F44,0x4E9D,0x4DF6,
0x4D4E,0x4CA6,0x4BFE,0x4B55,0x4AAC,0x4A03,0x4959,0x48AF,0x4805,0x475B,
0x46B0,0x4606,0x455B,0x44B0,0x4405,0x4359,0x42AE,0x4203,0x4157,0x40AC,
0x4000,0x3F54,0x3EA9,0x3DFD,0x3D52,0x3CA7,0x3BFB,0x3B50,0x3AA5,0x39FA,
0x3950,0x38A5,0x37FB,0x3751,0x36A7,0x35FD,0x3554,0x34AB,0x3402,0x335A,
0x32B2,0x320A,0x3163,0x30BC,0x3016,0x2F70,0x2ECA,0x2E25,0x2D81,0x2CDD,
0x2C39,0x2B96,0x2AF4,0x2A52,0x29B1,0x2911,0x2871,0x27D2,0x2733,0x2696,
0x25F8,0x255C,0x24C0,0x2426,0x238C,0x22F2,0x225A,0x21C2,0x212B,0x2096,
0x2001,0x1F6C,0x1ED9,0x1E47,0x1DB6,0x1D25,0x1C96,0x1C07,0x1B7A,0x1AEE,
0x1A62,0x19D8,0x194F,0x18C7,0x1840,0x17BA,0x1735,0x16B1,0x162F,0x15AE,
0x152E,0x14AF,0x1431,0x13B5,0x1339,0x12BF,0x1247,0x11CF,0x1159,0x10E5,
0x1071,0x0FFF,0x0F8E,0x0F1F,0x0EB1,0x0E44,0x0DD9,0x0D6F,0x0D06,0x0C9F,
0x0C3A,0x0BD6,0x0B73,0x0B12,0x0AB2,0x0A54,0x09F7,0x099C,0x0943,0x08EA,
0x0894,0x083F,0x07EB,0x079A,0x0749,0x06FB,0x06AE,0x0662,0x0618,0x05D0,
0x0589,0x0544,0x0501,0x04BF,0x047F,0x0441,0x0405,0x03CA,0x0390,0x0359,
0x0323,0x02EF,0x02BC,0x028C,0x025D,0x022F,0x0204,0x01DA,0x01B2,0x018C,
0x0167,0x0144,0x0123,0x0104,0x00E6,0x00CB,0x00B1,0x0099,0x0082,0x006E,
0x005B,0x004A,0x003A,0x002D,0x0021,0x0017,0x000F,0x0009,0x0005,0x0002,
0x0001,0x0002,0x0005,0x0009,0x000F,0x0017,0x0021,0x002D,0x003A,0x004A,
0x005B,0x006E,0x0082,0x0099,0x00B1,0x00CB,0x00E6,0x0104,0x0123,0x0144,
0x0167,0x018C,0x01B2,0x01DA,0x0204,0x022F,0x025D,0x028C,0x02BC,0x02EF,
0x0323,0x0359,0x0390,0x03CA,0x0405,0x0441,0x047F,0x04BF,0x0501,0x0544,
0x0589,0x05D0,0x0618,0x0662,0x06AE,0x06FB,0x0749,0x079A,0x07EB,0x083F,
0x0894,0x08EA,0x0943,0x099C,0x09F7,0x0A54,0x0AB2,0x0B12,0x0B73,0x0BD6,
0x0C3A,0x0C9F,0x0D06,0x0D6F,0x0DD9,0x0E44,0x0EB1,0x0F1F,0x0F8E,0x0FFF,
0x1071,0x10E5,0x1159,0x11CF,0x1247,0x12BF,0x1339,0x13B5,0x1431,0x14AF,
0x152E,0x15AE,0x162F,0x16B1,0x1735,0x17BA,0x1840,0x18C7,0x194F,0x19D8,
0x1A62,0x1AEE,0x1B7A,0x1C07,0x1C96,0x1D25,0x1DB6,0x1E47,0x1ED9,0x1F6C,
0x2001,0x2096,0x212B,0x21C2,0x225A,0x22F2,0x238C,0x2426,0x24C0,0x255C,
0x25F8,0x2696,0x2733,0x27D2,0x2871,0x2911,0x29B1,0x2A52,0x2AF4,0x2B96,
0x2C39,0x2CDD,0x2D81,0x2E25,0x2ECA,0x2F70,0x3016,0x30BC,0x3163,0x320A,
0x32B2,0x335A,0x3402,0x34AB,0x3554,0x35FD,0x36A7,0x3751,0x37FB,0x38A5,
0x3950,0x39FA,0x3AA5,0x3B50,0x3BFB,0x3CA7,0x3D52,0x3DFD,0x3EA9,0x3F54,
}; //占空比為:(32767-spwm[i])/32767 = 1-(period*spwm[i])/period
u32 sinpwm;
static u16 i = 0;
u16 TimerPeriod = 0;
u16 Channel1Pulse = 0;
extern float Period_percent;