2.2 软件实现 温度测量是铝水平温度测量过程的最后一个环节,在系统测量完铝水平后,开始进行温度测量,这一部分程序作为一个独立的程序段,定时调用,主要包括MAX6675数据读取、开路判断、数据处理和码制转换等几个部分。程序流程如下: 下面给出MAX6675温度值读取程序设计: 温度值读取程序 位定义 CS BIT P1.0 ;数据输入 SCK BIT P1.1 ;片选 SO BIT P1.2 ;时钟 数据字节定义 DATAH DATA 40H ;读取数据高位 DATAL DATA 41H ;读取数据低位 TDATAH DATA 42H ;温度高位 TDATAL DATA 43H ;温度低位 CLR CS ;CS低电平,停止数据转换,输出数据D15 CLR CLK ;时钟置为低电平 MOV R7, #08H RD_DATAH: ;读数据高位字节D15-D8 MOV C,SO ;读SO端数据 RLC A ;累加器左移一位 SETB SCK NOP CLR SCK DJNZ R7,RD_DATA MOV DATAH,A ;将数据高位移入缓冲区 MOV R7,#08H RD_DATAL: ;读数据低位字节D7-D0 MOV C,SO ;读SO端数据 RLC A ;累加器左移一位 SETB SCK NOP CLR SCK DJNZ R7,RD_DATAL MOV DATAL,A ;将数据低位移入缓冲区 SETB CS ;CS高电平,停止数据输出,启动新的数据转换;数据转换子程序,将读得的16位数据转换为12位温度值,去掉无用的位 MOV A,DATAL RLC A MOV DATAL,A MOV A,DATAH RLC A ;整个数据位左移一位,去掉D15位 SWAP A ;将DATAH中的高低4位数据互换 MOV B,A ;数据暂存于B中 ANL A,#0FH ;得到温度数据高位字节部分D14 ~D11 MOV TDATAH,A ;将温度值高位字节保存 MOV A,B ANL A,#0F0H ;得到温度数据低位字节部分D10 ~D7 MOV B,A MOV A,DATAL ; ANL A,#0FH ;得到温度数据低位字节部分D6 ~D3 ORL A,B ;合并的温度低位字节 MOV TDATAL,A ;将温度值低位字节保存 3 应用中注意的几个问题 在铝水平温度测量仪的设计和调试过程中遇到诸多问题,现将与MAX6675相关的几个问题和使用心得摘录如下,以供参考。 1)MAX6675芯片对电源噪声较为敏感,尽量将MAX6675布置在远离其他I/O芯片的地方。 2)MAX6675芯片T-必须接地,并使接地点尽可能接近GND脚,否则读出数据为无规律的乱码。 3)MAX6675是通过冷端补偿来校正周围温度变化的。该器件将周围温度通过内部的温度检测二极管转换为温度补偿电压,该器件内部电路将二极管电压和热电偶电压送到ADC中转换,以计算热电偶的热端温度。当热电偶的冷端与芯片温度相等时,MAX6675可获得最佳的测量精度。 因此在实际测温应用时,应尽量避免在MAX6675附近放置发热器件或元件,例如7805等带散热片的稳压器件。 4)尽量采用大截面积的热电偶导线,长距离传输时,可采用双绞线作为信号传输线。 5)根据应用场合的不同,可通过相应的数字滤波器进行数据处理,以提高所需要某一段测量数据的准确性。 4 结束语 MAX6675将热电偶测温应用时复杂的线性化、冷端补偿及数字化输出等集中在一个芯片上解决,简化了铝水平温度测量仪中热电偶测温电路的设计,实际运行结果表明,该测温系统抗干扰能力强、结构简单、可靠性高,测量精度满足要求。因此,在基于微处理器的单片机嵌入式工业测温系统中,由MAX6675构成的单片热电偶测温解决方案,具有良好的实用价值。
|