DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 446|回复: 0
打印 上一主题 下一主题

用PIC MCU测量相对湿度

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-27 18:21:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
      如图所示,用一个具有容性响应的传感器和一只PIC微控制器(MCU)就可以构成一个相对湿度计。      其中Humirel公司提供的HS1101型传感器的电容取值范围为162 "202pF。
      使用一个TLC555 CMOS 定时器作为振荡器,完成从电容到频率的转换,定时器的频率等式如下:F = 1.44/(RA + 2RB)×CX这里电阻RA和RB分别等于421 kΩ和42.4 kΩ,CX为传感器电容。接到定时器控制电压输入端的1MΩ电阻用来使与传感器温度系数相匹配的定时器内部温度系数失衡。
      MCU测量输入信号周期,并将其转换为相对湿度数字读数。这通过MCU内部计数器(TMR1)和捕获/比较/脉宽调制模块(CCP)来实现的。
      因为传感器的电容范围非常窄,信号的周期范围也会非常小,因此使用一个8.000MHz的晶振来获得0.5μs的指令周期。


图。
      另外,CCP模块被配置成将输入电压分为4部分,这样就可以在由TLC555提供的不同周期中增加计数脉冲范围。PIC的CCP模块可以检测每4个或16个脉冲的上升或下降沿。
      在这种情况下,CCP模块是按4个上升沿配置的。此检测事件存储在寄存器PIR1的CCP1IF标志位。当检测到第一个上升沿时此标志位被置位,通过软件使能TMR1开始计数。
      随后该标志位必须被清除,等待检测第四个上升沿,然后停止定时器。现在必须将代表一个周期的总计数从存储器TMR1L和TMR1H分别转存到存储器CCPR1L和CCPR1H。
      利用该数据,我们进一步从结果周期数中减去对应于湿度0%的周期数(在本例中,取十进制数62(3EH)) 以完成从周期数到相对湿度的转换。对应于湿度0%的周期数可以由制造商提供的等式和TLC555定时器产生的频率计算确定。
      16位减法是通过首先对上述数值进行二进制补运算,然后将结果加到由TMR1得到的数据而实现的,这个算术运算的结果即对应于相对湿度。最后由MCU完成从二进制数到BCD码的转换。
      二进制到BCD的转换使用三个外存储器:个、十、百位存储器,相对湿度(湿度百分比)被送到个位存储器,然后减10,由累加器W保存此运算结果。
      通过测试状态寄存器的进位,我们可以知道运算结果是否大于10。如果小于10,则运算结果只有个位,不需要继续进行更多的比较运算,这样转换就仅限于于个位存储器。
      如果运算结果大于10,十位存储器加1,十位存储器加1时个位存储器必须进行同样的减10运算。
      当十位存储器等于10时,百位存储器加1。同样的运算处理一直进行下去,直到个位存储器的数小于10。转换结束时,每个存储器的结果便是BCD码,BCD码到七段数码的转换由子程序OPTABLE完成。
      转换电路有一个四位多路共阴极LED显示器,要求采用一个多路转换程序来正确地显示读数。多路转换通过以200Hz的频率切换三个2N2222晶体管,一次激发一个显示单元的方式来实现。
                                
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2025-7-20 05:32 , 耗时 0.176868 秒, 18 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表