基于MSP430F149实现的多路数据采集器

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

基于MSP430F149实现的多路数据采集器一·方案论证1·控制器:方案一:采用AT89S52八位单片机实现。单片机软件编程的自由度大,可通过编程实现各种各样的算术算法和逻辑控制。而且体积小,硬件实现简单,安装方便。既可以单独对多传感器控制工作,还可以与PC机通信。运用主从分布式思想,由一台上位机(PC微型计算机),下位机(单片机)多点数据采集,组成两级分布式多点温度测量的巡回检测系统,实现远程控制。另外AT89C51在工业控制上也有着广泛的应用,编程技术及外围功能电路的配合使用都很成熟[1]。不过,其自身功能不够丰富,需要更多的外接电路来实现复杂功能。方案二:使用MSP430作控制器,德州仪器(TI)的超低功率16位RISC混合信号处理器MSP430产品系列为电池供电测量应用提供了最终解决方案。作为混合信号和数字技术的领导者,TI创新生产的MSP430,使系统设计人员能够在保持独一无二的低功率的同时同步连接至模拟信号、传感器和数字组件。综上,我们的控制器采用方案二。2·显示模块:12864液晶显示器是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64,内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示8×4行16×16点阵的汉字.也可完成图形显示.低电压低功耗是其又一显著特点。由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。所以本项目采用12864显示。3·供电系统:5V可由LM7805稳压电路转换而来,供液晶使用;3.3V则由SPX117产生,供单片机以及信号调理电路使用。4·滤波电路4~20mA电流信号经75欧姆采样电阻转换成0.3V~1.5V电压信号,经过低通滤波器后进入运放,通过射极跟随器连接到单片机IO口。在输入运放之前采用一阶低通滤波来减小高频的共模干扰,射极跟随器起的作用是,保护后级电路和实现阻抗匹配。二·系统组成结构框图如图所示:外部信号通过模拟信号调理电路将外界输入的4~20mA电流转换成0~1.5V的电压信号用ADC10模块进行采集通过单片机的内部运算将电压信号转换成需要显示的电流信号。模拟信号调理版由采样电阻,低通滤波以及射极跟随器组成。采样电阻将输入的电流信号转换成电压信号,低通滤波减少存在于输入端的共模干扰,射极跟随器起到减小输出阻抗以及保护后级电路的作用。模拟信号调理版将输入的4~20mA电流信号转换成0.3~1.5V的电压信号通过单片机进行采集。采集完成后送往点阵液晶进行显示。三·电路图显示电路采集电路数模转换MSP430F149电源传感器接口单片机电路RS232转换电路3.3V稳压电源5V稳压电源PCB版图四·软件流程图下图为本系统软件主流程图。系统上电后,对各模块进行初始化,包括:A/D模块、定时器、看门狗、LCD以及串口等。然后判断采样方式,进行采样和显示,系统默认的采样方式为循环采样。主程序#includeMSP430F149.h#includeUART.h#includeADC12.h#include12864.h#includeKey.hvoidmain(){WDTCTL=WDTPW+WDTHOLD;UartInit();display_init();showNo=0;gap=1;gapTime=10;TaTemp=0;CCTL0=CCIE;//CCR0interruptenabled/CCR0=50000;TACTL=TASSEL_2+MC_1;//SMCLK,contmodewelcome();ADC12Init();P4OUT&=0xfd;//指示灯用write_com(0x01);channelSelect();for(i=0;i8;i++){if(channel[i]){write_com(0x80+0x40+(2*i));write_dat('');write_dat(0x31+i);}else{write_com(0x80+0x40+(2*i));write_dat('');write_dat('');}}//P1DIR=0xff;//测试用的,对功能没有影响__enable_interrupt();while(1){keyHandle();Screen_show();DATA();/*send(0xffff);for(i=0;i8;i++){send(ADresult[i]);}*/}}//TimerA0interruptserviceroutine#pragmavector=TIMERA0_VECTOR__interruptvoidTimer_A(void){TaTemp+=1;if(TaTemp=gapTime){send(0xffff);for(i=0;i8;i++){send(ADresult[i]);}//P1OUT^=0x01;//测试用的,对功能没有影响TaTemp=0;}}总结与思考通常,在大家使用ADC10是往往只是运用其单次采样模式,而本作品运用AD10,IO模块让大家学会应用顺序采样模式。顺序采样用很多优点,比如在并行度要求不高的情况下可考虑用顺序采样代替,本作品最高可达到0.1ms/8路的采样速度,足以应付速度不高的应用。顺序采样还可以加快采样速度(只需对软件略作修改),当我们通常会对采样值取平均,以降低偶然误差,但这么做也会降低采样速度,如1M的采集速度,采50个数去平均,值只能达到20K但若在此基础上采用8路顺序采样,就可将速度提高到160K,提高了8倍!本作品充分利用了2231的内部资源,完全利用了它的14个IO口,经测试,性能良好。在本作品基础上,建议读者关于本作品功能的进一步增强进行如下思考:(1)为了降低8路信号之间的相互干扰,可否在面包板上自己搭建在采集板上能否加入硬件隔离电路?(2)硬件运用了大量的无源滤波电路,为了实现更好的阻抗匹配是否可使用使用有源滤波?(3)用取样电阻的方式将电流转换成电压会浪费精度。Eg:将4~20mA的电流信号用取样电阻进行取样只能转换成0.3~1.5V的电压。浪费了0.3V以下的电压。可否设计一种电路使其充分利用精度范围.(4)程序中运用软件延时控制采集间隔,为了更好地节省CPU资源,可否运用Timer解决延时问题。

1 / 10
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功