基于dsp2812的遥控型开关电源的设计与制作_第1页
基于dsp2812的遥控型开关电源的设计与制作_第2页
基于dsp2812的遥控型开关电源的设计与制作_第3页
基于dsp2812的遥控型开关电源的设计与制作_第4页
基于dsp2812的遥控型开关电源的设计与制作_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、上海电力学院课程报告课程设计名称: 遥控型开关电源设计与制作 班级: 2014071 指导老师: 曹以龙 姓名: 郭茂 学号: 20140898 电子与信息工程学院1. 前言 随着电子技术的迅猛发展红外遥控技术已渗透到国民经济的各部门及人们的日常生活中,在工业自动化控制,信息通信,环境检测,安全防范,家用电气控制,国防工业及日常生活等许多方面都得到了广泛的应用。 通常稳压电源的输出是固定不变的,然而某些测试仪器却需要电源的输出在一定范围内可调,甚至这些测试仪器还工作在非常恶劣的环境下,如果能够实现对这类测试仪器的电源进行遥控,可以大大提高操作的便捷性,并且能够有效地保护人身安全。 本文介绍可调

2、遥控型电源开关的设计,该设计采用红外遥控系统,由红外遥控发射电路发射红外信号,通过红外遥控接收电路接收信号并进行解调,控制电源电路输出所需电压。关键词:红外遥控系统;可调电源开关;电子产品2.设计方案原理 2.1系统设计方案 遥控型开关电源设计与制作系统设计原理框图如图三所示。图中所列模块有:遥控器红外线接收模块,51CPU最小系统模块,RS-485通信模块,DSP主控制数据分析处理芯片,PWM输出滤波DA以及电压跟随器等模拟电路,Boost升压电路,输出电压AD采样数码管显示模块。 本作品的特色之处主要体现在红外遥控技术:无需手动调试电路,轻轻一按,输出电压随心所欲,很大程度上增强了人机交互

3、能力,而且没有直接的硬件接触,用户的安全性得到了最大程度上的保障,具有很强的快捷性与普遍实用性。 图一:遥控器模块 图二:Boost升压电路红外接收管51MCU遥控器 485通信DSP数据分析处理 AD采样数码显示Boost开关电源PWM滤波DA电路图三:基于DSP的遥控型开关电源设计与制作系统设计原理框图2.2系统工作流程(1) 遥控器向装有红外接收管的51MCU发送相关指令,51MCU将接收到的指令处理分析以RS-485的通信方式发送至DSP处理系统;(2) DSP主控制系统接收不同的数据比较生成不同占空比的PWM波,经DA滤波电路,电压跟随器后连接Boost电路中3483反馈控制芯片的f

4、eedback引脚;(3) 随着滤波电压不同的幅值,Boost电路输出不同的幅值的电压,再将输出电压AD采样至DSP主控制系统,将当前电压值用数码管显示。3. 单元电路设计 DSP数据分析处理控制模块是本设计的核心部分,是整个系统的基石。利用DSP的事件管理器中的输出比较模块,可产生占空比及频率均可调的六路互补对称带死区的PWM波,它的强大之处就是在于此; Boost升压电路采用3843主控芯片控制MOS管的导通与关断,并将输出电压分压拉回比较,实现了闭环稳定调节,具体电路如图四所示; 遥控器及红外接收管部分硬件较为简单,主要是程序数据获得部分,见软件代码附录; 3.1 PWM滤波DA及电压跟

5、随器电路:选取合适的电阻电容将DSP输出的PWM波虑为直流电压信号,再经一个电压跟随器起缓冲作用,输出电压信号与Boost电路输出电压分压后分别接运放的反相和同相输入端,反馈端电阻和电容并联,输出接入3483芯片的feedback引脚。同时,该运放的同相输入端可接入DSP进行AD采样。图四(1):PWM滤波DA及电压跟随器电路 3.2 Boost升压电路:在Boost电路中,feedback引脚的电压与reference引脚电压做差所得直流信号与固定频率的锯齿波电压比较所得不同占空比的周期信号作为MOS管的输入。在高电平时,MOS管导通,电容放电电压降低;在低电平时,MOS管截止,电感放电,电

