多路数据采集系统.docx
《多路数据采集系统.docx》由会员分享,可在线阅读,更多相关《多路数据采集系统.docx(26页珍藏版)》请在冰点文库上搜索。
![多路数据采集系统.docx](https://file1.bingdoc.com/fileroot1/2023-7/27/ff9f7247-ed81-46de-b33d-b0453ab2f262/ff9f7247-ed81-46de-b33d-b0453ab2f2621.gif)
多路数据采集系统
多路数据采集系统
第一章绪论
数据采集系统在工业测控以及试验室研究方面的应用非常广泛,随着科学技术的发展,数据采集技术被普遍认为是现代科学研究和技术发展的一个重要方面。
数据采集系统正向着高精度、高速度、稳定可靠和集成化的方向发展,在多个领域有着广泛的应用。
它是工、农业控制系统中至关重要的一环,在医药、化工、食品、等领域的生产过程中,往往需要随时检测各生产环节的温度、湿度、流量及压力等参数。
同时,还要对某一检测点任意参数能够进行随机查寻,将其在某一时间段内检测得到的数据经过转换提取出来,以便进行比较,做出决策,调整控制方案,提高产品的合格率,产生良好的经济效益。
随着工农业的发展,多路数据采集势必将得到越来越多的应用,为适应这一趋势,作这方面的研究就显得十分重要。
数据采集技术是以前端的模拟信号处理、数字化、数字信号处理和计算机等高科技为基础而形成的一门综合技术,是联系模拟世界和数字世界的桥梁。
它在许多领域得到了广泛的应用。
数字技术促进了上述这些领域的发展,而反过来又对数据采集系统提出了愈来愈高的要求。
采集系统的核心部分主要是靠单片机来实现的,在任何单片机测控制系统中,都是从尽量快速,尽量准确,尽量完整地获得数字形式的数据开始的,因此,数据采集系统作为沟通模拟域与数字域的毕不可少的桥梁起着非常重要的作用。
第二章设计要求与方案论证
2.1设计要求及系统功能
2.1.1设计要求
设计一个七路数据采集系统,系统原理框图如图2-1所示,要求主控器能对50米以内的各路数据,通过串行传输线进行采集和显示。
具体设计任务是:
现场模拟信号产生器,七路数据采集器,主控器。
图2-1系统原理框图
2.1.2系统功能
1、实现现场模拟信号产生器,即通过自制一正弦波信号发生器,利用可变电阻改变振荡频率,使频率在200Hz~2kHz范围变化,再经频率电压变换后输出相应1~5V直流电压(200Hz对应1V,2kHz对应5V)。
2、七路数据采集器:
数据采集器第一路输入自制1V~5V直流电压,第2~7路分别输入来自直流源的5V、4V、3V、2V、1V、0V直流电压(各路输入可由分压器产生,不要求精度)。
将各路模拟信号分别转换成8位二进制数字信号,在经并/串变换电路,用串行码送入传输线路。
3、主控器通过串行传输线路对各路数据进行采集和显示。
采集方式包括循环采集(即1路、2路……7路、1路……)和选择采集(任选一路)二种方式。
显示器能同时显示地址和相应的数据。
2.2方案选择与论证
微控制器的选择:
方案一:
该方案的系统原理框图如图2-2所示,它能完成所要求的功能。
但是存在不足之处是:
AT89C51没有A/D转换器,所以需要在F/V变换器后加入一个A/D转换器,这样系统不仅复杂了,而且因为A/D单独成一部分,使系统整体的采集速度也下降了。
图2-2方案一系统框图
方案二:
该方案的系统原理框图如图2-3所示,它使用SPCE061A单片机作CPU,该CPU内核具有模块化的结构,内置A/D转换器,时钟频率高运行速度快,并且具有语音报警语音提示的功能。
方案比较:
方案1和方案2采用相同的现场模拟信号发生器、通讯方式,实现起来都能达到题目的要求。
但是方案一的结构相对比较复杂,数据采集速度方面也有所限制,而方案二更具结构化,编程方便,SPCE061A内置的A/D电路、32Kflash以及在线调试、下载功能,使得开发时间大大缩短。
另外,SPCE061A具有音频处理功能,只要调用库函数即可实现音频编程,所以可以用来扩展系统的语音播放、以及语音报警功能,因此本系统采用SPCE061A来实现。
图2-3方案二系统框图
第三章SPCE061A简介
SPCE061A是凌阳科技推出的一个16位结构的微控制器。
与SPCE5_00A不同的是,在存储器资源方面考虑到用户的较少资源的需求以及便于程序调试等功能,SPCE061A里只内嵌32K字的闪存FLASHROM。
较高的处理速度使μ’nSP™能够非常容易地、快速地处理复杂的数字信号。
因此,与SPCE500A相同,以μ’nSP™为核心的SPCE061A微控制器也适用在数字语音识别应用领域。
SPCE061A在2.6V~3.6V工作电压范围内的工作速度范围是0.32MHz~49.152MHz,较高的工作速度使其应用领域更加拓宽。
2K字SRAM和32K字闪存ROM仅占一页存储空间,32位可编程的多功能I/O端口;两个16位定时器/计数器;32768Hz实时时钟;低电压复位/监测功能;8通道10位模-数转换输入功能并具有内置自动增益控制功能的麦克风输入方式;双通道10位DAC方式的音频输出功能。
SPCE061A是数字声音和语音识别产品的一种最经济的应用。
3.1SPCE061A的特点
⑴16位μ’nSP™微处理器;
⑵工作电压:
VDD为2.6~3.6V(CPU),VDDH为VDD~5.5V(I/O);
⑶CPU时钟:
0.32MHz~49.152MHz;
⑷内置2K字SRAM;
⑸内置32K闪存ROM;
⑹可编程音频处理;
⑺晶体振荡器;
⑻系统处于备用状态下(时钟处于停止状态),耗电小于2μA@3.6V;
⑼2个16位可编程定时器/计数器(可自动预置初始计数值);
⑽2个10位DAC(数-模转换)输出通道;
⑾32位通用可编程输入/输出端口;
⑿14个中断源可来自定时器A/B,时基,2个外部时钟源输入,键唤醒;
⒀具备触键唤醒的功能;
⒁使用凌阳音频编码SACM_S240方式(2.4K位/秒),能容纳210秒的语音数据;
⒂锁相环PLL振荡器提供系统时钟信号;
⒃32768Hz实时时钟;
⒄7通道10位电压模-数转换器(ADC)和单通道声音模-数转换器;
⒅声音模-数转换器输入通道内置麦克风放大器和自动增益控制(AGC)功能;
⒆具备串行设备接口。
3.2SPCE061A主要部分功能介绍
1、CPU
SPCE061A配备了凌阳科技开发的最新的16位微处理器μ’nSP™。
它内含有8个寄存器:
4个通用寄存器R1~R4,1个程序计数器PC,1个堆栈指针SP,1个基址指针BP和1个段寄存器SR。
通用寄存器R3和R4结合形成一个32位寄存器MR,MR可被用作乘法运算和内积运算的目标寄存器。
此外,SPCE061A有3个FIQ中断和14个IRQ中断,并且带有一个由指令BREAK控制的软中断。
μ’nSP™不仅可以进行加、减等基本算术运算和逻辑运算,还可以完成用于数字信号处理的乘法运算和内积运算。
2、存储器映象
SRAM:
SPCE061A拥有2K字的SRAM(包括堆栈区),其地址范围从$000000到$0007FF。
闪存FlashROM:
32K字的内嵌式闪存用于存放程序和数据。
全部32K字闪存均可在ICE工作方式下被编程写入或被擦除。
对闪存设置保密设定后,其内容将不能再通过ICE被读写,也就可以使程序不被其他人读取。
3、输入输出端口
输入输出端口是系统与其它设备进行数据交换的接口。
SPCE061A具有两个可编程输入输出端口:
A口和B口。
A口既是具有可编程唤醒功能的普通I/O口,又可与ADC的多路LINE_IN输入共用(IOA[6~0]与LINE_IN[1~7]共用,此时IOA必须被设置为悬浮管脚);B口除了具有普通I/O口的功能外,在特定的管脚上还可以完成一些特殊的功能。
4、定时器/计数器
SPCE061A提供了两个16位的定时器/计数器:
TimerA和TimerB。
TimerA为通用计数器;TimerB为多功能计数器。
TimerA的时钟源由时钟源A和时钟源B进行“与”操作而形成;TimerB的时钟源仅为时钟源A。
定时器发生溢出后会产生一个溢出信号(TAOUT/TBOUT)。
一方面,它会作为定时器中断信号传输给CPU中断系统;另一方面,它又会作为4位计数器计数的时钟源信号,输出一个具有4位可调的脉宽调制占空比输出信号APWMO或BPWMO(分别从IOB8和IOB9输出),用来控制马达或其它一些设备的速度。
此外,定时器溢出信号还可以用于触发ADC输入的自动转换过程和DAC输出的数据锁存。
5、中断
SPCE061A具有两种中断方式:
快速中断请求FIQ(FastInterruptRequest)中断和中断请求IRQ(InterruptRequest)中断。
中断控制器可处理3种FIQ中断和14种IRQ中断,以及一个由指令BREAK控制的软中断。
相比之下,FIQ中断的优先级较高而IRQ中断的优先级较低。
也就是说,FIQ中断可以中断IRQ中断服务子程序的执行,而CPU执行相应的FIQ中断服务子程序的过程不能被任何中断源的中断请求
6、睡眠与唤醒
睡眠:
IC在上电复位开始工作,直到接收到睡眠信号后,才关闭系统时钟(PLL振荡器),进入睡眠状态。
用户可以通过对P_SystemClock(读)($7013H)单元写入CPUClk,STOP控制字(CPU睡眠信号)使系统从运行状态转入备用状态。
系统进入睡眠状态后,程序计数器(PC)会停在程序的下一条指令计数上,当有任一唤醒事件发生后开始由此继续执行程序。
唤醒:
系统接收到唤醒信号后接通系统时钟(PLL振荡器),同时CPU会响应唤醒事件的处理并进行初始化。
IRQ3_KEY为触键唤醒(IOA7~0),其它中断源(FIQ、IRQ1~IRQ6及UARTIRQ)都可以作为唤醒源。
唤醒操作完成后,程序将会从进入睡眠后指令计数的断点处开始被继续执行。
7、系统时钟
系统时钟的信号源为PLL振荡器。
系统时钟频率(Fosc)和CPU时钟频(CPUCLK)可通过对P_SystemClock(写)($7013H)单元编程来控制。
默认的Fosc、CPUCLK分别为24.576MHz和Fosc/8。
用户可以通过对P_SystemClock单元编程完成对系统时钟和CPU时钟频率的定义。
此外,32768HzRTC振荡器有两种工作方式:
强振模式和自动弱振模式。
处于强振模式时,RTC振荡器始终运行在高耗能的状态下。
处于自动弱振模式时,系统在上电复位后的前7.5s内处于强振模式,然后自动切换到弱振模式以降低功耗。
CPU被唤醒后默认的时钟频率为Fosc/8,用户可以根据需要调整该值。
这样可以避免在系统被唤醒后造成ROM读取错误。
在SPCE061A内,P_SystemClock(写)($7013H)单元控制着系统时钟和CPU时钟。
通过设置该单元的第5位可以改变系统时钟的频率(Fosc=20/24MHz);将第0~2位置为“111”可以使CPU时钟停止工作,系统切换至低功耗的备用状态。
此外,在备用状态下,通过设置该单元的第4位可以接通或关闭32KHz实时时钟。
8、锁相环PLL(PhaseLockLoop)振荡器
PLL的作用是为系统提供一个实时时钟的基频(32768Hz),然后将基频进行倍频,调整至49.152MHz、40.96MHz、32.768MHz、24.576MHz或20.480MHz。
系统默认的PLL自激振荡频率为24.576MHz。
9、模-数转换器ADC
SPCE061A有8个10位模-数转换器,其中7个通道用于将模拟量信号(例如电压信号)转换为数字量信号,可以直接通过引线(IOA[0~6])输入。
另外有一个通道只作为语音输入通道,通过内置有自动增益控制放大器的麦克风通道(MIC_IN)输入。
实际上可以把模数转换器(ADC,AnalogtoDigitalConverter)看作是一个实现模/数信号转换的编码器。
在ADC内,由数模转换器DAC0和逐次逼近寄存器SAR组成逐次逼近式模-数转换器。
向P_ADC_Ctrl(写)($7015H)单元第0位(ADE)写入“1”用以激活ADC。
系统默认的设置为屏蔽ADC(ADE=0)。
ADC采用自动方式工作。
硬件ADC的最高速率限定为(Fosc/32/12)Hz,如果速率超过此值,当从P_ADC(读)($7014H)单元读出数据时会发生错误。
10、DAC方式音频输出
SPCE061A提供的音频输出方式为双DAC方式。
在此方式下,DAC1、DAC2转换输出的模拟量电流信号分别通过AUD1和AUD2管脚输出,输入的数字量分别写入P_DAC1(写)($7017)和P_DAC2(写)($7016)单元。
11、低电压监测/低电压复位(LVD/LVR)
SPCE061A可通过屏蔽选项设置或取消低电压监测和低电压复位功能,目的是为了通过对系统的电源电压进行监控,而使系统运行在一个正常、可靠的工作环境,并在一旦出现电源异常的情况下能立即采取相应的措施,使系统及时恢复正常。
12、串行设备输入输出端口SIO
串行输入输出端口SIO提供了一个1位的串行接口,用于与其它设备进行数据通讯。
在SPCE061A内通过IOB0和IOB1这2个端口实现与设备进行串行数据交换功能。
其中,IOB0用来作为时钟端口(SCK),IOB1则用来作为数据端口(SDA),用于串行数据的接收或发送。
第四章系统硬件设计
4.1SPCE061A最小系统
最小系统接线如图4-1所示,在OSC0、OSC1端接上晶振及谐振电容,在锁相环压控振荡器的阻容输入VCP端接上相应的电容电阻后即可工作。
其它不用的电源端和地端接上0.1µF的去藕电容提高抗干扰能力。
按键S1作为单片机手动复位键。
图4-1SPCE061A的最小系统图
4.2系统电源电路设计
电源电路由变压器和整流稳压电路组成。
变压器TRANS用于将220V交流电压转换为15V的低压交流电,中间有抽头;整流电路用于将低压交流电整流为脉动电压,该脉动电压与滤波电容E1、E2、E3、E4相连,形成较平滑的直流电压。
将直流电压送入三端稳压器7812和7912输入端Vin后,在输出端形成±12V直流稳压电压,供测量电路使用。
+12V电压通过7805转换成+5V电压。
±12V、+5V电源电路如图4-2所示。
图4-2±12V、+5V电源电路
单片机系统需要+3.3V电压供电,我们采用SPY0029A将+5V电压降为+3.3V,系统电源电路如图4-3所示。
其中的前后两组电容用来去耦滤波,使其供给芯片的电源更加干净平滑。
两个二极管,是为防止误将电源接反造成不必要损失而设置
图4-3+3.3V电源电路
的,在操作过程中千万不要将电源接反,因为反向电压超过一定的值,二极管将会被损坏,达不到保护的目的。
4.3RS-485通信接口电路设计
1、RS-485概述
RS-485采用差分信号负逻辑,是平衡驱动器和差分接收器的组合,抗共模干能力增强,即抗噪声干扰性好,数据最高传输速率为10Mbps ,+2V~+6V表示“0”,-6V~-2V表示“1”。
RS-485有两线制和四线制两种接线,四线制只能实现点对点的通信方式,现很少采用,现在多采用的是两线制接线方式,这种接线方式为总线式拓朴结构在同一总线上最多可以挂接32个结点。
在RS-485通信网络中一般采用的是主从通信方式,即一个主机带多个从机。
很多情况下,连接RS-485通信链路时只是简单地用一对双绞线将各个接口的“A”、“B”端连接起来。
而忽略了信号地的连接,这种连接方法在许多场合是能正常工作的,但却埋下了很大的隐患,这有二个原因:
(1)共模干扰问题:
RS-485接口采用差分方式传输信号方式,并不需要相对于某个参照点来检测信号,系统只需检测两线之间的电位差就可以了。
但人们往往忽视了收发器有一定的共模电压围,RS-485收发器共模电压范围为-7~+12V,只有满足上述条件,整个网络才能正常工作。
当网络线路中共模电压超出此范围时就会影响通信的稳定可靠,甚至损坏接口。
(2)EMI问题:
发送驱动器输出信号中的共模部分需要一个返回通路,如没有一个低阻的返回通道(信号地),就会以辐射的形式返回源端,整个总线就会像一个巨大的天线向外辐射电磁波。
2、接口电路
本系统用到的RS-485的接口电路如图4-4所示,MAX3485使用半双工通讯,其中A与B口采用差分实现传输,RO口为读数据用,RE_N为读使能位(低电平有效),DE口为写数据使能(高电平有效),DI口为写数据用。
图4-4 RS-485接口电路
4.4模拟信号产生器
本系统使用的模拟信号产生器电路由两部分组成:
⑴正弦波信号发生器
⑵频率电压变换电路。
系统中采用ICL8038产生正弦波信号。
1、集成函数发生器ICL8038电路结构及工作原理
函数发生器ICL8038的电路结构如图4-5框内所示,共有5个组成部分。
2个电流源的电流分别为IS1和IS2,且IS1=I,IS2=2I;2个电压比较器1和2的阈值电压分别为1/3VCC和1/3VEE,他们的输入电压等于电容两端的电压uc,输出电压分别控制RS触发器的S端和R端;RS触发器的输出端Q和用来控制电子开关S,实现对电容C的充放电;2个缓冲放大器用于隔离波形发生电路和负载,使三角波和矩形波输出端的输出电阻足够小,以增强带负载能力;三角波变正弦波电路用于获得正弦波信号。
图4-5ICL8038电路框图
工作原理:
当给函数发生器ICL8038接通电源时,电容C的电压为0V,电压比较器Ⅰ和Ⅱ的输出电压均为低电平;因而RS触发器的输出Q为低电平,为高电平时使电子开关S断开,电流源IS1对电容充电,充电电流时间的增长而线性上升。
uc的上升使RS触发器的R端从低电平跃变为高电平,但其输出不变,一直到uc上升到1/3VCC时,电压比较器Ⅰ的输出电压跃变为高电平,Q才变为高电平,导致电子开关S闭合,电容C开始放电,放电电流为IS2-IS1=I,因放电电流是恒流,所以,电容上电压uc随时间的增长而线性下降。
起初,uc的下降虽然使RS触发器的S端从高电平跃变为低电平,但其输出不变。
一直到uc下降到1/3VEE,使电压比较器Ⅱ的输出电压跃变为低电平,Q才变为低电平,使得电子开关S断开,电容C又开始充电。
重复上述过程,周而复始,电路产生了自激振荡。
由于充电电流与放电电流数值相等,因而
电容上电压为对称三角波形,经缓冲放大器输出。
三角波电压通过三角波变正弦波电路输出正弦波电压。
通过以上分析可知,改变电容充电放电电流即改变RA,RB的数值,或改变电容C的数值,就改变了充放电时间,因此可改变其频率。
2、正弦信号产生电路
正弦信号产生电路如图4-6所示。
通过改变R26的值来改变ICL8308输出的正弦波的频率,使频率在200Hz~2kHz范围变化,其中SIN为正弦波输出端口。
图4-6正弦波信号发生器
3、频率电压变换电路
频率电压变换电路如图4-7所示,输入信号的正弦波信号经过LM358组成的过零比较器转换成频率信号作为LM331芯片的输入信号,调节滑动电阻R28,使得200Hz对应1V输出,2kHz对应5V输出,其中SIN为频率输入端,VOUT为电压输出端。
图4-7 频率电压变换电路
4.5主机电路
主机主要由键盘显示电路、音频输出电路和通信电路组成,完成对从机发送命令、数据处理和显示以及键盘处理等功能。
1、键盘显示接口电路如图4-8所示,IOA0~IOA2、IOA8~IOA15和IOB0~IOB3为SPCE061A的IO口。
LED采用动态扫描的方式驱动,键盘采用矩阵式键盘,其功能如表4-1所示。
表4-1键盘功能表
键名
功能
KEY1
1
KEY2
2
KEY3
3
KEY4
4
KEY5
5
KEY6
6
KEY7
7
KEY8
PLAY
KEY9
S
KEY10
C
KEY11
Enter
KEY12
Cancel
2、音频输出电路
凌阳的SPCE061A是16位单片机,具有DSP功能,有较强的DSP功能,最高时钟可达49MHz,具备运算速度高的优势等等,这为语音播放、录放、合成及辨识提供了条件。
凌阳的SPCE061A自带双通道DAC音频输出,DAC1和DAC2转换输出的模拟量电流信号分别通过AUD1和AUD2脚输出,经LM386放大,即可驱动喇叭放音,接口电路如图4-9所示。
图4-8键盘显示接口电路
图4-9音频输出接口电路
4.6从机电路
从机主要数据采集电路和通信电路组成,完成对数据的采集和数据传送等功能,其电压转换接口电路如图4-10所示,通信接口电路如图4-3所示。
由于SPCE061A内置7路10位AD电路,采样电压范围为0~3.3V,所以要将0~5V的电压转换成0~3.3V的电压,需要外接分压电阻,另外从机系统还有一个RS-485接口电路。
其中IOA0~IOA6位SPCE061A的IO口。
图4-10从机电压转换接口电路
第五章软件设计
5.1从机系统的主程序流程
从机系统的主程序流程如图5-1所示。
从机主要负责循环采集7路数据和命令判断,在没有接收到主机的命令的时候,一直做循环采集,并存入Buffer以便增强系统的响应速率。
图5-1从机主程序流程图
5.2从机系统的中断程序流程
从机系统的中断程序流程图如图5-2所示,它是UART接收数据完毕IRQ7中断,它是用于接收主机发送的命令字。
图5-2 从机系统的中断程序
5.3主机系统的主程序流程
主机系统的主程序流程如图5-3所示,主机系统主要负责按键处理语音播报、发送命令给从机,同时进行采样显示。
图5-3 主机主程序流程图
5.4主机发送命令接收数据的流程
主机系统通过命令控制从机进行数据采集和传送,主机发送命令和接收数据程序流程如图5-4所示。
图5-4 主机发送命令接收数据的流程返回
5.5主机系统中断程序FIQ和IRQ5流程
主机系统使用两个中断资源,其中FIQ的TimerA中断用于播放语音数据,该中断的程序流程如图5-5所示;其中2Hz中断用于循环采集,它用于定时用,每隔2妙循环采样一次,该中断的流程如图5-6所示。
图5-5主机系统2Hz中断流程
图5-6主机的播放语音中断
结论
采用凌阳单片机SPCE061A开发数据采集系统,具有很大的市场前景。
首先,它的易学、易用的语音编程、开发环境,可以使初学者迅速入门;其次它具有模块化的结构,内置7路10位的AD,简化用户的电路设计;再者,它具有语音识别、音频处理功能,使得用户可以开发出更智能化的产品。
对于在校大学生来说,在掌握软件的同时,熟练单片机硬件的设计制作,锻炼的动手能力,为校园内的单片机学习者和开发者创造了一个良好的学习和新产品开发的机会。
经过三个多月的设计和调试,多路数据采集系统基本功能已基本实现,基本达到了设计指标:
⑴实时采集七路数据;
⑵系统分为主从机,从机负责数据采集并通过RS-485将数据传输给主机;主机负责数据显示和处理。
⑶采集精度:
10位A/D转换。
参考文献
[1].赵子婴等.单片机原理及应用[M].山东:
山东大学出版社.2003年.
[2].张毅刚.主编.MCS-51单片机应用设计[M].哈尔滨:
哈尔滨工业大学出版社.1997年.
[3].MAX3485数据手册[M].
[4].ICL8038数据书册[M].
[5].LM331数据手册[M].
[6].董诗白.模拟电子技术基础[M].北京:
清华大学.1994年.
[7].吴中俊.全国大学生电子设计竞赛[M].北京:
北京航天航空大学.1994年.
[8].薛钧义、张彦斌、虞鹤松、樊波.凌阳十六位单片机原理及应用[M].北京:
北京航天航空大学出版.2003年.
[9].李晶皎.嵌入式语音技术及凌阳16单片机应用[M].北京:
北京航天航空大学出版