4-12V可调直流稳压电源

更新时间:2023-05-09 10:51:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

四川师范大学成都学院现代通信原理课程设计

4-12V可调直流稳压电源设计

学生:xxx 指导教师:xxx

摘要:稳压电源在实际工程中是一种用途广泛的电子设备。本系统以串联型稳压电路为核心,用ARM Cortex-M3 32位LM3S8962为主控制器,通过调节电位器来调节稳压源的输出电压,再通过运算放大电路隔离采样,由LCD显示输出电压值和输出电流值。本系统还兼顾到了实时监控,具有过压保护功能,排除过压故障后,电源能自动恢复为正常状态。实际测试结果表明,本设计具有优良的精度、稳定性和动态响应,并结合精确的软件控制,实现了电源测量的快速和准确。通过测试,系统能够正常工作,输出电压0~12V,产生的绝对误差均在0~0.1V范围内,能够达到较高精度。

关键词:AC-DC变换稳压电源高效 Cortex-M3

I

四川师范大学成都学院现代通信原理课程设计

Design For 4-12V Adjustable Step DC Stabilized Voltage

Power

Abstract:Stabilized Voltage source in a practical project is a widely used electronic equipment. The Designing for the Series Stabilization Circuit to the core, with the ARM Cortex-M3 32 bit LM3S8962-based controller, by adjusting the Potentiometer wave constant Voltage source output current, and through Operational amplifier circuit isolation sampling,LCD display current value and the actual output Voltage value. Also takes into account the real-time monitoring, with over-voltage protection function, eliminate over-voltage fault, the power supply can automatically restore the normal state. Test results show that the design of the completion of a basic part of good and play some of the requirements. Adjustable Step DC Stabilized Voltage Power with excellent precision, stability and dynamic response, and combined with precise software control, realize the power of the rapid and accurate measurement. Through the test, we find the system can work properly, the output voltage in the range of 0~20V and the absolute error in the range of 0 ~ 0.1V, which means the system can achieve higher accuracy.

Keywords:AC-DC conversion Stabilized Voltage Power efficient Cortex-M3

II

四川师范大学成都学院现代通信原理课程设计

目录

前言 (1)

1 系统设计方案 (1)

2 硬件电路设计 (2)

2.1 系统供电电路设计 (2)

2.2 可调稳压源电路设计 (3)

2.2.1 变压器 (4)

2.2.2 整流桥 (4)

2.2.3 滤波器 (5)

2.2.4 电压调整 (5)

2.2.5 比较放大电路 (6)

2.2.6 参考电压电路 (6)

2.2.7 电压采样 (7)

2.3 控制系统采样电路设计 (7)

2.3.1 控制模块采样电阻、电容的选择 (9)

3系统软件设计 (9)

3.2 AD采样子程序流程图 (9)

4系统测试方案与测试结果 (10)

4.2输出电流测试 (11)

5设计总结 (11)

附录1:单片机采样部分电路原理图 (13)

附录2:稳压电源部分电路原理图 (13)

附录3:程序 (14)

参考文献 (23)

III

四川师范大学成都学院现代通信原理课程设计

4-12V可调直流稳压电源设计

前言

在实验室中直流稳压电源是常用的电子设备。它能确保在电力网交流电压发生波动或负载发生变化时,输出稳定的直流电压,例如我们较为常用的5V、12V、3.3V直流电源。这些电源在实验室中我们用一些“直流稳压电源”(如江苏扬中华高仪器设备有限公司生产的HG63303直流稳压电源)就可容易得到,一个低纹波、高精度的稳压源。然而这种仪器往往价格昂贵,因此为了寻求一种稳定,高效,且价格低廉的稳压直流电源的替代品,我们采用以串联型稳压电路为核心利用深度串联电压负反馈原理来达到稳压目,设计的一款用分立元器件组成的可调直流稳压电源。该电源在实际控制及应用中有很高的实用价值。本设计给出的稳压电源的输出电压范围0—12V,额定工作电流为100mA。并具电压调节功能,此外,还可用LCD1602液晶显示器显示其输出电压值和输出电流值。

