一种用单片机控制的光谱数据采集系统的设计

发布者:乐观向前最新更新时间:2011-11-02 关键字:单片机  A/D  信号采集  光谱 手机看文章 扫描二维码
随时随地手机看文章

  概述

  在光谱测量中,常用光电倍增管(PMT)和电荷耦合器件(CCD)作为光电转换器。在慢变化、高精度光谱测量中使用PMT;对于闪光灯、荧光和磷光等强度随时间变化时的光谱信号则采用CCD。PMT和CCD输出的信号形式是不同的:光电倍增管输出的是连续的模拟信号;CCD输出的是视频脉冲信号。由于输出信号的不同,相应的信号采集电路也不尽相同。本文所述的系统通过设定控制开关的不同状态,由单片机检测、判断和执行相应的操作,完成对不同形式输入信号的采集。采集到的光谱强度通过并口送入计算机进行处理、计算,并显示和打印出光谱曲线。

由于CCD像元几何尺寸小、精度高,有光积分时间和信号存储功能,因此,可以用来进行光谱测量。被测光源发出的光线经狭缝落在光栅平面上,经光栅色散后在CCD像元上成像,CCD各像元的位置对应于光线色散后不同的波长。CCD输出的是被测对象的视频信号,在视频信号中每一个离散电压信号的大小对应着该光敏元所接收光强的强弱,而信号输出的时序则对应CCD光敏元位置的顺序。由采样电路对CCD输出信号进行逐位采样,根据采样的位数,就可以知道信号所在的波长,而信号的幅度则是该波长的光谱能量。这样,只要对目标进行一次采样,就可以得到在一定波长范围内的光谱分布曲线,因而可以用来测量闪光灯等瞬态发光光谱。

  光电倍增管以其特有的倍增系统,成为一种理想的低噪声放大器。它可以探测极微弱的光信号,而且响应速度很快,有效面积也大,被广泛应用于光信号测量的领域。光电倍增管输出的是一个理想的电流源,外接一个负载电阻,通过测量信号电流在负载上的电压降,即可得到光谱信号。

 一、系统设计

  利用单片机控制A/D采集光谱信号是一种方便快捷的方法。光谱数据采集系统的原理框图如图1所示。它主要由单片机、CCD时序产生电路、

  多路选择开关、A/D采样电路、存储器、并行口倍增管高压调整电路等组成。我们设计的信号采集电路可以用于两种探测器。针对不同的探测器,单片机工作在不同的状态,利用同一A/D采样电路,完成信号的采集。A/D采样通过并口和计算机通讯,由计算机完成光谱数据的处理。这在应用中非常方便实用,可以满足光谱测量要求。

  AT89C52是美国ATMEL公司的产品。89系列的单片机与80C51系列完全兼容。它的最大特点就是在片内含有Flash存储器。我们选用的AT89C52是在标准型AT89C51基础上改进的(在存储器容量、定时器和中断能力上加以改进)。AT89C52的内部含有8KB可改写的Flash内部程序存储器,可擦/写1000次,3级程序存储器加密,256字节内部RAM,32根可编程I/O线,3个16位定时/计数器,可编程串行口,中断级8级。

  

  1.A/D转换

  在光谱数据采集系统中,A/D转换器选用MAX120。其引脚和电路原理如图2所示。MAX120是一种采用BiCMOS工艺、带采样电路的12位模拟数字转换器(ADC);它有片内的跟踪、保持电路(T/H)和低漂移电压基准电路,而且转换速度快、功耗低。它的转换时间为1.6μs,其中包含了T/H电路250ns的采样时间,因此,MAX120的吞吐率高达510 5次/s采样,可以满足一般测量需要。

  MAX120可以接收-5~+5V的模拟输入电压,惟一需要的外部元件是去耦电容(用于为电源电压和基准电压去耦)。它的工作可用0.1~8MHz频率范围的时钟信号。MAX120采用了标准的微处理器接口,3态数据输出可直接与12位数据总线连接。访问数据和在线释放的时序特性参数允许在不插入等待状态的情况下与大多数微处理器兼容。所有的逻辑输入端和输出端与TTL/COMS电平兼容。

