基于MCU的数控直流稳压电源设计
摘要:本作品的工作方式是以C8051F020单片机为控制核心,外接串联型稳压电路,从而得到可调的数控直流稳压电源,调节范围为3V-9V,额定电流为500mA。通过单片机可以设置想要输出的电压值,电压值范围为3V-9V,分辨率为0.1V,通过DAC输送到电路板中,同时通过电压采样和电流采样,并设计相应的反馈又输送到单片ADC的两个通道中,最后将结果显示在数码管上。其中电流采样采用高边侧测量采样,通过使用INA282芯片实现。高边侧采样具有精度高,噪声影响小等优点,使采样更加精确;电压采样通过同比例分压电阻两端电压得到。系统的显示分辨率为1mA,输出电流范围为0-500mA,精度为±(2%读数+2个字),电压调整率≤0.2%,电流调整率≤1%,纹波电压(峰-峰值)≤10mV。系统采用普通三极管9013和1.4Ω的电阻构成保护电路,使得最大动作电流不超过600mA,具有过流保护功能。整个系统工作可靠,稳定,成本低且效率高。
关键词:C8051F020单片机 数控直流稳压电源 过流保护
1.1设计任务
设计并制作有一定输出电压调节范围和功能的数控直流稳压电源。
1.2基本要求
1.输出直流电压调节范围+3V~+9V。
2.最大输出电流为500mA。
3.键设定输出电压值,分辨率为0.1V。
4.显示稳压电源实际输出电压值,要求精度为±(0.5%读数+2个字)。
5.实时采样并显示输出电流,显示分辨率为1mA,要求精度为±(2%读数+2个字)。
6.电压调整率≤0.2%(输入电压变化范围-10%~+10%下)。
7.电流调整率≤1%。
8.纹波电压(峰-峰值)≤10mV(额定输入电压下,满载)。
9.具有过流保护功能;动作电流不大于600 mA。(动作电流为输出电压下降5%时,对应的输出电流值)
10.要求一路单电源供电(单片机电路允许另接电源)
- 系统整体设计方案
数控稳压电源的系统整体框图如图一。系统功能介绍如下:先根据模拟电路中具有放大环节的串联型稳压电路制作出稳压电路模块,通过电流采集电路和电压采集电路给单片机一个AD信号,再根据电路中的电阻比例设计单片机程序,使得单片机的DA输出一定范围的电压,再由稳压电路经过放大得到+3~+9V电压范围。单片机再讲采集到的电压与电流通过一定的计算显示到LED中。
图1 数控电源原理框图
系统单元电路部分
3.1 具有放大环节的串联型稳压电路设计
稳压电路较常用的串联型线性稳压电路具有结构简单、调节方便、输出电压稳定性强、纹波电压小等优点,其原理图如图2所示。输入电压为整流滤波电路的输出电压。
稳压电路的输出电压为:
(1)
由上式可知输出电压与基准电压为线性关系,当改变Uz的大小,则输出电压也将发生变化。
串联型稳压电路参见图2,其中调整管是核心元件,它的安全工作是电路正常工作的保证,它的选用主要考虑其极限参数ICM,U(BR)CEO和PCM。调整管极限参数的确定,必须考虑到输入电压UI由于电网电压波动而产生的变化,以及输出电压的调节和负载电流的变化所产生的影响。
串联型稳压电路设计图如下
图3 串联型稳压电路设计图
由图可知,调整管的发射极电流IE等于采样电阻R1中电流和负载电流IL之和,即IE=IR1+IL,调整管的管压降UCE等于输入电压UI与输出电压UO之差,即UCE=UI-UO。显然,当负载电流最大时,流过调整管发射极的电流最大,即IEmax=IR1+Ilmax。通常,R1电阻上电流可以忽略,且IEmax≈ICmax,所以调整管集电极最大电流为:
ICmax≈IEmax (2)
当电网电压最高,即输入电压最高同时输出电压最低时,调整管承受的管压降最大,即
UCEmax=UImax-UOmin (3)
当晶体管的集电极电流最大,且调整管承受的管压降最大时,调整管的功率最大,即
Pcmax= ICmax UCEmax (4)
由以上几式即可确定调整管的极限参数。实际选用时,还要考虑留一定的余量。
图4稳压电源性能指标测试电路
串联型稳压电路参见图4,其中调整管是核心元件,它的安全工作是电路正常工作的保证因为输出范围为+3V到+9V,说明调整管两端的电压至少是6V,因为额定电流是0.5A,所以得到功率至少是3W以上,因此选择中功率三极管,根据实验室储备,因此选择BD681。查询数据手册得:BD681的U(CES)=2.5V
电路参数计算:
- 输入电压:
因为考虑到实际电网电压有10%的上下波动,当电压为11.1V时无法达到额定电流0.5A,因此额定输入电压为15V
- 过流保护电阻R0的选取
限流电阻和采样电阻计算:因为当过流时,要使R6上的电压是T1导通。并且T1上的功率为 ,由数据手册得,2N9013的额定功率是0.625W,所以选择2N9013.
限流保护电阻R0:R0=Ubce/Imax=1.4Ω。
因为实验室没有1.4Ω的电阻,所以选择3Ω、5.1Ω、5.1Ω三个电阻并联。
- 分压电阻的选择:
输出电压的公式:Uo=(1+R1/R2)Uz,因为DAC输出的电压最大不能超过2.4V,而且保证精确率,并且要使支路上的电流近似为0,需要采用较大电阻,为了使单片机的输出电压利用效率高,分压电阻的分压比选取为4,即放大倍数为5,为了不影响精度,使电流足够小,则分压电阻选取为3kΩ和12kΩ。
所以单片机输出电压范围为0.6—1.8V。
(4) 电流采样电阻:
电流采样电阻希望是电阻较小,这样上面的压降就比较少,系统采用噪声较小的高边侧采样,使用INA282进行采样。使用两个参考电压接地。因为INA282的输出不能大于2.4V,采样电压的值最好在2/3*基准电压≈1.8V,芯片拥有大约50倍的增益。所以合适的电阻为R≈0.1Ω。
(5)电压采样电阻:
要保证该支路电流较小,所以需要采用大电阻,采用3k和8.2k。
根据稳压电路的放大倍数,设定输出电压范围为0.6——1.8V
- 程序设计原理框图
- 测试数据
表1 电压显示 |
||||||
单片机设定(V) |
显示(V)(空载) |
实际(V) |
显示(V)(满载) |
实际(V) |
误差(空载) |
误差(满载) |
3.0 |
3.01 |
2.996 |
2.97 |
2.965 |
0.47% |
0.17% |
4.5 |
4.51 |
4.493 |
4.48 |
4.462 |
0.38% |
0.40% |
5.0 |
5.01 |
4.991 |
4.98 |
4.958 |
0.38% |
0.44% |
6.0 |
6.01 |
5.988 |
5.98 |
5.956 |
0.37% |
0.40% |
7.5 |
7.52 |
7.483 |
7.48 |
7.444 |
0.49% |
0.48% |
8.0 |
8.02 |
7.980 |
7.98 |
7.945 |
0.50% |
0.44% |
9.0 |
.02 |
8.977 |
8.99 |
8.943 |
0.48% |
0.52% |
说明:按键设定输出电压值,分辨率为0.1V。显示稳压电源实际输出电压值,精度在合理范围内。
表2 电压调整率 (满载) |
||||||
单片机设定(V) |
输入13V |
输入14V |
输入15V |
输入16V |
输入17V |
调整率 |
3.00 |
2.963 |
2.963 |
2.963 |
2.963 |
2.964 |
0.03% |
5.00 |
4.956 |
4.956 |
4.956 |
4.956 |
4.956 |
0.00% |
6.50 |
6.445 |
6.454 |
6.450 |
6.450 |
6.450 |
0.08% |
8.00 |
7.942 |
7.943 |
7.943 |
7.942 |
7.943 |
0.01% |
9.00 |
8.942 |
8.942 |
8.943 |
8.941 |
8.942 |
0.02% |
说明:由表可得,在电压上下波动10%时,电压调整率误差在合理范围内,符合项目设计要求。
表3 电流精度 |
||||
输入电压15V |
设定电压 (V) |
显示输出电流(mA) |
测量值(mA) |
误差 |
3V |
30 |
30 |
0.00% |
|
82 |
83 |
-1.22% |
||
5V |
93 |
90 |
3.23% |
|
337 |
335 |
0.59% |
||
6V |
45 |
45 |
0.00% |
|
195 |
194 |
0.51% |
||
7V |
339 |
336 |
0.88% |
|
447 |
445 |
0.45% |
||
8V |
153 |
152 |
0.65% |
|
540 |
542 |
-0.37% |
||
9V |
110 |
107 |
2.73% |
|
371 |
369 |
0.54% |
说明:电流范围测试将电流从满载到小进行测试,读出电子负载上电流值和单片机显示的电流值,在进行误差分析,误差分析公式为|单片机显示-电子负载显示|/电子负载显示*100%。项目要求精度为2%,由表可知,误差在允许范围内。电流调整率的计算方式为|满载的电压值-空载时的电压值|/满载时的电压值,项目指标为小于1%,由表可得,电流调整率小于1%,结果正确。
表4 过流保护 |
||
设定电压 (V) |
实际输出电压 (V) |
动作电流 (mA) |
3.0 |
2.97 |
525.00 |
4.5 |
4.48 |
552.00 |
6.0 |
5.95 |
549.00 |
7.5 |
7.43 |
519.00 |
9.0 |
8.94 |
571.00 |
说明:动作电流是指输出电压减小为95%时的输出的电流大小。本次设计的指标要求是动作电流要小于600mA。测量方式为先调成CC模式,把电流调成满载,用高精度万用表测出电压值,然后把电子负载转至CV模式,把电压调成电压值的95%,读出此时的电流值。由表可知,符合要求。
由图可知,动作电流小于600mA。
测试结论
本次项目的要求是制作一个输出电压范围(3-9V)可调节和最大输出电流500mA的数控直流稳压电源。本次实验采用单片机按键输入设定电压值,然后通过DAC输送到外部稳压电路,并且通过电流和电压采样,反馈回单片机上,并且将最后结果显示在数码管上。经过对上述测量结果的分析可知本次设计已经达到了设计的要求。可以做到由单片机进行键控的电压输入,改变输入的电压值,且输出电压的误差都控制在误差范围以内。该数控直流稳压电源具有过流保护功能,电压和电流调整率都较小。
附录
单片机代码
#include <C8051F020.H>
#include<ZLG7289.c>
unsigned char count=1;
unsigned int HZ=0;
unsigned int gewei,shiwei;
unsigned long value1,value2,voltage=0,current=0;void delay(unsigned int k) //定义延时函数
{unsigned int i,j;for(i=0;i<k;i++)for(j=0;j<12670;j++);
}void key_input(void) interrupt 19 //外部(按键)中断
{count=ZLG7289_Key();switch(count){case 0:HZ=0;gewei=0;shiwei=0;break;case 1:if(gewei==9) {gewei=0;shiwei++;} else gewei++;if(shiwei>=9&&gewei>=0) {shiwei=0;gewei=0;}break;case 2:if((shiwei>=9&&gewei>=0)||shiwei==9) {shiwei=0;gewei=0;}else shiwei++;break; //数值显示}HZ=gewei+shiwei*10; DAC0L=(HZ*48545/90)%256;DAC0H=(HZ*48545/90)/256; //DAC输出ZLG7289_Download(0,0,1,HZ/10); //DAC输出显示ZLG7289_Download(0,1,0,(HZ)%10);P3IF&=0x7f;
}void Volt_Mesure() //电压采集{unsigned int i;value1=0; AMX0SL=0x01; //AIN1为电压输入for(i=0;i<200;i++){AD0INT=0; //中断手动清零AD0BUSY=1; //开启ADC0while(AD0INT==0); value1+=ADC0H*256+ADC0L; //值累加 ADC0H=0;ADC0L=0; }value1=value1/200; //电压平均值voltage=24.8*value1*51/4096;ZLG7289_Download(0,2,1,voltage/100);ZLG7289_Download(0,3,0,(voltage/10)%10);ZLG7289_Download(0,4,0,voltage%10);//采样电压的显示delay(10);
}void Current_Mesure() //电流采集{unsigned int i;value2=0; AMX0SL=0x03; //AIN3输入for(i=0;i<200;i++){AD0INT=0; //中断手动清零AD0BUSY=1; //开启ADC0while(AD0INT==0);value2+=ADC0H*256+ADC0L; //值累加ADC0H=0;ADC0L=0; }value2=value2/200; //平均值current=2.4*value2*1000/(3*4096);delay(10);ZLG7289_Download(0,5,0,current/100);ZLG7289_Download(0,6,0,(current/10)%10);ZLG7289_Download(0,7,0,current%10); //采样电流的显示 delay(10); }void main() //定义主函数
{unsigned int i,j;WDTCN=0XDE; //关闭看门狗WDTCN=0XAD; OSCXCN=0x77; //系统时钟切换为外部24Mhzdelay(10);while(OSCXCN&0x80==0);OSCICN|=0x88;XBR2=0X40; //端口配置P3MDOUT=0x00; P3=0xFF; P3IF&=0xf7; //中断配置EIP2=0x20;EIE2|=0x21;EA=1;REF0CN=0X03; //DAC配置DAC0CN=0x87; //基准电压2.4vADC0CF=0x58; //ADC0转换周期为1MhzADC0CN=0x80;AMX0CF=0x08;AD0EN=1; //使能ADC0AD0TM=0; //除转化周期外,一直处于跟踪方式AD0CM1=0; //向AD0BUSY写1启动转换AD0CM0=0; AD0LJST=0; //ADC0H:ADC0L 右对齐delay(20);ZLG7289_Init(80); //ZLG初始化ZLG7289_Reset();ZLG7289_Download(0,0,1,0);ZLG7289_Download(0,1,0,0);while(1){Volt_Mesure(); Current_Mesure();j=HZ*10; //反馈模块if((HZ*10)>voltage) j++;else if((HZ*10)<voltage) j--;if((HZ*10)==0) j=0;DAC0L=(j*48545/900)%256;DAC0H=(j*48545/900)/256;Volt_Mesure(); Current_Mesure();delay(10);}}
成果照片
基于MCU的数控直流稳压电源设计相关推荐
- STC15数控直流稳压电源设计
本科学生单片机课程设计报告 题 目 数控直流稳压电源设计 院 (系)工程与设计学院 专业.年级 电子信息工程 2019级 课程 ...
- 基于单片机的多路输出数控直流稳压电源设计与实现
本次设计中数控稳压电源的设计要求如下: (1)数控稳压电源系统输入电压为15V,输出0-12V,最大输出电流为2A: (2)输出电压纹波不大于200mV: (3)可对输出电压进行预置:可对输出电压进行 ...
- 基于单片机的数控直流电流源设计
文末下载完整资料 摘要: 本设计由三个部分组成,键盘与显示,基于单片机的控制器,稳流电源.以89C52为主控单元,以数模转换器DAC0832输出参考电压,以该参 ...
- 基于stm32的数控线性稳压电源,恒压恒流电源资料
基于stm32的数控线性稳压电源,恒压恒流电源资料. 极具学习和设计参考价值,已验证,可做实物,送资料,此价格仅为资料,资料包括源程序,原理图,pcb等设计资料 本设计采用220V市电输入工频变压器, ...
- 基于STM32的数控精密恒流源设计
目录 一.项目要求 二.方案设计 三.原理图 四.硬件电路介绍 五.实物照片 六.程序 七.资料清单 资料下载地址:基于STM32的数控精密恒流源设计 一.项目要求 (1)恒流源输入电压10~28V. ...
- multism中ui和uo应该怎么表示_基于multism的串联型直流稳压电源设计与仿真
图(5)串联型直流稳压电源电路图 直流稳压电源由电源变压器.整流.滤波和稳压电路四部分组成,其原理框图如 图(1)所示.电网供给的交流电压U 1 (220V,50Hz) 经电源变压器降压后,得到符合 ...
- 集成直流稳压电源设计报告_线性直流稳压电源结构,线性直流电源技术指标
一.线性直流稳压电源结构分为:整流电路,电源变压器,滤波电路和稳压电路 1.电力变压器 电力变压器是一种软磁电磁元件,其功能是能量传递,电压转换和绝缘隔离.它广泛用于电源技术和电力电子. 2.整流电路 ...
- 稳压电源的设计与制作_直流稳压电源设计
设计目的及任务 设计目的:掌握直流稳压电源结构和工作原理, 熟悉常用三端稳压芯片的特性. 设计任务:设计一个交流输入双15V,直流输出 +5V.+12V.-12V的线性直流稳压电源. 功能指标:输出纹 ...
- 基于单片机小功率数控直流稳压电源仿真设计
1.设计要求: (1) 输入电压:AC220V±10%,频率50Hz: (2) 输出电压/电流:DC 0~15V可调,最大输出电流2A,但也不能是毫安级别: (3) 输出纹波电压:≤±0.1V. 具体 ...
- 42、基于51单片机数控电源稳压电源电压数码管显示系统设计
摘 要 在各种电子实验中,电源是最基本的需要.设计出一种高精度的可调输出的电源不但能满足不同电子实验的要求,而且能满足在同一实验中需要使用不同的电压值来测试的要求. 本文设计了一种高精度程控稳压电源. ...
最新文章
- 模型可解释性技术概览
- Linux Systemcall Int0x80方式、Sysenter/Sysexit Difference Comparation
- 数据结构与算法之栈入门题目
- python自动炒股软件下载_python自动股票交易软件
- spring 4.0 JUnit简单的Dao,Service测试
- python算法的基本原理_kNN算法基本原理与Python代码实践
- Python3利用pymysql操作 MySQL
- Oracle中如何判断字符串是否全为数字
- 基于frp实现将安卓手机变成代理服务器
- matlab 三角函数积分,正弦函数与三角函数积分及Matlab编程.doc
- 北京地铁21号线_对接台湖地区 北京地铁17号线2022年试运营
- shader篇-程序纹理
- linux网卡配置没生效,linux上网络配置不生效的解决办法
- Altium Designer——原理图中元件属性description、designator和comment的意义
- 大天使之剑服务器维修公告,大天使之剑————【维护】6月12日更新维护公告...
- 根据TXT文件中的文件名复制文件
- reverse()的使用
- SSM三大框架整合(Spring+SpringMVC+MyBatis)
- 【兄弟反目成仇系列】:我只是写了一个爆炸信息窗口脚本,好兄弟追了我几条街~
- 国家一级学会创办的期刊