1 系统设计方案

本可调直流稳压电源系统控制模块采用TI公司Cortex—M3内核的LM3S8962单片机为控制核心,它是业界领先的高可靠性实时微处理器。Cortex-m3是32位的ARM,处理速度快,能够实现单周期闪存应用最优化,有专门10位的高速高精度ADC,并且在内核中有一个TICK,可以很方便的进行系统加载。电路部分以串联型稳压电路为基础,可通过LCD1602显示数值,然后用ADC采样输入电压计算出接入电路的工作电流值和与之对应的输出电压值。通过调节电位器,控制接入电路的电压值,从而构成了闭环控制系统。通过闭环控制就能够得到可控的稳定电压。最终实现了可调的线性稳压电源。系统结构框图如下所示:

1

四川师范大学成都学院现代通信原理课程设计

2

图1 可调直流稳压电源系统结构框图

本设计的关键在于得到接入电路的可控的稳定电流,得到可控的稳定的电流的关键如下:

◆ 采样回来的输入电压的精度,运用LM3S8962自带的硬件过采样和自写的软件过采样,以牺牲少量的时间来换取精度的方法保证采样回来的电压值准确可靠; ◆ 实时的软件反馈,采用了控制算法,实时检测采样电流,采样电压。建立实时的软件闭环控制

◆ 本设计的稳压直流电源实现了恒电压0.5-12V 稳定输出。

2 硬件电路设计

2.1 系统供电电路设计

系统要求输入三种电压供电:+12V 、-12V 和+3.3V 。其中+12V 为运算放大器的正电源供电,最大电流约为200mA ;-12V 为运算放大器的负电源供电,最大电流不超过15mA , +3.3V 为LM3S8962芯片提供工作电压,电流最大约为50mA 。

系统供电电路原理图如图2.1-1所示,+12V 是由LM7812提供,-12V 是由LM7912提供,考虑到需要使用3.3V 工作电压,因此使用低压差电压调节器LM1117,由于考虑到输出电流较小,故不必选择太大的电容,选择10uF 以上的钽电容来改善瞬态响应和稳定性就可以。这里选择220uF/16v 的电解电容。

四川师范大学成都学院现代通信原理课程设计

3

图2.1-1 系统供电电路

2.2 可调稳压源电路设计

本直流电源由电源、滤波、保护、稳压等四个基本模块组成。电源变压器采用降压变压器,将电网交流电压220V 变换成需要的交流电压。此交流电压,经过整流后,可获得电子设备所需要的直流电压。整流电路利用单相桥式整流电路,把50Hz 的交流电变换为方向不变,但大小仍有脉冲波动的直流电。其优点是电压较高、纹波电压较小,变压器的利用率高。本设计应用整流桥RS808做全桥整流,最大电流可达8A,配合大滤波电容,使得本电源的瞬时大电流的供电特性好、噪声小、反应速度快、输出纹波小。滤波电路采用电容滤波电路,将整流电路输出的脉动成分大部分滤除,得到比较平滑的直流电。电路采用4700μF/50V 的大电容C17。C18 使输出电压更加平滑,电源瞬间特性好,适合带感性负载,如电机的启动。电路图如图2.2-1所示。

四川师范大学成都学院现代通信原理课程设计

4

图2.2-1系统可调稳压源电路

2.2.1 变压器

变压器电路图如图2.2.1-1所示

图2.2.1-1 变压器

变压器的原理图比较简单,但实际设计中变压器是把220V/50MHZ 的交流电转换成16V 交流电输出。

2.2.2 整流桥

整流桥电路图如图2.2.1-2所示

四川师范大学成都学院现代通信原理课程设计

5

图2.2.2-1 整流桥

整流桥将正弦波整流为只有正半周期的电压,频率变为之前的2 倍。

2.2.3 滤波器

滤波电路图如图2.2.3-1所示

图2.2.3-1 滤波器

滤波电路,是用来消除干扰,将输入或输出经过过滤而得到纯净的直流电。对特定频率的频点或该频点以外的频率进行有效滤除的电路,其功能就是得到一个特定频率或消除一个特定频率。