图2(b)所示电路图中,内部缓冲器对电容进行充电以减少2次转换之间所需的采集时间。模拟输入端可以看作1个6kΩ电阻与10pF电容并联的电路。2次转换之间,缓冲器输入通过输入电阻与AIN相连。当转换开始时,该输入端又与AIN断开,于是就采集了输入信号。在转换结束时,缓冲器输入端又重新与AIN相连,保持电容再次充电至输入电压。只要不是正在转换过程中,T/H电路就处在跟踪方式下。

  MAX120有5种工作方式:全控制方式、独立方式、慢存储方式、ROM方式和连续转换方式。方式1是全控制方式,它为用户提供最大的控制能力,以控制转换的开始和取数操作。全控制方式用于能插入或不插入等待状态的微处理机系统。方式2是独立方式,为用户提供较大的自主空间。方式3是慢存储方式,主要用于ADC的转换期间微处理器不能被强制进等待状态的微处理器系统。方式4是ROM方式。方式5是连续转换方式,用于基于微处理器的系统。

  系统设计中采用MAX120的工作方式2,即独立方式(MODE=开路,RD=CS=DGND)电路连接方式如图3所示。这种方式下,MAX120能直接与FIFO缓冲器相连或通过DMA口直接与存储器相连。在独立方式下,CONVST引脚上的下降沿启动一次转换,数据输出端总是开放的,当INT/BUSY引脚电平的上升沿指示转换结束时,数据端上数据就得到更新。因为A/D的数据端总有数据,所以,用74HC245双向三态八总线收发器进行总线隔离。

MAX120的输入信号范围为-5~+5V。在对采集信号进行电平调整时,需要用1片LF356运算放大器,电路连接如图4所示。通过对电位器RP2和RP3的调整来实现电平调整,以满足A/D对输入信号的要求。电路MAX120为双极性输入/输出的变换函数。代码的变换均出现在相继两个整数最小数据位(LSB)值的中间。输出代码是2的补码的二进制码且1LSB=2.44mV(10V/4096)。

增益调整和双极性偏置调整,由图4中的电位器RP3和RP2来实现,调整中偏置调整应先于增益调整。调整双极性偏置时,将+1/2LSB(0.61mV)施加到没有反向的放大器输入端,然后调节RP3,使输出代码在0000 0000 0000和0000 0000 0001之间变化。对增益的调整,将满量程(FS)-1/2LSB(2.4988V)施加到放大器的输入端,然后调节RP2,使输出代码在0111 1111 1110和0111 1111 1111之间变化。这两个调整之间可能有一些相互影响,须要反复调整。偏置和增益的调整是对A/D转换的细分,目的在于提高A/D的精度。


  

  2.A/D转换的过程

  本系统中,CCD输出信号的重复频率为200kHz,因而,要求模数转换器的速率要高于200kHz。A/D转换器的工作控制不用系统CPU来完成,而是用专用逻辑控制电路完成,包括地址产生器、总线缓冲隔离器、读写控制逻辑电路和数据存储单元。在数据转换过程中,CPU只负责转换电路的启动和检测1帧数据转换是否结束,中间过程无须CPU干预,使对CCD1帧数据转换由逻辑控制电路自动完成。A/D一次采样的工作过程为:①接收光耦同步采集信号;

  ②驱动A/D转换;③单片机查询是否转换完成;④读出数据,存入存储器。转换过程控制程序框图如图5所示。
