电子设计报告

时间:2024.4.13

电子技术基础

题目名称:数控直流恒流源的设计

  指导教师:    汪金刚           

  学生班级:    电气7          

      号:    20134099         

  学生姓名:    李骄阳        

  评语:

          成绩:

 重庆大学电气工程学院

 2015年7月3日


目录

  

1、设计任务................................................................................................................... 4

2、设计方案................................................................................................................... 5

2.1功能分解及设计思路...................................................................................... 6

2.2 各模块设计..................................................................................................... 7

2.2.1 单片机处理模块................................................................................... 7

2.2.2 液晶显示模块....................................................................................... 8

2.2.3 D/A转换模块........................................................................................ 8

2.2.4 独立按键模块....................................................................................... 8

2.2.5 压控恒流源模块................................................................................... 9

2.3 总体设计电路.......................................................................................... 9

3、程序设计................................................................................................................. 10

4、总结......................................................................................................................... 11

4.1 电路的优缺点............................................................................................... 11

4.2课题的核心及价值...................................................................................... 11

4.3改进意见和展望........................................................................................... 11

5、收获与体会............................................................................................................. 12

6、参考文献................................................................................................................. 12

附录:单片机程序....................................................................................................... 13


数控直流恒流源的设计

摘要

    本小组经历构思、修改、设计、仿真、调试的过程,实现了数控直流恒流源的构建。该系统通过51单片机、AD5320模块、LCD1602液晶屏、OP-07运算放大器、IRF640场效应管等原件的集成,以单片机AT89S52为核心,加以外围DA转换电路和恒流源电路,实现了数控直流恒流源的基本要求。该系统的基本功能如下:1、通过按键精确控制输出电流大小,范围200mA-2000mA 2、具有1mA、10 mA、100 mA三种步进电流值3、将设定电流显示在液晶屏上以供参考4、预先设定电流值,使恒流源直接输出给定电流。

关键字:单片机,恒流源,DAC,数控电路设计


1、设计任务

  设计并制作数控直流电流源。输入交流200~240V,50Hz;输出直流电压≤10V。其原理示意图如下所示。

技术指标

(1)输出电流范围:200mA~2000mA;

(2)可设置并显示输出电流给定值,要求输出电流与给定值偏差的绝对
     值≤给定值的1%+10 mA;

(3)具有“+”、“-”步进调整功能,步进≤10mA;

 (4)改变负载电阻,输出电压在10V以内变化时,要求输出电流变化的
     绝对值≤输出电流值的1%+10 mA;

 (5)纹波电流≤2mA;

 (6)自制电源。


2、设计方案

2.1功能分解及设计思路

本数控直流恒流源的设计方案要实现的主要功能主要分解为以下三个方面:

(1)输出给定范围内恒流电流,且输出电流不随负载变化。

(2)设置并显示输出电流给定值。

(3)具有输出电流步进调整功能。

    以上功能的实现,都是以单片机为核心,在单片机系统实现的输入输出和显示功能的基础上,由单片机的内置逻辑和运算功能,加上一定的外围电路得以实现。

    针对以上的三个功能,采用模块化的设计思想,我们的整体系统由单片机处理模块、D/A转换模块、LCD1602显示模块、恒流源模块等模块组成,以实现给定功能。总体框架如下图。

下面分别叙述这些模块。

2.2 各模块设计

2.2.1 单片机处理模块

本方案使用了AT89S52单片机,其具有如下功能:

       1、拥有灵巧的8位CPU和在系统可编程Flash 

       2、晶片内部具时钟振荡器(传统最高工作频率可至 12MHz)

       3、内部程序存储器(ROM)为 8KB

       4、内部数据存储器(RAM)为 256字节

       5、32 个可编程I/O 口线

       6、8 个中断向量源 

       7、三个 16 位定时器/计数器

       8、三级加密程序存储器

       9、全双工UART串行通道

其功耗低、性能高、功能丰富、性价比高,完全满足方案实现的需要。其最小电路如上图表示。

2.2.2 液晶显示模块

本设计采用LCD1602作为设定电流的显示,其优点是显示清晰、省电、使用方便。LCD使用了单片机P0端口,其属于漏极开路输出,为提供显示所需电压,采用了1K排阻作为其上拉电阻。

2.2.3 D/A转换模块

 

由于要求输出步进值为1mA的电流,本设计采用了12位串行DA芯片AD5320,将设定电流的数字信号值通过D/A转换变为电压值,以便后续恒流电路使用。

2.2.4 独立按键模块

本设计使用了9个独立按键,实现恢复、步进、设置、确认等功能,以设定及改变输出电流值。