2.2.4 电压调整

电压调整电路图如图2.2.4-1所示

四川师范大学成都学院现代通信原理课程设计

6

图2.2.4-1 电压调整

采用3DA1E/NPN 型大功率三极管,利用三极管的Vce 可变,来控制其分压的大小,保持输出电压不变。

2.2.5 比较放大电路

比较放大电路图如图2.2.5-1所示

图2.2.5-1 比较放大

采用S9013/NPN 型三极管构成反相放大电路,控制电压大于参考电压与Vbe 之和, 三极管工作在放大状态才能起控制作用,控制电压控制Vout 的输出电压大小。

2.2.6 参考电压电路

参考电压电路图如图2.2.6-1所示

四川师范大学成都学院现代通信原理课程设计

7

图2.2.6-1 参考电压

采用德州仪器公司(TI )生产的TL431。它是一个有良好的热稳定性能的三端可调分流基准源。它的输出电压用两个电阻就可以任意的设置到从Verf (2.5V )到36V 范围内的任何值。该器件的典型动态阻抗为0.2Ω,这此设计中应用它代替齐纳二极管。(Verf 即反相放大器的参考电压,参考电压为稳压管的电压)。

2.2.7 电压采样

电压采样电路图如图2.2.7-1所示

图2.2.7-1 电压采样

采样电路采用最简单的电阻分压电路。

2.3 控制系统采样电路设计

四川师范大学成都学院现代通信原理课程设计

A/D检测和测量环节的关键。为了让负载准确工作在不同方式下,设计中对被测电源输出电压以及MOS管的电流进行了实时采样。采样A/D直接用LM3S8962自带的10位精度的逐次逼近A/D,采样精度为3000mv/1024。电压采样电路中,因为被测电源电压范围广,电压高,采样前进行分压,电路如图2.2.2-1所示:

图2.3-1 输入电压采样电路

电流采样电路中,使用高精度的0.05欧的模压电阻为采样电阻将电流转化为电压信号进行电流采样,这样电阻上分压小,并且采样精度高。然后经低噪声,非斩波稳零的OP07两级放大和积分,电路如图2.2.2-2所示

图2.3-2 电流采样电路

8

四川师范大学成都学院现代通信原理课程设计 9 2.3.1 控制模块采样电阻、电容的选择

电流采集通道。由于运放的输入端接的是0.1Ω的小电阻,而LM3S8962内部AD 为10位,最高采样电压为3V ,所以其最小采样电压为2.93mV 。所以运放的输入端电压u i =1mV ,要满足AD 采样的最小电压,则运放的闭环放大倍数A u =2.93/1=2.93。但为了提高电流的稳定度,这里我们取放大倍数为A u =10。取R42=R37=10K ,则R41=A u ×R42=10×10K=100K ,R43=R42//R41≈9.1K 。

由于运放的输入端直接接在负载两端,最大电压u imax =12V ,而AD 采集的最大电压值为3V ,所以这里的放大倍数A u =3/12=0.25。为保证U o =11±0.5V 时能过压保护,这里的放大倍数最大值A u =1.8/10.5≈0.15。留一定余量,我们取放大倍数A u =0.27倍。取R31=R16=1K ,则R15 =A u ×R15=0.15×12=1.5K 。电源滤波电容一般取0.01uF —0.1uF ,这里我们取C25=100nF ,输入滤波电容C16=C17=10nF 。

3 系统软件设计

3.1 系统软件设计流程图

系统主程序流程图如图3.1-1所示。

图3.1-1 主程序流程图

3.2 AD 采样子程序流程图

AD 采样子程序流程图如图3.2-1所示。

四川师范大学成都学院现代通信原理课程设计

10

图3.2-1 AD 采样程序流程图

4 系统测试方案与测试结果

4.1 输出电压测试

◆测试条件:

负载为100K Ω – 1M Ω变化;U i = 10V 。 ◆测试仪器:

UNI-T 万用表 1个;105电位器。 ◆测试方法:

给电压源上电,通过电位器设定输出电压值,改变负载阻值,检测电压源自身检测到实际输出电压值以及通过外部电流表测量的电压值。 ◆数据测试及结果分析:

