利用单片机实现多路温度测量
状态,将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通讯电路在实际使用中的一些措施 。孵化设备多路温度测试仪器正是采用了这些措施,使得测试过程中通讯稳定,测量路数配置灵活,测量数据稳定可靠。
参考文献:
[1] 马潮. 高档8位单片机ATMEG128原理与开发应用指南[M]. 北京:北京航空航天大学出版社, 2004
[2] MAX483 Datasheet. Maxim, 2009
[3] ATMEG128L、ATMEG16L Datasheet. Maxim, 2009
[4] 耿德根, 宋建国
RS-485温度测 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)