2012-08-08 9 views
0

J'ai acheté ce capteur:Qu'est-ce que le bus 1-wire MaxDetect?

http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Sensors/Weather/RHT03.pdf

et la sortie est « MaxDetect bus 1 fils », Qu'est-ce que cela signifie et comment l'utiliser? J'ai essayé de le connecter à l'arduino et de le programmer mais ça ne fonctionne pas correctement, je reçois constamment des données de 1 bit. Je suppose que mon code est faux. Dois-je utiliser la bibliothèque Wire-1 pour arduino?

int SensorVccPin = 8; 
int datapin = 6; 
int bitcheck1; 
int bitcheck2; 
int temp[16]; 
int humidity[16]; 
int sensorcheck[8]; 

void setup() 
{ 
    pinMode(SensorVccPin, OUTPUT); 
    pinMode(datapin, INPUT); 
    Serial.begin(9600); 
} 

void loop() 
{ 
    // This is the STEP #1 
    digitalWrite(SensorVccPin, HIGH); 
    delay(5000); 

    digitalWrite(SensorVccPin, LOW); 
    delay(15); 


    digitalWrite(SensorVccPin, HIGH); 

    delayMicroseconds(30); 

    digitalWrite(SensorVccPin, LOW); 



while(digitalRead(datapin) == 0){ 

     delayMicroseconds(2); } 



    while(digitalRead(datapin) == HIGH) 
{ 
delayMicroseconds(2); } 




    // STEP #2 
    for (int i = 0; i<16; i++) 
    { 
    while(digitalRead(datapin) == LOW) 
    { 
     delayMicroseconds(2); } 

    delayMicroseconds(10); 


    bitcheck1 = digitalRead(datapin); // maybe store as an array 
    delayMicroseconds(17);  // 50 sec pause // 27us = 0 bit, 70us is 1 bit data 
    delayMicroseconds(15); 
    bitcheck2 = digitalRead(datapin); 

    if (bitcheck1==bitcheck2) 
    {temp[i]=1; 
    delayMicroseconds(28); 
    } 
    else 
    {temp[i]=0; 

    } 


    } 

    for (int i = 0; i<16; i++) 
    { 
    while(digitalRead(datapin) == LOW) 
    { 
     delayMicroseconds(2); } 

    delayMicroseconds(10); 


    bitcheck1 = digitalRead(datapin); // maybe store as an array 
    delayMicroseconds(17);  // 50 sec pause // 27us = 0 bit, 70us is 1 bit data 
    delayMicroseconds(15); 
    bitcheck2 = digitalRead(datapin); 

    if (bitcheck1==bitcheck2) 
    {humidity[i]=1; 
    delayMicroseconds(28); 
    } 
    else 
    {humidity[i]=0; 

    } 


    } 


    for (int i = 0; i<8; i++) 
    { 
    while(digitalRead(datapin) == LOW) 
    { 
     delayMicroseconds(2); } 

    delayMicroseconds(10); 


    bitcheck1 = digitalRead(datapin); // maybe store as an array 
    delayMicroseconds(17);  // 50 sec pause // 27us = 0 bit, 70us is 1 bit data 
    delayMicroseconds(15); 
    bitcheck2 = digitalRead(datapin); 

    if (bitcheck1==bitcheck2) 
    {sensorcheck[i]=1; 
    delayMicroseconds(28); 
    } 
    else 
    {sensorcheck[i]=0; 

    } 



    delayMicroseconds(80); 





    for(int i=0; i<16; i++) 
    { 
    Serial.print(temp[i]); 

    } 
    Serial.print(" temp "); 


    for(int i=0; i<16; i++) 
    { 
    Serial.print(humidity[i]); 

    } 
     Serial.print(" hum "); 

    for(int i=0; i<8; i++) 
    { 
    Serial.print(sensorcheck[i]); 

    } 
     Serial.print(" check "); 


    } 



    } 
+0

"ça ne fonctionne pas correctement" n'est pas une très bonne description du problème. Qu'attendez-vous qu'il se passe? Qu'est-ce qui se passe réellement? –

+0

Le capteur utilise un câble que je ne sais pas vraiment programmer. J'ai essayé d'écrire un programme pour en recevoir quelques bits mais ça me donne toujours 1 à 40 bits. – EEstud

Répondre

1

Vous devez laisser la broche VCC (broche 1) haute tout le temps. En fait, idéalement, il devrait être connecté à l'alimentation électrique. C'est la broche de données (broche 2) que vous devriez tirer haut et bas pour communiquer avec le capteur et c'est la broche data que vous devriez lire. Vous devrez commuter la broche de données entre les modes d'entrée et de sortie. Assurez-vous que vous avez une résistance de pull-up sur la broche de données parce que le capteur peut seulement le tirer bas.

0

Le bus MaxDetect 1-wire est spécialement conçu par MaxDetect Technology Co., Ltd., il est différent du bus 1-wire Maxim/Dallas, donc il est incompatible avec le bus Dallas 1-wire.

Vous pouvez jeter un oeil à ceci:

http://tienda.tdrobotica.co/download/RHT03_programa.pdf

Meilleures salutations.