APP下载

基于AVR单片机的海流计数据采集系统设计

2014-08-20陈长安吴建岚王升

现代电子技术 2014年16期
关键词:数据采集

陈长安+吴建岚+王升

摘 要: 目前业内普遍使用的直读式海流计功耗大,连续工作时间短,且无数据存储功能,可靠性不高,在需长时间进行海洋观测使用时十分不便。针对这一情况,为提高直读式海流计的可靠性,以AVR单片机ATmega8为核心处理器,基于水下分机输出脉冲信号形式,采用中断计数的基本原理,重新设计开发了一种低功耗高可靠的海流计数据采集系统。样机测试结果表明:该系统操作简单、性能稳定,可长时间在水下连续可靠工作,完全满足各种海洋作业中海流测量需求。

关键词: ATmega8; 海流计; 数据采集; 实时时钟; 铁电存储器

中图分类号: TN911?34; TP274 文献标识码: A 文章编号: 1004?373X(2014)16?0111?03

Design of current meter data acquisition system based on AVR single chip computer

CHEN Chang?an, Wu Jian?lan, WANG Sheng

(Unit 91388 of PLA, Zhanjiang 524022, China)

Abstract: Since the common used direct reading current meter has the disadvantages of high?power consumption, short continuous working time, low reliability and no storage function, a new current meter data acquisition system with low?power consumption and high reliability was designed on the basis of basic principle of the counting interrupt to improve the reliability of the direct reading current meter. The AVR microcomputer ATmega8 is adopted as kernel processor in the data acquisition system. The pulse signal form of underwater part is utilized in the system design. The testing results of prototype machine show that the system features easy operation, stable performance and low cost, and can work continuously for a long time under water. It can fully meet the requirements of various current measurements.

Keywords: ATmega8; current meter; data acquisition; real?time clock; ferroelectric memory

旋浆式流速仪是目前水文作业中普遍使用的测量仪器,其特点是结构简单,使用方便,价格低廉。其中,中国海洋大学海洋仪器厂生产的直读式海流计为典型代表,该仪器由100 m负重电缆、一个水下探头和一个水上监控器组成,可以直接读出温度、流向和流速数据[1?2]。由于研制年代久远,所用芯片功耗大,连续工作时间短,且无数据存储,可靠性不高。针对这一情况,本文从实际应用出发,设计了新型海流计数据采集系统。该系统基于AVR单片机技术,实时显示测量数据和时间信息,具备数据快速存储和事后导出功能。通过合理的电路和程序设计,降低了系统功耗,提高了仪器的可靠性和方便性。

1 系统总体结构

系统以水下分机输出信号为采集对象,采用AVR单片机ATmega8为主控芯片,主要包括数据采集、实时时钟、数据存储三部分,系统总体结构[3]如图1所示。

图1 系统总体结构框图

系统设计原理为:根据水下分机输出信号的形式,设计了脉冲鉴宽电路,分辨不同宽度的信号,输出数据类型(温度、流向、流速)和数据值两路信号到单片机。单片机以外部中断方式采集数据类型和数据值,通过串行方式读取实时时钟信息,然后对数据值和时间信息进行格式转化,最后写入存储芯片并发送到LCD显示。测量完毕后,可以通过RS 232串口导出数据到PC。

2 系统硬件设计

整个硬件系统以ATmega8单片机为核心,ATmega8是一款采用低功耗CMOS工艺生产的基于AVR RISC(精简指令集)结构的8位单片机[4]。该单片机将32个工作寄存器和丰富的指令集联结在一起,所有工作寄存器都与算术逻辑单元直接相连,一条指令可以同时访问2个独立的寄存器,提高了代码效率,运行速度比普通单片机高出10倍[5]。本系统ATmega8 选用5 V电源,8 MHz外部晶振,采用外部中断方式采集数据。实时时钟选用独立时钟芯片DS1302,存储芯片选用Ramtron公司的铁电存储器FM24C64。

2.1 水下分机输出信号形式

水下分机输出信号包括温度、流向、流速信息,通过同一信号线以负脉冲形式发送到数据采集系统,如图2所示。经调试可知,水下分机信号有其自身特点:信号产生频率为1/15 Hz,信号高电平为 6 V,低电平为0 V,信号线空闲时为高电平;每个周期包括温度、流向、流速三组信号,按时间顺序依次出现,每类信号以宽负脉冲信号起始,随之而来的窄负脉冲数表示信号值,最后一个宽负脉冲表示一个周期结束。

图2 水下探测器传输信号形式

