DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 138|回复: 0
打印 上一主题 下一主题

基于LabVIEW与凌阳SPCE061A实现串口数据采集(MAX232EPE)

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-16 17:26:37 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

                    摘要:介绍利用凌阳SPCE061A单片机采集数据,Labview作为开发调试平台,二者之间通过串口实现数据通讯的数据采集系统,详细介绍了软硬件实现方案。
关键词:LabVIEW;虚拟仪器;SPCE061A;串口;数据采集

引言
LabVIEW是一个划时代的图形化编程系统,应用于数据采集与控制、信号分析等方面,它为不熟悉文本语言编程的专业科技工作者在测控领域建立计算机仪器系统——虚拟仪器,提供了一个便捷、轻松的图形化设计环境。由于其灵活、简单易用、开发效率高等特点,正逐渐成为科技工作者进行仪器应用与开发的得力工具。数据采集是开发过程中一个重要的环节,NI公司提供了各种不同类型的基于LabVIEW的数据采集卡,但是其价格昂贵,对于小型企业、实验教学等方面仍存在着不可避免的资金问题。而市面上销售的第三方开发的数据采集卡,由于不具备对LabVIEW的直接支持,需要用户开发其驱动程序,使用也不方便。如果采用以凌阳16位单片机SPCE061A作为前端数据采集,通过串口进行与LabVIEW的数据通讯,就可实现低成本、灵活方便、接口简单的数据采集系统。这对于许多信号频率不是太高的场合,此方案无疑非常便利。本文所介绍的就是这样一种利用LabVIEW 对SPCE061A的数据进行分析处理,并通过串口实现二者之间的数据交换、经济实用的数据采集及分析系统。
本系统主要包含两部分的设计:LabVIEW部分设计和SPCE061A数据采集与串口通讯部分设计。
1 LabVIEW部分设计
1.1 VISA简介
LabVIEW提供了功能强大的VISA库。VISA(Virtual Instrument Software Architecture——虚拟仪器软件规范,是用于仪器编程的标准I/O函数库及其相关规范的总称。VISA库驻留于计算机系统中,完成计算机与仪器之间的连接,用以实现对仪器的程序控制,其实质是用于虚拟仪器系统的标准的API。VISA本身不具备编程能力,它是一个高层API,通过调用底层驱动程序来实现对仪器的编程,其层次如图1(a)所示。VISA是采用VPP标准的I/O接口软件,其软件结构应包含三部分,如图1(b)所示。




(a)VISA内部机制

(b)虚拟仪器的软件体系结构



screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" border=0>


图1



与其它现存的I/O接口软件相比,VISA的I/O控制功能具有如下几个特点:适用于各种仪器类型如VXI仪器、GPIB仪器、RS-232 串行仪器、消息基器件、寄存器器件、存储器器件等仪器);适用于各种硬件接口类型;适用于单、多处理器结构或分布式网络结构;适用于多种网络机制。
VISA的I/O的软件库的源程序是唯一的,其与操作系统及编程语言无关,只是提供了标准形式的API文件作为系统的输出。
1.2 VISA库中的串口函数
? ?本文用到的主要的串口通讯函数调用路径为:Functions→Instrument I/O→VISA→VISA Advanced→Interface→Specific→Serial中。
1)??VISA Configure Serial Port节点(如图2所示)


screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" border=0>



图2??VISA Configure Serial Port.vi图标及其端口
该节点主要用于串口的初始化。主要参数意义如下:
l? ?? ?? ?VISA resource name:设置串口号。
l? ?? ?? ?baud rate:设置波特率,默认值为9600。
l? ?? ?? ?data bits:设置数据位。该位应在5~8之间,默认值为8。
l? ?? ?? ?parity:奇偶校验位,默认值为无校验、偶校验等。
l? ?? ?? ?stop bits:设置停止位,可以为1、1.5、2。
l? ?? ?? ?flow control:用于设置握手信号类型。
2) VISA Read节点(如图3所示)





screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" border=0>

