版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、LED照明闭环控制设计摘要:设计了一个光强采集系统,能实时采集环境光线强度;根据环境光线强度,自动调调节亮度,光强采集采用光敏电阻,采用12个3mm白光LED,组成LED闭环控制照明系统。LED采用电流驱动,电流步距可调。通过AD采集光线强度,通过单片机I/O实现PWM功率控制。关键字:光敏电阻、LED、AD、PWM0、 引言随着社会科学技术的发展,尤其电子技术的发展,给人们生活带来了方便和经济。现在从单片机控制技术发展到ARM控制技术,但是生活中好多领域仍然有选用单片机技术来开发产品,因为它的技术成熟,而且开发成本比较廉价,这使开发部门对单片机的向往。本文所设计的是用单片机来控制LED灯的亮
2、度的变化。1、 LED照明闭环控制系统的原理和原理图LED照明闭环控制系统是通过光敏电阻来采集光线强度,来改变自身的电压,从而改变AD输入电压的值,AD输出信号来控制单片机,单片机根据AD输出信号进行处理,输出PWM信号来控制三极管的基级电压,从而三级管被导通,这个时候电流流经12个LED,把全部点亮,但是亮度强度,由光线强度决定,流经的电流通过PWM信号输出决定。系统电源为+5V。下图为LED照明闭环控制系统的原理图:LED照明闭环控制系统的原理图2、硬件部分的设计2.1硬件的组成LED照明闭环控制系统的硬件主要由A/D转换控制器、三极管、12个LED、单片机、光敏电阻、MAX232等组成。
3、2.2元器件的选择光敏电阻光敏电阻器是利用半导体的光电效应制成的一种电阻值随入射光的强弱而改变的电阻器;入射光强,电阻减小,入射光弱,电阻增大。光敏电阻器一般用于光的测量、光的控制和光电转换(将光的变化转换为电的变化)。常用的光敏电阻器硫化镉光敏电阻器,它是由半导体材料制成的。光敏电阻器的阻值随入射光线(可见光)的强弱变化而变化,在黑暗条件下,它的阻值(暗阻)可达110M欧,在强光条件(100LX)下,它阻值(亮阻)仅有几百至数千欧姆。光敏电阻器对光的敏感性(即光谱特性)与人眼对可见光(0.40.76)m的响应很接近,只要人眼可感受的光,都会引起它的阻值变化。设计光控电路时,都用白炽灯泡(小电
4、珠)光线或自然光线作控制光源,使设计大为简化。为了设计方便,光敏电阻统一为5506型号。三极管三极管是一种控制元件,主要用来控制电流的大小,以共发射极接法为例(信号从基极输入,从集电极输出,发射极接地),当基极电压UB有一个微小的变化时,基极电流IB也会随之有一小的变化,受基极电流IB的控制,集电极电流IC会有一个很大的变化,基极电流IB越大,集电极电流IC也越大,反之,基极电流越小,集电极电流也越小,即基极电流控制集电极电流的变化。但是集电极电流的变化比基极电流的变化大得多,这就是三极管的放大作用。IC 的变化量与IB变化量之比叫做三极管的放大倍数(=IC/IB, 表示变化量。),三极管的放
5、大倍数一般在几十到几百倍。 三极管在放大信号时,首先要进入导通状态,即要先建立合适的静态工作点,也叫 建立偏置 ,否则会放大失真。 在三极管的集电极与电源之间接一个电阻,可将电流放大转换成电压放大:当基极电压UB升高时,IB变大,IC也变大,IC 在集电极电阻RC的压降也越大,所以三极管集电极电压UC会降低,且UB越高,UC就越低,UC=UB。本文设计要求,LED被电流驱动根据设计原理,本文采用三极管来驱动12个LED,型号统一为8550PNP管。A/D转换 A/D转化电路。 亦称“模拟数字转换器”,简称“模数转换器”。将模拟量或连续变化的量进行量化(离散化),转换为相应的数字量的电路。 A/
6、D变换包含三个部分:抽样、量化和编码。一般情况下,量化和编码是同时完成的。 抽样是将模拟信号在时间上离散化的过程; 量化是将模拟信号在幅度上离散化的过程; 编码是指将每个量化后的样值用一定的二进制代码来表示。d/a转换器是把数字量转换成模拟量的线性电路器件,已做成集成芯片。由于实现这种转换的原理和电路结构及工艺技术有所不同,因而出现各种各样的d/a转换器。目前,国外市场已有上百种产品出售,他们在转换速度。转换精度。分辨率以及使用价值上都各具特色。 d/a转换器的主要参数: 衡量一个d/a转换器的性能的主要参数有: (1)分辨率 是指d/a转换器能够转换的二进制数的位数,位数多分辨率也就越高。
7、(2)转换时间 指数字量输入到完成转换,输出达到最终值并稳定为止所需的时间。电流型d/a转换较快,一般在几ns到几百ns之间。电压型d/a转换较慢,取决于运算放大器的响应时间。 (3)精度 指d/a转换器实际输出电压与理论值之间的误差,一般采用数字量的最低有效位作为衡量单位。 (4)线性度 当数字量变化时,d/a转换器输出的模拟量按比例关系变化的程度。理想的d/a转换器是线性的,但是实际上是有误差的,模拟输出偏离理想输出的最大值称为线性误差。a/d转换器的功能是把模拟量变换成数字量。由于实现这种转换的工作原理和采用工艺技术不同,因此生产出种类繁多的a/d转换芯片。a/d转换器按分辨率分为4位。
8、6位。8位。10位。14位。16位和bcd码的31/2位。51/2位等。按照转换速度可分为超高速(转换时间330ns),次超高速(3303.3s),高速(转换时间3.3333s),低速(转换时间330s)等。a/d转换器按照转换原理可分为直接a/d转换器和间接a/d转换器。所谓直接a/d转换器,是把模拟信号直接转换成数字信号,如逐次逼近型,并联比较型等。其中逐次逼近型a/d转换器,易于用集成工艺实现,且能达到较高的分辨率和速度,故目前集成化a/d芯片采用逐次逼近型者多;间接a/d转换器是先把模拟量转换成中间量,然后再转换成数字量,如电压/时间转换型(积分型),电压/频率转换型,电压/脉宽转换型
9、等。其中积分型a/d转换器电路简单,抗干扰能力强,切能作到高分辨率,但转换速度较慢。有些转换器还将多路开关。基准电压源。时钟电路。译码器和转换电路集成在一个芯片内,已超出了单纯a/d转换功能,使用十分方便。由于本文设计需要,采用TLC1543作为A/D转换。串口芯片MAX232MAX232产品是由德州仪器公司(TI)推出的一款兼容RS232标准的芯片。该器件包含2驱动器、2接收器和一个电压发生器电路提供TIA/EIA-232-F电平。该器件符合TIA/EIA-232-F标准,每一个接收器将TIA/EIA-232-F电平转换成5-V TTL/CMOS电平。每一个发送器将TTL/CMOS电平转换成
10、TIA/EIA-232-F电平。根据需要本设计选用MAX232作为串口芯片,使之来通信。单片机SST89E516RD单片机到底是什么呢?就是一个电脑,只不过是微型的,麻雀虽小,五脏俱全:它内部也用和电脑功能类似的模块,比如CPU,内存,并行总线,还有和硬盘作用相同的存储器件,不同的是它的这些部件性能都相对我们的家用电脑弱很多,不过价钱也是低的,一般不超过10元即可.用它来做一些控制电器一类不是很复杂的工作足矣了。我们现在用的全自动滚筒洗衣机,排烟罩VCD等等的家电里面都可以看到它的身影!.它主要是作为控制部分的核心部件。 它是一种在线式实时控制计算机,在线式就是现场控制,需要的是有较强的抗干扰
11、能力,较低的成本,这也是和离线式计算机的(比如家用PC)的主要区别。 单片机是靠程序的,并且可以修改。通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,这是别的器件需要费很大力气才能做到的,有些则是花大力气也很难做到的。一个不是很复杂的功能要是用美国50年代开发的74系列,或者60年代的CD4000系列这些纯硬件来搞定的话,电路一定是一块大PCB板!但是如果要是用美国70年代成功投放市场的系列单片机,结果就会有天壤之别!只因为单片机的通过你编写的程序可以实现高智能,高效率,以及高可靠性! 由于单片机对成本是敏感的,所以目前占统治地位的软件还是最低级汇编语言(近几年,C语言也开始广泛被应
12、用),它是除了二进制机器码以上最低级的语言了,既然这么低级为什么还要用呢?很多高级的语言已经达到了可视化编程的水平为什么不用呢?原因很简单,就是单片机没有家用计算机那样的CPU,也没有像硬盘那样的海量存储设备。一个可视化高级语言编写的小程序里面即使只有一个按钮,也会达到几十K的尺寸!对于家用PC的硬盘来讲没什么,可是对于单片机来讲是不能接受的。 单片机在硬件资源方面的利用率必须很高才行,所以汇编虽然原始却还是在大量使用。一样的道理,如果把巨型计算机上的操作系统和应用软件拿到家用PC上来运行,家用PC的也是承受不了的。 目前最常用的单片机为MCS-51,是由美国INTEL公司(生产CPU的英特尔
13、)生产的,89C51是这几年在我国非常流行的单片机,它是由美国ATMEL公司开发生产的,其内核兼容MCS-51单片机。本文采用型号为SST89E516RD单片机输出信号来控制LED的亮度。3、 软件部分的设计本文设计所涉及到的软件就是对A/D转换的输出信号的处理从而来控制LED的亮度变化。程序代码如下:/*关于频率和占空比的确定,对于12M晶振,假定PWM输出频率为1KHZ,这样定时中断次数 * *设定为C=10,即0.01mS中断一次,则TH0=FF,TL0=F6;由于设定中断时间为0.01ms,这样* *可以设定占空比可从1-100变化。即0.01ms*100=1ms * /*/ #def
14、ine uchar unsigned char /* * TH0和TL0是计数器0的高8位和低8位计数器,计算办法:TL0=(65536-C)%256; * * TH0=(65536-C)/256,其中C为所要计数的次数即多长时间产生一次中断;TMOD是计数器* * 工作模式选择,0X01表示选用模式1,它有16位计数器,最大计数脉冲为65536,最长时 * * 间为1ms*65536=65.536ms * */ #define V_TH0 0XFF #define V_TL0 0XF6 #define V_TMOD 0X01 #include <1602shiwu.h>#incl
15、ude<at89x51.h>#define SUM 20#define CS P1_7#define CLK P1_4#define DIN P1_5#define SD0 P1_6#define EOC P1_3sbit S1 =P24 ; /增加键sbit S2 =P25 ; /减少键sbit S3=P22;void init_sys(void); /*系统初始化函数*/ void Delay5Ms(void); void timer0(void);unsigned char ZKB1; /sbit cs=P3_0;/sbit rd=P3_1;/sbit wr=P3_3;/sb
16、it wr=P3_3;/sbit p=P1_1;uchar getdata;uchar code table="0123456789"uint tmp1,tmp0;float test;uint TLC_1543_addr(uchar addr) uint date_out=0; uchar k; uchar i; uchar j; CLK=0; CS=0; for (i=0;i<4;i+) DIN=(bit)(addr&0x08); CLK=1; CLK=0; addr<<=1; for (j=0;j<6;j+) /填充6 个CLOCK C
17、LK=1;CLK=0; CS=1; mDelay(5); CS=0; /等待AD 转换 mDelay(5); for(k=0;k<10;k+) SD0=1; /非P0口作为数据总线使用时,读入数据前要赋值1,特别 CLK = 1; /是既用于写有用于读的情况下. date_out<<=1; if(SD0) date_out += 1; CLK = 0; return(date_out);/*void start()wr=1;/mmDelay(100);wr=0;/mmDelay(100);wr=1;/mmDelay(100);*/void display_num(unsign
18、ed long int numx,uint x)WriteChar(tablenumx/10000,x,0);/ ?WriteChar(table(numx%10000)/1000,x,1);/?WriteChar(table(numx%10000)%1000)/100,x,2);/?WriteChar(table(numx%10000)%1000)%100)/10,x,3);/?WriteChar(table(numx%10000)%1000)%100)%10,x,4);/?WriteString(" mV",x,5); char flag;void delayms(un
19、signed char ms);void delay(unsigned char t); void main() uint i; unsigned long int tmp;P0=0; SetCur(NoCur); while(1) tmp1 += TLC_1543_addr(0x01);/取20次AD转换的结果,求平均值/ i-; / if(i=0) / / tmp1=tmp1/SUM; tmp=tmp1*49999/1023;/ tmp=4*tmp; tmp1=0; i=SUM;/ EOC=EOC;/display_num(tmp,1);/if(!EOC)/i=SUM tmp0 += TL
20、C_1543_addr(0x00); /取50次AD转换的结果,求平均值/ i-; / if(i=0) / / tmp0=tmp0/SUM; tmp=tmp0*49999/1023; / tmp=tmp; tmp0=0; i=SUM; display_num(tmp,1);WriteString("ADC",0); /EOC=1; /*对占空比值限定范围*/ if (ZKB1>99) ZKB1=1; if(TLC_1543_addr(0x00)<=50) ZKB1=5; if(50<TLC_1543_addr(0x00)<=204) ZKB1=20;
21、 if(204<TLC_1543_addr(0x00)<=408) ZKB1=40; if(408<TLC_1543_addr(0x00)<=612) ZKB1=50; if(612<TLC_1543_addr(0x00)<=816) ZKB1=70; if(816<TLC_1543_addr(0x00)<=916) ZKB1=80; if(612<TLC_1543_addr(0x00)<=1000) ZKB1=90; if(1000<TLC_1543_addr(0x00) ZKB1=99; /* *函数功能:对系统进行初始化,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 保洁服务合同样本范本
- 环保我们的责任与追求
- 电脑设备批量选购合同示例
- 物流平台服务合同的维权途径
- 银行环境清洁合作协议
- 招标文件审核技巧分享全解读详解
- 人工分包劳务合同范本
- 苗木采购供应商招募通知
- 钢材招标合同赠与
- 简化劳务分包协议样本
- 数学思想与方法-国家开放大学电大机考网考题目答案
- 杭州奥泰生物技术股份有限公司IVD研发中心建设项目环境影响报告表
- 公共卫生事业管理专业职业生涯规划书
- GB/T 43232-2023紧固件轴向应力超声测量方法
- 低压配电室的安全操作规程
- 新目标汉语口语课本2课件-第2单元
- 二手车买卖合同(标准版范本)
- 国有企业合规制度培训
- 血液透析的医疗质量管理与持续改进
- 铬安全周知卡、职业危害告知卡、理化特性表
- 部编小语必读整本书《西游记》主要情节赏析
评论
0/150
提交评论