AD7606八通道AD采集模块测试

 

前言

购买到的AD7606八通道AD转换模块可以用于各种实验。本文就该模块的基本性能进行测试。

▲ 模块基本信息

▲ 模块基本信息


简介

相应的资料可以在AD7606百度网盘下载,提取文件密码:6f5g.
https://pan.baidu.com/s/1i4HIJvn 密码: 6f5g

 

1. 模块外部接口

▲ 模块外部接口

▲ 模块外部接口

 

2.模块的参考电路图

▲ 模块的电路图

▲ 模块的电路图


制作实验电路

1. 模块对外接口

原来模块是32芯的外部接口,使用10芯电缆制作串行的对外接口。

▲ 制作十芯对外接口

▲ 制作十芯对外接口

引线管脚定义:

管脚定义
1GND
2+5V
3RANGE
4CA-CB
5RD-CLK
6RST
7BUSY
8CS
9D7-DOUTA
10D8-DOUTB

2.Oversample Bit Setting

OS012确定了AD7606数字滤波器的截止频率。实验中,在电路模块后面使用锡桥将OS012焊接在一起,然后通过短路子与GND,+5V选择连接。

▲ Oversample Bit Setting

▲ Oversample Bit Setting

▲ 使用短路子将OS0,1,2都接地

▲ 使用短路子将OS0,1,2都接地

3.串行接口

AD7606数据接口是依靠管脚 _PAR/SER/BYTE来选择的。当管脚为高电平,输出为串行接口;如果是低电平,输出为并行接口。

在模块中,通过R1,R2来确定_PAR管脚的电平的高低。现在配置的是高电平,模块为串行输出接口。
▲ 板上通过R1,R2的焊接来确定串行和还是并行接口

▲ 板上通过R1,R2的焊接来确定串行和还是并行接口

4.CA,CB接口

模块中,CA,CB已经使用锡桥在背面焊接在一起了。因此在控制中只需要一个信号线便可以启动所有的八个通道的采样转换了。


与MCU相连

1.MCU电路板1

电路板采用了在博文“23LC1024四线访问数据”中的MCU板,其中集成了23LC1024串口RAM作为数据缓存,这样可以保证采集数据的速率和时间均匀采样。

该电路模块留有10pin的接口用于控制AD7606模块,接口的定义分别为:

管脚符号功能定义
1GND电源地
2+5V电源
3AD_CLKSPI的CLK, P3,2
4AD_MISOSPIMISO, P3.3
5AD_MOSISPIMOSI, P3.4
6AD_SSSPI_SS, P3.5
7ADCP1AD控制线1, P3.6
8ADCP2AD控制线2, P3.7
9ADCP3AD控制线3, P1.6
10ADCP4AD控制线4, P1.7

2.连接MCU与AD7606模块

按照以下规格,通过面包板搭建实验电路。实际上就是按照顺序将MCU的PIN1,8连接到AD7606模块引脚的3-10。

序号MCU引线AD7606
1ADCP4, P1.7D8_DOUTB
2ADCP3, P1.6D7_DOUTA
3ADCP2,P3.7CS
4ADCP1,P3.6BUSY
5AD_SS,P3.5RST
6AD_MOSI, P3.4RD-CLK
7AD_MISO,P3.3CA-CB
8AD_CLK,P3.2RANGE

▲ 搭建的实验电路

▲ 搭建的实验电路


软件调试 2

1. 基本时序信号

(1) 启动转换与BUSY信号

CACB脉冲C宏定义:

#define AD7606_STARTC           (OFF(AD7606_CACB), ON(AD7606_CACB))
  • CACB的脉冲宽度: T C A C B = 33 n s T_{CACB} = 33ns TCACB=33ns
  • BUSY信号的宽度为: T B U S Y = 3.93 μ s T_{BUSY} = 3.93\mu s TBUSY=3.93μs

▲ 启动转换脉冲与BUSY脉冲

▲ 启动转换脉冲与BUSY脉冲

根据 T B U S Y T_{BUSY} TBUSY的大小,可以看到,最快的转换速率为: 1 / T B U S Y = 1 / 3.93 × 1 0 − 6 = 250 k H z 1/T_{BUSY} = 1/3.93 \times 10^{ - 6} = 250kHz 1/TBUSY=1/3.93×106=250kHz