2.2.5 压控恒流源模块

  压控恒流源是系统的重要组成部分,它的功能是用电压来控制电流的变化,由于系统对输出电流大小和精度的要求比较高,所以选好压控恒流源电路显得特别重要。

    本设计使用高精度运放OP-27(或OP-07)作为电压跟随器,运放输入端连接D/A模块输出端,配合大功率三极管IRF640,通过控制运放输入电压大小,进而利用场效应管的特性控制电流,实现了2A电流恒流功能。

    电路中电阻R3为1Ω采样电阻R3,RL 为负载电阻,R2为限流电阻。

2.3 总体设计电路

3、程序设计

本设计使用的单片机程序通过C51语言进行编写, 程序流程图如下:


具体程序见附录。

4总结

4.1 电路的优缺点

本设计能够较为圆满地实现数控恒流电源,操作者只需要按下相应按键即可进行电流设定修改等操作;采用了液晶显示屏,显示效果清晰直观;使用12位DA芯片,实现了1mA步进,能够精确调节电流;使用了单片机进行设计,电路结构简单直观。

但是,一些细节可能存在缺陷,例如大电流通过元件产生的热效应,可能会使电阻值不稳定,恒流不精确。

4.2课题的核心及价值

本课题主要研究的是基于单片机的数控直流恒流源的设计,恒流源是能够向负载提供恒定电流的电源,因此恒流源的应用范围非常广泛,并且在许多情况下是必不可少的。例如在用通常的充电器对蓄电池充电时,随着蓄电池端电压的逐渐升高,充电电流就会逐渐减少。为了保证恒流源充电,必须随时提高充电器的输出电压,但采用恒流源充电后就可以不必调整其输出电压,从而使劳动力降低,生产效率得到提高。恒流源还被广泛用于测量电路中,例如电阻器阻值的测量与分级,电缆电阻的测量等,且电流越稳定测量越准确。它既可以为各种放大电路提供偏流以稳定静态工作点又可以作为其有源负载。以提高放大倍数,并且在差动放大电路,脉冲产生电路中得到广泛运用。除此以外线性扫描锯齿波的获得,有线通信远供电源,电泳,电解,电镀等化学加工装置电源,电子束加工机,离子注入机等电子光学设备中的供电源也都必须应用恒流源。

4.3改进意见和展望

本次实验因为要求中并未设计到要用AD和反馈机制,为简化实验设计,我们就没有那部分,如果说要改进的话,我们觉得那部分是最值得添加的。因为AD转换器将采样电阻上的电压转换成数字信号反馈给单片机,单片机可将此反馈信号与预置值比较,根据两者间的差值调整输出信号大小,从而形成反馈调节,提高输出电流的精度。


5、收获与体会

通过这次电子设计,加深了对课程概念的理解,扩展了知识面。在电子方面,我熟悉了常用电子器件类别,如电容、电阻、二极管等型号、规格、性能、使用范围及基本测试方法。

本实验实现的功能比较少,但要求用单片机,而我们并没有学习单片机,虽然队友因为电子竞赛对单片机有一定了解,但还是遇到了不少麻烦,通过查看资料,各种改进,才得到了最后的仿真图。因为我对单片机并不是很了解,所以基本都是按照队友思路走的,所以我俩基本没有分歧。我们从一开始就分模块进行设计,同时也在将不同的功能模块连入主电路,通过在网上搜索近似电路、 查找元器件功能表,用proteus对各分块电路进行仿真,一个一个突破问题,保证分支部分不出错误,最后,我们不断修正电路中出现的一些小错误和不完美的地方,设计出较为稳定的恒流源。

通过这次实践认识到了自己的不足,也锻炼了自己解决问题和善于思考的能力,更加深刻理解了每个元器件的功能。有些设计理论上可行,但是仿真出来的结果并非如此,真正的电子设计是需要我掌握每一个细节的,而并非像考试那样做对一部分就能得一部分的分,而是需要一种全局的、整体的观念来处理问题,所以,设计电路需要尽心,不能得过且过。理论联系实践,并在实践中检验理论才是学习的最高层次。

本来这次焊接比较简单,但由于实验室没有相应的元器件,我们自行在淘宝上购买的元器件有一些问题,导致焊接十分复杂,就没有焊接了,希望老师谅解。

6、参考文献

【1】唐治德.数字电子技术基础[M].1.北京科学出版社.2009

【2】夏鸣风.数字电子技术实验[M].1.重庆电气工程学院.20##-2

【3】孔超、张玮.51单片机典型应用开发.1.中国铁道出版社.20##-5


附录:单片机程序

#include<reg52.h>

#include<intrins.h>

#define uint unsigned int

#define uchar unsigned char

sbit reset=P1^0;   //按键

sbit plus1=P1^1;

sbit minus1=P1^2;

