- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
TN9红外测温模块采用红外非接触测温.doc
TN9红外测温模块采用红外非接触测温,其测温原理应用斯特凡一玻耳兹曼定律和维恩位移定律。TN9模块引出5条连接线,依次为:电源(1)、SPI数据(2)、SPI时钟(3)、地(4)和测试引脚(5)。其中SPI数据(2)和SPI时钟(3)用于传输温度信息,分别连接单片机的P3.4和P3.3引脚作为SPI总线的MOSI和SCK。测试引脚(5)是TN9测温模块的启动信号,低电平有效,故通过一只1kΩ电阻上拉至3.3 V,再通过按键接地,然后连接到单片机的P3.2引脚作为温度采集的中断信号。按键按下后将测试引脚(5)置为低电平,启动TN9测温,同时通知单片机准备接收温度数据。按键松开,测试引脚被上拉为高电平并停止测温。
,为SPI数据格式,在CLOCK的下降沿接收数据,一次温度测量需接收5个字节的数据,这五个字节中:Item为0x4c表示测量目标温度,为0x66表示测量环境温度;MSB为接收温度的高八位数据;LSB为接收温度的低八位数据;Sum为验证码,接收正确时Sum=Item+MSB+LSB;CR为结束标志,当CR为0x0dH时表示完成一次温度数据接收
4.3.3 红外测温模块温度值的计算
无论测量环境温度还是目标温度,只要检测到Item为0x4cH或0x66H同时检测到CR为0x0dH,它们的温度的计算方法都相同。计算公式为 :
温度 = Temp/16 – 273.15 (4-1)
其中Temp为十进制, 而测量结果为16进制,把它直接转换为十进制即可。比如MSB为0x14H,LSB为0x2aH,测量结果为0x142aH,十进制表示为5162,则测得温度值为5162/16-273.15=49.475℃。
程序中定义了一个返回变量,根据这个返回变量在主程序中可以根据该变量判断是否测量到正确数据;调用启动测温程序启动测温;调用读测量数据程序读取测量数据;判断第一个字节数据是否为0x4c或0x66,也就是判断是否测量到目标温度或环境温度,是则依次取第二个字节数据和第三个字节数据,如果第五个字节数据为0x0d,则在证明读到正确数据,根据温度计算公式计算温度值,并给返回变量赋0,表明已经读到正确的温度值;否则直接返回。
float iTemp; //保存温度值
extern unsigned int TN_Data_Buff[5]; //保存测量结果的数组
unsigned int Back_Data; //定义返回变量,返回0表示读出正确数据
读测量数据的用户函数
iItem = (TN_Data_Buff[0]0x00ff); //取读到第一个字节数据
if(Item == iItem) //判断第一个字节数据是否正确
{
MSB = (TN_Data_Buff[1])0xff00; //取读到第二个字节数据
LSB = (TN_Data_Buff[1])0x00ff; //取读到第三个字节数据
if(((TN_Data_Buff[2])0x00ff) == 0x000d) //判断是否读到结束标志
{
iTemp = MSB | LSB; //计算温度值,计算方法请参考红外测温模块
iTemp = iTemp/16 - 273.15;
Back_Data = 0; //返回变量赋0
}
}
return Back_Data; //返回Back_Data
不需要AD,DA
文档评论(0)