0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于AD7705的32通道模拟量采集系统设计

h1654155282.3538 来源:Chip37 作者:Chip37 2021-02-10 17:58 次阅读

检测技术与应用、DCS的I/O板卡以及信号传输等许多工业生产过程中都需要将数据传输到计算机,这一过程必须先进行A/D转换。目前A/D转换芯片种类非常多,有的价格高且设计复杂,有的转换精度低满足不了要求。为此,挑选了高精度16位A/D转换芯片AD7705,该芯片转换精度高、价格低,满足多种应用。本文设计了以单片机ATmega16为控制核心,以AD7705为前端采集芯片,以CPLD芯片EPM3064为逻辑开关阵列的32通道模拟量采集系统。给出了相应的硬件电路、驱动程序以及应用软件,指出了AD7705在实际应用中应当注意的一些问题。

1.A/D转换芯片AD7705

AD7705具有两个模拟输入通道,利用Σ-Δ转换技术实现了16位无丢失代码性能。模拟调制器具有增益可编程功能,片内设有数字滤波器、处理调制器的输出信号,通过片内控制器可调节滤波器的截止点和输出更新速率。是用于智能系统、微控制器系统和DSP系统的理想产品,其串行接口可配置为3线方式。增益值、信号极性以及更新速率的选择都可通过串行接口由软件来设置。该器件还包括自校准和系统校准功能,以消除器件本身或系统的增益和偏移误差。

2.嵌入式单片机

ATmega16ATmega16是Atmel公司生产的8位嵌入式单片机,它是基于增强的AVRRISC结构的低功耗8位CMOS微控制器。特点为:16K字节的系统内可编程Flash(具有同时读写的能力,即RWW),512字节EEPROM,1K字SRAM,32个通用I/O口线,32个通用工作寄存器,用于边界扫描的JTAG接口,支持片内调试与编程,3个具有比较模式的灵活的定时器/计数器(T/C),片内/外中断,1个可编程串行USART,1个SPI串行端口等,硬件资源非常丰富。

3.采集系统的设计

采集系统的硬件构成在功能上主要包括线性电源电路、AD7705外围电路、ATmega16外围电路和通道选择电路。

3.1线性电源电路

本电路(图1)电压为+5V和+3.3V。使用电源芯片78L05、Z33等,D1、D2为5V稳压管,D8、D9为3.3V稳压管。C14、C17用于滤除高频杂波,C15、C16用于保证输出电压平坦,外部供电为+12V。

o4YBAGAGrVKAUxINAAFA-WPGEq0375.png

图1 线性电源电路

3.2AD7705外围电路

AD7705的外围电路如图2所示。时钟频率设计为2.4576MHz,晶振Y1两端需各接一20pF电容到地以保证时钟频率的精准。电源电压VDD为+5V。AN1+与AN1-,AN2+与AN2-分别接模拟输入信号。芯片REF192为AD公司生产的精密基准电压源,为AD7705提供2.5V基准电压,其输出引脚6到地之间需并接0.1μF和10μF的电容以保证其输出电压平坦。

AD7705%E5%A4%96%E5%9B%B4%E7%94%B5%E8%B7%AF%E5%8E%9F%E7%90%86%E5%9B%BE.jpg

图2 AD7705外围电路原理

AD7705与单片机Atmega16接口电路为片选端CS—PD4、复位端RESET—PD5、逻辑输出端DRRY—PB3、串行数据输入端DIN—PB5、串行数据输出端DOUT—PB6和串行时钟SCLK—PB7。

3.3ATmega16外围电路

ATmega16(图3)的供电电压VCC为+5V,时钟频率8MHz。PB5为串行外设接口SPI的主机输出端,PB6为主机输入端,PB7为SPI时钟。PB3、PD4、PD5用作普通的数字接口。AVCC为模拟电源,需经LC网络接至数字电源VCC,L1为10μH,C11为100nF,LC网络用于抑制噪声、提高抗干扰能力。该电路控制AD7705以完成数据的采集,主要是利用其SPI接口对AD7705进行各种初始配置,控制A/D转换并读取转换结果。

ATmega16%E5%A4%96%E5%9B%B4%E7%94%B5%E8%B7%AF%E5%8E%9F%E7%90%86%E5%9B%BE.jpg

图3 ATmega16外围电路原理图

3.4通道选择电路

