1.数模转换
传感器出来的数据一般都是模拟量,也就是我们通常所说的电压值(当然也有电流值的,这时我们可以通过一个精密电阻把其转换为电压值)。如果把这些模拟量变成计算机能够处理的数字量呢?这时就要使用我们的数模转换器,俗称AD。
在我的这个项目中,模拟量的提供者是一个非常灵敏并且线性度很好的水平传感器,该传感器的满量程输出为5V/14.5°,按次推算如果采用3.3v基准的16位AD则其分辨率为0.00014°,采用3.3v基准的18位AD则其分辨率为0.000036°。(不考虑各种误差) 也就是说后端AD的位数越高其得到的倾角值也就越准确。为了得到准确的角度结果,我们考虑使用18位AD.
2.AD7690使用?
选择一款ADC需要看很多方面,但比较重要的还是位数,转换速度,误差这几个指标,其它的还包括功耗,供电电压等等。
7690是一款优秀的18位ADC,其包含以下特点:
差分/单端输入
5v单电源供电
400k的转换速度
1.5LSB的INL
可选的输出接口:串行输出,SPI接口,QSPI接口并且接口电平支持1.8V/2.5V/3V/5V 。
3.电路图
上图为7690的实际使用图,IN+和IN-分别为差分信号输入端,REF外界参考电压,VIO为数字引脚的电平值,一般来说该引脚与电源引脚连接,当然,如果需要也可以选择和电源引脚不同的电平值。在我的这个设计中,VIO为3.3v电源为5v。SDI/SCK/SDO/CNV为与CPU接口的引脚。
4.连接方式
7690与主机的连接方式主要有以下4种:
CS MODE, 3-WIRE WITHOUT BUSY INDICATOR
CS MODE, 3-WIRE WITH BUSY INDICATOR
CS MODE, 4-WIRE WITHOUT BUSY INDICATOR
CS MODE, 4-WIRE WITH BUSY INDICATOR
如果在系统中只有一块7690的话,一般来说我们选择的就是前面两种三线模式。在本项目中使用的是CS MODE, 3-WIRE WITH BUSY INDICATOR 。其连接方式可以参考DS给出的接线图。
程序编写可以参考下面的时序图。
5 注意事项:
① 7690的电源与参考电压问题:所有电源输入端都要加上去耦电容。由于需要的电压电流很小,所以7690可以使用基准源ADR430X系列或AD8031组成的缓冲器对基准及电源进线供电。
② 编写7690程序的时候要特别注意时序,尤其是TCNYH等脉冲的宽度,具体可以参考数据手册的表4.
6 使用模拟时序读取7690数据的程序:
//开启7690转换
ReSetCNV;
SetCNV ;
ReSetCNV;
SetCNV ;
ReSetCNV;
//读取AD值
SetSCK;
Delay(50);
ReSetSCK;
for(i=0;i<18;i++)
{
SetSCK;
temp=GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_6);//这里与PA6连接。
ADData=ADData<<1|temp;
ReSetSCK;
}
总结:
7690确实是一个很好用的18位AD,对于速度不快的测量应用来说还是足够的。后续的设计中如果有需要还是会选择它。