基于AD5663的UV灯电压控制

在开发臭氧发生器的时,我们使用UV灯来实现臭氧的产生。而UV灯的强度决定了臭氧产生的浓度,UV灯的光强则与其控制电压密切相关。所以我们要控制产生的臭氧的浓度就需要调节其控制电压。我们选择了AD5663这一模拟量输出模块来实现这一点。

1AD5663简介

AD5663属于nanoDAC系列,是低功耗、双通道、16位缓冲电压输出数模转换器(DAC),采用2.7V至5.5V单电源供电。AD5663采用多功能三线式串行接口,能够以最高50 MHz的时钟速率工作,并与标准SPI、QSPI、MICROWIRE、DSP接口标准兼容。它内置片内精密输出放大器,能够实现轨到轨输出摆幅。其功能框图如下所示:

2、硬件设计

我们用来产生臭氧的UV灯,其控制电压约需要在AC300V到AC1500V的范围,工作频率约为10kHz到20kHz的范围内,当然选用的灯不一样可能会有些许差异。为了达到这个目的,我们使用两个PWM控制电路产生低压交流电源,然后通过高频变压器产生我们需要的交流电源。基于此,我们先要有一个连续可调的低压直流电源才有可能通过PWM控制电路达到我们想要的结果。如下图即是我们电压控制电路:

上图中我们采用LM2596S-ADJ作为电源模块,以AD5663作为电源调节输出。LM2596S的反馈电压要求在1.23V,二极管的1N4001的管压降设定为0.5V,根据R27、R28、R29几个电阻电路就可以实现LM2596S输出电压的调节。由于二极管的存在,AD5663需要输出大于1.73V(1.23V+0.5V)以上的电压才能起到调节效果。我们设返回电压为Vf=1.23V,LM2596S的输出电压为Vo,二极管的管压降为Vd,AD5633的输出电压为Vs于是我们可以得到一个等式:

在上述等式中Vf=1.23V是确定的,二极管的管压降Vd=0.5V也是确定的,所以等式有2中情况:第一种是AD5663的输出电压小于等于1.73时,AD5663的输出对电压输出没有影响;第二种是当AD5663的输出电压大于1.73时,可以通过AD5663的输出调节LM2596S的输出,而且为线性关系。

3、软件设计

经过上述的分析和设计,相关软件的编写就变得相对容易了。AD5663有一个输入移位寄存器,对AD5663操作都是通过输入移位寄存器来实现的。

1)输入移位寄存器

输入移位寄存器为24位宽。前2位是无关位,后续三位是命令位C2至C0,然后是3位DAC地址A2至A0,其结构如下:

2)软件复位

软件复位也是通过操作输入移位寄存器来实现的。命令位的定义没有变化,数据段的最后一位作为软件复位的模式设定,其它位无效。最后一位为0时,会清除DAC寄存器和输入寄存器,而最后一位为1时清除掉全部寄存器。最后一位为1时,实际就是上电复位模式。输入移位寄存器的数据格式如下:

其软件实现如下:

 1 void Ad5663SoftwareReset(AD5663ResetType resetMode,void (*WriteByteToAD5663)(uint8_t))
 2 {
 3   uint32_t inputShiftData=0;
 4
 5   if(resetMode==ResetSoftware)
 6   {
 7     inputShiftData=RESET|Register_Reset_Software;
 8   }
 9
10   if(resetMode==ResetPoweron)
11   {
12     inputShiftData=RESET|Register_Reset_Poweron;
13   }
14   uint8_t txData[3];
15   txData[0]=inputShiftData>>16;
16   txData[1]=inputShiftData>>8;
17   txData[2]=inputShiftData;
18
19   WriteByteToAD5663(txData[0]);
20   WriteByteToAD5663(txData[1]);
21   WriteByteToAD5663(txData[2]);
22 }

3)上电复位

上电复位也是通过操作输入移位寄存器来实现的。命令位的定义没有变化,数据段的DB5和DB4定义掉电的模式,而DB1和DB0定义操作的通道。输入移位寄存器的数据格式如下:

其软件实现如下:

