简易数控直流电源(21页).doc

上传人:1595****071 文档编号:37323996 上传时间:2022-08-30 格式:DOC 页数:21 大小:188KB
返回 下载 相关 举报
简易数控直流电源(21页).doc_第1页
第1页 / 共21页
简易数控直流电源(21页).doc_第2页
第2页 / 共21页
点击查看更多>>
资源描述

《简易数控直流电源(21页).doc》由会员分享,可在线阅读,更多相关《简易数控直流电源(21页).doc(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、-简易数控直流电源-第 21 页所在学校:XX学生姓名:XX辅导老师:XX“简易数控直流电源”的设计要求一 设计任务设计出有一定输出电压范围和功能的数控电源。其原理示意图如下:输 出 电 路数 控 部 分“+” “-” 键数 字 显 示 +5V -15V +15V自 制 稳 压 电 源 220V二 设计要求1)基本要求(1)输出电压:范围09.9V,步进0.1V,纹波不大于10mV;(2)输出电流:500mA;(3)输出电压值由数码管显示;(4)由“”、“”两键分别控制输出电压步进增减;(5)为实现上述几部件工作,自制一稳压直流电源,输出15V,5V。2)发挥部分(1)输出电压可预置在09.9

2、V之间的任意一个值;(2)用自动扫描代替人工按键,实现输出电压变化(步进0.1V不变); (3)扩展输出电压种类(比如三角波等)三 评分意见项 目满 分基本要求方案设计和论证、理论计算与分析、电路图30实际完成情况50总结报告20发挥部分完成第(1)项5完成第(2)项15完成第(3)项20简易数控直流电源的设计摘要:本设计以TI的超低功耗的16单片机MSP430F149作为微控制器,利用TIMEER_A的PWM调制来改变输出电压的幅度,通过4*4的矩阵键盘控制输出电压的值,输出的电压值可以在七段数码管上显示出来。再配置相应的集成运放电路来达到电压由0V的变化。关键词:MSP430F149、PW

3、M、矩阵键盘、LED显示一、 方案设计与论证1、 总体方案设计通过分析实验要求,可知道电路的整体框图如下图一所示:键盘数控部分输出电路数字显示图1简易数控直流稳压电源框图其中键盘用于实现信号的输入以及实现对输入信号的加、减、清零、置数的功能;显示部分则实现对输出电压的显示;数控部分则通过程序以及硬件的协同作用,实现对输入信号的该变;输出电路则将数控部分输出的数字信号转化为模拟信号,输出一个稳定的输出电压。1、 方案一(如图2所示)此方案的控制部分采用FPGA开发板,通过VHDL语言来进行控制,输出部分通过DAC0832来进行D/A转换之后,通过稳压、限流电路来控制输出电压达到实验的要求,再通过

4、A/D转换电路来实现输出电压的显示。显示A/D转换FPGA开发板键 盘稳压限流电路D/A转换显 示输出 图2 方案一电路框图 2、 方案二(如图3所示)此方案采用MSP430F149为微控制器,通过定时器_A的PWM调制来实现D/A转换,再通过稳压、限流电路来控制输出电压达到实验要求,再通过A/D转换来实现输出电压值的显示。显示A/D转换 MSP430F149键 盘稳压限流电路显 示输出 图3 方案二电路框图3、 方案比较 分析以上两个方案,发现其各有优点,但是显然方案二具有更加的优越性。不仅外部电路简单,而且可以方便实现人性化很强的人机界面(键盘输入和数码管输出)。与方案一相比,方案二在实现

