Created
February 8, 2018 04:49
-
-
Save hbcruoma/b344839fcbfdce1dc49155519aec7b14 to your computer and use it in GitHub Desktop.
Esimerkki MH-Z19B -anturin lukemisesta Mkr1000:lla. Perustuu lähteeseen http://www.twobears.at/wordpress/diy/co2-messung-mit-mh-z19-und-arduino/, lisätty mm. Mkr1000-kytkennät.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* Programm zum Auslesen der CO2-Konzentration aus 2 Sensoren MH-Z19 an einem Arduino Mega | |
* Die Sensoren befinden sich an den seriellen Schnittstellen 1 und 2. | |
* Die Werte werden dann an im Klartext an den Computer übergeben. | |
* Geschrieben von: Norbert Huber | |
* Datum: 08.04.2017 | |
*/ | |
/* | |
* Serial 1 pins: | |
* D13 - Rx | |
* D14 - Tx | |
* | |
* Connections: | |
* MH-Z19 MKR1000 | |
* 2(Rx)----D14(Tx) | |
* 3(Tx)----D13(Rx) | |
* 6(Vin)---5V | |
* 7(GND)---GND | |
*/ | |
byte com[]={0xff,0x01,0x86,0x00,0x00,0x00,0x00,0x00,0x79}; //Befehl zum Auslesen der CO2 Konzentration | |
byte return1[9]; //hier kommt der zurückgegeben Wert des ersten Sensors rein | |
int concentration1; //CO2-Konzentration des ersten Sensors | |
int minimum1; //Minimum-Wert des ersten Sensors | |
int temp1; //Temperatur-Wert des ersten Sensors | |
byte status1; //Status des ersten Sensors | |
void setup() { | |
Serial.begin(9600); //Initialisierung Serielle Schnittstelle zum Computer | |
Serial1.begin(9600); //Initialisierung der seriellen Schnittstelle für den ersten Sensor | |
} | |
void loop() { | |
while (Serial1.available() >0) { //Hier wird der Buffer der Seriellen Schnittstelle gelehrt | |
Serial1.read(); | |
} | |
//Sensor 1: | |
Serial1.write(com,9); //Befehl zum Auslesen der CO2 Konzentration | |
Serial1.readBytes(return1,9); //Auslesen der Antwort | |
concentration1 = return1[2]*256+return1[3]; //Berechnung der Konzentration | |
temp1 = return1[4]-40; //Berechnung der Temperatur | |
minimum1 = return1[6]*256+return1[7]; //Berechnung des Minimums | |
status1 = return1[5]; //Berechnung des Status | |
Serial.print("Raw: "); | |
for (int i = 0; i < 9; i++) { | |
Serial.print(return1[i]); | |
Serial.print(" "); | |
} | |
Serial.println(); | |
Serial.print("Zeit = "); //Senden der Werte an den PC | |
Serial.print(millis()); //Am Angfang wird die Zeit in ms gesendet, die der Arduino in Betrieb ist | |
Serial.print(" ; Sensor 1: CO2 = "); | |
Serial.print(concentration1); | |
Serial.print(" ; Temp = "); | |
Serial.print(temp1); | |
Serial.print(" ; Minimum = "); | |
Serial.print(minimum1); | |
Serial.print(" ; Status = "); | |
Serial.print(status1); | |
Serial.println(); | |
delay(10000); //10s warten | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Minun käyttämäni MH-Z19B ei toiminut datalehdessä dokumentoimattomilta osin samalla tapaa kuin alkuperäisessä esimerkissä, esim. status on aina nolla.
Lämpötilatietoakaan ei ole dokumentoitu, mutta se näyttää toimivan luotettavasti. Kannattaa kuitenkin huomata, että se on anturin lämpötila, jota käytetään anturissa sisäisesti lämpötilakompensaation laskemiseen. Anturin toiminta perustuu infrapunavaloon, siis lämpösäteilyyn, joten se lämpiää käytössä.