图3 VISA Read.vi 图标及其端口
该节点为串口读子VI,为本文中的主要节点,将串口中的数据读出,然后利用LabVIEW的强大数据处理功能对其进行分析处理。主要参数意义如下:
l? ?? ?? ?VISA resource name:设置串口号。
l? ?? ?? ?byte count:设置读取字节数。
l? ?? ?? ?read buffer:从串口读取的字符。
? ?由于LabVIEW的串行通讯子VI只允许对字符串的读写,因此本文中在进行数据处理时,必须要实现字符串与数字之间的正确转换。此外,若要读入当前串口中的所有字符,则要先执行“VISA Bytes at Serial Port”子VI,用以确定将要读入的确切的字节数,然后将其输出作为VISA Read节点的输入即可。
2??SPCE061A数据采集与串口通讯部分设计
2.1硬件部分
SPCE061A内置8通道10位模-数转换器,其中7个通道用于将模拟量信号 (例如电压信号) 转换为数字量信号, 可以直接通过引线(IOA[0"6])输入。另外一个通道只用于语音输入,即通过内置自动增益控制放大器的麦克风通道(MIC_IN)输入。实际上可以把模数转换器(ADC,Analog to Digital Converter)看作是一个实现模/数信号转换的编码器。在ADC内,由数模转换器DAC0和逐次逼近寄存器SAR组成逐次逼近式模-数转换器。另外,SPCE061A内置UART模块,UART模块提供了一个全双工标准接口,用于完成SPCE061A与外设之间的串行通讯。借助于IOB口的特殊功能和UART IRQ中断,可以同时完成UART接口的接收和发送数据的过程。UART模块的接收管脚Rx和Tx分别与IOB7和IOB10共用。
本电路采用RS-232串行接口标准,在电气特性上,RS-232采用负逻辑,要求高低两信号间有较大的幅度,标准为:逻辑“1”在-5V~-15V之间,逻辑“0”在+5V"+15V之间,通常采用-1V左右为逻辑1,+10V左右为逻辑0。本电路采用符合RS-232标准的驱动芯片MAX232EPE实现此转换。由于SPCE061A的信号输入输出为TTL电平,逻辑1为3.3V左右,逻辑0为0.4V左右,而MAX232EPE要求+5V供电,因此,在 MAX232EPE和SPCE061A之间加了电平匹配电路。
整个电路接口简单,可靠性高。硬件部分原理图如图5所示





screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" border=0>

图5??硬件原理图
2.2软件部分
LabVIEW软件与串口实现数据通讯的程序图,如图6所示,由于SPCE061A发送给Labview的是字符串数据,所以先把该字符串转换为字符数组,然后通过一个数组索引指定数组的第一个字符显示并形成波形。





screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" border=0>

图6. LabVIEW串口通讯程序图
单片机SPCE061A利用通用串行接口UART实现串口通讯部分程序:
//************************主程序*****************************************//
L_ResendData:
L_Check_TxRDY:
R2 = [P_UART_Command2];
R2 &= 0x0040;? ?? ?? ?? ?? ? //检测输出是否READY
JZ L_Check_RxRDY;? ?? ?? ???//发送8位十六进制数cc

R1 = [recFlag];

CMP R1,0x0000;? ?? ?? ?? ?? ?//是否接收过数据

JZ L_Check_RxRDY;

[P_UART_Data] = R4;? ?? ?? ? //发送数据

R1 = 0x0000; [recFlag] = R1;

L_Check_RxRDY:

R2 = [P_UART_Command2];? ? //检测是否有数据接收

R2 &= 0x0080;

JZ L_Check_RxRDY;

R4 = [P_UART_Data];? ?? ?? ?//接收数据

R1 = 0x0001;

[recFlag] = R1;? ?? ?? ?? ?? ?//设置接收标识符

goto L_ResendData;




3.应用实例

如图7所示,利用该数据采集系统进行一温度数据的采集,在图5的硬件原理图中,将铂热电阻PT100测得的温度电压值(该测温电路由电压跟随和电压放大电路组成)送入到SPCE061A的IOA4端口,通过该路AD转换通道,将电压值经过数据处理后转换为16进制数据值,并将处理后的温度数据通过串口发送给LabVIEW,经过分析对比PT100铂电阻准确的温度曲线与所测得的温度曲线可以得出在该温度采集系统的软件编程过程中应该对AD转换后的数据乘以一个多大的温度系数以及在分段温度系数的情况下得出温度系数转折点,使处理后的所得的温度数值尽可能的接近真实温度值。



图7 利用LabVIEW与SPCE061A的温度数据数据采集系统
4 结论

LabVIEW作为一个具有良好开放性的虚拟仪器开发平台,为面向仪器的编程提供了强有力的支持,在LabVIEW环境下能够开发出各种功能强大、开放性好的虚拟仪器软件,构造出实用的计算机辅助测试、分析与控制系统。本文利用SPCE061A进行前端数据采集,通过串口实现与LabVIEW的数据通讯,利用LabVIEW的强大信号分析处理功能,开发了一套投资少、操作简便的数据采集与信号分析系统(其虚拟面板如图7 所示)。实验证明,该系统运行良好。
            
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-9-25 04:29 , 耗时 0.120842 秒, 20 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表