- LiFePO4 Speicher Test         
Ergebnis 1 bis 1 von 1

Thema: PIC und DHT Sensoren DHT11/DHT22

  1. #1
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    74
    Beiträge
    1.175
    Blog-Einträge
    1

    PIC und DHT Sensoren DHT11/DHT22

    Anzeige

    Powerstation Test
    Hallo Freunde !
    Bestimmt befinde ich mich wieder in einer Anfänger-Fussangel, aber ich komme nicht selber heraus.

    Gestärkt aus dem Urlaub zurück wollte ich mich auf ein Projekt mit einem DHT Sensor stürzen....aber ich komme nicht richtig auf die Sprünge da.

    Nun habe ich anhand des Datenblattes und Beispielen im Web ein kleines "Testprogrämmchen" geschrieben, aber es will nicht , ganz und gar nicht.
    Ich denke, das es schon bei der Initialisierung des Datenaustausches MCU - DHT22 hängt, da ich einfach kein "DHT - Response" bekomme, also die Pegelbedingungen am Datenpin nicht stimmen.
    Hier mal kurz mein DHT - Start und DHT Response Check als Code:
    Code:
    // DHT22-Protokoll-Start:
    
    #define DHT_PORT_PIN  PORTCbits.RC3
    #define DHT_TRIS_PIN  TRISCbits.TRISC3
    
    unsigned char DHT_RESPONSE;
    
    
    void dht_start()
    {
    DHT_TRIS_PIN   = 0:    // Ausgang
    
    DHT_PORT_PIN   = 0:    // LOW-Pegel
    
    __delay_ms(18):        // 18 mSec warten
    
    DHT_PORT_PIN   = 1;    // HIGH -Pegel
    
    __delay_us(30) ;       // 30 µSec warten
    
    DHT_TRIS_PIN   = 1;    //  auf Eingang umschalten
    
    __delay_ms(40);        // 40 mSec warten
    }
    
    void test_response()
    {
      DHT_RESPONSE = 0;    // Variable DHT_RESPONSE auf LOW/NULL setzen
        __delay_us(40);    // kurze Wartezeit
        
    if (DHT_PORT_PIN == 0) // ist DHT Port auf LOW ,
      {
         __delay_us(80);   // dann 80 µSec warten     
      }
      
    if (DHT_PORT_PIN == 1) // ist der DHT_Port jetzt auf HIGH,
       {
         DHT_RESPONSE = 1  // dann RESPONSE als OK = 1 bewerten
       }
       
       __delay_us(40)      // nochmals 40 µSec warten
     } 
    } 
       ..... weiterer Programmablauf
    Ich hoffe, das ich mein Bezwecken der einzelnen Codezeilen gut genug kommentiert habe....
    Es kann ja auch ein Timing Problem sein, das ich beim Datenblatt was falsch interpretiert habe..jedenfalls bekomme ich kein DHT_RESPONSE = 1

    Vielleicht kann ja Bitte mal wer über den Code schauen und mir das Brett vorm Kopf entfernen.... ??

    Habe als Debug eine LED die bei DHT_RESPONSE = 1 leuchten soll...aber leider nur "Dunkeltastung"...

    Gruss und Dank

    Gerhard

    Nachtrag :
    Fehler gefunden , war meine Dummheit ...habe bei test_response den port_pin falsch abgefragt....mit:

    while( DHT_PORT_PIN == 0) ;
    while( DHT_PORT_PIN == 1) ;
    usw... klappt es nun.
    Geändert von oderlachs (06.08.2017 um 16:55 Uhr) Grund: Fehler erkannt
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

Ähnliche Themen

  1. Arduino Temperaturmessung mit Anzeige (später Funk) (DHT22, TFT 1,8", NRF24L01)
    Von thewulf00 im Forum Vorstellungen+Bilder von fertigen Projekten/Bots
    Antworten: 5
    Letzter Beitrag: 02.01.2014, 18:39
  2. DHT22 bei 1MHz MCU-Takt?
    Von Mitch64 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 13.11.2013, 12:21
  3. Aussen-Messstelle bzw. Aussengehäuse für DHT11/22
    Von oderlachs im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 4
    Letzter Beitrag: 10.11.2012, 13:57
  4. was für sensoren?????
    Von gorgo921 im Forum Sensoren / Sensorik
    Antworten: 9
    Letzter Beitrag: 06.07.2009, 23:54
  5. IR-Sensoren
    Von highlow im Forum Sensoren / Sensorik
    Antworten: 0
    Letzter Beitrag: 25.10.2005, 16:57

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress