电子设计省赛--SPWM(死区时间)

//2014年4月17日

//2014年6月20日入“未完毕”

//2014年6月21日

有两种方案:双定时器和单定时器

学长表示双定时器输出波形不好,还是单定时器好。

原理例如以下:

SPWM採用正弦波与三角波比較方式,详细百度。

单片机详细工作:

TIM1

三角波:DIR选中央对齐模式

正弦波:数组实现採样的正弦波

ARR:设为carrval,决定了输出波形的频率

CCR1:我们通过改变它来实现占空比的改变

改变CCR1:每次计数器完毕ARR,更新时产生中断(我们用UP_IQR),此时把正弦波数组赋给CCR1

注意:正弦波数组要经过放大,使其与ARR匹配

void SPWM_Configuration(void)
{
    TIM_TimeBaseInitTypeDef TIM_BaseInitStructure;
    TIM_OCInitTypeDef TIM_OCInitStructure;
    TIM_BDTRInitTypeDef TIM_BDTRInitStructure;
	GPIO_InitTypeDef GPIO_InitStructure;
/*******************************************************************************/

	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO | RCC_APB2Periph_TIM1,ENABLE);
/*********************** GPIO ********************************************************/

	//PA.8口设置为TIM1的OC1输出口
	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);

	//PB.13口设置为TIM1_CH1N和TIM1_CH2N输出口
	GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13;
	GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
	GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init(GPIOB, &GPIO_InitStructure);

/************************PWM频率=72000/(360*200)=1Khz*******************************************************/ 

    //TIM1基本计数器设置(设置PWM频率)
    //频率=TIM1_CLK/(ARR+1)
    TIM_BaseInitStructure.TIM_Period = 199;
    TIM_BaseInitStructure.TIM_Prescaler = 359;
    TIM_BaseInitStructure.TIM_ClockDivision = 0;
    TIM_BaseInitStructure.TIM_CounterMode = TIM_CounterMode_CenterAligned1;
    TIM_BaseInitStructure.TIM_RepetitionCounter = 0;
    TIM_TimeBaseInit(TIM1, &TIM_BaseInitStructure);
    TIM_ARRPreloadConfig(TIM1, ENABLE);			 //TIM1->CR1=0x00b1;
	TIM1->CR2=0x0200;
/*************************设置占空比******************************************************/

    TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
    TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
    TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;
    TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;	   //输出极性
    TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_High;	   //互补输出极性
    TIM_OCInitStructure.TIM_Pulse = 150;  //TIM1_Pulse设置了待装入捕获比較寄存器的脉冲值

/***************************     多路SPWM    ******************************/
    TIM_OC1Init(TIM1, &TIM_OCInitStructure);
    //启用CCR1寄存器的影子寄存器(直到产生更新事件才更改设置)
    TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable);
	TIM1->CCR1=0x0100;
	TIM1->ARR=CarrVal;
/***************************死区设置****************************************************/
    TIM1->CR1&=0x00ff; 	  //配置时钟分频因子 Tdts = Tck_int = 72M
    TIM_BDTRInitStructure.TIM_OSSRState = TIM_OSSRState_Enable;
    TIM_BDTRInitStructure.TIM_OSSIState = TIM_OSSIState_Enable;
    TIM_BDTRInitStructure.TIM_LOCKLevel = TIM_LOCKLevel_OFF;
    TIM_BDTRInitStructure.TIM_DeadTime = 0x90;  //这里调整死区大小0-0xff
    TIM_BDTRInitStructure.TIM_Break = TIM_Break_Disable;
    TIM_BDTRInitStructure.TIM_BreakPolarity = TIM_BreakPolarity_High;
    TIM_BDTRInitStructure.TIM_AutomaticOutput = TIM_AutomaticOutput_Enable;
    TIM_BDTRConfig(TIM1, &TIM_BDTRInitStructure);
/*******************************************************************************/
    TIM_ITConfig(TIM1,TIM_IT_Update,ENABLE);  //TIM1->DIER=0x0001;
	//TIM1开启
    TIM_Cmd(TIM1, ENABLE);
    //TIM1_OC通道输出PWM(一定要加)
    TIM_CtrlPWMOutputs(TIM1, ENABLE);

}
时间: 2024-10-12 22:39:49

电子设计省赛--SPWM(死区时间)的相关文章

(未完毕)电子设计省赛--2013年国赛题

//2014年4月17日 //2014年6月20日入"未完毕" 主要是功率因数校正 一种方案是 fft 算频谱,来实现. 学长当时用的是STM32的dsp库.结果表现不好. (频谱泄露比較严重) 怎样学长用的是同一时候採样电流和电压(包含相位).用功率因数的原本式子来计算,表现非常好.

2014年湖北省TI杯大学生电子设计竞赛论文格式