设计一个函数用于转换并等待BUSY信号完成转换:

//------------------------------------------------------------------------------
unsigned int AD7606Convert(void) {
    unsigned int i;
    AD7606_STARTC;
    
    for(i = 0; i < 0x100; i ++) {
        if(VAL(AD7606_BUSY) == 0) 
            break;
    }
    
    return i;    
}

使用AD7606_CLK作为外部时间指示,测量AD7606Convert()函数执行时间为: T C O N V = 4.17 μ s T_{CONV} = 4.17\mu s TCONV=4.17μs

▲ 测量ADC7606Convert()执行时间

▲ 测量ADC7606Convert()执行时间

(2)读取转换数据

AD7606的串行数据读取时序图为:

▲ AD7606串行数据读取时序图

▲ AD7606串行数据读取时序图

读取相应的子程序:

void AD7606ReadData(int * pData, unsigned char ucNumber) {
    unsigned int nA, nB, nMask;
    unsigned char i, j;
    
    OFF(AD7606_CS);
    
    for(j = 0; j < ucNumber; j ++) {

        nMask = 0x8000;
        nA = nB = 0;
        for(i = 0; i < 16; i ++) {
            ON(AD7606_CLK);
            if(VAL(AD7606_DOUTA))
                nA |= nMask;
        
            if(VAL(AD7606_DOUTB))
                nB |= nMask;
        
            OFF(AD7606_CLK);
            nMask >>= 1;            
        }

    
        *(pData ++) = nA;
        *(pData ++) = nB;
    
    }
        
    ON(AD7606_CS);
}

读取时序与时间:
完成8个数据的读取时间为: T 8 I N T = 44.1 μ s T_{8INT} = 44.1\mu s T8INT=44.1μs

▲ 读取8个数据的时序

▲ 读取8个数据的时序

分别测试读取1~4组数据所需要的时间:

读取组数消耗时间(us)
111.6
222.9
334.4
445.5

如果使用单路数据读取,则读取四个数据的时间为: T 4 = 35.5 μ s T_4 = 35.5\mu s T4=35.5μs,比使用双路同时读取两个通道的四个数据少了9us。

实测读取一个数据的时间为 9 μ s 9\mu s 9μs

读取单个(DOUTA, DOUTB)的子程序为:

void AD7606ReadDataA(int * pData, unsigned char ucNumber) {
    unsigned int nA, nMask;
    unsigned char i, j;
    
    OFF(AD7606_CS);
    
    for(j = 0; j < ucNumber; j ++) {

        nMask = 0x8000;
        nA = 0;
        for(i = 0; i < 16; i ++) {
            ON(AD7606_CLK);
            if(VAL(AD7606_DOUTA))
                nA |= nMask;
        
            OFF(AD7606_CLK);
            nMask >>= 1;            
        }

    
        *(pData ++) = nA;
    }
        
    ON(AD7606_CS);
}

采集数据测试

1. 电压与AD转换数据

测量在AD端口不同的电压,所ADC转换后的数据。下面是给出的采集数据以及相应的数据波形。

volt=[-4.94,-4.74,-4.53,-4.33,-4.13,-3.93,-3.72,-3.52,-3.32,-3.12,-2.91,-2.71,-2.51,-2.31,-2.10,-1.90,-1.70,-1.50,-1.29,-1.09,-0.89,-0.69,-0.48,-0.28,-0.08,0.07,0.31,0.51,0.72,0.92,1.13,1.33,1.53,1.74,1.94,2.15,2.35,2.55,2.76,2.96,3.16,3.37,3.57,3.77,3.98,4.18,4.39,4.59,4.79,5.00]
data=[-16555.00,-15704.00,-15248.00,-14389.00,-13837.00,-13158.00,-12423.00,-11791.00,-11115.00,-10450.00,-9876.00,-9092.00,-8488.00,-7845.00,-7129.00,-6519.00,-5816.00,-5136.00,-4479.00,-3840.00,-3180.00,-2493.00,-1841.00,-1178.00,-526.00,87.00,756.00,1427.00,2100.00,2750.00,3447.00,4083.00,4748.00,5403.00,6122.00,6742.00,7393.00,8037.00,8798.00,9424.00,10185.00,10817.00,11390.00,12081.00,12734.00,13414.00,14187.00,14862.00,15410.00,16005.00]