sbit plus10=P1^3;

sbit minus10=P1^4;

sbit plus100=P3^2;

sbit minus100=P3^3;

sbit set=P1^5;

sbit confirm=P1^6;     

sbit lcdrs=P2^3;   //LCD1602

sbit lcde=P2^4;

sbit dasync=P2^0;  //DA转换

sbit dasclk=P2^1;

sbit dadin=P2^2;

uchar code dis1[] = {" SET         mA "};

uchar number[4];

uint q; //加减步进值

uint adata,data1;   //DA转换值,设定电流值

/************************延时1ms******************************/

void delay(uint z)

{

       uint x,y;

       for(x=z;x>0;x--)

              for(y=110;y>0;y--);

}

        

/************************D/A转换******************************/      

void da_conver(uint dignum)

{

       uint dig=0;

       uchar k=0;

       dasync=1;

       _nop_();_nop_();

       dasync=0;

       for(k=0;k<16;k++)

       {

              dasclk=1;

              dig=dignum&0x8000;

              if(dig) dadin=1;

              else dadin=0;

              dasclk=0;

               _nop_();_nop_();

              dignum<<=1;                   

       }

       dasync=1;

    _nop_();_nop_();

}

/************************LCD1602写数据******************************/

void write_data(uchar adata)

{

       lcdrs=1;

       P0=adata;

       delay(1);

       lcde=1;

       delay(1);

       lcde=0;

}

/************************LCD1602写地址******************************/

void write_com(uchar com)

{    

       lcdrs=0;

       P0=com;

       delay(1);

       lcde=1;

       delay(1);

       lcde=0; 

}

/************************LCD1602初始化******************************/

void init()

{

       lcde=0;

       write_com(0x18);    //8位数据端口,1行显示,5*7点阵

       write_com(0x0f);    //开显示,显示光标,光标闪烁

       write_com(0x01);    //清屏

       write_com(0x80);    //设定地址指针在第一行第一个位置      

}

/************************数据显示******************************/

void xianshi()

{

       int j;

       write_com(0x0c);    //开显示,不显示光标,光标不闪烁

    number[0]=(data1/1000)%10; //数据按位拆分

    number[1]=(data1/100)%10;

    number[2]=(data1/10)%10;

    number[3]=(data1/1)%10;

       write_com(0x80+0x09);

       for(j=0;j<4;j++)

             write_data(number[j]+0x30);

       write_data('m');

       write_data('A');

       write_data(' ');    

}

/************************数据处理******************************/

void chuli()

{

    float data2=0.0;

       write_com(0x80+0x07);

       write_data(' ');

       xianshi();

       data2=data1/2500.0*4095; 

       adata=(int)data2;

       da_conver(adata);     

       delay(100);           

}

/************************显示字母******************************/

void print(uchar *str)

{

       while(*str!='\0')

       {

              write_data(*str);

              delay(5);

              str++;

       }

}

/************************清除******************************/

void clear()

{

        uint num;

        write_com(0x80+0x09);

        for(num=1;num<5;num++)

            write_data(' ');

}

/************************确认******************************/

void queren()

{    

       float data2=0.0;

       write_com(0x0c);

    delay(5);

       data2=data1/2500.0*4095;

       adata=(int)data2;

       da_conver(adata);     

}

/************************加******************************/

void jia()

{

       if(data1+q<=2000) data1=data1+q;

       else data1=2000;

       write_com(0x0c);

       xianshi();

    delay(5);

}

                      

/************************减******************************/

void jian()

{

       if(data1-q>200) data1=data1-q;

    else data1=200;

       write_com(0x0c);

    xianshi();

    delay(5);

}

/************************设置******************************/

void shezhi()

{    

    clear();

       write_com(0x80+0x07);

       write_data('=');

    while(1)

       {

           write_com(0x80+0x09);

           if(plus1==0)

              {

                  delay(130);

                     if(plus1==0) q=1,jia();                    

              }

              if(plus10==0)

              {

                  delay(130);

                     if(plus10==0) q=10,jia();                

              }

              if(plus100==0)

              {

                  delay(130);

                     if(plus100==0) q=100,jia();                   

              }

              if(minus1==0)

              {

                  delay(130);

                     if(minus1==0) q=1,jian();               

              }

              if(minus10==0)

              {

                  delay(130);

                     if(minus10==0) q=10,jian();                  

              }

              if(minus100==0)

              {

                  delay(130);

                     if(minus100==0) q=100,jian();              

              }

              if(confirm==0)

              {

                  delay(130);

                     if(confirm==0) break;             

              }

       }

}

/************************恢复******************************/

void huifu()

{

       data1=200;

       xianshi();                                        

}

/************************主函数******************************/

