基于FPGA可逆步进直流稳压电源设计与制作.docx

上传人:b****5 文档编号:8870136 上传时间:2023-05-15 格式:DOCX 页数:13 大小:126.28KB
下载 相关 举报
基于FPGA可逆步进直流稳压电源设计与制作.docx_第1页
第1页 / 共13页
基于FPGA可逆步进直流稳压电源设计与制作.docx_第2页
第2页 / 共13页
基于FPGA可逆步进直流稳压电源设计与制作.docx_第3页
第3页 / 共13页
基于FPGA可逆步进直流稳压电源设计与制作.docx_第4页
第4页 / 共13页
基于FPGA可逆步进直流稳压电源设计与制作.docx_第5页
第5页 / 共13页
基于FPGA可逆步进直流稳压电源设计与制作.docx_第6页
第6页 / 共13页
基于FPGA可逆步进直流稳压电源设计与制作.docx_第7页
第7页 / 共13页
基于FPGA可逆步进直流稳压电源设计与制作.docx_第8页
第8页 / 共13页
基于FPGA可逆步进直流稳压电源设计与制作.docx_第9页
第9页 / 共13页
基于FPGA可逆步进直流稳压电源设计与制作.docx_第10页
第10页 / 共13页
基于FPGA可逆步进直流稳压电源设计与制作.docx_第11页
第11页 / 共13页
基于FPGA可逆步进直流稳压电源设计与制作.docx_第12页
第12页 / 共13页
基于FPGA可逆步进直流稳压电源设计与制作.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于FPGA可逆步进直流稳压电源设计与制作.docx

《基于FPGA可逆步进直流稳压电源设计与制作.docx》由会员分享,可在线阅读,更多相关《基于FPGA可逆步进直流稳压电源设计与制作.docx(13页珍藏版)》请在冰点文库上搜索。

基于FPGA可逆步进直流稳压电源设计与制作.docx

基于FPGA可逆步进直流稳压电源设计与制作

基于FPGA可逆步进直流稳压电源设计与制作

系别:

电气工程学院制作人:

李学武指导老师:

付喜锦

摘要:

采用可调式三端稳压器LM317和FPGA应用技术,设计制作了一种程控可调稳压电源。

其主要有控制模块,电源模块,校准和显示模块。

电路简单且稳定,成本低,经济可靠。

关键字:

数码显示LM317FPGA

目录

1.系统方案论证3

1.1控制模块3

1.3可调稳压模块4

1.4键盘控制与数码显示模块4

1.5校准模块4

2.理论分析与计算5

2.1输出电压5

2.2步进设定5

3.电路与程序设计6

4.系统测试7

5.总结7

1.系统方案论证

设计制作在1.5V到15V之间可调,可按键可控,并送数码管显示,由于FPGA较单片机使用方便,而且可以直接利用编程实现D/A和A/D转换,所以这里用FPGA作为主控芯片,由两个按键控制整数部分的加减,另由两个按键控制一位小数部分的加减,由8个数码管作为显示。

系统框图如1.1所示。

1.1控制模块

FPGA采用了逻辑单元阵列,内部包括可配置逻辑模块、输出输入模块IO和内部连线三个部分。

FPGA的逻辑是通过向内部静态存储单元加载编程数据来实现的,存储在存储器单元中的值决定了逻辑单元的逻辑功能以及各模块之间或模块与I/O间的联接方式,并最终决定了FPGA所能实现的功能,FPGA允许无限次的编程。

本设计中利用VHDL语言实现D/A和A/D转换,故方案中就不需要再扩展D/A和A/D转换器件,使系统变得加简单。

1.2电源模块

目前降压电源主要由变压器降压和电容降压,因考虑整个电路工作效率和工作的安全性,我们采用输出交流18V的变压器降压,而且还能将直流电源和交流电网隔离,工作稳定。

整流电路主要作用是把经过变压器降压后的交流电变成直流电。

常见的整流电路主要有全波整流电路、桥式整流电路、倍压整流电路。

本设计选用单相桥式整流电路实现整流功能,选取器材为U8KBA80桥堆。

滤波电路是将整流后得到直流电中的杂波过滤,因为整流后的电流不稳定,幅值周期性变化会影响整个电路的工作,所以用电容滤波得到稳定的直流电。

原理图如图1.2所示。

1.3可调稳压模块

可调稳压模块主要由LM317来实现,317系列稳压块的型号很多:

例如LM317HVH、W317L等。

LM317是一种使用方便、应用广泛的集成稳压块。

我们选用LM317T可调稳压集成电路,原理图1.3如下所示:

通过调节RP的阻值大小实现输出电压可调的稳压电源。

1.4键盘控制与数码显示模块

控制键盘工作,确定电流步进调整。

FPGA的KEY_HANG[3..0]行信号输出端不停地循环“1110”、“1101”、“1011”、“0111”。

当没有按键按下时,可编程器件的KEY_LIE[3..0]列信号输入端检测到的是“1111”。