2.2 数据采集电路

数据采集电路实际由脉冲鉴宽电路和单片机外部中断接口组成,如图3所示。

图3 数据采集电路原理图

脉冲鉴宽电路的作用是判别有效信号段,水下分机信号从Input端输入,输出type(数据类型)信号和value(数据值)信号到单片机外部中断口,单片机中断触发设置为下降沿有效。信号线空闲时,type信号端为高电平。如果Input端出现宽负脉冲,三极管Q5截止,电容C10充分放电,两端电位差为零,上升沿时三极管Q5导通,type端产生一个瞬时低电位,触发单片机外部中断1;如果Input端出现窄负脉冲,电容C10没有充分放电,type端没有瞬时低电位产生,不能触发单片机外部中断1。所以,当单片机外部中断1被触发时,表示上一组信号结束,下一组数据起始,随即采集value端输出的脉冲个数就可以获得相应数据值大小。容易看出,value端电平变化与Input端同步,触发单片机外部中断2采集数据值。Input端有宽负脉冲出现时,type端触发单片机外部中断1,判别已采集数据类型并保存数据值,同时开始下一类数据采集。流速数据采集完后,一个采集周期结束。

2.3 实时时钟模块

实时时钟模块为测量数据提供时间参考,便于数据处理和事后结果分析。若采用单片机计时,则耗费单片机资源,且难于实现断电情况下保持时钟连续运行。基于以上原因,选用了独立时钟芯片DS1302。该芯片是一款高性能、低功耗时钟电路,具有双电源管脚和对后背电源涓流充电的功能,主电源关闭情况下,由纽扣电池继续供电,保持时钟的连续运行。内部含有7 B实时时钟/日历寄存器和 31 B静态RAM,可以对2100年以前的年、月、日、周日、时、分、秒进行计时。DS1302采用同步串行方式与单片机通信,如图4所示,仅需三线连接:RST(复位),I/O(数据线),SCLK(串行时钟)。单片机以发送控制字方式读写DS1302内部寄存器,读取时间信息与采集水下分机信号同步,两者合并为一组数据存入FM24C64。

2.4 数据存储模块

系统每15 s接收一组数据并保存,每组数据包括时、分、秒、温度、流向、流速,共9 B。选用容量64 KB的铁电存储器FM24C64,最大连续存储时间约3 h,可擦写次数1012次,完全满足存储空间及性能的要求。

FM24C64通过I2C总线与单片机通信,如图4所示。单片机作为主器件,FM24C64作为从器件。FM24C64的1,2,3脚用于确定从器件地址,该模块只有一个从器件,故把它们都接地;SCL(时钟线)接单片机PC5脚,SDA(数据线)接单片机PC4脚。当SCL为高电平时,SDA由高电平跳变到低电平定义为“通信开始”信号,此时单片机可以读写FM24C64,SDA线发生低电平跳变到高电平定义为“通信结束”信号,开始和结束信号都是由单片机产生。数据采集完毕后,可以一次读取FM24C64全部数据并通过RS 232串口发送到数据处理计算机[6]。

3 软件设计

下位机软件采用C语言编写,C语言目前已成为设计嵌入式系统的标准语言,它既有普通高级语言结构化编程、可读性好、维护方便的特点,又具有低级语言对硬

件访问方便、代码执行效率高的特点[7]。

本系统软件以ICCAVR作为编译平台,采用模块化设计,便于维护升级,可读性好。软件主要包括主程序、数据采集中断程序、时间读写、数据存储、数据显示、RS 232串口通信等六部分,主程序流程图[8]如图5所示。

图5 主程序流程图

主程序循环检测PC机指令和新采集数据,如果接收到时间设置或上传数据到PC机的指令,则挂起当前程序,运行时间设置或上传数据的中断程序,运行完后返回挂起程序;如果检测到有新采集数据,则转换数据格式为固定位长,写入FM24C64,进入下一个循环。

图6为数据采集中断程序流程图。每组数据以温度开始,以流速结束。因温度数据包含4位有效数字,而流速、流向数据都不大于360,故以计数值是否大于360来判断每组数据的起始点。每采集一个数据值,就转换一次数据类型,采集完一组数据后,数据类型清零。鉴于篇幅限制,程序源代码省略。

图6 数据采集中断程序流程图

4 结 语

本文介绍以ATmega8微控制器为核心,包含数据采集电路、实时时钟电路、数据存储和串口通信多种功能的海流计监控系统的实现方法。实际使用证明,本系统具有可靠、方便和连续工作时间长的特点,易于修改移植,有效提高了海流计的测量能力,对测控领域利用AVR单片机设计数据采集监控系统具有一定的借鉴意义。

