搜索
bottom↓
回复: 21

HS1101通过555测出频率 然后怎样得到湿度值?

[复制链接]

出0入0汤圆

发表于 2010-10-24 19:43:56 | 显示全部楼层 |阅读模式
HS1101通过555测出频率 然后怎样得到湿度值?

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2010-10-24 19:50:02 | 显示全部楼层
通过判断频率得出湿度值

出0入0汤圆

 楼主| 发表于 2010-10-24 19:54:47 | 显示全部楼层
回复【1楼】gamekeys  
-----------------------------------------------------------------------

(原文件名:未命名.jpg)

是用上面这个式子吗?

出0入0汤圆

发表于 2010-10-24 19:58:00 | 显示全部楼层
回复【2楼】zfzdhz
-----------------------------------------------------------------------

数据所对应电路图

(原文件名:Q%{KT4%8(G)FI@IPCRW{3LB.jpg)


(原文件名:FAA_4$JWRL]5IH7T7~UY4PJ.jpg)

出0入0汤圆

 楼主| 发表于 2010-10-24 20:07:34 | 显示全部楼层
回复【3楼】gamekeys  
-----------------------------------------------------------------------

是判断频率在上表哪个范围内 然后得到对应的湿度值?这样不是很不准?

出0入0汤圆

发表于 2010-10-24 20:13:15 | 显示全部楼层
还有曲线图

(原文件名:[PD%C{)6H_CUHIGCVN18Z6K.jpg)
那个本来就有一定的误差……

出0入0汤圆

 楼主| 发表于 2010-10-24 20:14:34 | 显示全部楼层
回复【5楼】gamekeys  
-----------------------------------------------------------------------

多谢 gamekeys  呵呵 温度补偿是什么意思?这块我不太懂 温度补偿是怎么实现的?
教教我吧~ ~

出0入0汤圆

发表于 2010-10-24 20:42:28 | 显示全部楼层
555电路的非平衡电阻R1是做内部温度补偿,目的是为了引入温度效应,使它与HS1101的温度效应相匹配。R1必须象所有的R-C时钟电阻的要求一样,1%的精度,最大的温度效应应该小于100ppm。由于不同型号的555的内部温度补偿有所不同,R1的值必须与特定的芯片相匹配。。为了保证在55%RH的典型湿度值为6660Hz,R2也需要做稍许修正。

出0入0汤圆

发表于 2010-10-24 22:49:24 | 显示全部楼层
我用运放做的震荡电路。没有标准湿度表来校准,郁闷!

出0入0汤圆

发表于 2010-10-24 23:09:38 | 显示全部楼层
回复【8楼】bxzyf
-----------------------------------------------------------------------

要灵活运用,根据5楼图所对应的电容值判断。你是想用运放做RC振荡吗?那样也能判断湿度值。

出0入4汤圆

发表于 2010-10-25 01:12:45 | 显示全部楼层
uchar GetShiDu(uint feq)

{

    uchar SwitchTmp=0, Avage=0, ShiDuGe=0,ShiDu=0;
           // SheDuGe 个位
   if     ((feq > 0 ) && (feq <= 6033))  SwitchTmp = 255;



   if     ((feq > 6033)&&(feq <= 6186))  SwitchTmp = 9;

   else if((feq > 6186)&&(feq <= 6330))  SwitchTmp = 8;

   else if((feq > 6330)&&(feq <= 6468))  SwitchTmp = 7;

   else if((feq > 6468)&&(feq <= 6600))  SwitchTmp = 6;

   else if((feq > 6600)&&(feq <= 6728))  SwitchTmp = 5;

   else if((feq > 6728)&&(feq <= 6853))  SwitchTmp = 4;

   else if((feq > 6853)&&(feq <= 6976))  SwitchTmp = 3;

   else if((feq > 6976)&&(feq <= 7100))  SwitchTmp = 2;

   else if((feq > 7100)&&(feq <= 7224))  SwitchTmp = 1;

   else if((feq > 7224)&&(feq <= 7351))  SwitchTmp = 0;

  

   switch(SwitchTmp)

   {

      case 0:

                

                 Avage = (7351 - 7224) / 10;

                         ShiDuGe = (7351-feq ) / Avage;

                         ShiDu= ( SwitchTmp *10 + ShiDuGe);

                         break;

      case 1:

                 Avage = (7224 - 7100) / 10;

                         ShiDuGe = (7224 -feq ) / Avage;

                         ShiDu= ( SwitchTmp *10 + ShiDuGe);

                         break;

      case 2:

                 Avage = (7100 - 6976) / 10;

                         ShiDuGe = (7100 - feq ) / Avage;

                         ShiDu= ( SwitchTmp *10 + ShiDuGe);

                         break;

      case 3:

                 Avage = (6976 - 6853) / 10;

                         ShiDuGe = (6976 - feq ) / Avage;

                         ShiDu= ( SwitchTmp *10 + ShiDuGe);

                         break;

      case 4:

                 Avage = (6853 - 6728) / 10;

                         ShiDuGe = (6853- feq ) / Avage;

                         ShiDu= ( SwitchTmp *10 + ShiDuGe);

                         break;

      case 5:

                 Avage = (6728 - 6600) / 10;

                         ShiDuGe = (6728 - feq ) / Avage;

                         ShiDu= ( SwitchTmp *10 + ShiDuGe);

                         break;

      case 6:

                 Avage = (6600 - 6468) / 10;

                         ShiDuGe = (6600 - feq ) / Avage;

                         ShiDu= ( SwitchTmp *10 + ShiDuGe);

                         break;

      case 7:

                 Avage = (6468 - 6330) / 10;

                         ShiDuGe = (6468- feq ) / Avage;

                         ShiDu= ( SwitchTmp *10 + ShiDuGe);

                         break;

      case 8:

                 Avage = (6330 - 6186) / 10;

                         ShiDuGe = (6330 - feq ) / Avage;

                         ShiDu= ( SwitchTmp *10 + ShiDuGe);

                         break;

      case 9:

                 Avage = (6186 - 6033) / 10;

                         ShiDuGe = (6186- feq ) / Avage;

                         ShiDu= ( SwitchTmp *10 + ShiDuGe);

                         break;

      case 255:

                 ShiDu = 100;

                         break;

   }

   return ShiDu;

  



}

出0入0汤圆

 楼主| 发表于 2010-10-25 12:01:52 | 显示全部楼层
回复【10楼】sunliezhi  
-----------------------------------------------------------------------

多谢

出0入0汤圆

发表于 2011-5-11 18:47:32 | 显示全部楼层
标记

出0入0汤圆

发表于 2011-6-5 17:08:40 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-3-26 16:34:16 | 显示全部楼层
sunliezhi 发表于 2010-10-25 01:12
uchar GetShiDu(uint feq)

{

朋友,我想做个关于湿度传感器的设计,但是我不明白频率值读出来以后怎么转换为湿度值,很多程序是分段来做的,但是看不明白,所以想请教你一下,这个分段里的函数是怎么得到的,谢谢

出0入4汤圆

发表于 2012-3-26 16:55:46 | 显示全部楼层
yzdxgm 发表于 2012-3-26 16:34
朋友,我想做个关于湿度传感器的设计,但是我不明白频率值读出来以后怎么转换为湿度值,很多程序是分段来 ...

if     ((feq > 6033)&&(feq <= 6186))  SwitchTmp = 9;

   else if((feq > 6186)&&(feq <= 6330))  SwitchTmp = 8;

   else if((feq > 6330)&&(feq <= 6468))  SwitchTmp = 7;

   else if((feq > 6468)&&(feq <= 6600))  SwitchTmp = 6;

   else if((feq > 6600)&&(feq <= 6728))  SwitchTmp = 5;

   else if((feq > 6728)&&(feq <= 6853))  SwitchTmp = 4;

   else if((feq > 6853)&&(feq <= 6976))  SwitchTmp = 3;

   else if((feq > 6976)&&(feq <= 7100))  SwitchTmp = 2;

   else if((feq > 7100)&&(feq <= 7224))  SwitchTmp = 1;

   else if((feq > 7224)&&(feq <= 7351))  SwitchTmp = 0;

这个测频率的电路是个比较经典的电路,由它测出的频率对应的湿度就在某个固定的范围,比如
           频率在6033~6186之间对应湿度99~90,

出0入0汤圆

发表于 2012-3-26 16:58:12 | 显示全部楼层

出0入4汤圆

发表于 2012-3-26 17:10:56 | 显示全部楼层
得到十位上的数据之后,再计算个位上的数据,
Avage = (6186 - 6033) / 10;  是算出该湿度区间每1度对应多少个频率值,
ShiDuGe = (6330 - feq ) / Avage;    6330对应湿度80(注意湿度与频率成不严格的反比关系),那我测得的频率与80度的频率相差多少,这个差值除那个平均值(每1度对应多少个频率值)就是湿度的个位了。

出0入0汤圆

发表于 2013-4-28 13:02:13 | 显示全部楼层
多谢

出0入0汤圆

发表于 2013-4-28 23:17:48 来自手机 | 显示全部楼层
路过.学习一下

出0入0汤圆

发表于 2013-4-29 16:15:52 | 显示全部楼层
学习学习,刚好有个毕设用到
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 03:18

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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