表4.1-1 输出电压测试

四川师范大学成都学院现代通信原理课程设计

结果分析:

从表4.1-1可以看出,系统电压输出稳定达到稳压目的,满足题目设计要求。

4.2输出电流测试

◆测试条件:

负载为100Ω。

◆测试仪器:

UNI-T 万用表 2个。

◆测试方法:

加负载并给电压源上电,通过调节电位器改变输出电压值,检测通过外部

电流表测量的电压值和电流值。

◆数据测试及结果分析:

表4.2-1 输出电压测试

结果分析:

从表4.2-1可以看出,系统输出电流在要求范围之内,满足题目设计要求。

5设计总结

5.1 心得体会

在设计制作稳压直流电源的过程中,我深切体会到,实践是理论运用的最好检验。本次设计是对我所学知识的一次综合性检测和考验,无论是动手能力还是理论知识运用能力都得到了提高,同时加深了我对网络资源认识,大大提高了查阅资料的能力和效率,使我们有充足的时间投入到电路设计当中。

本系统的研制主要应用到了模拟电子技术、数字电子技术、单片机控制技术、大功率电源设计、电子工艺等多方面的知识,所设计的基于单片机程序控制显示的稳压电源,达到了应用要求。在数据测试和调试方面,由于仪表存在误差,使得测量数据

11

四川师范大学成都学院现代通信原理课程设计

不是很精确,本系统就此通过软件修正,做到尽量减小误差,使输出电压的误差范围减小到±0.03V,大大提高了系统的精度,与理论计算吻合。

5.2 感谢

在本次的课程设计的过程中要感谢我的指导老师xxx老师对我专业知识上的指导和焊接技术上的培训。我还要感谢xxx老师平时对我单片机知识的辅导,并在模拟电子技术上给予的支持。有了平时的积累在课程设计中才能更好的运用!

12

四川师范大学成都学院现代通信原理课程设计 13 附录1:单片机采样部分电路原理图

附录2:稳压电源部分电路原理图

四川师范大学成都学院现代通信原理课程设计

附录3:程序

#include "systemInit.h"

#include "ADC3_liuq.h"

#include "ADC2.h"

/********************************************************************/

void display(void)

{

int ulVal2, ulTmp2;

unsigned long ulVal, ulTmp;

char cBuf2[40];

char cBuf[40];

ADC3_Init();

ADC2_Init();

LCD1602_Init();

while(1)

{

ulVal = ADC3_Sample();

ulTmp = (ulVal * 3000) / 1024 ; // 转换成电流值

ulVal2 = ADC2_Sample();

ulTmp2 = ((ulVal2 * 3000)/1024)*3.52; // 转换成电压值

sprintf(cBuf, "I = %d.%d mA ", ulTmp / 100, ulTmp % 100); // 电流输出格式化

sprintf(cBuf2, "U = %d.%d v ", ulTmp2 / 1000,ulTmp2 % 100); // 电压输出格式化

14

四川师范大学成都学院现代通信原理课程设计

LCD1602_command(0x01); //清零

LCD1602_Write_String(0,1,cBuf);

LCD1602_Write_String(0,0,cBuf2);

SysCtlDelay(TheSysClock/3);

}

}

int main(void)

{

SYSClockInit();

display();

while(1);

}

/********************************************************************/

#include"ADC3_liuq.h"

unsigned long ulValue[1];

/************************************************************************/ void ADC3_Init(void)

{

SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE); //使能adc所在的GPIO端口SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC); // 使能ADC模块

SysCtlADCSpeedSet(SYSCTL_ADCSPEED_125KSPS); // 设置ADC采样速率ADCSequenceDisable(ADC_BASE, 3); // 配置前先禁止采样序列3

ADCSequenceConfigure(ADC_BASE,3,ADC_TRIGGER_PROCESSOR,0);

15

四川师范大学成都学院现代通信原理课程设计

//配置ADC采样序列的触发事件和优先级:ADC基址,采样序列编号,触发事件,采样优先级