5、设计要求上有着很大的优越性:不需要外接D/A转换芯片;不需要复杂的参考电压产生电路;不需要外接总线驱动就可以方便实现键盘和数码管显示;MSP430F149内部有足够的存储空间,足以存储程序和显示所需要的汉字字模,不需要扩展存储;MSP430F149有多种低功耗工作模式,通过合理的程序控制可以方便实现低功耗运行。MSP430F149内部有16位的硬件乘法器,可以快速实现乘法运算;MSP430F149使用的指令简单,只有27条指令,指令周期短,数值计算能力强大。鉴于以上种种优点,我们最终选择了MSP430F1494单片机作为我们的控制中心,并且采用了第二种方案来实现设计的要求。2、 工作原理及电路

6、设计1、 工作原理PWM信号是一种具有固定周期不定占空比的数字信号,占空比可调的数字信号(如图所示)。如果PWM 信号的占空比随时间变化,那么通过滤波之后的输出信号将是幅度变化的模拟信号。因此通过控制PWM 信号的占空比就可以产生不同的模拟信号。如图4所示:不同的占空比 图4 PWM波形示例 MSP430F149 的Timer_A和Timer_B工作在比较模式时可以输出PWM信号。MSP430F149 的Timer_A和Timer_B,有四种工作模式(停止、增计数、连续计数、增减计数),计数器的时钟源可选,有多个可配置输入端的捕获/比较寄存器,有多种可选的输出模式。它们支持同时进行的多种时序控

7、制,多个捕获/比较功能及多种输出波形(PWM波形)。Timer各部分的功能选择通过寄存器(TACTL 控制寄存器、CCTLx捕获比较控制寄存器、CCRx捕获/比较寄存器、TAIV中断向量寄存器)控制。要想让Timer工作在特定的模式下,只需要在相应的寄存器中写入相应的控制字。 如果定时器中的计时器工作在增计数模式,输出选用7模式(复位/置位模式),则定时器中的寄存器CCR0用来控制输出PWM波形的周期T, 而与定时器对应的CCRx 寄存器来控制可变占空比。PWM 信号经过滤波器后,一个PWM 信号周期 T 对应一个抽样值,所以输出信号的频率Fx与该信号每个周期的采样数N及PWM 信号周期T有关

8、。它们之间存在以下关系: Fx=1/(T*N) (1) 其中的 T 与 CCRO、计数器的计数频率 Fs 有关: T= CCRO/ Fs (2) 所以, Fx=1/(CCRO/ Fs) N=Fs/(CCRO*N) (3)2、 电路框图数码管显示输出P4M S P 4 3 0 P34*4键盘放大、稳压、限流电路滤波电 路TA图5 总体电路框图MSP430F149具有很多的输入输出端口,可以外接很多的部件,键盘、七段数码管可以直接的接在不同的I/O口。利用定时器A输出PWM波形,只要直接利用放大、稳压、限流电路来对电压进行放大以及对输出电流的限制。使最后输出的电压能够满足在0-9.9V直接稳定的变

9、化。3、 单元电路设计1、 键盘以及显示电路 由于对电路要实行清零、置数、加数、减数的控制,因此需要一个4*4的矩阵键盘,通过软件对不同的按钮设置不同的功能。该键盘的电路如图6所示:图6 矩阵键盘电路其中“/”键实现的是减一;“”键实现的是加一;“”键实现的是减十;“+”键实现的是加十;“=”键实现的是置数;“on/c”键实现的是清零;数字键用于在置数的时候使用。七段数码管实现的是对键盘控制的数字进行显示。其电路如7所示:图7 气短数码管显示电路PWM输出电路是通过程序来控制脉冲的占空比,从而通过电容的充放电来使输出的电压为一个连续变化的模拟量,该电路如图8所示:图8 输出电路2、 放大、稳压

10、以及限流电路由于输出的电压只有04.95V,不能满足实验的要求,所以需要对输出的电压进行放大、稳定,在放大的过程中由于输出的电流很大,则需要进一步对电流的大小进行限定,以防止元器件被烧坏。该电路图如图9所示:图9 放大、稳压以及限流电路4、 软件设计通过单片机实现对矩阵键盘、脉冲宽度以及七段数码管的控制,通过键盘来控制数码管显示的值以及改变脉冲的占空比,使输出的电压发生变化。其中键盘扫描程序的流程图如附录1所示,源程序如附录2所示。仿真的电路图如附录3所示。5、 测量结果键盘输入数码管显示稳压电路输出Uo稳压电路输出Uo理论值绝对误差999.9 V9.9 V0 V909 V9 V0 V808.

11、05 V8 V0.05 V707.03 V7 V0.03 V606.02 V6 V0.02 V505 V5 V0 V404 V4 V0 V303 V3 V0 V201.98 V2 V-0.02 V100.99 V1 V-0.01 V000 .02V0 V0.02 V6、 参考文献1、 沈建华,杨艳琴 ;MSP430系列16位超低功耗单片机原理与实践 ; 北京航空航天大学出版社 ;20082、 曹磊 ;MSP430单片机C程序设计与实践 ;北京航空航天大学出版社 ;2007附录1:附录2:#includeunsigned char LineScan4=0xef,0xdf,0xbf,0x7f; /

12、列值列举unsigned char Seg= /七段数码管表 0x00,0x01,0x02,0x03, 0x04,0x05,0x06,0x07, 0x08,0x09,0x0a,0x0b, 0x0c,0x0d,0x0e,0x0funsigned int Pwm=0;unsigned int m,n;unsigned int flag_set=0;unsigned int flag_ten=0;void Delay(unsigned int wDelay) /延时子程序 while(wDelay!=0) wDelay-;unsigned int key_check(void) /检测是否有按键按下

13、 unsigned char temp; temp=P3IN & 0x0f; if(temp!=0x0f) return 1; else return 0;void Clear() Pwm=0; m=Pwm/10; n=Pwm%10; Delay(65535); P4OUT = Segm*16+Segn; CCR1=0;void NumSet() /置数键“=”子程序 flag_set=1;void NumAdd1() /加一键“”子程序 if(Pwm=99) Pwm=Pwm-1; CCR1=CCR1-2; Pwm=Pwm+1; m=Pwm/10; n=Pwm%10; Delay(65535)

14、; P4OUT = Segm*16+Segn; CCR1=CCR1+2; void NumAdd10() /加十键“+”子程序 if(Pwm=89) Pwm=Pwm-10; CCR1-=20; Pwm=Pwm+10; m=Pwm/10; n=Pwm%10; Delay(65535); P4OUT = Segm*16+Segn; CCR1=CCR1+20;void NumSub1() /减一键“”子程序 if(Pwm=0) Pwm=Pwm+2; CCR1=CCR1+10; Pwm=Pwm-1; m=Pwm/10; n=Pwm%10; Delay(65535); P4OUT = Segm*16+S

15、egn; CCR1=CCR1-2;void NumSub10() /减十键“”子程序 if(Pwm=0) Pwm=Pwm+10; CCR1=CCR1+20; Pwm=Pwm-10; m=Pwm/10; n=Pwm%10; Delay(65535); P4OUT = Segm*16+Segn; CCR1=CCR1-20;void Num0() /按键“0”子程序 if(flag_set=1) flag_ten +=1; if(flag_ten % 2=1) Pwm=0*10+n; m=Pwm/10; n=Pwm%10; Delay(65535); P4OUT = Segm*16+Segn; el

16、se Pwm=m*10+0; m=Pwm/10; n=Pwm%10; Delay(65535); P4OUT = Segm*16+Segn; flag_set=0; CCR1=Pwm*2-2;void Num1() /按键“1”子程序 if(flag_set=1) flag_ten +=1; if(flag_ten % 2=1) Pwm=1*10+n; m=Pwm/10; n=Pwm%10; Delay(65535); P4OUT = Segm*16+Segn; else Pwm=m*10+1; m=Pwm/10; n=Pwm%10; Delay(65535); P4OUT = Segm*16