▲ 电压与采集的AD数据

▲ 电压与采集的AD数据

2. 改变RANGE的设置

前面的实验设置RANGE=1, 这样测量电压范围是 ± 10 V \pm 10V ±10V。下面将RANGE设置为低电平,此时采集电压的范围是 ± 5 V \pm 5V ±5V。重新采集前面的电压,得到如下的测量数据和相关的曲线。

volt=[-4.94,-4.74,-4.53,-4.33,-4.13,-3.93,-3.72,-3.52,-3.32,-3.12,-2.91,-2.71,-2.51,-2.31,-2.10,-1.90,-1.70,-1.50,-1.29,-1.09,-0.89,-0.69,-0.48,-0.28,-0.08,0.07,0.31,0.51,0.72,0.92,1.13,1.33,1.53,1.74,1.94,2.15,2.35,2.55,2.76,2.96,3.16,3.37,3.57,3.77,3.98,4.18,4.39,4.59,4.79,5.00]
data=[-16555.00,-15704.00,-15248.00,-14389.00,-13837.00,-13158.00,-12423.00,-11791.00,-11115.00,-10450.00,-9876.00,-9092.00,-8488.00,-7845.00,-7129.00,-6519.00,-5816.00,-5136.00,-4479.00,-3840.00,-3180.00,-2493.00,-1841.00,-1178.00,-526.00,87.00,756.00,1427.00,2100.00,2750.00,3447.00,4083.00,4748.00,5403.00,6122.00,6742.00,7393.00,8037.00,8798.00,9424.00,10185.00,10817.00,11390.00,12081.00,12734.00,13414.00,14187.00,14862.00,15410.00,16005.00]

▲ 输入电压与ADC数值

▲ 输入电压与ADC数值


  1. 电路板设计工程文件:AD\Test\2020\TestAD7606STC\TestAD7606STC8G.SchDoc ↩︎

  2. C51工程文件:C51\STC\Test\2020\testAD76068G1K\TestAD76068G.uvproj ↩︎

AD7606 数据采集模块,16位ADC,8通道同时200KHz频率采集,每秒8*200K样本。SPI接口或8080 16位并口,可自行选择。 AD7606 数据采集模块特性: 使用AD7606 高精度16位ADC芯片 8路模拟输入。阻抗1M欧姆。【无需负电源,无需前端模拟运放电路,可直接接传感器输出】 输入范围正负5V,正负10V。可通过IO控制量程。 分辨率 16位。 最大采样频率 200Ksps。 支持8档过采样设置(可以有效降低抖动) 内置基准 单5V供电 SPI接口或16位总线接口。接口IO电平可以是5V或3.3V AD7606 数据采集模块实物截图: 2种接口方式: 并口模式跳线:R1 悬空(不贴),R2贴10K电阻 SPI接口模式跳线:R1 贴10K电阻,R2 悬空(不贴) 附件内容例程主要包括AD7606_SPI例程、ADS7606_SPI_51单片机例程等 见截图; 【软件定时采集的实现方案1】 --- 我们提供的SPI例子采用这种方案,见bsp_spi_ad7606.c文件 在定时器中断服务程序中实现: 定时器中断ISR: { 中断入口; 读取8个通道的采样结果保存到RAM; ----> 读取的是上次的采集结果,对于连续采集来说,是没有关系的 启动下次ADC采集;(翻转CVA和CVB) 中断返回; } 定时器的频率就是ADC采样频率。这种模式可以不连接BUSY口线。 【软件定时采集的实现方案2】 --- 我们提供的8080接口例子采用这种方案,见bsp_ad7606.c文件 配置CVA、CVB引脚为PWM输出模式,周期设置为需要的采样频率; ----> 之后MCU将产生周期非常稳定的AD转换信号 将BUSY口线设置为中断下降沿触发模式; 外部中断ISR: { 中断入口; 读取8个通道的采样结果保存到RAM; } 【软件定时采集的实现方案1和方案2的差异】 (1)方案1 可以少用 BUSY口线,但是其他中断服务程序或者主程序临时关闭全局中断时,可能导致ADC转换周期存在轻微抖动。 (2)方案2 可以确保采集时钟的稳定性,因为它是MCU硬件产生的。但是需要多接一根BUSY口线。
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卓晴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值