/*设置AD5663上电/掉电工作模式*/
void Ad5663PowerUpDownMode(DACHANNEL channel,AD5663PowerdownType powerdownType,void (*WriteByteToAD5663)(uint8_t))
{
  uint32_t inputShiftData=0;

  if(channel==DAChannelA)
  {
    inputShiftData=DAC_A;
  }

  if(channel==DAChannelB)
  {
    inputShiftData=DAC_B;
  }

  if(channel==ChannelAll)
  {
    inputShiftData=DAC_A|DAC_B;
  }

  switch(powerdownType)
  {
  case NormalOperation:
    {
      inputShiftData=inputShiftData|Normal_Operation|Power_Down;
      break;
    }
  case R1K2GND:

    {
      inputShiftData=inputShiftData|_1K_GND|Power_Down;
      break;
    }
  case R100K2GND:
    {
      inputShiftData=inputShiftData|_100K_GND|Power_Down;
      break;
    }
  case ThreeState:
    {
      inputShiftData=inputShiftData|Three_State|Power_Down;
      break;
    }
  }

4)输出操作

对各输出通道值的操作也是同过输入移位寄存器来完成。其数据格式如前面输入移位寄存器的介绍。后16位是数据(0-65535),然后是3位地址和3位命令。通讯的时序图如下所示:

 1 设置DA通道的值具体代码如下:
 2 void SetAD5663ChannelValue(DACHANNEL channel,uint16_t data,void (*WriteByteToAD5663)(uint8_t))
 3 {
 4   uint32_t inputShiftData=0;
 5   if(channel==DAChannelA)
 6   {
 7     inputShiftData=WriteTo_Update_DAC_Channel|DAC_Channel_A|data;
 8   }
 9
10   if(channel==DAChannelB)
11   {
12     inputShiftData=WriteTo_Update_DAC_Channel|DAC_Channel_B|data;
13   }
14   uint8_t txData[3];
15   txData[0]=inputShiftData>>16;
16   txData[1]=inputShiftData>>8;
17   txData[2]=inputShiftData;
18
19   WriteByteToAD5663(txData[0]);
20   WriteByteToAD5663(txData[1]);
21   WriteByteToAD5663(txData[2]);
22 }

欢迎关注:

时间: 2024-08-01 04:52:30

基于AD5663的UV灯电压控制的相关文章

基于PWM的呼吸灯设计(Verilog版)

