RC充放电实现温度测量.pdf

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
首先检讨一下,用的cpu是本人很不喜欢的甚至讨厌的stc某一系列的,不为别的,就因为 祖父祖母的,太扯淡了。言归正传。。 一提到温度测量,我们通常往往都会想到AD 采样,但是在一些对测量精度要求不是很高 的场合, 我们是不是可以换一种思路,抛弃AD,用其他的方式来实现呢,呵呵,正好接触到一个 项目,所 以打算挑战一下,没错,就是RC 充放电来实现温度测量。 先看一下基本的电路连接: 0(原文件名:RC0.PNG) 图O:cpu拿出三个GPIO 管脚,分别连接热敏电阻、100K高精电阻R1、泄流电阻R2,然 后 通过一只电容器连接到GND。在这里电容器可以理解成一只小电池,而且还是一只可 充电电池。 1(原文件名:RC1.PNG) 图1:将RT设置成高阻太(输入),这样热敏电阻相当于断开(虚线),R1设置成输出,泄 流电阻R2 设置成输出,如果cpu内部有上拉的话,最好打开,或者配置成强推挽,具体情况根据所选 则的cpu而定。 这样R2给电容器充电,程序中一直检测R1管脚,直到R1管脚为高 while(R1 ==1);其实电 容器被不一定被充满 电,只要满足R1管脚处的电平对于cpu来说是个高电平就足以。 2(原文件名:RC2.PNG) 图2:保持RT继续高阻(断开),将R1设置成输出,输出0(低电平),R2设置成输入, 此时电容通过100K 高精度电阻进行放电,程序中一直检测R2 管脚,直到R2 管脚为低电平 while(R2 == 0);记 录时间T1,T1就是 电容器通过100k电阻放电所需要的时间。 图3:过程跟图一是一模一样的,给电容器充电(不一定充满),原因你懂的; 3(原文件名:RC3.PNG) 4(原文件名:RC4.PNG) 图4:将R1设置成高阻(断开),RT设置成输出,并且输出低电平,将R2设置成输出;此 时电容器通过RT进行放电,程序中一直检测R2管脚,直到R2管脚为低电平 while(R2 == 0);记录时间T2,T2就是电容器通过100k电阻放电所需要的时间。 到此,我们就可以算出热敏电阻RT的阻值了: 6(原文件名:RC6.PNG) 001/** 002 *青岛昊阳智能微控技术有限公司 003 * 004 * 温度采集 005 * 参考电阻为100K 006 *@param 007 * unsignedcharchannel:采集哪个通道的温度 008 * NTP_OUTSIDE: 温控器外部温度探头 009 * NTP_INSIDE: 温控器内部探头 010 *@return 011 * ERROR_NTP_PARA_ERROR:参数错误 012 * ERROR_NTP_LOST_ERROR:温度探头丢失 013 * 非负:采集到的温度值 014 * 015 *@brief 016 * bykaka,2011,2,20 017 */ 018 019 020#defineNTP_CHECK (1) 021shortntp_100k_get_temperature(unsignedcharchannel){ 022 doublex, y, z; 023 unsignedlongtemperature_cnt_a,temperature_cnt_b; 024 unsignedchartmp; 025 026 if(channel== NTP_INSIDE){ 027 SET_P2(7,IO_PORT_TRI_IN); //参考电阻 输入 028 SET_P2(6,IO_PORT_PULL_OUT); // 泄流电阻输出 029 SET_P4(4,IO_PORT_TRI_IN); // 热

文档评论(0)

159****8201 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档