×

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

消耗积分:5 | 格式:pdf | 大小:294.01KB | 2021-04-29

刘洋

分享资料个

  在检测技术与应用、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。   图1 线性电源电路   3.2 AD7705外围电路   AD7705的外围电路如图2所示。时钟频率设计为2.4576MHz,晶振Y1两端需各接一20pF电容到地以保证时钟频率的精准。电源电压VDD为 5V。AN1 与AN1-,AN2 与AN2-分别接模拟输入信号。芯片REF192为AD公司生产的精密基准电压源,为AD7705提供2.5V基准电压,其输出引脚6到地之间需并接0.1μF和10μF的电容以保证其输出电压平坦。   图2 AD7705外围电路原理图   AD7705与单片机Atmega16接口电路为片选端CS—PD4、复位端RESET—PD5、逻辑输出端DRRY—PB3、串行数据输入端DIN—PB5、串行数据输出端DOUT—PB6和串行时钟SCLK—PB7。   3.3 ATmega16外围电路   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转换并读取转换结果。   图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和信号继电器构建的逻辑阵列开关。   图4 通道选择电路   4.软件设计   软件设计包括3个子模块:SPI初始化模块、AD7705驱动模块、定时器模块。工作过程:首先通过ATmega16的SPI接口驱动AD7705,完成AD7705通道设置、时钟设置、更新速率以及校准模式等,然后启动ATmega16的定时器,在定时器中断函数中查询AD7705的状态,如转换完成则读取转换结果,否则继续等待直到转换完成,如此不断读出所需的转换结果。程序流程如图5所示。   图5 程序流程框图   4.1 SPI初始化模块   对ATmega16的SPI接口进行配置:   void spi_init(void)   {   DDRB|=(1<   DDRB&=~(1<   PORTB|=(1<   SPCR=(1<   }   4.2 AD7705驱动模块   该模块程序完成对AD7705的配置任务,需要注意的是读写寄存器之前必须先选择要操作的寄存器。   向AD7705写入1字节函数,入口参数data为需写入的字节数据:   void wr_7705( unsigned char data)   {   SPDR = data; / /启动数据传输   while ( ! ( SPSR & ( 1 < < SPIF) ) ) / /等待传输   结束;   }   读出AD7705 数据函数,返回值为读出的2字节数据:   unsigned int rd_7705( void)   {   unsigned int temp; / /定义临时变量

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

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !

'+ '

'+ '

'+ ''+ '
'+ ''+ ''+ '
'+ ''+ '' ); $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code ==5){ $(pop_this).attr('href',"/login/index.html"); return false } if(data.code == 2){ //跳转到VIP升级页面 window.location.href="//m.lene-v.com/vip/index?aid=" + webid return false } //是会员 if (data.code > 0) { $('body').append(htmlSetNormalDownload); var getWidth=$("#poplayer").width(); $("#poplayer").css("margin-left","-"+getWidth/2+"px"); $('#tips').html(data.msg) $('.download_confirm').click(function(){ $('#dialog').remove(); }) } else { var down_url = $('#vipdownload').attr('data-url'); isBindAnalysisForm(pop_this, down_url, 1) } }); }); //是否开通VIP $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code == 2 || data.code ==5){ //跳转到VIP升级页面 $('#vipdownload>span').text("开通VIP 免费下载") return false }else{ // 待续费 if(data.code == 3) { vipExpiredInfo.ifVipExpired = true vipExpiredInfo.vipExpiredDate = data.data.endoftime } $('#vipdownload .icon-vip-tips').remove() $('#vipdownload>span').text("VIP免积分下载") } }); }).on("click",".download_cancel",function(){ $('#dialog').remove(); }) var setWeixinShare={};//定义默认的微信分享信息,页面如果要自定义分享,直接更改此变量即可 if(window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == 'micromessenger'){ var d={ title:'基于AD7705的32通道模拟量采集系统设计资料下载',//标题 desc:$('[name=description]').attr("content"), //描述 imgUrl:'https://'+location.host+'/static/images/ele-logo.png',// 分享图标,默认是logo link:'',//链接 type:'',// 分享类型,music、video或link,不填默认为link dataUrl:'',//如果type是music或video,则要提供数据链接,默认为空 success:'', // 用户确认分享后执行的回调函数 cancel:''// 用户取消分享后执行的回调函数 } setWeixinShare=$.extend(d,setWeixinShare); $.ajax({ url:"//www.lene-v.com/app/wechat/index.php?s=Home/ShareConfig/index", data:"share_url="+encodeURIComponent(location.href)+"&format=jsonp&domain=m", type:'get', dataType:'jsonp', success:function(res){ if(res.status!="successed"){ return false; } $.getScript('https://res.wx.qq.com/open/js/jweixin-1.0.0.js',function(result,status){ if(status!="success"){ return false; } var getWxCfg=res.data; wx.config({ //debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId:getWxCfg.appId, // 必填,公众号的唯一标识 timestamp:getWxCfg.timestamp, // 必填,生成签名的时间戳 nonceStr:getWxCfg.nonceStr, // 必填,生成签名的随机串 signature:getWxCfg.signature,// 必填,签名,见附录1 jsApiList:['onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); wx.ready(function(){ //获取“分享到朋友圈”按钮点击状态及自定义分享内容接口 wx.onMenuShareTimeline({ title: setWeixinShare.title, // 分享标题 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享给朋友”按钮点击状态及自定义分享内容接口 wx.onMenuShareAppMessage({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 type: setWeixinShare.type, // 分享类型,music、video或link,不填默认为link dataUrl: setWeixinShare.dataUrl, // 如果type是music或video,则要提供数据链接,默认为空 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ”按钮点击状态及自定义分享内容接口 wx.onMenuShareQQ({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口 wx.onMenuShareWeibo({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ空间”按钮点击状态及自定义分享内容接口 wx.onMenuShareQZone({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); }); }); } }); } function openX_ad(posterid, htmlid, width, height) { if ($(htmlid).length > 0) { var randomnumber = Math.random(); var now_url = encodeURIComponent(window.location.href); var ga = document.createElement('iframe'); ga.src = 'https://www1.elecfans.com/www/delivery/myafr.php?target=_blank&cb=' + randomnumber + '&zoneid=' + posterid+'&prefer='+now_url; ga.width = width; ga.height = height; ga.frameBorder = 0; ga.scrolling = 'no'; var s = $(htmlid).append(ga); } } openX_ad(828, '#berry-300', 300, 250);