ADCSequenceStepConfigure(ADC_BASE,3,0,ADC_CTL_END | ADC_CTL_CH3 | ADC_CTL_IE);

//配置ADC采样序列发生器的步进:ADC基址,采样序列编号,步值,通道设置

ADCIntEnable(ADC_BASE,3); // 使能ADC采样序列3的中断

IntEnable(INT_ADC3); // 使能ADC采样序列3中断

IntMasterEnable(); // 使能处理器中断

ADCSequenceEnable(ADC_BASE,3); //使能一个ADC采样序列3

}

/************************************************************************/ unsigned long ADC3_Sample(void) // ADC采样

{

unsigned long ulValue;

ADCProcessorTrigger(ADC_BASE,3);

// 处理器触发采样序,调用ADCProcessorTrigger( )函数触发ADC采样

while (!ADC_EndFlag1); // 等待采样结束

ADC_EndFlag1 = 0; // 清除ADC采样结束标志

ADCSequenceDataGet(ADC_BASE, 3, &ulValue); // 读取ADC转换结果

return(ulValue);

}

/************************************************************************/ void ADC_Sequence_3_ISR(void) // ADC采样序列3的中断函数

{

unsigned long ulStatus;

ulStatus = ADCIntStatus(ADC_BASE, 3, true); // 读取中断状态

ADCIntClear(ADC_BASE, 3); // 清除中断状态,重要,等待下次AD中断

16

四川师范大学成都学院现代通信原理课程设计

if (ulStatus != 0) // 如果中断状态有效

{

ADC_EndFlag1 = 1; // 置位ADC采样结束标志

}

}

/************************************************************************/ #include"ADC2.h"

unsigned long ulValue2[1];

/************************************************************************/ void ADC2_Init(void)

{

SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE); //使能adc所在的GPIO端口SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC0); // 使能ADC模块

SysCtlADCSpeedSet(SYSCTL_ADCSPEED_125KSPS); // 设置ADC采样速率

ADCSequenceDisable(ADC0_BASE, 2); // 配置前先禁止采样序列2

ADCSequenceConfigure(ADC0_BASE,2,ADC_TRIGGER_PROCESSOR,0);

//配置ADC采样序列的触发事件和优先级:ADC基址,采样序列编号,触发事件,采样优先级

ADCSequenceStepConfigure(ADC0_BASE,2,0,ADC_CTL_END | ADC_CTL_CH2 | ADC_CTL_IE);

//配置ADC采样序列发生器的步进:ADC基址,采样序列编号,步值,通道设置

ADCIntEnable(ADC_BASE,2); // 使能ADC采样序列2的中断

IntEnable(INT_ADC2); // 使能ADC采样序列2中断

IntMasterEnable(); // 使能处理器中断

ADCSequenceEnable(ADC_BASE,2); //使能一个ADC采样序列2

17

四川师范大学成都学院现代通信原理课程设计

}

/************************************************************************/ unsigned long ADC2_Sample(void) // ADC采样

{

unsigned long ulValue2;

ADCProcessorTrigger(ADC0_BASE,2);

// 处理器触发采样序,调用ADCProcessorTrigger( )函数触发ADC采样

while (!ADC_EndFlag2); // 等待采样结束

ADC_EndFlag2 = 0; // 清除ADC采样结束标志

ADCSequenceDataGet(ADC0_BASE, 2, &ulValue2); // 读取ADC转换结果

return(ulValue2);

}

/************************************************************************/ void ADC_Sequence_2_ISR(void) // ADC采样序列2的中断函数

{

unsigned long ulStatus;

ulStatus = ADCIntStatus(ADC0_BASE, 2, true); // 读取中断状态

ADCIntClear(ADC0_BASE, 2); // 清除中断状态,重要,等待下次AD中断

if (ulStatus != 0) // 如果中断状态有效

{

ADC_EndFlag2 = 1; // 置位ADC采样结束标志

}

}

/********************************************************************/

#include"LCD1602.h"

/********************************************************************/ void Delay(unsigned long ulVal)

{

ulVal=TheSysClock / 4000;

18

本文来源:https://www.bwwdw.com/article/0z5e.html

Top