用光电倍增管对小于10kHz调制频率的慢变化光谱信号的测量,50kHz的采样频率可以满足测量的要求,其采集电路可以适用于各种光电倍增管的输出信号采集。我们选用12MHz的时钟频率,对软件进行优化,其运行的时间为20μs,采样频率为50kHz,可以满足采样的要求。

  3.光电倍增管的高压调整

  在光电倍增管应用中,高压的稳定性直接影响测量的精度。一般,光电倍增管的倍增级为10级左右,图6所示为倍增管高压与电流增益之间的电流增益之间的倍增关系。从图6可看出电流增益约与阴极-阳极间所加电压的10 6~10 10成比例。所以PMT的输出对工作电压非常敏感,使用时,必须用高稳定性的高压电源。高压电源的漂移、纹波、温度变化、输出变化、负载变化等的综合稳定度必须优手所要求的光电倍增管稳定度1个数量级。我们选用的是由HAMAMATSU(滨松)公司生产的高压模块,其电压最大漂移量为0.03%h。

  为扩大动态范围,须对光电倍增管的高压进行动态调整。图7是控制电压和控制电阻上相应的输出电压的关系曲线。光电倍增管的专用高压模块通过改变高压模块调整端的电压或电阻,来改变输出端的高压。调整电阻用10kΩ电位器,电压调整范围为0~1.4V。

  图8所示为滨松公司高压模块的原理框图。

  为满足不同的测量要求,需要设置三个量程。一般量程的调整为人工调整电位器,效率较低、精度不好控制。这里我们利用单片机控制可编程数字电位器X9C103来实现调整倍增管高压,图9是X9C103的接线原理图。根据测量输出信号的强弱,相应调整PMT的高压,并将调整的状态通过并口送入计算机。X9C103是一个包含100个电阻单元的电阻阵列。在每个单元之间和任一端都有可以被滑动单元访问的抽头点。滑动单元的位置由片选输入端CS、升/降输入端U/D、增加输入端INC控制。它类似于TTL升/降计数器,总阻值10kΩ、工作时钟250kHz、工作电压+5V,滑动端位置存储于非易失性存储器中,可在上电时重新调用,滑动端位置数据可保存100年。X9C103是固态非易失性电位器,它与机械电位器相比有调节更精确、不受意外影响(振动、污染)、节省空间、易于安装、滑动端位置易于由单片机或逻辑电路控制的优点,是理想的数控微调电位器。三线接口由单片机P0口控制1片74LS374来完成锁存,软件编程实现。

二、应用

  为了满足光谱采集的需要,我们设计了相应的信号采集电路,应用单片机控制A/D芯片完成对于两种不同的探测器输出信号的采集。实际应用表明,采集系统的信噪比、采样频率等性能可以满足测量的要求。

  1.用于CCD输出信号采集

  采用CCD测量光谱大大缩短了测量时间,减少了外界环境对测量精度的影响。对于闪光灯、荧光和磷光等强度随时间变化的光源,采用CCD测量其光谱分析,能得到精确的测量结果。

  

  单片机在其中要完成的工作是控制CCD时序脉冲的产生和高速A/D采样频率的实现等,其原理框图如图10所示。对于两相线阵CCD,须要在其相关引脚加入适当脉冲才能正常工作,主要有两相时钟脉冲ψA和ψB、转移门ψTG、复位门ψR,并且要输出与CCD输出信号同步的脉冲,作为信号采集的同步触发信号,其主驱动脉冲由单片机控制产生。

  CCD将光信号转换成视频脉冲信号后,经差分放大和电平调整电路后,输出满足MAX120输入信号范围的信号(-5~+5V),送入A/D转换器的输入端。逻辑控制电路的输入信号是CCD视频脉冲同步信号、微处理器控制是否进行A/D转换信号、A/D转换器状态信号和数据存储器地址信号,经一定的逻辑运算后输出A/D转换的起始信号、地址产生器的计数信号以及送入AT89C52单片机计数端口用来控制转换次数的计数信号。数据隔离器的作用是将A/D转换部分的数据线与主机部分的数据线隔离,使两部分可同时独立工作,不会产生干扰,且在需要时可将A/D转换器的转换结果(在存储器中)读入主机进行处理。地址产生器由二进制计数器构成,数据存储器的地址线与计数器的输出端相接,计数输入信号有清零信号和计数信号。其中,清零信号受主机控制,每次对1帧CCD信号转换前,必须将地址产生器清零,使2048个像元信号的转换结果从零地址开始依次存放;同样,在读存储单元时,也要先地址产生器清零。计数信号由逻辑控制单元提供,在A/D转换和读存储器期间,每对存储器操作1次就使地址加1,连续操作就可以顺序读写存储器。地址分配器是主机用来给每个读写端口分配地址的。由于本系统的独持设计,每个数据存储器只占用1个地址。只要反复对某一地址操作,就可将存储器中的数据读出。

  

  最后,由系统总控制单元采用适当的计算对其进行处理得到被测物图像的信息。系统总控制单元除完成数据处理工作以外,还担负着数据存储、CCD积分时间控制、PC远程数据传输和控制等工作。

  下面给出利用信号采集系统得到的实测光谱。图11是用CCD实测的闪光灯泵浦可调谐掺钛宝石激光器的输出光谱。通过在激光腔内加一铌酸铌晶体光电开关,改变铌酸晶体上的电压,使不同波长的光在激光腔内发生振荡,从而实现钛宝石调谐。这是一种新型的实现钛定石调谐的实验方法,图11所示光谱线就是改变铌酸铌晶体电压,用CCD实测的钛宝石激光器的输出光谱线。每改变一次电压就能很快地、准确地得知输出光的波长和带宽。

  2.用于光电倍增管输出信号采集

  根据被采集光谱信号的特征和采样频率的要求,我们设计了相应的信号采集电路,如图12所示。它的采样频率为50kHz,同时根据测量信号的强弱,相应地调整光电倍增管的高压,从而提高采集系统的动态范围。在这种工作模式下,由AT89C52完成信号采集过程控制和倍增管的高压自动调整。控制完成信号的采集、数据存储和数据的传输。数据存储由一片6264完成,采集到的光谱强度通过并行口送入计算机进行处理。

  

  由于PMT的灵敏度高、精度高,常用来测量分子吸收光谱。利用光谱法检测空气中污染气体的含量,是目前常用的快捷、连续、在线的监测方法。研究污染气体分子的特征吸收光谱是准确测量的关键。图13是利用光电倍增管测得的SO2特片吸收光谱。它是用氘灯日光源,光经过含有SO2气体的吸收波,由光谱仪分光,在出射狭缝处用光光倍增管接收光谱信号。在50kHz采样频率下测得SO2在300nm波长附近的特征吸收光谱,入射光的调制频率日1kHz。