void main()

{    

       init();

       print(dis1);

       data1=200;     

       xianshi();

       while(1)

       {

           chuli();

              if(reset==0) huifu();

              if(confirm==0) queren();

              if(set==0) shezhi();

        if(plus1==0)

              {

                  delay(20);

                     if(plus1==0) q=1,jia();                    

              }

        if(plus10==0)

              {

                  delay(20);

                     if(plus10==0) q=10,jia();                

              }

              if(plus100==0)

              {

                  delay(20);

                     if(plus100==0) q=100,jia();                   

              }

          if(minus1==0)

              {

                  delay(20);

                     if(minus1==0) q=1,jian();

              }

              if(minus10==0)

              {

                  delay(20);

                     if(minus10==0) q=10,jian();

              }

              if(minus100==0)

              {

                  delay(20);

                     if(minus100==0) q=100,jian();

              }                    

       }

}       

更多相关推荐:
电子设计报告

电子设计报告课题低压差可调直流稳压电路第二小组年级20xx级专业电子工程学号姓名高林学号1141004姓名赵翔学号1141006课题低压差可调直流稳压电路PPT制作高林理论amp实践田龙论文赵翔电路版制作高林田...

电子设计报告

电子设计拔河中国矿业大学计算机科学与技术学院电子信息科学系班级信科学号xxxxxxxx姓名XX日期20xx年6月20日概述错误未定义书签需求分析2软件功能模块图错误未定义书签程序流程图6实验分析18结论18参考...

电子设计报告模板

题目简易频率特性测试仪E题作者纪强朱志兵张雅希赛前辅导教师黄光明文稿整理辅导老师黄光明摘要本系统是基于零中频正交解调原理的简易频率特性测试仪采用AD9854DDS集成芯片C8051F020作为控制平台实现正交扫...

综合电子设计报告范文

实验报告课程名称实验项目实验环境学院通信学院专业电子信息工程班级学号学生姓名实验日期20xx11成绩指导教师目录一二三实验目的3知识点和设计内容3设计思路31语音放大器的基本构成32性能指标33要求4四实验原理...

电子设计大赛报告模板

简易智能小汽车队长黄洋队员尹志军梁荣新赛前辅导老师臧春华文稿整理辅导老师摘要设计分为5个模块前轮PWM驱动电路后轮PWM驱动电路轨迹探测模块障碍物探测模块光源探测模块前轮PWM驱动电路用于转向控制后轮PWM驱动...

电子设计大赛 技术报告

智能小车寻迹避障测距摘要本文介绍了一种基于51单片机的小车寻迹避障测距系统该系统采用5个高灵敏度的单端反射式红外光电对管和红外传感器以及霍尔传感器来实现小车的寻迹避障和测距的功能并利用单片机产生PWM波通过控制...

电子设计大赛报告

20xx年全国大学生电子设计竞赛设计报告本科组20xx年9月7日摘要本系统以单片机为控制核心采用角度传感器ADXL345实时采集自由摆旋转角度及方向通过直流电机开环控制旋转角度以实现控制要求此外为方便实验和调试...

电子设计报告 TL082的测试与应用

20xx年衡阳师范学院电子设计报告设计说明书设计题目TL082的测试与应用专业电子信息科学与技术作者谢曙兰梁伟文指导教师黄顺李志强20xx年6月17日摘要器件应用到商业工业军事工业各方面它的特点有低功耗广泛通用...

电子设计报告(打印)

电子课程设计报告1指导老师白华作者张洪春电子课程设计报告一设计内容信号源利用电路产生一个频率为10kHz幅值为5v的模拟正弦信号AD采集电路对该信号进行16位的采样转换成数字信号请选择合适的AD器件并完成电路设...

电子设计实验报告

《简易正弦波发生器设计、调试报告》第五组成员:一.设计目标1.频率可调,分辨率为1Hz2.频率由LED数码管显示并可按位置数3.输出幅度:1Vp-p(1kohm)4.提高部分:即可能拓展频率范围(低端和高端),…

20xx全国大学生电子设计竞赛设计报告模板

20xx年全国大学生电子设计竞赛风力摆控制系统B题20xx年8月15日摘要轴流风机已有悠久的历史它以其通流范围大全风压范围宽尺寸小和驱动功率要求不高的特点而在电力冶金建筑采矿航空等重要领域发挥着积极的作用因此继...

电子制作设计报告

电子制作报告名称超外差式晶体管调幅收音机的组装与调试学院系部电子信息工程系学生姓名武鹏飞指导教师赵雨斌张海军曹海旺张宏亮温欣玲20xx年11月27日图1超外差式晶体管收音机的电原理图图2超外差式收音机的组成框图...

电子设计报告(39篇)