引言
在孵化设备的科研过程中,常常用多路温度测试仪来对孵化机器内部的温度场进行测量,而我们以前用的多路温度测试仪是用两片16选1的模拟开关来完成对32路温度的测量, 温度的采样时间受模拟开关开通关断时间的限制,开关信号对温度采样也造成了一定的干扰。在实际使用过程中还常受到温度采样路数(如8路、20路、64路、 70路,128路等)的限制,为能更灵活的应用该多路温度测试仪,我们采用了主从机RS-485通讯的模式来完成多路温度的测量。每个从机采样8路温度并作为一个模块,每个从机有独立的地址,这样我们就可以在主机通讯负载能力范围内灵活的配置从机模块的数量,并且能提高温度采集的及时性和准确性,为科研实验提供便利工具。
硬件设计
总线式主从机结构框图如图1。
主机我们采用Atmel公司的高性能8位处理器ATMEG128L-8AI,该芯片具有128k的ISP-FLASH、4k的EEPROM、4k的 SRAM,该芯片容量大、可重复在系统编程、指令丰富并且执行速度快。
主机主要完成以下功能:从机地址识别、与从机的通讯、实时温度显示、按键处理、温度软校准以及从机扩张选择,主机功能框图如图2。实时温度显示采用19264单色点阵液晶,该液晶没有背光时仍能正常查看,只是为了在夜间查看,我们增加了液晶背光功能。温度软校准功能是为了保证多路温度测量的准确性,消除系统误差。在实际测量过程中,很难保证用来测量的不同的温度探头的一致性,电路结构、探头线长度、以及每个温度传感元件本身的不一致性都最终影响温度测量的准确性。为了方便校准,我们可利用软件对单个温度探头或全部温度探头进行软件校准。这样尽量减小各个温度探头的不一致而带来的测量差值。为保证主机的可靠工作,在电路中还增加了处理器监控芯片MAX706,用来监控电源电压和系统是否正常工作,否则发出复位信号使系统恢复正常。从机扩展功能主要是用来选择从机模块的数量,如果从机数量为1,则在该功能选项中选择“1路采样模块”,依次类推,考虑到实际应用过程中对温度探头数量的要求,本系统中最大的从机模块配置数量为8,也就是最多可以测量64路温度信号。
主机的按键是行列线组成的2输入4输出结构形式,采用定时扫描,利用MCU内部的定时器产生10ms定时中断,CPU响应中断时对键盘进行扫描,并在有键按下时识别出该键并执行相应的键功能程序。
从机采用Atmel公司的ATMEG16L-8AI作为处理器,该芯片具有16k的ISP-FLASH、512B的EEPROM、1k的SRAM,该芯片同样可以在系统编程,该芯片具有8路10位A/D转换器,当采样的基准电压为5V时,系统的采样精度可达到5毫伏每字,即基准电压变化5毫伏,采样的数字量变化1个字。
从机模块主要完成8路温度采样、与主机的通讯、硬件地址编码,从机功能框图如图3。每个从机模块有个地址编码跳线器,由硬件完成对该模块的地址编码。这样在扩张时,将每个模块的地址唯一确定,不会由于通讯地址的重复造成通讯的不成功。我们采用的RS-485芯片最多可以负载32个从机模块,RS-485芯片采用Maxim公司的MAX483CPA。不同的RS-485芯片,其负载能力不同,有的RS-485芯片如MAX487可以带120个负载,MAX1487能够将负载数量扩大到230个。
RS-485串行通讯
在工程实践当中,多点数据采集系统的网络拓扑一般采用总线方式,传送数据采用主从机结构的方法。
RS-485采用平衡发送和差分接收方式来实现通信:在发送端TXD将串行口的TTL电平信号转换成差分信号A、B两路输出,经传输后在接收端将差分信号还原成TTL电平信号。两条传输线通常使用双绞线,又是差分传输,因此有极强的抗共模干扰的能力,接收灵敏度也相当高。同时,最大传输速率和最大传输距离也大大提高。如果以10kb/s速率传输数据时传输距离可达12m,而用100kb/s时传输距离可达1.2km。如果降低波特率,传输距离还可进一步提高。本系统的波特率设置为2400b/s。
图1就是用RS-485构成的总线型网络系统,采用主从方式进行多机通信。主机采用8位微处理器ATMEG128L,从机采用ATMEG16L。每个从机通过地址编码拥有自己固定的地址,由主机控制完成网上的每一次通信。图4是MAX485和微处理器的接口电路,A、B为RS-485总线接口,D是发送端,R为接收端,分别与单片机串行口的TXD、RXD连接,由于采用半双工通讯,所以还有收发控制端,MAX485的RE、DE为收发使能端,由微处理器的 PE4(主机)、PC5(从机)口作为收发控制。该控制口高电平时,MAX485处于发送状态,将微处理器TXD处的数据经A、B差分送出到RS-485的总线上;当该控制口为低电平时,MAX485处于接受状态,将RS-485总线上的差分信号转换成TTL电平的信号由R端输出到微处理器的RXD端。当总线上没有信号传输时,总线处于悬浮状态,容易受干扰信号的影响。应将总线上差分信号的正端A+和+5V电源间接一个10KW电阻;正端A+和负端B-间接一个10KW电阻;负端B-和地间接一个10KW电阻,形成一个电阻网络。当总线上没有信号传输时,正端A+的电平大约为3.2V,负端B-的电平大约为1.6V,即使有干扰信号,却很难产生串行通信的起始信号0,从而增加了总线抗干扰的能力。
本系统对RS-485串行通讯的应用电路中,在A和B端预留了上拉电阻、和AB之间的匹配电阻,但实际使用过程中,由于通讯距离很短(10m以内),所以匹配电阻并没有焊上,而是在MAX485和微处理器的TXD和RXD接口处增加了两个10KΩ的上拉电阻。用示波器测量其通讯信号波形时,发现R2、R3两个上拉电阻接上后,通讯数据的波形得到了明显的改善,通讯成功率大大提高。
RS-485通讯需要严格遵循通讯协议,否则通讯是不会建立起来的。尤其是在主从机采用不同的处理器时,软件处理一定的仔细查看其说明文件,不能一视同仁。在本电路的实验过程中,就发现一个波特率设置的问题。波特率的设置公式如下:
BAUD= Fosc/16(UBRR+1)
其中BAUD为通讯速率,Fosc为系统时钟频率,UBRR为波特率寄存器UBRRH、UBRRL中的值(0~4095)。
波特率的设置公式中用到了微处理器的系统时钟频率Fosc,我们的主从机虽然都使用了外部4M晶振,但主机内部将4M频率三分频,而从机仍然使用4M主频,软件编写过程中,将主从机的波特率寄存器初始化值置为一样的,这样就造成了主从机的波特率相差2倍,通讯当然是不能成功的。
为了保证通讯成功,开始时所有从机复位,即处于监听状态,等待主机的呼叫。当主机向网上发出某一从机的地址时,所有从机接收到该地址并与自己的地址相比较。如果相符,说明主机在呼叫自己,应发回应答信号,表示准备好开始接收后面的命令和数据;否则不予理睬,继续监听呼叫地址。主机收到从机的应答后,则开始一次通信。通信完毕,从机继续处于监听状态,等待呼叫。由于发送和接收共用同一总线。在任意时刻只允许一台单机处于发送状态。因此要求应答的单机必须在侦听到总线上呼叫信号已经发送完毕,并且没有其它单机发出应答信号的情况下,才能应答。接受状态和发送状态的转换是通过方向口高低电平的变化来完成的。
温度采集和显示
从机模块完成的主要功能是8路温度模拟信号的采集和向主机正确的发送这8个采样温度,本系统中采用温度传感器为AD590。AD590是一个电流型集成温度传感器,其输出电流正比于绝对温度,当温度为 273开氏度时,其输出电流为273微安。温度每变化1K(也可以理解为1℃),输出电流变化1微安。将电流信号经运算放大器后输出0~5V(参考电压为 5V)的电压信号,经过ATMEG16L的10位A/D转换后变为数字信号存放在从机的缓存区。当主机发出与该从机相应的地址信号后,从机应应答并将采样后的数据经RS-485总线送给主机并显示在液晶屏幕上。
从机通过自己的A/D口直接进行模拟量采集比利用多路模拟开关来采集数据要方便的多,为使采样的温度数据更接近实际值,我们在软件上增加了一些处理措施,如求多次采样的平均值、中值滤波等。
为消除一些人为造成的误差,我们在该主从机中使用了一个开关电源,这样开关电源电压的波动对所有温度探头的影响是一致的。另外,所有的温度探头线的长度都保持一致。温度探头线和主从机的通讯线都必须使用屏蔽双绞电缆,并将屏蔽电缆进行良好接地。特别是在RS-485串行通讯中,主从机必须共地,否则严重时会有共模干扰,导致数据传输出错。
在实际的使用过程中,为保证数据采集的可靠性,还必须对每个温度探头进行校准,一般情况下,我们将32个或64个温度探头尽量放在一起,并将其统一放在一个温度比较稳定的老化实验箱中,稳定2个小时后,在同一点将所有的探头校准,并做升温处理观察在升温后各个温度点的探头测量值是否保持一致。否则应在高温段再校准并做降温过程的跟踪观察。
结语
本文介绍了主从机用RS-485串行总线,完成对多路温度信号的测量。特别介绍了RS-485通讯电路在实际使用中的一些措施 。孵化设备多路温度测试仪器正是采用了这些措施,使得测试过程中通讯稳定,测量路数配置灵活,测量数据稳定可靠。
责任编辑:gt
-
处理器
+关注
关注
68文章
19135浏览量
228925 -
测试仪
+关注
关注
6文章
3678浏览量
54718 -
总线
+关注
关注
10文章
2863浏览量
87948
发布评论请先 登录
相关推荐
评论