17、+Segn; flag_set=0; CCR1=Pwm*2-2;void Num2() /按键“2”子程序 if(flag_set=1) flag_ten +=1; if(flag_ten % 2=1) Pwm=2*10+n; m=Pwm/10; n=Pwm%10; Delay(65535); P4OUT = Segm*16+Segn; else Pwm=m*10+2; m=Pwm/10; n=Pwm%10; Delay(65535); P4OUT = Segm*16+Segn; flag_set=0; CCR1=Pwm*2-2;void Num3() /按键“3”子程序 if(flag_se

18、t=1) flag_ten +=1; if(flag_ten % 2=1) Pwm=3*10+n; m=Pwm/10; n=Pwm%10; Delay(65535); P4OUT = Segm*16+Segn; else Pwm=m*10+3; m=Pwm/10; n=Pwm%10; Delay(65535); P4OUT = Segm*16+Segn; flag_set=0; CCR1=Pwm*2-2;void Num4() /按键“4”子程序 if(flag_set=1) flag_ten +=1; if(flag_ten % 2=1) Pwm=4*10+n; m=Pwm/10; n=Pw

19、m%10; Delay(65535); P4OUT = Segm*16+Segn; else Pwm=m*10+4; m=Pwm/10; n=Pwm%10; Delay(65535); P4OUT = Segm*16+Segn; flag_set=0; CCR1=Pwm*2-2;void Num5() /按键“5”子程序 if(flag_set=1) flag_ten +=1; if(flag_ten % 2=1) Pwm=5*10+n; m=Pwm/10; n=Pwm%10; Delay(65535); P4OUT = Segm*16+Segn; else Pwm=m*10+5; m=Pwm

20、/10; n=Pwm%10; Delay(65535); P4OUT = Segm*16+Segn; flag_set=0; CCR1=Pwm*2-2;void Num6() /按键“6”子程序 if(flag_set=1) flag_ten +=1; if(flag_ten % 2=1) Pwm=6*10+n; m=Pwm/10; n=Pwm%10; Delay(65535); P4OUT = Segm*16+Segn; else Pwm=m*10+6; m=Pwm/10; n=Pwm%10; Delay(65535); P4OUT = Segm*16+Segn; flag_set=0; C

21、CR1=Pwm*2-2;void Num7() /按键“7”子程序 if(flag_set=1) flag_ten +=1; if(flag_ten % 2=1) Pwm=7*10+n; m=Pwm/10; n=Pwm%10; Delay(65535); P4OUT = Segm*16+Segn; else Pwm=m*10+7; m=Pwm/10; n=Pwm%10; Delay(65535); P4OUT = Segm*16+Segn; flag_set=0; CCR1=Pwm*2-2;void Num8() /按键“8”子程序 if(flag_set=1) flag_ten +=1; i

22、f(flag_ten % 2=1) Pwm=8*10+n; m=Pwm/10; n=Pwm%10; Delay(65535); P4OUT = Segm*16+Segn; else Pwm=m*10+8; m=Pwm/10; n=Pwm%10; Delay(65535); P4OUT = Segm*16+Segn; flag_set=0; CCR1=Pwm*2-2;void Num9() /按键“9”子程序 if(flag_set=1) flag_ten +=1; if(flag_ten % 2=1) Pwm=9*10+n; m=Pwm/10; n=Pwm%10; Delay(65535);

23、P4OUT = Segm*16+Segn; else Pwm=m*10+9; m=Pwm/10; n=Pwm%10; Delay(65535); P4OUT = Segm*16+Segn; flag_set=0; CCR1=Pwm*2-2;unsigned char scan_key(void) /扫描对应按键的键号P3DIR=0xf0;unsigned char count;unsigned char i,temp,m,n; /m为列的值,n为行的值unsigned int flag=0;for(i=0;i=0) & (scan_key()=15) /P2OUT=scan_key(); scan_key(); P3OUT=0x0f;附录3:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 单元课程

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