6、压升高。场效应管的不断导通,截止的脉冲宽度使电容上的电压上升,而且电容上的电压最终稳定在一个预期值,开关导通时的压降和截止时上升的电压相等,开关频率快,最终得到稳定的直流电压输出波形。图四(2):Boost升压电路由以上分析,feedback引脚的任一电压必将对应一个输出电压幅值。在图二的综合电路中,随着PWM占空比的增大,DA后得到的直流电压也将增大,在2号运放的反相输入端电压增大,输出电压增大,MOS管的截止脉冲宽度增大,输出电压增大,使运放的同相输入端电压增大,在反馈回路中和运放输出电压稳定。由此构成一个完整的反馈闭环控制电路。整个电路的输出电压随着DA电压的变化而变化,而且稳定可控。4

7、 实验过程及系统软件设计 本设计软件使用C语言编程实现,主要软件程序思维如图五;遥控器数据获取处理DSP数据分析DSP输出PWM占空比改变DSP AD采样输出电压 图五:软件程序思维导势图 51主要程序如代码附录:主要包括红外信号数据获取处理,并将按键值以RS-485的通信方式发送至DSP。 由程序分析易得,红外接收管所获得的时域信号为一系列的脉冲信号,包括前置引导判别和数据信号,数据与脉冲宽度时间相对应,计算延时即可得。下图四为红外接收管获取的脉冲信号;由此遥控器的红外协议分析可得,如果我们了解了相关类型的协议,完全可以自己做出一个万能遥控器!图四:红外接收管获取的脉冲信号 DSP主要程序如

8、代码附录:主要包括接收51所发数据,并调整所产生的PWM波的占空比及开启AD采样中断和数码管显示部分。主要用到了Gpio,485通信,事件管理器和AD转换等模块。包括所用到的初始化和中断函数等; DSP软件的整体逻辑可概括为一下几步:(1) 开启SCI中断接收遥控数据,并将所得遥控数据与事件管理器输出PWM的比较值挂钩;(2) 使能事件管理器输出比较模块,并使能周期中断,在中断服务子程序中调整比较值,使其输出随遥控器键值而变化的不同占空比的PWM波;(3) 开启AD中断,采样输出电压,将AD值所代表的电压值通过数码管显示,数码管的显示程序部分应放到周期中断服务子程序中。5.设计成果展示及心得体

9、会: 在输入电压12V时,遥控器按键可分别调控输出电压达到20V到40V,而且输出稳定可控,同时数码管会将当前电压值显示。在上学期开关电源课程学习的基础上,在DSP课程上我通过对DSP中Gpio口,事件管理器,AD采样,中断等等模块的学习重组,将二者结合完成了基于DSP的遥控型开关电源设计与制作。在设计过程中也遇到了些许困难,但在老师的帮助和自己的坚持下完成了此次自我设计,加深了对开关电源电路的理解和认识。自我感觉尤其在PWM滤波电路及后面的运放电路中,自己对运放的理解更加深入,模电的理解有了新的进步。总体而言,此次设计中涵盖的东西较广,自己也从中学到了很多,软件的逻辑性思维,硬件电路的调试技

10、巧以及动手能力的培养等。6.代码附录:51部分:void main(void) IRIN=1; /I/O口初始化,红外接收管数据引脚UsartConfiguration(); /串口初始化函数 while(1) /数据分析获取 while(IRIN=0) delay(15); if (IRIN!=1) while (!IRIN) /等IR变为高电平,跳过9ms的前导低电平信号。 delay(1); for (j=0;j<4;j+) /收集四组数据 for (k=0;k<8;k+) /每组数据有8位 while (IRIN) /等 IR 变为低电平,跳过4.5ms的前导高电平信号。