参考文献

[1] 张正惕,吴辰,霍艳虹.SLC9?2型直读式海流计的工作原理简述及维护使用经验[J].东海海洋,2000,18(1):61?64.

[2] 宋文洋,吴葆仁,孟昭舫.新型浅海用旋浆式海流计[J].海洋技术,1988,7(4):42?50.

[3] 王勇.基于AVR单片机的一体化GPS接收机设计[J].自动化仪表,2008,29(2):65?67.

[4] 马潮,詹卫前,耿德根.ATmega8原理及应用手册[M].北京:清华大学出版社,2003.

[5] 骆骄,杨振强.基于ATmega8的新型电动自行车调速控制系统设计[J].国外电子元器件,2005(5):17?19.

[6] 廖平,陈峰,马洪秋.Delphi环境下PC机与AVR单片机的串行通讯[J].现代电子技术,2008,31(2):123?125.

[7] 沈文,Eagle lee,詹卫前.AVR单片机C语言开发入门指导[M].北京:清华大学出版社,2003.

[8] 栾亚群,李炳建,巨永锋.基于AT89C52单片机的温度检测及显示设计[J].现代电子技术,2008,31(15):130?132.

图2 水下探测器传输信号形式

2.2 数据采集电路

数据采集电路实际由脉冲鉴宽电路和单片机外部中断接口组成,如图3所示。

图3 数据采集电路原理图

脉冲鉴宽电路的作用是判别有效信号段,水下分机信号从Input端输入,输出type(数据类型)信号和value(数据值)信号到单片机外部中断口,单片机中断触发设置为下降沿有效。信号线空闲时,type信号端为高电平。如果Input端出现宽负脉冲,三极管Q5截止,电容C10充分放电,两端电位差为零,上升沿时三极管Q5导通,type端产生一个瞬时低电位,触发单片机外部中断1;如果Input端出现窄负脉冲,电容C10没有充分放电,type端没有瞬时低电位产生,不能触发单片机外部中断1。所以,当单片机外部中断1被触发时,表示上一组信号结束,下一组数据起始,随即采集value端输出的脉冲个数就可以获得相应数据值大小。容易看出,value端电平变化与Input端同步,触发单片机外部中断2采集数据值。Input端有宽负脉冲出现时,type端触发单片机外部中断1,判别已采集数据类型并保存数据值,同时开始下一类数据采集。流速数据采集完后,一个采集周期结束。

2.3 实时时钟模块

实时时钟模块为测量数据提供时间参考,便于数据处理和事后结果分析。若采用单片机计时,则耗费单片机资源,且难于实现断电情况下保持时钟连续运行。基于以上原因,选用了独立时钟芯片DS1302。该芯片是一款高性能、低功耗时钟电路,具有双电源管脚和对后背电源涓流充电的功能,主电源关闭情况下,由纽扣电池继续供电,保持时钟的连续运行。内部含有7 B实时时钟/日历寄存器和 31 B静态RAM,可以对2100年以前的年、月、日、周日、时、分、秒进行计时。DS1302采用同步串行方式与单片机通信,如图4所示,仅需三线连接:RST(复位),I/O(数据线),SCLK(串行时钟)。单片机以发送控制字方式读写DS1302内部寄存器,读取时间信息与采集水下分机信号同步,两者合并为一组数据存入FM24C64。

2.4 数据存储模块

系统每15 s接收一组数据并保存,每组数据包括时、分、秒、温度、流向、流速,共9 B。选用容量64 KB的铁电存储器FM24C64,最大连续存储时间约3 h,可擦写次数1012次,完全满足存储空间及性能的要求。

FM24C64通过I2C总线与单片机通信,如图4所示。单片机作为主器件,FM24C64作为从器件。FM24C64的1,2,3脚用于确定从器件地址,该模块只有一个从器件,故把它们都接地;SCL(时钟线)接单片机PC5脚,SDA(数据线)接单片机PC4脚。当SCL为高电平时,SDA由高电平跳变到低电平定义为“通信开始”信号,此时单片机可以读写FM24C64,SDA线发生低电平跳变到高电平定义为“通信结束”信号,开始和结束信号都是由单片机产生。数据采集完毕后,可以一次读取FM24C64全部数据并通过RS 232串口发送到数据处理计算机[6]。

3 软件设计

