怎么使用stm32f103c8t6 pdf产生SPWM

查看: 2499|回复: 10
SPWM三相正弦波,帮看看--接着上次继续请教的。
主题帖子精华
高级会员, 积分 790, 距离下一级还需 210 积分
在线时间39 小时
3fde5bd204b1bc_136.jpg (0 Bytes, 下载次数: 15)
22:54 上传
定时器1产生三路SPWM,构成三相正弦波。昨天正弦波没有出来,今天每项接的负载是LC低通滤波(L=5.2mH,C=6.9uF),用示波器测量任意两项的波形如上图,正弦波勉强出来了,但是相位却不太对劲,不知道为什么?正弦数据表示根据软件计算的。0°、120°、240°产生的,应该没错啊,但是就是不知道为啥相位差了一些了,有知道的大侠没?给指导一下,多谢。。。定时器3中断更新占空比,50HZ的。
回复【5楼】正点原子:
---------------------------------
是我测量的问题,把示波器接地点接到“零”上,就可以了。以前是把示波器的接地接到一相上了。现在三相的波形很不错,32确实很强大!多谢。。
主题帖子精华
高级会员, 积分 790, 距离下一级还需 210 积分
在线时间39 小时
回复【5楼】正点原子:
---------------------------------
是我测量的问题,把示波器接地点接到“零”上,就可以了。以前是把示波器的接地接到一相上了。现在三相的波形很不错,32确实很强大!多谢。。
主题帖子精华
高级会员, 积分 790, 距离下一级还需 210 积分
在线时间39 小时
顶顶顶顶顶顶。。。。
主题帖子精华
在线时间267 小时
你的相位怎么控制的?
我的淘宝小店:
主题帖子精华
高级会员, 积分 790, 距离下一级还需 210 积分
在线时间39 小时
回复【3楼】正点原子:
---------------------------------
您发过以前的帖子,能产生0°--360°任意角度的正弦波数据表。三相,相位相差120°,也就是0°、120°、240°的正弦数据表,中断一次把表中的值赋给CCRX改变占空比。但实际结果相位如上图所示,不知道为什么相位相差不到120°,偏低。。???
主题帖子精华
在线时间267 小时
我的淘宝小店:
主题帖子精华
中级会员, 积分 203, 距离下一级还需 297 积分
在线时间12 小时
楼主,你这个三相正弦波怎么搞的,timer不是只有2个通道么?可以共享一下么
主题帖子精华
中级会员, 积分 295, 距离下一级还需 205 积分
在线时间1 小时
回复【7楼】dixdsqaid:
---------------------------------
我是用的timer1有4个通道啊,还有3个互补通道,用来做3相SPWM很方便
找一份喜欢的工作,这样每天工作的8个小时是快乐的。
找一个喜欢的人,这样每天工作之外的16个小时也是快乐的。
主题帖子精华
中级会员, 积分 295, 距离下一级还需 205 积分
在线时间1 小时
楼主求分享一下心得,多多交流,我最近也在做SPWM的电机驱动。
找一份喜欢的工作,这样每天工作的8个小时是快乐的。
找一个喜欢的人,这样每天工作之外的16个小时也是快乐的。
主题帖子精华
中级会员, 积分 358, 距离下一级还需 142 积分
在线时间3 小时
楼主&&&求教啊,怎么做出的波形
主题帖子精华
初级会员, 积分 54, 距离下一级还需 146 积分
在线时间6 小时
楼主,能否共享下程序啊!谢谢啊!!
Powered by5422人阅读
STM32(5)
/** @author Mei Jilin
加入生成SPWM部分
#include &timer.h&
#include &led.h&
static uint16_t CCR3_Val = 1800;
static uint16_t PrescalerValue = 0;
/*PWM输出配置说明,*/
/* - Prescaler = (TIM3CLK / TIM3 counter clock) - 1 选择TIMER工作在36MHZ
The TIM3 is running at 36 MHz: TIM3 Frequency = TIM3 counter clock/(ARR + 1)
= 36 MHz / 3600 = 10 KHz
TIM3 Channel1 duty cycle = (TIM3_CCR1/ TIM3_ARR)* 100 */
/*转换周期10K*/
void PWM_Init(void)
TIM_TimeBaseInitTypeDef
TIM_TimeBaseS
TIM_OCInitTypeDef
TIM_OCInitS
GPIO_InitTypeDef
GPIO_InitS
NVIC_InitTypeDef NVIC_InitS
/* TIM3 clock enable */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);
/* GPIOA and GPIOB clock enable */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|
RCC_APB2Periph_AFIO, ENABLE);
/* GPIOA Configuration:TIM3 Channel1, 2, 3 and 4 as alternate function push-pull */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
//TIM1_CH1N
GPIO_Init(GPIOB, &GPIO_InitStructure);
/* Compute the prescaler value */
PrescalerValue = (uint16_t) (SystemCoreClock / ) - 1; //TIMER2 - 36MHZ
/* Time base configuration */
TIM_TimeBaseStructure.TIM_Period = 3600;
/*TIM3_ARR = Khz*/
TIM_TimeBaseStructure.TIM_Prescaler = PrescalerV
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;
TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);
/* Channel 1, 2,3 and 4 Configuration in PWM mode */
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_E
TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_E //关闭互补输出
TIM_OCInitStructure.TIM_Pulse = CCR3_V
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_H
TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_H
TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_S
TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_S
TIM_OC1Init(TIM1, &TIM_OCInitStructure);
TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable); //这句的功能是让改变CCR2之后马上有效
TIM_ITConfig(TIM1, TIM_IT_CC1, ENABLE);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
NVIC_InitStructure.NVIC_IRQChannel = TIM1_CC_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 6;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
TIM_Cmd(TIM1, ENABLE);
/* TIM1 Main Output Enable */
TIM_CtrlPWMOutputs(TIM1, ENABLE);
//TIM1需要加上这句,貌似低级定时器不需要
uint16_t Duty[] = {12,78,33,73,93,
88,55,92,98,71,14,
28,16,82,31,68,00,
31,68,17,83,71,5,
963,944,928,915,907,901,900,901,907,915,928,944,963,985,71,83,1226,
66,21,87,99};
uint16_t count = 0;
uint16_t num = sizeof(Duty)/(sizeof(Duty[0]));
void TIM1_CC_IRQHandler(void)
if (TIM_GetITStatus(TIM1, TIM_IT_CC1) != RESET)
TIM1-&SR = (uint16_t)~TIM_IT_CC1;
TIM1-&CCR1 = Duty[count];
count++;
if(count==num)
下一篇文章中会简单讲解一下Duty[]是如何产生的链接:http://blog.csdn.net/mjlsuccess/article/details/
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:150684次
积分:1797
积分:1797
排名:第15449名
原创:30篇
转载:15篇
评论:37条
(1)(2)(2)(3)(1)(3)(4)(7)(2)(3)(7)(2)(6)(3)下载此资料的人还喜欢:
上周热点文章排行榜
上周资料下载排行榜
技术交流、我要发言! 发表评论可获取积分! 请遵守相关规定。
本周热点资料
电子资料热门词
上传者其它资料
DSP下载排行21ic官方微信
后使用快捷导航没有帐号?
查看: 1813|回复: 20
关于STM32产生SPWM高压不稳定问题
&&未结帖(50)
主题帖子积分
高级技术员, 积分 791, 距离下一级还需 209 积分
高级技术员, 积分 791, 距离下一级还需 209 积分
主题帖子积分
专家等级:结帖率:84%
主题帖子积分
高级技术员, 积分 791, 距离下一级还需 209 积分
高级技术员, 积分 791, 距离下一级还需 209 积分
最近使用STM32F103C8T6做了一个SPWM驱动板(单极性),主要器件STM32驱动IR2110,然后再驱动MOS管,现在出现的问题在低压工作时100V以内,出来的正弦波是正常的,高压200V以上时出来的正弦波出现很多毛刺,示波器测量发现单片机输出的SPWM波形出现毛刺(少部分不是按程序设定的给出计算出来应有的占空比)。应该是单片机端出现了问题。
现在猜想会不会是单片机某个引脚具有复位或者置位PWM功能,而这个引脚却好有悬空没设置,导致SPWM不稳定。刹车端已设置为输入且加1K电阻下拉。请问哪位大虾遇到过类似的问题?
下面发几张低压正常波形和高压干扰后的波形。波形图分别为两个单桥臂波形和合成正弦波波形,
主题帖子积分
高级技术员, 积分 791, 距离下一级还需 209 积分
高级技术员, 积分 791, 距离下一级还需 209 积分
主题帖子积分
专家等级:结帖率:84%
主题帖子积分
高级技术员, 积分 791, 距离下一级还需 209 积分
高级技术员, 积分 791, 距离下一级还需 209 积分
本帖子中包含更多资源
才可以下载或查看,没有帐号?
主题帖子积分
高级技术员, 积分 791, 距离下一级还需 209 积分
高级技术员, 积分 791, 距离下一级还需 209 积分
主题帖子积分
专家等级:结帖率:84%
主题帖子积分
高级技术员, 积分 791, 距离下一级还需 209 积分
高级技术员, 积分 791, 距离下一级还需 209 积分
高压出现毛刺
本帖子中包含更多资源
才可以下载或查看,没有帐号?
主题帖子积分
高级技术员, 积分 791, 距离下一级还需 209 积分
高级技术员, 积分 791, 距离下一级还需 209 积分
主题帖子积分
专家等级:结帖率:84%
主题帖子积分
高级技术员, 积分 791, 距离下一级还需 209 积分
高级技术员, 积分 791, 距离下一级还需 209 积分
电路板打样了第三次了,电源和地都仔细处理了一下,两层板,有较为完整的参考地。
主题帖子积分
高级技术员, 积分 830, 距离下一级还需 170 积分
高级技术员, 积分 830, 距离下一级还需 170 积分
主题帖子积分
专家等级:结帖率:0%打赏:0.00受赏:0.20
主题帖子积分
高级技术员, 积分 830, 距离下一级还需 170 积分
高级技术员, 积分 830, 距离下一级还需 170 积分
不清楚,帮顶一下
主题帖子积分
资深技术员, 积分 348, 距离下一级还需 152 积分
资深技术员, 积分 348, 距离下一级还需 152 积分
主题帖子积分
专家等级:结帖率:88%
主题帖子积分
资深技术员, 积分 348, 距离下一级还需 152 积分
资深技术员, 积分 348, 距离下一级还需 152 积分
用开关电源吗?出现过开关电源干扰到的问题。。
追求简单的纯粹,放下、放下。
主题帖子积分
助理工程师, 积分 1987, 距离下一级还需 13 积分
助理工程师, 积分 1987, 距离下一级还需 13 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
助理工程师, 积分 1987, 距离下一级还需 13 积分
助理工程师, 积分 1987, 距离下一级还需 13 积分
<font color="#电气 发表于
高压出现毛刺
看上去是驱动不够强,米勒平台带来的震荡
主题帖子积分
主题帖子积分
专家等级:结帖率:100%打赏:0.00受赏:34.00
主题帖子积分
低压正常,高压不正常,那就是和硬件有关系了;
比如自举电容的选择,MOS管的选择,还有二极管最好用快恢复的;
开关电源本身,我想应该问题不大;
为机器人产业而努力!
人工智能+机器人+互联网交流群:!
主题帖子积分
高级技术员, 积分 791, 距离下一级还需 209 积分
高级技术员, 积分 791, 距离下一级还需 209 积分
主题帖子积分
专家等级:结帖率:84%
主题帖子积分
高级技术员, 积分 791, 距离下一级还需 209 积分
高级技术员, 积分 791, 距离下一级还需 209 积分
经过几天测试下来可能是死区时间问题,开始死区时间设置为250ns,现在改为1us效果好多了。继续测试再看看。谢谢大家帮忙查找原因。
主题帖子积分
助理工程师, 积分 1792, 距离下一级还需 208 积分
助理工程师, 积分 1792, 距离下一级还需 208 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
助理工程师, 积分 1792, 距离下一级还需 208 积分
助理工程师, 积分 1792, 距离下一级还需 208 积分
不是很懂,帮你顶一下
电力监控仪表、STM32、物联网
主题帖子积分
---------------------
主题帖子积分
---------------------
专家等级:结帖率:100%打赏:0.00受赏:40.00
主题帖子积分
---------------------
既然发现可能是死区时间问题, 那就对驱动波形进行验证一下, 看看多少死区时间才合理, 通常 1uS 也还是比较短的.
欢迎进入 !
主题帖子积分
高级技术员, 积分 791, 距离下一级还需 209 积分
高级技术员, 积分 791, 距离下一级还需 209 积分
主题帖子积分
专家等级:结帖率:84%
主题帖子积分
高级技术员, 积分 791, 距离下一级还需 209 积分
高级技术员, 积分 791, 距离下一级还需 209 积分
MOS管使用的IRFP460,死区放到3us还是不太稳定,大负载的时候就会保护。最近测量波形发现小宽度的波形很差,可能是发热和保护的主要原因,最近准备尝试对PWM 宽度限制下。看能否减少较差波形脉冲数量。
主题帖子积分
实习生, 积分 6, 距离下一级还需 44 积分
实习生, 积分 6, 距离下一级还需 44 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
实习生, 积分 6, 距离下一级还需 44 积分
实习生, 积分 6, 距离下一级还需 44 积分
你的SPWM输出有反馈吗?
主题帖子积分
初级技术员, 积分 69, 距离下一级还需 31 积分
初级技术员, 积分 69, 距离下一级还需 31 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
初级技术员, 积分 69, 距离下一级还需 31 积分
初级技术员, 积分 69, 距离下一级还需 31 积分
高压出现这种毛刺很正常,驱动感性负载时,干扰引起的
主题帖子积分
助理工程师, 积分 1159, 距离下一级还需 841 积分
助理工程师, 积分 1159, 距离下一级还需 841 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
助理工程师, 积分 1159, 距离下一级还需 841 积分
助理工程师, 积分 1159, 距离下一级还需 841 积分
没病不死人···不是硬件,就是程序
主题帖子积分
助理工程师, 积分 1677, 距离下一级还需 323 积分
助理工程师, 积分 1677, 距离下一级还需 323 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
助理工程师, 积分 1677, 距离下一级还需 323 积分
助理工程师, 积分 1677, 距离下一级还需 323 积分
程序的问题比较大啊!
主题帖子积分
高级技术员, 积分 791, 距离下一级还需 209 积分
高级技术员, 积分 791, 距离下一级还需 209 积分
主题帖子积分
专家等级:结帖率:84%
主题帖子积分
高级技术员, 积分 791, 距离下一级还需 209 积分
高级技术员, 积分 791, 距离下一级还需 209 积分
最终解决办法是:讲刹车引脚设置为输出模式,且输出低电平。问题解决。
主题帖子积分
资深技术员, 积分 387, 距离下一级还需 113 积分
资深技术员, 积分 387, 距离下一级还需 113 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
资深技术员, 积分 387, 距离下一级还需 113 积分
资深技术员, 积分 387, 距离下一级还需 113 积分
最终解决办法是:讲刹车引脚设置为输出模式,且输出低电平。问题解决。
主题帖子积分
资深技术员, 积分 430, 距离下一级还需 70 积分
资深技术员, 积分 430, 距离下一级还需 70 积分
主题帖子积分
专家等级:结帖率:66%
主题帖子积分
资深技术员, 积分 430, 距离下一级还需 70 积分
资深技术员, 积分 430, 距离下一级还需 70 积分
最终解决办法是:讲刹车引脚设置为输出模式,且输出低电平。问题解决。
主题帖子积分
实习生, 积分 28, 距离下一级还需 22 积分
实习生, 积分 28, 距离下一级还需 22 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
实习生, 积分 28, 距离下一级还需 22 积分
实习生, 积分 28, 距离下一级还需 22 积分
从毛刺出现在峰值处看,我觉得是脉宽的占空比太小,比如99%,则mos管的关闭时间太短,与MOS管硬件相应时间接近了。
技术奇才奖章
人才类勋章
时间类勋章
甘甜之泉水
发帖类勋章
技术高手奖章
人才类勋章
时间类勋章
涓涓之细流
发帖类勋章
时间类勋章
技术领袖奖章
人才类勋章
时间类勋章
坚毅之洋流
发帖类勋章
荣誉元老奖章
等级类勋章
欢快之小溪
发帖类勋章
社区建设奖章
等级类勋章
时间类勋章
希望之星奖章
等级类勋章
晶莹之水滴
发帖类勋章
时间类勋章
技术新星奖章
人才类勋章
时间类勋章查看: 1001|回复: 3
如何用STM32F103产生SPWM
主题帖子精华
新手上路, 积分 30, 距离下一级还需 20 积分
在线时间1 小时
想用SPWM做一个信号源,看过大家做的50Hz的,不明白50Hz是怎么计算得到的,想做一个滤波后正弦波频率可以通过按键调整的,在2Hz—2kHz的范围内调整(按下按键KEY0频率加1Hz,按下按键KEY2频率减1Hz),最近急用,希望各位大神帮忙看看!万分感激!
PWM一个正弦周期,就等于SPWM的周期。
主题帖子精华
在线时间267 小时
PWM一个正弦周期,就等于SPWM的周期。
我的淘宝小店:
主题帖子精华
新手上路, 积分 30, 距离下一级还需 20 积分
在线时间1 小时
回复【2楼】正点原子:
---------------------------------
原子哥,这个正弦周期是怎么确定的呢,是不是跟定时器的中断设置的频率有关系呢,比如说我正弦表有100个点,我定时器1ms产生一个中断,也就是1ms采一个正弦表里的一个点,采完100个点用时100ms,这100ms就是PWM的一个正弦周期,这样理解对吗?
主题帖子精华
在线时间267 小时
回复【3楼】sunyuan9071:
---------------------------------
对的。
我的淘宝小店:
Powered by}

我要回帖

更多关于 stm32f103c8t6 pdf 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信