2014年湖北省TI杯大学生电子设计竞赛 B题:金属物体探測定位器(本科) 2014年8月15日 文件夹 1 系统方案 1.1 XXX的论证与选择.............................................................................................................1 1.2 XXX的论证与选择.....................................................

2016电子设计比赛【简易电子秤】的设计

文:  小波/QQ463431476 今年暑假参加了电子设计比赛,4天3夜(2016/7/25---7/29)选了个电子秤,所以想说说一点心得分享一下.秤可以测量,用了滤波和一个线性的方程. 硬件部分主要焊接4个电阻应变片搭建一个全桥电路,然后经过放大器,将电压信号放大,HX711拥有一个24位 AD    来采集电压值,经过数字量与重量值得转换(拟合方程) ,得到最终的真实重量值. 介绍一下电阻应变片,就是可以发生形变的电阻,电阻值改变电压或者电流就可以改变.(图一) (图一电阻应变片) 然后

2015电子设计总结

集训和2015全国电子设计竞赛结束了. 集训期间学到了许多东西. 刚开始用2SC3355做1.4GHz 射频放大器,采用微带线做传输线,在矢量网络分析仪上观察S11,S12,S21,S22等参数.放大器效果并不是很好.这和电路布局及一般电容电感在高频下自身特性变化有很大关系. 接下来FM发射接收,语音信号经集成MC2833后发射49.5MHz载波.接收采用分立模块,前级晶体管放大器放大49.5MHz,再由三极管混频,本振使用38.8MHz,得到中频10.7MHz,经过10.7MHz陶瓷滤波器及中

大学生电子设计竞赛电源资料

电源-全国电子设计大赛,资料共享出来,希望汇集更多的参赛者一起交流,提高技术,结识更多硬件开发的朋友,组队参加电子设计大赛:787059199 资料目录:├── (书)开关电源设计(好书).pdf├── 0-30V 4A数控稳压电源图.pdf├── 110w 开关电源设计全过程.pdf├── 3A升压ic移动电源方案.pdf├── 3A移动电源方案.pdf├── ourdev数控稳压电源1.pdf├── ourdev数控稳压电源2.pdf├── SG3525_800W半桥电源_论文.pdf├──

2014年TI杯大学生电子设计竞赛地区赛使用仪器及器件、设备

 a)        3A/30V双路稳压电源(可并联): b)        60MHz示波器: c)        三位半数字万用表: d)       低频(10MHz)信号源: e)        低频交流毫伏表. 1. AY-LDC1000评估板(赛题中必用,TI依照报名数量30%配发). 2. AY-TPA3112D1评估板(赛题中可用,TI依照报名数量25%配发). 注:以上两款开发板TI按配发比例已发到各赛区组委会,请各參赛高校自行向各自赛区组委会申领. 相关设计材料请訪问杭

川大/电子科大校赛

第一次出校比赛 比赛时间: 电子科技大学校赛:2015.4.4 周六 四川大学校赛:2015.4.6 周一 之前本以为可以愉快地正大光明地不上课出去玩玩,不过后来才发现正值清明节,好像亏了,并不能好好滴玩耍,不过少上了4节课也是不错的,哈哈. 4.3 上午11点从学校出发,坐27路公交到圣水寺转车,然而发现时间并不多了,于是打车赶到火车站,无奈排队取票和进站的人都多得不行,看来之前小框框建议早点走是极为明智的,毕竟假期,无形甩锅....好不容易取到票出来但是进站的队伍又好长好长,只有10分钟点车

2014年福建省大学生电子设计竞赛测控组参赛心得讲稿

首先先给大家说个不好意思,由于这个月开始到公司实习,所以并没有花太多的时间来准备这个讲演,PPT也是做得十分简陋,很敷衍,简直就是贴几张图片就是一个PPT了.我考虑过要怎么跟介绍我们的作品了,如果是跟大家讲其中的整个过程,四轴飞行器的原理,难免会很枯燥,而且大家有些同学没有做过了解过飞行器的项目,说的太复杂怕大家一时半会消化不来,说我就先简单的介绍一下我们的作品,然后说一说我的队友和我对于此次比赛的整个参赛过程. 由于上届国赛做的是飞行器的,还有近几年出的题目也是越来越前卫,开始从地上跑的智能车

电子设计从零开始

第1章  走进电子技术 前8章围绕模拟电路:连续变化的信号 光控报警器 电源:USB电池 电阻:阻值,功率和种类 根据焦耳定律,电流通过电阻时会产生热量,电阻越大.电流越大.时间越长,电阻发热就越厉害 选择额定功率比最大实际功率大的电阻 光敏电阻:其阻值与照射到其表面的光强成反比:光线越强阻值越小,反之亦然 电位器 开关 按钮开关:带锁按钮开关,按下按钮后,按钮就不起来了,非得再按一下按钮才回到原来的高度: 不带锁按钮开关,按下时开关导通,手离开按钮就会自动回到原来的高度 DIP开关:由若干个微