下位机软件采用C语言编写,C语言目前已成为设计嵌入式系统的标准语言,它既有普通高级语言结构化编程、可读性好、维护方便的特点,又具有低级语言对硬

件访问方便、代码执行效率高的特点[7]。

本系统软件以ICCAVR作为编译平台,采用模块化设计,便于维护升级,可读性好。软件主要包括主程序、数据采集中断程序、时间读写、数据存储、数据显示、RS 232串口通信等六部分,主程序流程图[8]如图5所示。

图5 主程序流程图

主程序循环检测PC机指令和新采集数据,如果接收到时间设置或上传数据到PC机的指令,则挂起当前程序,运行时间设置或上传数据的中断程序,运行完后返回挂起程序;如果检测到有新采集数据,则转换数据格式为固定位长,写入FM24C64,进入下一个循环。

图6为数据采集中断程序流程图。每组数据以温度开始,以流速结束。因温度数据包含4位有效数字,而流速、流向数据都不大于360,故以计数值是否大于360来判断每组数据的起始点。每采集一个数据值,就转换一次数据类型,采集完一组数据后,数据类型清零。鉴于篇幅限制,程序源代码省略。

图6 数据采集中断程序流程图

4 结 语

本文介绍以ATmega8微控制器为核心,包含数据采集电路、实时时钟电路、数据存储和串口通信多种功能的海流计监控系统的实现方法。实际使用证明,本系统具有可靠、方便和连续工作时间长的特点,易于修改移植,有效提高了海流计的测量能力,对测控领域利用AVR单片机设计数据采集监控系统具有一定的借鉴意义。

参考文献

[1] 张正惕,吴辰,霍艳虹.SLC9?2型直读式海流计的工作原理简述及维护使用经验[J].东海海洋,2000,18(1):61?64.

[2] 宋文洋,吴葆仁,孟昭舫.新型浅海用旋浆式海流计[J].海洋技术,1988,7(4):42?50.

[3] 王勇.基于AVR单片机的一体化GPS接收机设计[J].自动化仪表,2008,29(2):65?67.

[4] 马潮,詹卫前,耿德根.ATmega8原理及应用手册[M].北京:清华大学出版社,2003.

[5] 骆骄,杨振强.基于ATmega8的新型电动自行车调速控制系统设计[J].国外电子元器件,2005(5):17?19.

[6] 廖平,陈峰,马洪秋.Delphi环境下PC机与AVR单片机的串行通讯[J].现代电子技术,2008,31(2):123?125.

[7] 沈文,Eagle lee,詹卫前.AVR单片机C语言开发入门指导[M].北京:清华大学出版社,2003.

[8] 栾亚群,李炳建,巨永锋.基于AT89C52单片机的温度检测及显示设计[J].现代电子技术,2008,31(15):130?132.

图2 水下探测器传输信号形式

2.2 数据采集电路

数据采集电路实际由脉冲鉴宽电路和单片机外部中断接口组成,如图3所示。

图3 数据采集电路原理图

脉冲鉴宽电路的作用是判别有效信号段,水下分机信号从Input端输入,输出type(数据类型)信号和value(数据值)信号到单片机外部中断口,单片机中断触发设置为下降沿有效。信号线空闲时,type信号端为高电平。如果Input端出现宽负脉冲,三极管Q5截止,电容C10充分放电,两端电位差为零,上升沿时三极管Q5导通,type端产生一个瞬时低电位,触发单片机外部中断1;如果Input端出现窄负脉冲,电容C10没有充分放电,type端没有瞬时低电位产生,不能触发单片机外部中断1。所以,当单片机外部中断1被触发时,表示上一组信号结束,下一组数据起始,随即采集value端输出的脉冲个数就可以获得相应数据值大小。容易看出,value端电平变化与Input端同步,触发单片机外部中断2采集数据值。Input端有宽负脉冲出现时,type端触发单片机外部中断1,判别已采集数据类型并保存数据值,同时开始下一类数据采集。流速数据采集完后,一个采集周期结束。

2.3 实时时钟模块

实时时钟模块为测量数据提供时间参考,便于数据处理和事后结果分析。若采用单片机计时,则耗费单片机资源,且难于实现断电情况下保持时钟连续运行。基于以上原因,选用了独立时钟芯片DS1302。该芯片是一款高性能、低功耗时钟电路,具有双电源管脚和对后背电源涓流充电的功能,主电源关闭情况下,由纽扣电池继续供电,保持时钟的连续运行。内部含有7 B实时时钟/日历寄存器和 31 B静态RAM,可以对2100年以前的年、月、日、周日、时、分、秒进行计时。DS1302采用同步串行方式与单片机通信,如图4所示,仅需三线连接:RST(复位),I/O(数据线),SCLK(串行时钟)。单片机以发送控制字方式读写DS1302内部寄存器,读取时间信息与采集水下分机信号同步,两者合并为一组数据存入FM24C64。

