欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

基于AD5663的UV灯电压控制

程序员文章站 2024-02-24 10:10:58
...

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

1AD5663简介

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

基于AD5663的UV灯电压控制

2、硬件设计

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

 基于AD5663的UV灯电压控制

上图中我们采用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于是我们可以得到一个等式:

 基于AD5663的UV灯电压控制

在上述等式中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,其结构如下:

 基于AD5663的UV灯电压控制

2)软件复位

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

 基于AD5663的UV灯电压控制

其软件实现如下:

基于AD5663的UV灯电压控制

 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 }

基于AD5663的UV灯电压控制

3)上电复位

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

 基于AD5663的UV灯电压控制

其软件实现如下:

基于AD5663的UV灯电压控制

/*设置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;
    }
  }

基于AD5663的UV灯电压控制

4)输出操作

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

基于AD5663的UV灯电压控制

基于AD5663的UV灯电压控制

 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 }

4、结论
经过实际应用后,应该说效果还是不错的可以实现输出电压的连续调节。但也存在一些需要改进的地方。

第一,因为采用了二极管输出,产生了管压降无意中抬高了DAC输出的零点。而由于电路结构的原因DAC的输出需要大于1.73V才会进入调节段,实际上使DAC丧失了三分之一的精度。

第二,理论上输出应该是线性的,但实际上由于电源元件和电阻反馈网络的温度效应等,其实在某些段线性并不太好。

第三,因为电源器件的输出精度影响实现自动调节时,参数的整定变得较为麻烦,在不同的段其输出精度不同参数的设置也要不同,或者降低调整速度。

对于这些问题,我们考虑了一些改进措施,如采用运放代替二极管,采用输出精度高一点的DC/DC电源等。还在软件上,我们采用专家PID来进行控制以提高调节的精度。
————————————————
版权声明:本文为CSDN博主「foxclever」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/foxclever/article/details/90084012

相关标签: 硬件