该电路在ATmega16的程序控制下工作,AT-mega16的控制信号通过PA4~PA0以完成32个通道模拟的模拟量采集。以高度集成CPLD芯片EPM3064为解码电路,制作一个5/32解码器,用VHDL语言编写而成,其供电电压3.3V,输入信号PA4~PA0和PD7,输出信号为TD0~TD31。EPM3064是基于EEPROM的CMOS工艺CPLD,其有64个宏单元,100管脚TQFP封装有66个用户I/O管脚,可满足许多应用需要。

PD7作为5/32解码器的使能信号,用于选择采集通道0~31。DS2Y-S为信号继电器,其引脚8、9接AD7705模拟信号1的AN1+与AN1-,引脚4、13接通道0的模拟输入信号AI0+与AI0-。其导通断开通过PNP三极管Q1驱动,控制信号为TD0,二极管D1起续流作用,保护电路正常工作同时具有抑制尖峰干扰作用。通道1~31的选择电路类似,同理设计模拟信号输入AI1~AI31的选择电路。PD7作为使能信号,低电平有效,总共需要32片信号继电器,本质上通道选择电路(图4)是由CPLD芯片EPM3064和信号继电器构建的逻辑阵列开关。

%E9%80%9A%E9%81%93%E9%80%89%E6%8B%A9%E7%94%B5%E8%B7%AF.jpg

图4 通道选择电路

4.软件设计

软件设计包括3个子模块:SPI初始化模块、AD7705驱动模块、定时器模块。工作过程:首先通过ATmega16的SPI接口驱动AD7705,完成AD7705通道设置、时钟设置、更新速率以及校准模式等,然后启动ATmega16的定时器,在定时器中断函数中查询AD7705的状态,如转换完成则读取转换结果,否则继续等待直到转换完成,如此不断读出所需的转换结果。程序流程如图5所示。

%E7%A8%8B%E5%BA%8F%E6%B5%81%E7%A8%8B%E6%A1%86%E5%9B%BE.jpg

图5 程序流程框图

4.1SPI初始化模块

对ATmega16的SPI接口进行配置:

void spi_init(void)