11、delay(1); while (!IRIN) /等 IR 变为高电平 delay(1); while (IRIN) /计算IR高电平时长 delay(1); N+; /高电平计数完毕 IRCOMj=IRCOMj >> 1; /数据最高位补“0” if (N>=8) IRCOMj = IRCOMj | 0x80; /数据最高位补“1” N=0; /end for k /end for j switch(IRCOM2) case 0x1C: distemp=0x05;break; case 0x5A: distemp=0x06; break; case 0x42: distem

12、p=0x07;break; case 0x52: distemp=0x08; break; case 0x4A: distemp=0x09;break;default: distemp=0x00;break; RS485E=1; /485的使能脚SBUF = distemp; /将要发送的数据放入到发送寄存器while(!TI); /等待发送数据完成TI=0; /清除发送完成标志位 IRIN=1;delay1(100); /delay很重要 else break; 标准Delay函数:void delay(uchar x) /x*0.14MS unsigned char i; while(x-

13、) for (i = 0; i<13; i+) 串口初始化函数:void UsartConfiguration()SCON=0X50;/设置为工作方式1TMOD=0X20;/设置计数器工作方式2PCON=0X00;/8080/波特率加倍TH1=0XFD;/F3 FA /计数器初始值设置,注意波特率是9600的TL1=0XFD; /F3 FAES=1;/打开接收中断EA=1;/打开总中断TR1=1; /打开计数器DSP主要程序函数部分:/主函数部分;unsigned char i;/选段码unsigned int m=1000;/占空比double k;/AD采样值void main(vo

14、id)InitSysCtrl();/初始化系统函数DINT;/关总中断IER=0x0000;/禁止CPU中断IFR=0x0000;/清除CPU中断标志InitPieCtrl();/初始化PIE控制寄存器InitPieVectTable();/初始化PIE中断向量表/-EALLOW;PieVectTable.RXAINT = &SCIA_RX_isr;/SCIA接收中断PieVectTable.ADCINT = &ADC_SAMPLE_isr;/AD中断入口PieVectTable.T1PINT = &T1_isr;/周期中断入口/PieVectTable.TINT0 =

15、 &cpu_timer0_isr;/CPU定时器0中断入口EDIS;/-Init_Gpio();/初始化GPIO口Init_ADC();/初始化ADC模块Init_EV();/初始化EVInit_Sci();/初始化SCI/-使能PIE- PieCtrlRegs.PIEIER9.bit.INTx1=1; /使能PIE模块中的SCI接收中断PieCtrlRegs.PIEIER2.bit.INTx4=1;/使能.PIE的T1周期中断 PieCtrlRegs.PIEIER1.bit.INTx6=1;/使能PIE的ADC中断ADCINT /PieCtrlRegs.PIEIER1.bit.INT

16、x7=1; /使能PIE模块中的CPU定时器0中断/-使能CPU中断- IER|=M_INT2;/开CPU中断 IER|=M_INT9;/开CPU中断sci IER|=M_INT1;/开CPU中断/ IER|=M_INT1;/开CPU中断 EINT;/开全局中断 ERTM;/开实时中断 EvaRegs.T1CON.bit.TENABLE=1;/开定时器T1计数操作 while(1)/i为接收数据判断,m为占空比比较值设定; switch(i) case 5: m=4500;break; case 6: m=5375;break; case 7: m=6245;break; case 8: m=

17、7120;break;default: m=0;break; /初始化Gpio口;void Init_Gpio(void)EALLOW;/-/LED部分GpioMuxRegs.GPFMUX.bit.MFSRA_GPIOF11=0; /设置为通用I/O口GpioMuxRegs.GPFDIR.bit.GPIOF11=1; /IO口方向为输出GpioMuxRegs.GPFMUX.bit.MCLKXA_GPIOF8=0; /设置为通用I/O口GpioMuxRegs.GPFDIR.bit.GPIOF8=1; /IO口方向为输出GpioMuxRegs.GPFMUX.bit.MFSXA_GPIOF10=0;

