Sensor – MH-Z14 – CO2 meting
Hardware
De MH-Z14 is een vrij geavanceerde CO2-sensor die een gecalibeerde waarde in digitale of analoge vorm doorstuurt. De technische fiche helpt je op weg om de verschillende protocols te implementeren. De sensor kan op 3 bereiken aangekocht worden: een bereik van 2000 ppm, van 5000 ppm en van 10000 ppm. Het mogelijk aantal meetwaarden is steeds 1000 (de nauwkeurigheid is dus respectievelijk 2, 5 of 10 ppm). Voor deze test gebruikte ik een 2000 ppm sensor module.
Omwille van de beperkte resolutie van de analoge poorten (slechts 1023 waarden tussen 0 en 5 volt), is de analoge output van de sensor (0 tot 2,4V) niet bijster bruikbaar.
De digitale uitvoer communiceert via PWM of UART. Het signaal (uit, en voor UART ook in) loopt op 3,3 volt. Dit betekent dat je dus je referentiesignaal op je Arduino moet wijzigen naar 3,3 volt – of je moet het signaal hardwarematig opvoeren naar 5 volt.
Bron: jurgen.gaeremyn.be
Specs (ENG):
Detection range | 0~10000ppm (optional) |
Resolution ratio | 5ppm (0~2000ppm) |
10ppm (2000~5000ppm) | |
20ppm (5000~10000ppm) | |
Accuracy | ±50ppm±5% |
Repeatability | ±30ppm |
Responsible time | <30S |
Warm-up time | 3min |
Working temprature | 0~50C |
Working humidity | 0%~90%RH (No condensation) |
Storage temprature | -20~60C |
Working voltage | 4~6V |
Working current | Max current <100mA (Average current <50mA) |
Usingage | >5year |
Pinout
Arduino
Aansluiten op de Arduino (PWM)
Sluit de K30 module aan op de Arduino volgens onderstaand overzicht:
Ps. bij voorkeur een externe voeding gebruiken!
MH-Z14 pin: | Arduino pin: | Externe voeding: |
---|---|---|
PWM | 5 | |
4 - GND | GND | GND |
5 - VCC (3v - 6v) | VCC (3v - 6v) |
Script PWM
Onderstaand script geeft het aantal PPM weer van de CO2 in de lucht.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
// set pin numbers: const int sensorPin = 2; // the number of the sensor pin long laag = 0; long hoog = 0; long laagTijd = 0; long hoogTijd = 0; void setup() { Serial.begin(9600); // initialize the sensor pin as an input pinMode(sensorPin, INPUT); // Read starting value for millis... (just some value) while(digitalRead(sensorPin) == LOW) {;} hoog = millis(); } void loop(){ // Check for high and low timing - low time * 2 = PPM while(digitalRead(sensorPin) == HIGH) {;} laag = millis(); hoogTijd = laag - hoog; while(digitalRead(sensorPin) == LOW) {;} hoog = millis(); laagTijd = hoog - laag; // Validity check high+low = 1004 (small margin or error allowed -> 990) if(laagTijd + hoogTijd > 990) { Serial.print("H: "); Serial.println(hoogTijd,DEC); Serial.print("L: "); Serial.println(laagTijd,DEC); Serial.print("CO2 - "); Serial.print(laagTijd * 2,DEC); Serial.println(" ppm"); } else { // Output in case of invalid check: value instead of 1004 ms Serial.print("-- CK:"); Serial.println(laagTijd+hoogTijd, DEC); } } |
Het resultaat
1 2 3 4 5 6 7 8 9 10 11 12 |
H: 354 L: 644 CO2 - 1288 ppm H: 355 L: 642 CO2 - 1284 ppm H: 355 L: 642 CO2 - 1284 ppm H: 355 L: 642 CO2 - 1284 ppm |
Bronnen:
jurgen.gaeremyn.be
github.com *empierre
14core.com
arduinomania.in.ua
Aansluiten op de Arduino (UART)
Sluit de K30 module aan via RX/TX op de Arduino volgens onderstaand overzicht:
MH-Z14 pin: | Arduino pin: |
---|---|
TxD | A1 |
RxD | A0 |
GND | GND |
VCC (3v - 5v) | 3.3V |
Script UART
Onderstaand script geeft het aantal PPM weer van de CO2 in de lucht.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
#include <SoftwareSerial.h> SoftwareSerial SerialCom (A1,A0); int myDelay = 2000; byte addArray[] = { 0xFF, 0x01, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79 }; char dataValue[9]; String dataString = ""; void setup(){ Serial.begin(9600); SerialCom.begin(9600); Serial.println("MH-Z14 C02 Sensor Test Code"); Serial.println("------------------------------------"); } void loop() { SerialCom.write(addArray, 9); SerialCom.readBytes(dataValue, 9); int resHigh = (int) dataValue[2]; int resLow = (int) dataValue[3]; int pulse = (256*resHigh)+resLow; dataString = String(pulse); Serial.print("PPM: "); Serial.println(pulse); delay(myDelay); } |
Het resultaat
1 2 3 4 5 6 |
MH-Z14 C02 Sensor Test Code ------------------------------------ PPM : 1409 PPM : 1411 PPM : 1413 PPM : 1415 |
Bronnen:
14core.com
Schema
GEEN GEGEVENS
Teardown
GEEN GEGEVENS
Datasheet
Fritzing
Downloads
GEEN GEGEVENS
[#/handleidingen/sensor_co2_mhz14″ ]