查看: 2652|回复: 4
|
新问题:如何联系两个pic? 有关湿度感应器。
[复制链接]
|
|
本帖最后由 梦游... 于 10-3-2010 05:11 PM 编辑
你要想做什么?
你的应用是什么?
我要做的是孵蛋机,是学校作业。
你想要拿到什么效果
主要是控制温度和湿度。
你做了什么
现在还在做有关温度和湿度的research。
温度我是打算用LM35,正要开始进行中。
你遇到了什么问题
在选用湿度感应器方面的问题。
你用什么MCU?
还不能决定,要等选好了温度和湿度感应器。
因为据我所知,是要了解感应器的datasheet,用几bit 等。。。才能决定。
我是想用PIC16F877,是8bit。就担心感应器不符合。
你用什么语言? ASM/C/PICBasic/Keil?Compiler 版本?
想用ASM
上网查寻及爬贴过后,发觉有些是已经做好的感应器circuit。当然也有单单湿度sensor.
我是想自己做湿度感应器circuit。刚好看到HS1101LF的datasheet,看得我似懂非懂的。
有些问题想请教各位。
http://www.meas-spec.com/downloads/HS1101LF.pdf
- 请问湿度感应器是response 跟frequency的么?跟 capacitive又有什么关系?
- HS1101LF是已经calibrate 的么?如calibrated directly in celcius (centigrade).
- 是不是放进design 好的circuit就可以function?
还有几个问题想请教。
- 我的project 是控制温度和湿度,
所以我是需要extra ADC 的chip 么?是需要2 个chip 还是1 个就可以? - 除了HS1101LF,
请问各位有什么建议么?有什么湿度感应可以用或参考的?
我对于湿度感应器的认识是才刚开始,请各位多多指教。谢谢。 |
|
|
|
|
|
|
|
发表于 6-10-2009 12:43 PM
|
显示全部楼层
|
|
|
|
|
|
|
楼主 |
发表于 7-10-2009 02:47 PM
|
显示全部楼层
原来如此,谢谢你。^^
看了sensirion的湿度感应器datasheet,有些地方不明白,想请教。
- Sht7x 的sensor,它是如何读取资料?它是通过 SCK 和 DATA 来跟mcu联系的么?Sensor 本身换去digital output 么?
- Program 时会不会麻烦呢?因为我是会显示在电脑,所有的温度和湿度资料都会被记录。
- 请问要如何申请Sht7x样本?我在网站里找不到,只看到别的免费样本。
学生可以申请么?以学校的名字as公司名么?
‘Free samples will only be sent to business customers (no privatepersons). Please make sure that you enter your company name and company emailaddress. We will not send samples to hotmail, google, gmail, yahoo, gmx orsimilar accounts.’
另外,
还有些问题想请教。
我还search了别种的湿度感应器,如:
http://www.cytron.com.my/datasheet/sensor/Humidity_UserManualv1.pdf
- 以上的湿度感应器,是不是需要多加ADC来convert 呢?
请问你是怎么控制湿度,就用什么方法来增加或减少湿度。
如过度潮湿的话,你是如何减低湿度呢?
不好意思,这么多问题。
[ 本帖最后由 梦游... 于 7-10-2009 02:53 PM 编辑 ] |
|
|
|
|
|
|
|
发表于 9-10-2009 09:58 PM
|
显示全部楼层
原帖由 梦游... 于 7-10-2009 02:47 PM 发表
Sht7x 的sensor,它是如何读取资料?它是通过 SCK 和 DATA 来跟mcu联系的么?Sensor 本身换去digital output 么?
是的, 直接给你的是RH和温度。Relative humidity 你需要按公式+ 温度 计算。
Program 时会不会麻烦呢?因为我是会显示在电脑,所有的温度和湿度资料都会被记录。
他们有提供sample C code。
其他是看你自己编程的能力。
请问要如何申请Sht7x样本?我在网站里找不到,只看到别的免费样本。
学生可以申请么?以学校的名字as公司名么?
你可以写信去问。 也告诉他们, 如果要买, 你可以到哪里买?
我还search了别种的湿度感应器,如:
以上的湿度感应器,是不是需要多加ADC来convert 呢?
没有错。 可以用MCU的ADC 来读。
但注意, 你怎样calibrate? 你只可以完全按照他们的table 来转换, 还要注意不是绝对的线性。
请问你是怎么控制湿度,就用什么方法来增加或减少湿度。
如过度潮湿的话,你是如何减低湿度呢?
我没有做过湿度控制。
要加强湿度, 喷水+ 风扇。
有用超音波雾化器的。。
你可以参考爬帖, 有人讨论过。
要减低湿度, 用heater 或 会发热的灯泡 。
冷气机也是有降低湿度的功能。
孵蛋机应该是用灯泡。。
你可以爬帖, 有人讨论过, 但不知道有没有结果。
如果你看到一些没有结果的帖, 你就知道那个楼主没有做报告。
我希望你可以分享心得, 可以为后来的人分享, 贡献, 不要拍拍屁股走人, 当然, 我不会逼你。 |
|
|
|
|
|
|
|
楼主 |
发表于 10-3-2010 10:57 AM
|
显示全部楼层
RE: 新问题:如何联系两个pic?
有些问题,想请问各位。
我想联系两个pic,第一个pic是读取感应器的(transmit to 2nd pic),第二个pic是based on 质料然后action.
现在主要是读取温度和湿度, 然后由第二个pic显示在LCD。
build 和compile 都没问题,只是LCD显示不出来。
我曾只用一个pic来显示,也没问题。 所以我怀疑是联系的program出问题。
以下只是部分program, 联系的program是否少了些身么?
第一个pic:
#include <stdio.h>
#include <htc.h>
#include "delay.h"
#include "lcd.h"
#include "sht_read.h"
#include "usart.h"
__CONFIG(0x3f71);
void main ( void )
{
unsigned char counter;
// Initializations
ADCON1 = 7;
TRISB = 0;
TRISC = 0;
//TRISD = 0;
lcd_init();
lcd_goto ( 0x00 );
lcd_puts ( "SHT75 TESTING" );
comreset(); // reset the SHT
DelayMs ( 20 ); // delay for power up
CCPR1H = 0;
CCPR1L = 100;
T1CON = 0b00110001;
CCP1CON = 0b00001010;
CCP1IE = 1;
PEIE = 1;
GIE = 1;
while ( 1 )
{
// Body
sht_rd();
counter = waitSec [ currentState ] - secCounter;
switch ( getch() )
{
case 'A':
putch ( ( unsigned char ) restemp );
putch ( ( unsigned char ) ( restemp - ( unsigned char ) restemp ) * 10 );
putch ( ( unsigned char ) truehumid );
putch ( ( unsigned char ) ( truehumid - ( unsigned char ) truehumid ) * 10 );
putch ( counter );
break;
}
}
}
第二个pic:
#include <stdio.h>
#include <htc.h>
#include "delay.h"
#include "lcd.h"
#include "usart.h"
__CONFIG(0x3f71);
void main ( void )
{
// Initializations
char LCDString [ 17 ];
float restemp, truehumid;
unsigned char counter;
init_comms();
lcd_init();
while ( 1 )
{
// Body
//DelayMs ( 250 );
// DelayMs ( 250 );
putch ( 'A' );
restemp = getch() + getch() * 1;
truehumid = getch() + getch() * 1;
counter = getch();
lcd_goto ( 0x40 );
lcd_puts ( "tem = " );
displayFloat ( restemp );
lcd_putch ( ' ' );
lcd_putch ( 223 );
lcd_puts ( "C " );
lcd_goto ( 0x54 );
lcd_puts ( "TRUE = " );
displayFloat (truehumid);
lcd_puts ( " % " );
lcd_goto ( 0x14 );
lcd_puts ( "CD = " );
sprintf ( LCDString, "%d ", counter );
lcd_puts ( LCDString );
}
}
谢谢。 |
|
|
|
|
|
|
| |
本周最热论坛帖子
|