18、 /设置为通用I/O口GpioMuxRegs.GPFDIR.bit.GPIOF10=1; /IO口方向为输出GpioMuxRegs.GPFMUX.bit.MCLKRA_GPIOF9=0; /设置为通用I/O口/-/数码管部分 GpioMuxRegs.GPBMUX.all = 0x0000; /GPIOB口设置为输出通用IO口,数码管显示使用 GpioMuxRegs.GPBDIR.all = 0xffff; /RS485通讯 /GpioMuxRegs.GPFMUX.bit.SCITXDA_GPIOF4=1; /设置SCIA的发送引脚 GpioMuxRegs.GPFMUX.bit.SCIRXDA_

19、GPIOF5=1; /设置SCIA的接收引脚 GpioMuxRegs.GPDMUX.bit.T3CTRIP_PDPB_GPIOD5 = 0;/将485控制引脚设置为通用的数字IO口 GpioMuxRegs.GPDDIR.bit.GPIOD5 = 0; /将控制IO口设置为输入引脚 /EV模块部分 GpioMuxRegs.GPAMUX.bit.T1PWM_GPIOA6=1;/设置T1PWM功能引脚 GpioMuxRegs.GPAMUX.bit.T2PWM_GPIOA7=1;/设置T2PWM功能引脚 GpioMuxRegs.GPAMUX.bit.PWM1_GPIOA0=1;/设置PWM1引脚 Gp

20、ioMuxRegs.GPAMUX.bit.PWM2_GPIOA1=1;/设置PWM2引脚 GpioMuxRegs.GPAMUX.bit.PWM3_GPIOA2=1;/设置PWM3引脚 GpioMuxRegs.GPAMUX.bit.PWM4_GPIOA3=1;/设置PWM4引脚 GpioMuxRegs.GPAMUX.bit.PWM5_GPIOA4=1;/设置PWM5引脚 GpioMuxRegs.GPAMUX.bit.PWM6_GPIOA5=1;/设置PWM6引脚EDIS;/初始化ADC采样模块/=void Init_ADC(void)unsigned int ad;/定义一个局部变量i用来短延时

21、AdcRegs.ADCTRL1.bit.RESET=1;/复位ADC模块for(ad=0;ad<1;ad+);/空指令延时一个机器周期AdcRegs.ADCTRL1.bit.RESET=0;AdcRegs.ADCTRL1.bit.SUSMOD=3;/仿真暂停时序列发生器和其他数字电路逻辑立即停止AdcRegs.ADCTRL1.bit.ACQ_PS=0;/采样脉冲宽度ts=(ACQ_PS+1)*Tadcclk;这里为一个ADCclk周期AdcRegs.ADCTRL1.bit.CPS=0;/这里ADC时钟分频器没有两分频AdcRegs.ADCTRL1.bit.CONT_RUN=0;/启动-停

22、止模式AdcRegs.ADCTRL1.bit.SEQ_CASC=1;/序列发生器为级联模式AdcRegs.ADCTRL3.bit.ADCBGRFDN=3;/带隙和参考电路上电for(ad=0;ad<10000;ad+);AdcRegs.ADCTRL3.bit.ADCPWDN=1;/ADC模块的模拟电路上电for(ad=0;ad<5000;ad+);AdcRegs.ADCTRL3.bit.ADCCLKPS=30;/设定ADC内核时钟分频器150/(2*30)=2.5MAdcRegs.ADCTRL3.bit.SMODE_SEL=0;/选择顺序采样模式AdcRegs.ADCMAXCONV

