引言
在实际工作中,对于多路电阻进行测量,一般采用直接测量法人工操作进行,虽然这种方法很成熟,但所用的配套设备较多,测量数据手工纪录、人工计算,操作繁琐、效率较低,事后的数据处理及出具测量报告既费时又费力,易出现人为因素造成的错判、漏判等,难以保证测量质量,影响了科研、实验生产任务的顺利进行。针对这些问题本文设计了一种基于MSP430单片机的电阻多路测量系统,系统采用2个MSP430F169单片机,利用该型号单片机自身集成的I2C通信模块实现双单片机系统。使用双机结构的增强了系统的抗*力和可靠性,提高了测量的精度的和稳定性。该
多路电阻测量系统具有结构简单、成本低廉、功耗低等特点,其测量范围为10μΩ~3kΩ、测量精度为0.2%。可用于科学研究和工程运用等领域,具有较强的实用价值。系统的设计思想和方法也是对双单片机系统研究的有益的尝试,为后续的研究打下基础。
1、多路电阻测量系统简介
1.1MSP430单片机
MSP430系列单片机是美国德州仪器(TI)推出的一种16位超低功耗单片机。该系列单片机具有运算能力强,片内外设丰富,低电压,超低功耗,速度快,效率高等特点。其电源电压采用1.8~3.6V低电压,RAM数据保持方式下耗电仅为0.1μA,活动模式耗电250μA/MIPS,I/O输入端口的zui大漏电流仅为50nA,单片机系统有一种活动模式和5种低功耗模式,并且各种模式间可以自由切换。采用矢量中断,支持十多个中断源,并可任意嵌套,用中断请求将CPU唤醒只需6μs。具备精简指令集合和较高的处理速度,大量的片内寄存器可以参加运算。有丰富的I/O接口,支持JATG在线编程和调试。其中,MSP430F169单片机集了64KB的FLASHROM和2KB的RAM,在多数应用场合无需为处理器另外扩展ROM,也无需扩展RAM,片内具有双通道的串行数据接口(USART模块),可以实现UART,SPI和I2C三种通信模式。双单片机之间采用USART0串行通信模块实现I2C主从式通信,可以使系统通信简单。
1.2系统框图
本系统为基于双MSP430F169单片机多路电阻测量系统。使用2个MSP430F169单片机协调工作,从机MSP430F169利用自带的8路A/D通道实现多路数据的测量、采集并对所采集的数据进行计算与分析,主机MSP430F169负责储存、控制、显示以及和上位机的通信。利用MSP430F169单片机的固有的USART模块,采用I2C总线进行串行通信,实现处理器之间的命令控制和数据交换。电阻测量电路采用恒流源测量电阻,将待测电阻接入恒流源电路,对电阻两端施加恒定电流,在电阻两端形成稳定的压降。由于电阻两端输出的电压值比较小,需要通过放大电路对电压进行放大。通过单片机自带的A/D接口对待测电压进行采集,由欧姆定律算出相应的阻值,再除以放大倍数,即可得到待测小电阻的阻值。系统框图如图1所示。
2、硬件电路的设计
系统硬件电路主要由从单片机恒流源电路和主单片机电路组成,主单片机电路部分主要实现控制、显示、存储、与上位机通信等功能,硬件电路比较简单限于篇幅不再累述。从单片机恒流源电路主要由电流源电路、放大器电路和跟随器电路组成。以下着重对系统的从单片机恒流源电路的设计进行介绍。
2.1电流源电路设计
电阻测量的精度取决于恒流源的精度和稳定性和放大器的稳定性。本文系统中电流源电路采用BURRBROWN公司的REF200高精度电流源实现。该芯片内集成了2个100μA的恒流源和一个镜像电流源。其zui大特点是提供的电流精度高(100±0.5)μA。使用方便,只需在芯片的管脚7或者管脚8加上2.5~40V之间的任何一个电压。即可在管脚1或者管脚2上分别输出100μA的电流。使用灵活,通过不同的连接方式还可以实现50μA,200μA,300μA,400μA的电流输出。本文系统要实现8路电阻测量,因而需要提供8路稳定电流。系统使用4片REF200芯片,每个芯片提供2路100μA的电流源实现8路电流输出。每个芯片的硬件电路如图2(a)所示。
2.2放大电路设计
为了保证测量的稳定性,同时考虑到通过单片机控制的放大器的增益实现量程的转变,因而本系统采用TI公司的增益可编程仪表放大器PGA204,该放大器zui大的特点是通过编程可以实现1,10,100,1000的可选择增益,具有很高的共模抑制比(115dB,G=1000时),其输入偏置电压zui大为50μV,zui大偏置电流为2nA,芯片功耗低,放大器工作电压为仅±4.5V,不工作时的电流仅为5mA。增益控制很灵活,芯片的管脚A0和管脚A1控制放大器增益,与从机的I/O相连。通过在管脚A0和管脚A1输入对应的高电平或者低电平即可获得相应的增益。可编程放大器增益,实现了测量量程的转换。每一路放大电路的硬件连接如图2(b)所示。
2.3跟随器电路设计
为了保证恒流源的稳定,在放大电路之后连接跟随器电路,跟随器电路选择TI公司的高速精密运算放大器OPA602来实现,该放大器的精度较高,偏置电流仅为1pA。具体硬件电路如图2(c)所示。
恒流源电路由电流源电路、放大器电路和跟随器电路组成。该恒流源所提供的电流与放大电路的增益G相关,系统选用模拟AVcc为参考电源,大小为3V,放大电路G增益为1时,系统测量的zui大电阻为3kΩ。该恒流源电路具有结构简单,精度高,稳定性强,功耗低的特点。
3、双单片机协同工作
3.1I2C总线
I2C总线是由Philips公司开发的用于内部控制的简单双向两线串行总线,该总线具有协议完善、支持芯片多、占有I/O口线少等优点。I2C总线是由串行数据总线(SDA)和串行时钟总线(SCL)组成,一个用来传输数据,另一个用来控制数据传输时钟。该总线标准模式速度为100Kb/s,快速模式速度可以达到400Kb/s,高速模式可达3.4Mb/s,I2C能在zui大总线负载下实现100Kb/s的速率运行,且器件连接的个数只受zui大400pF的电容限制。数据在I2C总线上的通行过程如图3所示。
SDA和SCL是通过一个上拉电阻与正电源连接的双向信号线。当总线空闲时,这两条信号线都保持高电平。当SCL线处于高电平、SDA线从高电平向低电平跳变时为起始信号;当SCL线处于高电平、SDA线从低电平向高电平跳变时为停止信号。起始条件和停止条件之间为通信传输的过程。
3.2单片机的拓扑结构
由于MSP430F169单片机的串行通信模块USART0可以设置成I2C模式进行工作。在多路电阻测量系统中,主机和从机通过各自的串行通信模块USART0进行I2C主/从双向通信,主机和从机都能够接收和发送数据,但总线的时钟信号SCL、起始信号、终止信号都由主机产生。I2C总线在实现时,只需将主机和从机的管脚P3.1(SDA)和管脚P3.3(SCL)相连,并将管脚设置成I2C模式,同时I2C总线必须通过两个电阻分别将总线的SDL和S拉高。单片机的拓扑图如图4所示。
4、软件设计
4.1双机通信的实现
MSP430单片机的I2C模块有主发送、主接收、从发送、从接收4种工作模式。双机通信程序设计主要包括初始化程序、主机模式程序、从机模式程序和中断服务程序四部分。
初始化程序包括设置单片机P3.1(SDA)和管脚P3.3(SCL)为为传输端口,端口方向。设置系统时钟,系统时钟由主机产生,选择SMCLK为系统时钟。I2C模块初始化,将控制寄存器U0CTL的控制使能位(I2CEN)置1。U0CTL一个8位的寄存器。通过对该寄存器的设置来确定通信模式、通信协议和校验位的选择。
主机模式程序功能是在主机模式下完成数据的收发。首先要对主机接收、发送初始化,定义主机的地址,对R/W位置位设置接收模式,对中断寄存器I2CIE设置定义中断使能。主机接收、发送初始化程序在每次数据收发时调用。通过对I2CRM,I2CSTP,I2CSTT三个寄存器位设置控制数据发送和接收,主机产生时钟信号、起始和停止信号。
从机模式程序中数据收发初始化部分与主机模式程序相同,值得注意的是,数据的收发过程是由I2C模块自动控制,从机接收数据时随主机产生的时钟信号在总线上接收串行数据,并对接收的数据应答。从机发送数据时,从机接收到主机发送的匹配的设备地址和主机的数据接收请求后,主机产生时钟脉冲,从机向总线发送数据。
中断服务程序的功能是实现主机和从机的数据收发,MSP430中I2C模块的是多源中断,8个中断源的中断共用一个中断向量,中断向量寄存器I2CIV的内容决定当前是哪个中断标志引起中断事件。当优先级zui高的中断在寄存器I2CIV中产生对应值时,由此判断中断源并进入对应的主机模式程序和从机模式程序中,通过这2个程序中断寄存器I2CIE使能操作,完成对应的中断事件。从而实现主机和从机问数据的收发。
4.2数据采集与处理
数据采集部分主要是从单片机通过A/D通道采集接入恒流源电路的待测电阻上产生的电压,并进行处理。MSP430F169的A/D转换具有单通道单次转换、单通道多次转换、序列通道单次转换、序列通道多次转换模式4种模式。考虑到有8路采集,每个通道每次测量要采集256次数据,因此选用序列通道多次转换模式。A/D转换电路通过模拟通道进行多通道重复转换,使其采集流经待测电阻的电压数据不断自动更新,转换结果顺序的存放在转换存储寄存器中。ADC12MCTLx寄存器的EOS位定义zui后一个通道转换完成后表示一次序列通道转换完成,触发信号会触发下次序列通道转换。数据的采样时间间隔由定时器A控制,每次定时器A中断到来时读取A/D采集的数据,在读取前停止A/D转换,读取完毕后重启A/D采集,当数据采集完毕后设置标志位通知其他程序已获得新数据,通过全局变量来实现与其他处理程序数据交互。采样流程图5所示。数据处理方面,为了提高电阻测量的精度,每个测量通道在每次测量时采集256组数据,从机对采集的这256组数据进行算术平均后再通过运算得出每个通道所测量的电阻值。
4.3系统软件实现
系统软件采用模块化设计,软件子功能程序分割与硬件模块电路相对应。系统软件包括主程序、双机通信子程序、数据采集子程序、数据处理子程序、串行通信子程序、定时器中断服务子程序、显示子程序、存储及按键控制子程序。限于篇幅只给出主程序流程图,如图6所示。
5、结语
本文多路电阻测量系统利用I2C总线实现了MSP430系列单片机之间的全双工通信,解决了基于双机通信系统的关键技术,双单片机的设计结构灵活紧凑,不但减轻了主处理器的负担,而且提高了测量的精度、可靠性和实时性,同时也是对双处理器系统研究的具体实践。