用串行端口控制ADC

发布时间:2009-4-3 15:24    发布者:诸葛孔明
关键词: ADC , 串行 , 端口
工程师经常需要连接PC对电路进行简单的测量。当没有资金购买一台用于低速信号的数字化仪时,可以用两只IC,自己做一个连接在PC的串口上。数字化仪的吞吐率主要取决于PC操作系统的性能、处理器速度和内存。我用一台2.4 GHz的Pentium PC实现了250采样/秒,该PC有512M RAM,运行Windows XP。更快的处理器能提供更高的采样速率。计算1秒钟的转换数就可以计算出吞吐率。

电路如图1所示,使用一只MAX232 RS-232接口IC和MCP3201 12位逐次逼近型ADC(模数转换器)。使用C#编写的应用程序,可以将数据输入运行Windows XP或Vista的PC中。源码可从本文的在线版下载,地址为:www.tmworld.com/2008_10



MCP3201使用RTS(准备发送)、CTS(清除发送)和DTR(数据终端就绪)串口线与PC通信。通过其标准SPI(串行外设接口)端口与MAX232通信。模拟信号连接到MCP3201的IN+引脚,MAX232将RS-232信号电平转换为TTL兼容电平。

来自DOUT引脚的数字输出流通过MAX232到达IC的CTS线串行点。RTS线为ADC的CLK(时钟)引脚提供时钟脉冲。在CLK信号的下降沿上,每个独立位出现于DOUT引脚。因此,软件应用必须在时钟脉冲的上升沿锁存该位。最后,DTR线产生CS(片选)信号来构成转换过程。转换过程中CS位必须为低。图2表示过程的时序图。

图2中,有效数据位(最高位在先)在第三个CLK脉冲为低后出现在DOUT线上。因此,必须在读取数据后,用软件舍弃前三位。



软件应用采用免费的微软Visual C# 2008 Express Edition编写。C#中内置了SerialPort元件,提供对端口的全面控制。该软件是作为一个简单的控制台应用执行的。使用该代码,不需要设备驱动就能使用串行端口。

工程师可以方便地重复或修改源码,以适应自己的应用。例如,可以通过因特网将ADC的数据发送到其他位置,或将数据提供给Excel或其他应用进行分析。

另外,也可以改善图1中的硬件设计。例如,在ADC前面放一个低通滤波器可以降低噪声,从而也减少了由于混叠而产生的错误。在MAX232的VCC引脚上一定要用一只旁路电容器。在尽可能靠近元件引脚处放一只1 μF电容器(推荐值)。

类似的逐次逼近型ADC可以代替MCP3201,ADC也要有SPI兼容接口。例如,可以采用LinearTechnology公司的LTC1286或LTC1297。如果打算采用不同的ADC,就需要作一些硬件修改,因此要仔细阅读厂家的数据表。除了MAX232线路驱动器以外,还可以使用类似的元件,如MAX225或MAX233。这些元件不需要任何外接元件,因此简化了设计。

如果采用其他硬件,可能还需要应用源码。例如,可能需要根据所选元件的时序图,修改源码中的for循环语句(int i = 0; i < 15; i++)。
本文地址:https://www.eechina.com/thread-3139-1-1.html     【打印本页】

本站部分文章为转载或网友发布,目的在于传递和分享信息,并不代表本网赞同其观点和对其真实性负责;文章版权归原作者及原出处所有,如涉及作品内容、版权和其它问题,我们将根据著作权人的要求,第一时间更正或删除。
ningfang 发表于 2010-12-24 10:12:20
灌水
990610 发表于 2011-1-15 00:27:59
灌水
sjg 发表于 2011-4-1 19:13:50
谢谢
您需要登录后才可以发表评论 登录 | 立即注册

厂商推荐

相关视频

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表