关键字:单片机  A/D  信号采集  光谱 引用地址:一种用单片机控制的光谱数据采集系统的设计

上一篇:图形点阵式液晶显示模块与单片机的接口设计
下一篇:P89V51RD2单片机的时钟电路

推荐阅读最新更新时间:2024-03-16 12:45

Proteus仿真51单片机C语言程序实例-开关控制报警器
简介:51单片机C语言程序实例-开关控制报警器(用K1开关控制报警器,程序控制P1.0输出两种不同频率的声音,模拟很逼真的报警效果)。
[单片机]
Proteus仿真51<font color='red'>单片机</font>C语言程序实例-开关控制报警器
基于单片机的智能太阳能路灯设计
太阳能路灯的应用具有重要的现实意义,尤其是靠小规模火力发电或季节性水力发电的地区,更应大力发展太阳能电力。太阳能路灯以其先进、稳定、智能、成熟的控制技术及显著的节能特性、简便的维护方式等特点得到推广。随着太阳能照明灯具产品的普及,很多应用项目存在质量和售后服务问题。因此,需及时分析原因、规范市场,使太阳能路灯市场健康有序地发展。太阳能是地球上最为直接、普遍、清洁的能源,其作为一种可再生能源,每天达到地球表面的辐射能约2.5亿万桶石油。 1 硬件电路设计 选择DS1302计时器、AT24C02存储器、4位数码显示器、过充过放电路、STC12C2051单片机等组成智能控制系统。根据各部分电路的功能不同,整体电路可分为以下几个部分:太阳
[单片机]
基于<font color='red'>单片机</font>的智能太阳能路灯设计
基于51单片机和可编程逻辑器件实现LED显示屏的硬件设计
0 引言 LED显示屏主要由电流驱动电路及LED点阵阵列、控制系统和PC端管理软件三部分构成(图1)。控制系统负责接收、转换和处理各种外部信号,并实现扫描控制,然后驱动LED点阵显示需要的文字或图案。控制系统作为LED显示屏的核心部分,直接决定了显示屏的显示效果和性能的优劣。本文详细分析采用Verilog HDL对ATF1508AS进行编程,实现双口RAM访问和产生LED点阵驱动电路所需的各种时序信号。 1 LED显示屏的基本结构及关键技术 本系统设计中,控制系统采用单片机+CPLD的方案来实现,整个控制系统可分为:信号接收及处理模块和CPLD的扫描控制模块和LED点阵驱动模块,如图1 所示。本系统的关键技术是使用双口
[单片机]
基于51<font color='red'>单片机</font>和可编程逻辑器件实现LED显示屏的硬件设计
单片机系统中红外通信接口的设计
在许多基于单片机的应用系统中,系统需要实现遥控功能,而红外通信则是被采用较多的一种方法。一般市场上的遥控器协议简单、保密性不强、抗干扰能力较弱。这里,我们介绍一种基于字节传输的红外遥控系统,可以适合于各种复杂的应用场合。   红外通信的基本原理   红外通信的基本原理是发送端将基带二进制信号调制为一系列的脉冲串信号,通过红外发射管发射红外信号。常用的有通过脉冲宽度来实现信号调制的脉宽调制(PWM)和通过脉冲串之间的时间间隔来实现信号调制的脉时调制(PPM)两种方法。本系统采用的为脉时调制方法。数据比特的传送仿照不带奇偶校验的RS232通信,首先产生一个同步头,然后接着8位数据比特,如图1所示。   硬件电路设计  
[单片机]
单片机程序员一天学会Arduino
有人可能会说,一天太快了,当然也有人会说一天太慢了。 没错,的确是这样,因为对于学过51,和stm的地球人来说, 一天时间的确是太久了。但是对于没有学过的人来说, 只要你是一枚合格的程序员,那么你一天就可以学会。 因为芯片的封装了强大方便的API,和我们学完C++去学java是一种感觉。 首先我先学习一下Arduino的API 数字IO口 pinMode(pin,mode) 配置引脚为输人或输出 pin:引脚 mode:模式 INPUT OUTPUT digitalWrite(pin,value) 输出高低电平 pin:引脚 value:电平 HIGH LOW int digitalRead(pin)
[单片机]
stc89c51单片机定时浇水,使用了adc0832+土壤湿度传感
制作出来的定时浇水实物图如下: 单片机源程序如下: /* K1 用于设置选择高位还是低位 左数第四个 K2 用于高/低位减 左数第三个 K3 用于高/低位加 左数第二个 K4用于 设置模式 初始设置其他3按键按下无用 显示at 按下一次之后启动3个按键 显示 mt 左数第一个 当测量值超过设置值或者低于设定值 小灯亮 反之不亮 显示内容 hun :数值% H:数值 mode:模式 L:数值
[单片机]
stc89c51<font color='red'>单片机</font>定时浇水,使用了adc0832+土壤湿度传感
基于51单片机的热释电红外检测报警器程序
两种模式:一种紧急报警模式,另一种布防报警模式。 三个LED指示灯:红色为报警指示灯(检测到有人报警时闪亮)、绿色为布防指示灯(等待布防时1s一闪、进入布防状态时常亮)、黄色为传感器信号指示灯(有信号就亮,否则灭)。 按下布防键,系统计时20秒进入布防状态(此时绿色的led灯闪烁),20秒后系统进入布防状态(此时绿色的led亮长亮),此时当有人靠近时,黄色信号灯亮,红外热释电传感器将信号输送给单片机,单片机接收到信号蜂鸣器响,红色led灯亮,实现声光报警。 当遇到特殊情况时,按下按键1(紧急报警键),系统马上报警。 红外热释电传感器感应人体,当感应到人输出高电平,没感应到人输出低电平。 四个按键:按键1
[单片机]
STM32单片机半主机模式的应用
在keil中编程时常会遇到__use_no_semihosting_swi的警告,这时你就是进入了半主机模式。 在嵌入式的编程中你是避免不了使用printf、fopen、fclose等函数的但是因为嵌入式的程序中并没有对这些函数的底层实现,使得设备运行时会进入软件中断BAEB处,这时就需要__use_no_semihosting_swi这 个声明,使程序遇到这些文件操作函数时不停在此中断处,具体操作如下,将下列程序加入你的工程中: #pragmaimport(__use_no_semihosting_swi)#pragmaimport(_main_redirection)constchar__stdin_name[150]
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved