wangican 发表于 2013-1-21 23:14:39

用温湿度传感器控制继电器,为什么点了串口助手才能运行,直接外界9V电源却用不了

用温湿度传感器控制继电器,为什么点了串口助手才能运行,拔掉usb线,直接外界9V电源却用不了,以下是程序,目的是在湿度达到40%的时候继电器吸合,45%后,继电器断开,求各位大神指教问题出在哪了,温湿度传感器型号DHT11。本人Arduino新手,大家多多包涵。
#define DHT11_PIN 0      

int relay=7;
byte read_dht11_dat()
{
byte i = 0;
byte result=0;
for(i=0; i< 8; i++){
while(!(PINC & _BV(DHT11_PIN)));// wait for 50us
delayMicroseconds(30);
if(PINC & _BV(DHT11_PIN))
   result |=(1<<(7-i));
            while((PINC & _BV(DHT11_PIN)));
}
return result;
}
void setup()
{
DDRC |= _BV(DHT11_PIN);
PORTC |= _BV(DHT11_PIN);

pinMode(relay,OUTPUT);
   }
void loop()
{
byte dht11_dat;
byte dht11_in;
byte i;

PORTC &= ~_BV(DHT11_PIN);
delay(18);
PORTC |= _BV(DHT11_PIN);
delayMicroseconds(40);
DDRC &= ~_BV(DHT11_PIN);
delayMicroseconds(40);
dht11_in = PINC & _BV(DHT11_PIN);

delayMicroseconds(80);
dht11_in = PINC & _BV(DHT11_PIN);

delayMicroseconds(80);

for (i=0; i<5; i++)
dht11_dat = read_dht11_dat();
DDRC |= _BV(DHT11_PIN);
PORTC |= _BV(DHT11_PIN);
       if(dht11_dat<=40)
      {
          digitalWrite(relay,HIGH);
         
         
         }
         else if(dht11_dat>=45)
         
         {
         digitalWrite(relay,LOW);
      
         }
         delay(2000);
}

绿林网页 发表于 2013-1-22 08:07:23

9v电源的电流是多大?用的变压器还是9v层叠电池?是不是电流不足以驱动继电器工作?可以用蓝牙接串口看看数据输出!

wangican 发表于 2013-1-22 11:01:06

绿林网页 发表于 2013-1-22 08:07 static/image/common/back.gif
9v电源的电流是多大?用的变压器还是9v层叠电池?是不是电流不足以驱动继电器工作?可以用蓝牙接串口看看数 ...

你好 我用的是 双路的方块碳性电池

ttyp 发表于 2013-1-22 11:19:47

是不是共地问题?

绿林网页 发表于 2013-1-22 12:32:05

wangican 发表于 2013-1-22 11:01 static/image/common/back.gif
你好 我用的是 双路的方块碳性电池

把接线图发上来吧

dicklaw795 发表于 2013-2-4 07:32:11

http://www.geek-workshop.com/thread-3159-1-1.html

看似有著共同問題,解決了嗎

firewise 发表于 2013-5-16 08:06:59

外置供电时,要求外置电源的电流最好有1A以上。
我试过4个外电源,2个800ma,2个1A的,用800ma的2个都不行,几1A的2个都可以用.

口腔(戴志强) 发表于 2014-6-17 14:52:48

我的必须用打印机线,才能正常,电源多大到时无所谓。
页: [1]
查看完整版本: 用温湿度传感器控制继电器,为什么点了串口助手才能运行,直接外界9V电源却用不了