23、.bit.MAX_CONV1=11;/12个转换通道AdcRegs.ADCCHSELSEQ1.all=0x3210;/通道依次采样AdcRegs.ADCCHSELSEQ2.all=0x7654;AdcRegs.ADCCHSELSEQ3.all=0xBA98;AdcRegs.ADCCHSELSEQ4.all=0xFEDC;AdcRegs.ADCST.bit.INT_SEQ1_CLR=1;/写1清除SEQ1中断标志位AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1=1;/使能排序器SEQ1的中断AdcRegs.ADCTRL2.bit.INT_MOD_SEQ1=0;/排序器SEQ1每

24、个序列结束,产生中断AdcRegs.ADCTRL2.bit.EVA_SOC_SEQ1=0;/禁止EVA触发排序器SEQ1AdcRegs.ADCTRL2.bit.SOC_SEQ1=1;/软件写1触发SEQ1进行A/D转换/初始化SCI模块/=void Init_Sci(void)/中断方式接收SciaRegs.SCICCR.bit.STOPBITS=0; /1位停止位SciaRegs.SCICCR.bit.PARITYENA=0; /禁止极性功能SciaRegs.SCICCR.bit.LOOPBKENA=0; /禁止回送测试模式功能SciaRegs.SCICCR.bit.ADDRIDLE_MOD

25、E=0; /空闲线模式SciaRegs.SCICCR.bit.SCICHAR=7; /8位数据位/SciaRegs.SCICTL1.bit.TXENA=0; /SCIA模块的发送使能SciaRegs.SCICTL1.bit.RXENA=1; /SCIA模块的接收使能SciaRegs.SCIHBAUD=0x01;SciaRegs.SCILBAUD=0xE7; /波特率为9600SciaRegs.SCICTL2.bit.RXBKINTENA=1;SciaRegs.SCICTL1.bit.SWRESET=1; /重启SCI/初始化EV模块/=void Init_EV(void)/无死区,单控制占空比

26、;int j;EvaRegs.T1CON.bit.TMODE=1;/连续增减模式EvaRegs.T1CON.bit.TPS=1;/预定标因子设置为1,T1CLK=HSPCLK/2=37.5MHzEvaRegs.T1CON.bit.TENABLE=0;/先暂停T1计数EvaRegs.T1CON.bit.TCLKS10=0;/使用内部时钟T1CLKEvaRegs.T1CON.bit.TECMPR=1;/使能定时器比较操作/EvaRegs.T1PR=23;/周期寄存器78.125us/4=2*T1PR(5860)*6.67ns/4EvaRegs.T1PR=0x493E;/1k hz; 18750Ev

27、aRegs.T1CNT=0;/计数器初始值为0EvaRegs.COMCONA.bit.CENABLE=1;/使能比较单元的比较操作EvaRegs.COMCONA.bit.FCOMPOE=1;/全比较输出,各引脚由各自的比较逻辑驱动EvaRegs.COMCONA.bit.CLD=2;/比较器的重新装载条件为立即装载EvaRegs.CMPR1=0;EvaRegs.CMPR2=0;EvaRegs.CMPR3=0;for(j=0;j<5000;j+);/输出动作EvaRegs.ACTRA.all=0x0999;/PWM1,3,5高有效;PWM2,4,6低有效/T1CMP设置EvaRegs.GPT

28、CONA.bit.T1CTRIPE=0;/禁止保护作用EvaRegs.GPTCONA.bit.T1CMPOE=1;/高电平有效,使能定时器1比较输出EvaRegs.GPTCONA.bit.T1PIN=1;/T1CMP底电平有效/中断使能EvaRegs.EVAIMRA.bit.T1PINT=1;/使能定时器T1周期中断EvaRegs.EVAIFRA.bit.T1PINT=1;/清除T1周期中断的标志位EvaRegs.GPTCONA.bit.T1TOADC=2;/周期中断启动ADC/ADC 中断服务子程序interrupt void ADC_SAMPLE_isr(void)LED1 1 ; AD_sample(&AD_sample_parameter); k=AD_sampl

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论