微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 模拟电路设计 > 基于DAC0832的LED亮度控制系统设计

基于DAC0832的LED亮度控制系统设计

时间:06-03 来源:华北科技学院 李永 李芙玲 点击:

引言

  LED在城市化的过程中功不可没,各种夜景灯牌和广告显示屏,都在日益充斥人们新奇的眼球。以往霓虹灯的发光体只有亮和灭两种状态,亮度都是突然变化的,往往给人一种图案变化生硬的感觉;而现在很多霓虹灯已经实现了发光体亮度逐渐变化,这样形成的各种变化的霓虹灯图案更加柔和、流畅。控制发光体亮度变化总体上可以分为模拟方法和数字方法,其中通过单片机控制D/A转换器实现发光体亮度控制的方法具有电路简单、维护和调整方便的特点,是当前霓虹灯控制的发展方向。霓虹灯的发光体以气体放电灯管为主,现在随着高亮度发光二极管的产生,寿命长、能耗低的LED灯牌应用越来越广泛。这里讨论应用DAC0832在单片机控制下如何控制多个发光二极管的亮度变化。

  1 硬件电路设计

  通过单片机和D/A转换芯片DAC0832控制三个发光二极管亮度按顺序逐渐变化,实现一种灯管旋转的效果。设计中主要考虑下面三个问题:

  (1) DAC0832与单片机的接口电路设计。

  (2) 基准电压源的设计。

  (3) 同时控制多个LED按不同规律改变亮度的电路设计。

  1.1 DAC0832与单片机的接口电路

  启动ADC0832实现模数转换有单缓冲和双缓冲两种方式。多缓冲方式是在多片ADC0832配合时采用;本设计中只须一片ADC0832就可完成工作,所以采用单缓冲方式,向其8位数据输入口输入数据,然后在其写触发管脚WR1发送一低电平脉冲,该芯片就会将收到的数字量转换成模拟量输出。其输出为电流输信号,而控制发光二极管亮度需要用电压实现,所以需要外接由运算放大器构成的电流电压转换电路, ADC0832与单片机的接口电路如图1:

  图中,由于选片端CS接到了P217,所以启动DAC0832开始转换时,需要将单片机的P217 脚设置为低电平。

  输出的电流经过运算放大器转换成电压,如果需转换的数字量为B, 则对应输出电压值为:

  其中VREF是外接的基准电压,输出电压最高为0 V,最低为- VREF ,如果基准电压取5 V,则最低输出电压为- 5 V,为了满足负电压输出的要求,运算放大器的电源电压VCC要高于5 V,VEE要低于- 5 V,本设计中运算放大器采用LM324芯片,电源电压VCC取10 V,VEE取- 10 V。

  1.2 基准电压的设计

  要保证DAC0832数模转换的精度和准确度,必须提供一个高度稳定的基准电压。在数模转换器中一般选用带隙基准电压源或隐埋式齐纳稳压管。

  设计中选用了LM336-5型隐埋式齐纳二极管,它具有价格低、使用方便的特点,其接线如图2:

  1.3 如何同时控制多个LED的亮度

  设计中需要控制三个发光二极管,每个发光二极管的亮度和变化规律都不一样,而ADC0832只有一路模拟量输出,为了控制三个发光二极管的亮度,需要加一个多路电子开关,本例中选用的是CD4051,该芯片的引脚图如下:

  该芯片是一个常用的8路到1路的多路电子开关,工作电压最高为32 V,通过ABC三个地址管脚确定选通哪个通道。

  因为前面转换出的电压为负值最低为- 5 V,所以CD4051 的工作电压取VDD = 10 V, VEE =- 10 V, 地址控制端A、B、C分解接到单片机的P210、P211、P212 口,用来选通某个通道通, D/A转换后的模拟量接到多路开关的电压输入端3引脚,输出引脚13、14、15分别控制发光二极管D1、D2、D3。

  DAC0832只有1路模拟输出,必须采用分时控制的方式循环控制三个发光二极管的亮度,实现接通某一个LED 时,其它LED 保持要原有亮度不能熄灭,为了达到这个目的,这里采用了运算放大器接成电压跟随器的形式控制LED的亮度,即多路电子开关的每个输出与发光二极管间都接一个电压跟随器,而且在运算放大器的正向输入端接了一个保持电容,使输入电压能够保持一段时间,其接线如下:

  由于运算放大器的输入阻抗很大,所以Ch2上的电压能够保持一段时间,在数模转换器输出电压控制其它发光二极管期间,该运算放大器的输出电压能够保持不变。

  装置硬件原理图如图5。

  2 软件设计

  软件主要完成两个功能, 第一, 完成各个LED的循环点亮; 第二,通过程序控制各个LED亮度的变化。本例中要实现灯光旋转的效果,所以每个LED都按三角波的型式亮度变化,先逐渐变亮,达到最亮时再由最亮逐渐变暗,如此反复进行;三个LED的亮度变化要有一个时差,如果一个LED从暗到亮再到暗作为一个周期的话,则D2比D1 滞后1/3 周期, D3 比D2 滞后1/3 个周期。

2.1 主程序设计

使各个LED循环点亮通过主程序循环实现,将表示三个LED亮度的三个数据放到连续的三个RAM单元30H、31H、32H中,主程序中循环读取这三个单元的数据送到DAC0832 转换,根据30H、31H、32H中数值的不同,转换输出的模拟电压也不同,单片机控制多路

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top