{

DDRB|=(1《

DDRB&=~(1《

PORTB|=(1《

SPCR=(1《

}

4.2AD7705驱动模块

该模块程序完成对AD7705的配置任务,需要注意的是读写寄存器之前必须先选择要操作的寄存器。

向AD7705写入1字节函数,入口参数data为需写入的字节数据:

voidwr_7705(unsignedchardata)

{

SPDR=data;//启动数据传输

while(!(SPSR&(1《《SPIF)))//等待传输

结束;

}

读出AD7705数据函数,返回值为读出的2字节数据:

unsignedintrd_7705(void)

{

unsignedinttemp;//定义临时变量

wr_7705(0x38);//选择读数据寄存器,1通道

SPDR=1;//启动数据传输

while(!(SPSR&(1《《SPIF)))//等待传输结

{

;

}

temp=SPDR《《8;//读取高字节

SPDR=1;//启动数据传输

while(!(SPSR&(1《《SPIF)))//等待传输结束

{

;

}

temp|=SPDR;//读取低字节

return(temp);

}

AD7705初始化函数:

voidinit_7705(void)

{

wr_7705(0x20);//选择时钟寄存器,下一操作是写

wr_7705(0x00);//20Hz的更新速率

wr_7705(0x10);//选择设置寄存器,下一操作是写

wr_7705(0x44);//自校准模式,增益为1,单极性

}

4.3定时器模块

利用定时器1按一定的时间间隔读取AD7705的转换结果。读取数据之前必须确定数据寄存器的状态,有两种不同的方式:第1种是查询DRDY引脚,如果处于低电平,表示已经转换完成,可以读取;第2种是查询通信寄存器中的DRDY位,如果是0表示可以读取数据:

定时器1初始化函数:

%E5%AE%9A%E6%97%B6%E5%99%A81%E5%88%9D%E5%A7%8B%E5%8C%96%E5%87%BD%E6%95%B0.jpg

定时器1溢出中断函数:

%E5%AE%9A%E6%97%B6%E5%99%A81%E6%BA%A2%E5%87%BA%E4%B8%AD%E6%96%AD%E5%87%BD%E6%95%B0.jpg

结语

本文总结了基于AD7705的32通道模拟量采集系统设计,经过试验证明,该采集系统不仅减少仪表设计调试时间,而且结合测量仪器可以构建灵活的测量系统,节约仪器购置成本,提高工作效率。
责任编辑人:CC

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 模拟量
    +关注

    关注

    5

    文章

    491

    浏览量

    25541
  • AD7705
    +关注

    关注

    2

    文章

    39

    浏览量

    20520
收藏 人收藏

    评论

    相关推荐

    使用AD7705进行热电偶采集,使用两个通道对两个热电偶进行采集出现AD7705无法读出的情况怎么处理?

    大家好! 我一直使用AD7705进行热电偶采集, 原来只使用一个通道,没有什么问题,此次使用两个通道对两个热电偶进行采集, 原理图如下:
    发表于 12-22 06:06

    请问AD7705切换通道是否需要重新设置寄存器

    AD7705采集通道一和通道二的电压,读取完通道一后再去读取通道二的数据,是否需要重新设置寄存器
    发表于 08-19 07:56

    AD7705通道单个热电偶断线时无法读出

    大家好!我一直使用AD7705进行热电偶采集, 原来只使用一个通道,没有什么问题,此次使用两个通道对两个热电偶进行采集, 原理图如下: 热电
    发表于 11-01 09:16

    AD7705采样通道2没有数据输出

    连接。每片AD7705芯片的通道1负责采集电流,通道2负责采集电压,并采用轮询的方法进行采样,具体的说就是先
    发表于 12-27 11:26

    AD7705应用经验总结

    寄存器。 5、采用非缓冲模式时,AD7705模拟输入前端的电阻电容的变化对AD转换精度影响很大。若系统工作时的信号源、温度环境、器件参数变化很大,导致AD7705
    发表于 01-18 19:16

    AD7705的基本特性是什么?怎样对AD7705进行校准?

    AD7705的基本特性AD7705的引脚功能AD7705的片内寄存器怎样对AD7705进行校准?
    发表于 04-23 06:09

    模拟量输入输出缓冲的问题

    有没有大佬能给我推荐下能用于做AD7705(两路输入)的输入缓冲器的芯片,还有DAC8411(一路输出)模拟量输出缓冲器的芯片,三极管做的缓冲电路不太稳定,想用芯片做,不知道用哪种。
    发表于 05-30 20:26

    求助,关于AD7705采样的几个问题

    连接。每片AD7705芯片的通道1负责采集电流,通道2负责采集电压,并采用轮询的方法进行采样,具体的说就是先
    发表于 12-18 06:29

    基于AD7705的安全帽质量检测

    采用16 位模数转换芯片AD7705 及精简指令集单片机AT90S8515 为主要元器件,通过AD7705 采集压力传感器检测到安全帽受力情况,然后在AD7705 内部将
    发表于 05-17 17:31 53次下载
    基于<b class='flag-5'>AD7705</b>的安全帽质量检测

    AD7705音频

    AD7705音频学习教材,Altium Designer软件
    发表于 11-16 14:53 0次下载

    AD7705高精度AD采集的两通道STM32程序免费下载

    本文档的主要内容详细介绍的是AD7705高精度AD采集的两通道STM32程序免费下载。
    发表于 02-12 08:00 57次下载
    <b class='flag-5'>AD7705</b>高精度AD<b class='flag-5'>采集</b>的两<b class='flag-5'>通道</b>STM32程序免费下载

    AD7705参考代码

    AD7705参考代码
    发表于 03-18 10:00 57次下载
    <b class='flag-5'>AD7705</b>参考代码

    基于AD7705的32通道模拟量采集系统设计资料下载

    电子发烧友网为你提供基于AD7705的32通道模拟量采集系统设计资料下载的电子资料下载,更有其他相关的电路图、源代码、课件教程、中文资料、英
    发表于 04-29 08:46 30次下载
    基于<b class='flag-5'>AD7705</b>的32<b class='flag-5'>通道</b><b class='flag-5'>模拟量</b><b class='flag-5'>采集</b><b class='flag-5'>系统</b>设计资料下载

    国产核心器件构建多通道模拟量采集系统设计

    国产核心器件构建多通道模拟量采集系统设计
    发表于 06-30 11:11 22次下载

    通道模拟量隔离变送器

    通道模拟量隔离变送器深圳捷晟达(JSD科技)的JSD TA-3003系列三通道模拟量隔离变送器,是将三路输入的模拟量信号进行隔离,放大,信
    发表于 09-02 03:06 0次下载