module Breath_Led(clk,rst,led); input clk,rst; output reg led; reg[19:0] count; reg[19:0] duty_cycle; always @(posedge clk) begin if(!rst) begin led<=1'b0; count<=1'b0; end else begin if(count<20'd999_999) begin count<=count+1'b1; if(count<

基于51单片机的温度控制系统毕设

分享一下单片机毕设课程计参考资料33个,献给大四的朋友,毕业设计就不用愁了,如果有什么不懂的地方可以加群大家一起交流:813238832资料下载的地址:https://bbs.usoftchina.com/thread-208012-1-1.html 1.CDMA通信系统中的接入信道部分进行仿真与分析2.USB接口设计3.毕业设计(论文)OFDM通信系统基带数据4.电气工程系毕业设计开题报告5.电信运营商收入保障系统设计与实现6.基于51单片机的16×16点阵(滚动显示)7.基于51单片机的LE

蓝牙智能灯带(天猫精灵生态)方案

系统简介 灯带是指把LED灯用特殊的加工工艺焊接在铜线或者带状柔性线路板上面,再连接上电源发光,因其发光时形状如一条光带而得名.灯带发光颜色多变.可调光.可控制颜色变化.可选择单色和RGB的效果,带给人们多彩缤纷的视觉效果. 翼数信息使用自主开发的BCB01智能蓝牙模块,对接了天猫精灵蓝牙Mesh生态,成功的应用在灯带上.该模块较高的接收灵敏度满足了灯带应用对运行时实时性的严格要求,保证了天猫精灵的控制范围和成功率. 该方案实现了无极调光,智能渐变,场景模式,智能定时等功能,可以加速品牌商,快速

紫外线胶筑坝封装智能卡用cpu模块的方法

本发明提供了一种UV胶筑坝封装智能卡用CPU模块方法,在贴片.焊线后的载带上,用UV胶在每个器件的周围涂一圈,然后再用UV胶将坝内的芯片.金丝及其空隙填没掩盖叫填料,经过UV灯照射,固化成型并经过质量检测,实现电路封装.运用本发明方法封装的CPU模块,相比较无筑坝的封装,提高了合格率,用该模块制成的卡能承受比较高的压力和扭弯力,能更好地保护芯片.金丝,进而提高了CPU模块的可靠性. 1.一种UV胶筑坝封装智能卡用CPU模块的方法,其特征在于,所述方法包括如下步骤: a.筑坝:根据不同条带的cav

森林大帝带你“深度解析水质浑浊”

水质浑浊一直是困扰着很多鱼友的一个问题,尤其是新手不会养水(我也不是很会养水),鱼缸里的水经常是混浊的而且还经常死鱼.养鱼的水为什么会混浊,这种混浊有何危害.怎么控制预防,在这篇文章里我会做详细的论述. 一.鱼缸常见的三种水混浊 1.物理性混浊:缸内颗粒性杂质过多引起的水体混浊叫做物理性混浊.一般开缸初期由于使用的是新滤材,其脱落的大量的颗粒性杂质和短小纤维等异物会造成了水体混浊.玻璃环.细菌屋.珊瑚砂等都比较容易掉渣,尤其是在灯光下可以看见水里有很多渣滓,影响观赏效果.依靠过滤再配合大换水能除

紫外线胶加盖板封装智能卡用CPU模块的方法

本发明提供了一种用UV胶加盖板封装智能卡用CPU模块的方法.即在经贴片.焊线后的载带上用国产UV胶在每个器件上涂没一层,将载带上的芯片.金丝及其空隙包封填没,然后再加盖一块厚0.06mm,直径6.5mm的玻璃纤维,经过UV灯的照射,固化成型,起到了保护芯片和金丝的作用,实现电路封装.运用本发明的UV胶加盖板封装工艺的方法后,提高了被封装的CPU模块合格率,与同类技术相比较降低了成本,封装外形稳定,封装厚度一致,并能承受比较高的压力. 1.一种UV胶加盖板封装智能卡用CPU模块方法,其特征在于,所

毕业设计课题大全

标题: 交换机端口数据流量信息采集方法评述(1人) 目的: 本题目意在通过检索"截获交换机封包"的相关资料,研究对交换机端口流量进行实时监测的手段和方法及实现的原理. 内容:论文要求分析交换机内部封包的交换和计数原理,进而探查如何通过局域网络监测交换机端口的实时流量信息. 参考资料:思科CCNA和CCNP认证教材,及相关参考资料 计算机专业毕业设计题目大全 http://blog.renren.com/share/250527820/12343150865 重点考虑: 5.电子邮件服务

走出水清与硝化菌有关的误区

养鱼是一门科学.随着科学养鱼理念的普及,人们对鱼缸生态系统.生化过滤.生物滤材.硝化菌等越来越重视,都在努力的为鱼儿营造一个舒适的生活环境,使其能把最美丽的一面展现给我们.但是在论坛待久了,发现很多鱼友对硝化菌的认识存在误区,我给大家举两个例子: 例一:为什么我清洗滤材后水就变混了? 答:清洗滤材后硝化系统受到破坏,硝化菌大量死亡,所以水会变混. 例二:为什么我开缸后水一直比较混浊不清呢? 答:这是因为硝化系统还不健全,硝化菌的数量比较少,所以水不清,等硝化系统健全后水自然就清澈了.以上的两个案

ISE14.7使用教程(一个完整工程的建立)

FPGA公司主要是两个Xilinx和Altera(现intel PSG),我们目前用的ISE是Xilinx的开发套件,现在ISE更新到14.7已经不更新了,换成了另一款开发套件Vivado,也是Xilinx的产品,intel的开发套件是Quartus II系列,我们实验室这两款公司的开发板都有,不过对于入门来说,选择ISE有两个原因,一是它比Vivado快多了,二是它和Quartus II相比不用自己写测试文件(激励).实验室的板子这两个公司都有,代码都是可以移植的,学习的话都要学的,软件不是问