DHT11 - Ausleseroutine für 16Bit-PIC-Controller (hier 30F4011) vielleicht spart es ja jemand Arbeit. 1.: Worum es sich handelt: Dies ist eine "source"-File zur Programmierung eines Microcontrollers (Integrierter Schaltkreis) so dass dieser das Luftfeuchte-Messmodul DHT11 auslesen kann. dieses ist für 80ct o.ä. beim Chinesen erhältlich. Es handelt sich um den Microcontroller Typ DSPIC30F4011 von Microchip. Ich verwende MPLAB IDE v8.90 zur Entwicklung des Programms und zur Programmierung des Controllers mit einem ICD2 -CLON Programmiergerät. (Variante "POTYO" in eigener Sub-Variante). Neuere Versionen von MPLAB sind längst erschienen, sie sind aber hauptsächlich mit Komplikationen hinsichtlich der Hardware etc. verbunden, wenig Verbesserungen für meinen Bedarf, soweit ich weiß. Die File ist in Assembler programmiert und sollte mit geringen Anpassungen auf jedem PIC24 DSPIC30 laufen, da sie nur einen ST-IN/OUT- Port benötigt. und beide Typen in ASM30 programmiert werden. andere Pics-Famillien z.B. PIC16 sind nicht mit diesem Programm kompatibel. nicht alle PIC 30 sind mit dem ICD2-Brenner kompatibel.bei der Auswwahl darauf achten, welchen Brenner man verwenden will. ;--------------- Da diese File ein Ausschnitt aus einem größeren Programm ist, ist auch die Wahl der Bezeichnungen nicht immer ganz logisch, und es macht ev. überflüssige Dinge. Der LOW-Power-Oszillator muss mit einem 32kHz Uhrenquarz bestückt werden -- aber nur, um den Timer2und das DHT-Programm mittels Timer 1 sekündlich zu starten. In einem anderen Programm kann das natürlich anders bewerkstelligt werden. ; Farbübersicht : ;LED LATF,#0 ; = rot ;LED LATF,#1 ; = grün ;LED LATF,#4 ; = gelb ;LED LATF,#5 ; = blau Der DHT11 selber hängt bei mir an PORTF,#6. Er braucht einen Pull-Up (z.B. 1,8 kOhm nach +5V,)sowie einen Masse und einen +5V-Anschluss. kommt aber auch mit etwas niedrigerer VDD klar.(3V-5,5V) LED an PORTF,#2 und #3 würden mit dem ICSP-Anschluss interferieren, sind aber im Prinzip möglich. ;-------------------------- 2. Die Funktion: ;Luft-Feuchte - Messung: ;Aus dem DHT11 Datenblatt: (Luftfeuchte und Temperatur-Mess-Modul, kleines blaues Kästchen mit Löchern) Data consists of decimal and integral parts. A complete data transmission is 40bit, and the sensor sends higher data bit first. Data format: 8bit integral RH data + 8bit decimal RH data + 8bit integral T data + 8bit decimal T data + 8bit check sum. If the data transmission is right, the check-sum should be the last 8bit of "8bit integral RH data + 8bit decimal RH data + 8bit integral T data + 8bit decimal T data". eine Messung dauert etwa 34 Millisekunden. Dazu muss der T2-Interrupt mit dem Softwaremodul etwa 3400 mal mit 10usec Zeitabstand aufgerufen werden. Zum WEiterprogrammieren: ;Ausgangsgrößen: ;LftFeucBinaerReg ;LftFeucBCDReg ;LftTempBinaeerReg ;LftTempBCDReg ; MyFlags3,#3 ; Start-Flag für DHT11-Abfragung. 1= Abfragung ist grade am laufen 0=Messdaten verfügbar, falls gut. ; MyFlags3,#10 ;1= Messdaten-gut-FLAG / 0=Messdaten z Zt nicht verfügbar, oder verwertbar derzeitige Funktionalität: gelbe LED blinkt, wenn Hauptschleife läuft blaue LED blinkt sekündlich, wenn Daten vom DHT11 korrekt empfangen wurden und den Checksum Test bestanden haben. Rote LED geht bei Temperaturen über 26 Grad Celsius an, Grüne LED geht bei rel Luftfeuchte über 54% an. Diese Auszugsfile ist geprüft und läuft auf meiner Hardware mit allen Funktionen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.