当有按键按下时,例如按下1键,此时输入端KEY_HANG[3..0]行信号输出为“0111”,即KEY_HANG[3..0]的3管脚为“0”,由电路可以看出,此时输入端KEY_LIE[3..0]检测到的将是“0111”,KEY_LIE[3..0]的3管脚为“0”。

在编写程序时,可以将输出的信号KEY_HANG[3..0]与输入的信号KEY_LIE[3..0]同时判断,像刚才举的例子,可以认为当数据“key_hang&key_lie”为“01110111”时,可以译成数据1。

同理可得其他按键的编码。

本功能由十进制计数器(LS192)、二-十进制译码器(DECODER-410)、数码显示译码器(DISP)实现。

利用十进制计数器(LS192)实现清零加减置数功能。

二-十进制译码器(DECODER-410)将输入BCD码的十个代码译成十个高低电平,控制开关三极管2N5551的导通与截止改变三端稳压器LM317控制端电阻的大小实现输出电压可调功能。

数码显示译码器(DISP)控制实现十个档位的数码管显示。

四个数码管分别显示两位证书部分及一位位小数部分,第一个可以用来显示电压的正负,这里主要是正电压故也可以不用,FPGA对数码管和发光管采用动态扫描,扫描频率的大小保证不出现抖动。

1.5校准模块

在没有误差的情况下,当模块量A为0V时,通过数码管显示的也应该是零,并且模拟量为任意值时输出显示都应该一致,但系统总是存在一定的误差的,故当显示与实际显示数值总存在一个差值,例如当模拟量

时,输出本来应该为

时,却为

,则

,若误差固定,则每次输出前都将

值减去次固定误差再送显示,即当D/A输出为某一定值时,记录这个确定值,再从A/D转换中读入数据,将两次所得的数据相减,保留差值,从而将以后每次读得的A/D数据减去这个固定值,将所得数据显示。

这就是校准的基本思想,具体操作可以在软件设计中用程序来实现。

2.理论分析与计算

2.1输出电压

因为要求输出电压可调,所以选择三端可调式集成稳压器。

LM317系列三端集成稳压器,其输出电压调节范围可达1.5~37V,输出电流可达1.5A以上,内部带有过载保护电路,具有稳压精度高、工作可靠等特点。

由于LM317的2、3脚之间的电压U32为一稳定的基准电压1.25V,故有:

式中,1.25V是集成稳压输出端与调整端之间的固定参考电压UREF;R1取240Ω,调节RP可改变输出电压大小(RP取值视RL和输出电压的大小而确定)。

2.2步进设定

按照设计要求,输出步进为1.5即

,由公式

(式中RW=Ri+R1)当Ri=0时可得出:

R1=48Ω。

将R1=48Ω代入下式

计算得

=288Ω。

通过调节电阻Ri而使LM317稳压块空载时输出的电流大于或等于其最小稳定工作电流,从而保证LM317稳压块在空载时能够稳定地工作。

此时,只要保证Vo/(R1+R2)≥1.5mA,就可以保证LM317稳压块在空载时能够稳定地工作。

上式中的1.5mA为317稳压块的最小稳定工作电流。

当然,只要能保证LM317稳压块在空载时能够稳定地工作,Vo/(R1+R2)的值也可以设定为大于1.5mA的任意值。

可以通过设定R1和R2阻值的大小,本设计的核心是利用可调电阻网络代替R2,其电阻网络如图2.1所示。

3.电路与程序设计

3.1程序设计

数控式可逆步进调压直流稳压程序设计由三部分组成:

十进制计数器(LS192);二-十进制译码器(DECODER-410);码显示译码器(DISP)实现。

如图3.1所示。

十进制计数器(LS192):

实现清零、加、减、置数。

RES高电位清零;ADD是计数脉冲,A=1时ADD是加计数脉冲,A=0时ADD是减数计数脉冲;SET是置数控制端,SET=1时置数,将输入CIN[3…0]送到输出COUT[3…0]。

因此,ADD计数脉冲可以控制档位的增减,CIN[3…0]可以直接控制档位,CIN[3…0]是几,档位就是几。

二-十进制译码器(DECODER-410):

是将输入BCD码的10个代码译成10个高、低电平,控制三极管的导通,得到10个档的直流电压。

3.2电路设计

本电路采用三端集成稳压电路方案,电路分为压降电路、整流电路、滤波电路和稳压电路四大部分。

当电路输入220V交流电时经变压器降压然后整流得到20V直流电,再用电容滤波用LM317稳压后输出,稳压输出电压通过FPGA控制三极管Q0~Q9通断改变接入电阻大小实现可调功能,电路原理图如图3.2所示。

4.系统测试

测试仪器:

数字万用表、滑线变阻器(200Ω)、电流表(量程为10A)、FPGA开发板。

测试步骤:

1.FPGA开发板测试:

连接电源线,分别测试加减计数、置数和清零功能。

2.输出电压测试:

接入负载R=510Ω,用键盘控制10个档位逐次测量输出电压,重复测量三次求出平均值并记录,测试结果如表4-1所示。

表4-1输出电压测试表

档位

1

2

3

4

5

6

7

8

9

10

理论

电压(V)

1.50

3.00

4.50

6.00

7.50

9.00

10.50

12.00

13.50

15.00

数码管显示

电压(V)

1.50

3.01

4.52

6.02

7.53

9.01

10.53

12.05

13.54

15.03

误差

0.0

0.33%

0.44%

0.33%

0.40%

0.11%

0.28%

0.42%

0.29%

0.20%

3.校准测试:

将第2步得到的步进相减,差值即为校准固定值。

若这个固定值不变说明校准成功。

2带负载能力测试:

用200Ω滑线变阻器替换510Ω电阻,使用10档输出15V电压为基准电压,改变滑线变阻器阻值(200Ω~50Ω)测量输出电压,测试结果如表4—21所示。

表4-2带负载能力测试表

负载(Ω)

200

175

150

125

120

105

85

70

65

50

输出电压(V)

15.03

15.00

14.98

14.94

14.95

14.92

14.90

14.90

14.89

14.88

5.总结

本系统以LM317为核心,优点在于利用FPGA控制使用方便,电路大部分器件价格便宜实惠。

利用FPGA控制三极管通断改变接入电阻阻值大小实现十个档位输出电压可调,设置电压为1.5V的步进,输出电压范围1.5~15V可调,还有清零、加、减、置数。

经测试输出直流电压和步进值基本达到题目要求。

但是该电源带负载能力差,当负载阻值很小时,输出电压变化较大,分析误差主要是由变压器功率低造成的,由于条件限制没有大功率变压器,所以为了提高电路稳定输出可选用大功率、高稳定性的变压器。

该装置电路结构简单,程序要求低,操作简单、方便和直观。

 

[参考文献]

[1]周雪.电子技术基础.北京电子工业出版社.2004.

[2]郑应光.模拟电子线路

(一).南京东南大学出版社.2004.

[3]周良权.模拟电子技术基础.北京高等教育出版社.2001.

[4]骆雅琴.电子技术辅导与实习教程.合肥中国科学技术大学出版社.2004.

[5]王增福、魏永明.线性直流稳压电源.北京电子工业大学出版设.2005

附录

程序:

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entityls192is

port(res,add,set,a:

instd_logic;

cin:

instd_logic_vector(3downto0);

cout:

outstd_logic_vector(3downto0));

endentityls192;

architecturertlofls192is

signalq:

std_logic_vector(3downto0);

begin

process(res,add)

begin

ifres='0'then

q<="0000";

elsifset='1'then

q<=cin;

elsif(add'eventandadd='1')then

ifa='1'then

if(q=9)then

q<="1001";

else

q<=q+1;

endif;

elsifa='0'then

if(q=0)then

q<="0000";

else

q<=q-1;

endif;

endif;

endif;

endprocess;

cout<=q;

endrtl;

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entitydecoder_410is

port(d:

instd_logic_vector(3downto0);

q:

outstd_logic_vector(9downto0));

enddecoder_410;

architecturertlofdecoder_410is

begin

process(d)

begin

casedis

when"0000"=>q<="1000000000";

when"0001"=>q<="0000000001";

when"0010"=>q<="0000000010";

when"0011"=>q<="0000000100";

when"0100"=>q<="0000001000";

when"0101"=>q<="0000010000";

when"0110"=>q<="0000100000";

when"0111"=>q<="0001000000";

when"1000"=>q<="0010000000";

when"1001"=>q<="0100000000";

whenothers=>q<="0000000000";

endcase;

endprocess;

endrtl;

libraryieee;

useieee.std_logic_1164.all;

entitydispis

port(d:

instd_logic_vector(3downto0);

O:

outstd_logic_vector(6downto0));

enddisp;

architecturertlofdispis

begin

process(d)

begin

casedis

when"0000"=>o<="0111111";

when"0001"=>o<="0000110";

when"0010"=>o<="1011011";

when"0011"=>o<="1001111";

when"0100"=>o<="1100110";

when"0101"=>o<="1101101";

when"0110"=>o<="1111101";

when"0111"=>o<="0000111";

when"1000"=>o<="1111111";

whenothers=>o<="1101111";

endcase;

endprocess;

endrtl;

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entitybujingis

port(res,set,add,a:

instd_logic;

cin:

instd_logic_vector(3downto0);

q:

outstd_logic_vector(9downto0);

o:

outstd_logic_vector(6downto0));

endbujing;

architectureoneofbujingis

signalm:

std_logic_vector(3downto0);

componentls192

port(res,add,set,a:

instd_logic;

cin:

instd_logic_vector(3downto0);

cout:

outstd_logic_vector(3downto0));

endcomponentls192;

componentdecoder_410

port(d:

instd_logic_vector(3downto0);

q:

outstd_logic_vector(9downto0));

endcomponentdecoder_410;

componentdisp

port(d:

instd_logic_vector(3downto0);

O:

outstd_logic_vector(6downto0));

endcomponentdisp;

begin

u1:

ls192portmap(res=>res,add=>add,set=>set,a=>a,cin=>cin,cout=>m);

u2:

decoder_410portmap(d=>m,q=>q);

u3:

dispportmap(d=>m,o=>o);

endone;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2