2.4 数据存储模块

系统每15 s接收一组数据并保存,每组数据包括时、分、秒、温度、流向、流速,共9 B。选用容量64 KB的铁电存储器FM24C64,最大连续存储时间约3 h,可擦写次数1012次,完全满足存储空间及性能的要求。

FM24C64通过I2C总线与单片机通信,如图4所示。单片机作为主器件,FM24C64作为从器件。FM24C64的1,2,3脚用于确定从器件地址,该模块只有一个从器件,故把它们都接地;SCL(时钟线)接单片机PC5脚,SDA(数据线)接单片机PC4脚。当SCL为高电平时,SDA由高电平跳变到低电平定义为“通信开始”信号,此时单片机可以读写FM24C64,SDA线发生低电平跳变到高电平定义为“通信结束”信号,开始和结束信号都是由单片机产生。数据采集完毕后,可以一次读取FM24C64全部数据并通过RS 232串口发送到数据处理计算机[6]。

3 软件设计

下位机软件采用C语言编写,C语言目前已成为设计嵌入式系统的标准语言,它既有普通高级语言结构化编程、可读性好、维护方便的特点,又具有低级语言对硬

件访问方便、代码执行效率高的特点[7]。

本系统软件以ICCAVR作为编译平台,采用模块化设计,便于维护升级,可读性好。软件主要包括主程序、数据采集中断程序、时间读写、数据存储、数据显示、RS 232串口通信等六部分,主程序流程图[8]如图5所示。

图5 主程序流程图

主程序循环检测PC机指令和新采集数据,如果接收到时间设置或上传数据到PC机的指令,则挂起当前程序,运行时间设置或上传数据的中断程序,运行完后返回挂起程序;如果检测到有新采集数据,则转换数据格式为固定位长,写入FM24C64,进入下一个循环。

图6为数据采集中断程序流程图。每组数据以温度开始,以流速结束。因温度数据包含4位有效数字,而流速、流向数据都不大于360,故以计数值是否大于360来判断每组数据的起始点。每采集一个数据值,就转换一次数据类型,采集完一组数据后,数据类型清零。鉴于篇幅限制,程序源代码省略。

图6 数据采集中断程序流程图

4 结 语

本文介绍以ATmega8微控制器为核心,包含数据采集电路、实时时钟电路、数据存储和串口通信多种功能的海流计监控系统的实现方法。实际使用证明,本系统具有可靠、方便和连续工作时间长的特点,易于修改移植,有效提高了海流计的测量能力,对测控领域利用AVR单片机设计数据采集监控系统具有一定的借鉴意义。

参考文献

[1] 张正惕,吴辰,霍艳虹.SLC9?2型直读式海流计的工作原理简述及维护使用经验[J].东海海洋,2000,18(1):61?64.

[2] 宋文洋,吴葆仁,孟昭舫.新型浅海用旋浆式海流计[J].海洋技术,1988,7(4):42?50.

[3] 王勇.基于AVR单片机的一体化GPS接收机设计[J].自动化仪表,2008,29(2):65?67.

[4] 马潮,詹卫前,耿德根.ATmega8原理及应用手册[M].北京:清华大学出版社,2003.

[5] 骆骄,杨振强.基于ATmega8的新型电动自行车调速控制系统设计[J].国外电子元器件,2005(5):17?19.

[6] 廖平,陈峰,马洪秋.Delphi环境下PC机与AVR单片机的串行通讯[J].现代电子技术,2008,31(2):123?125.

[7] 沈文,Eagle lee,詹卫前.AVR单片机C语言开发入门指导[M].北京:清华大学出版社,2003.

[8] 栾亚群,李炳建,巨永锋.基于AT89C52单片机的温度检测及显示设计[J].现代电子技术,2008,31(15):130?132.

猜你喜欢

数据采集
CAN总线通信技术在电梯监控系统中的应用
基于AVR单片机的SPI接口设计与实现
CS5463在植栽用电子镇流器老化监控系统中的应用
大数据时代高校数据管理的思考
基于广播模式的数据实时采集与处理系统
通用Web表单数据采集系统的设计与实现
基于开源系统的综合业务数据采集系统的开发研究
大数据时代的管理会计