diff --git a/content/posts/2018-05-19-Improving-a-Gas-Sensor.md b/content/posts/2018-05-19-Improving-a-Gas-Sensor.md new file mode 100644 index 0000000..10cffb3 --- /dev/null +++ b/content/posts/2018-05-19-Improving-a-Gas-Sensor.md @@ -0,0 +1,92 @@ +--- +title: "Measuring Air Quality - Adding a Gas Sensor" +date: 2018-05-19T23:25:00+02:00 +author: eNBeWe +type: post +categories: + - Allgemein + - Bastelkram +tags: + - Wohnung + - Luftdaten + - DIY + - Arduino + +--- +At the time, there is quite some discussion regarding +air quality and pollution going on in germany. +Some cities, like Stuttgart, have to deal with high levels +of fine particle emissions. +That is why some people came up with a simple solution to +build a sensor network for air quality. +They provide detailed instruction on how to build your +own air quality sensor for about 25 Euros. +So, if you want to participate, just head over to [luftdaten.info][1] + + + +I have been running [my sensor][2] for quite a while now. +In addition to fine particles I am also measuring temperature, +humidity and air pressure. The data is also automatically sent to +[opensensemap.org][3]. +But now I wanted to add a "real" gas sensor to my collection +to also measure gases like ammonium (NH3) or carbon monoxide (CO). + +The sensor firmware from luftdaten.info allows you to connect +more or less arbitrary sensors through the I2C protocol. +This is also the way I am currently getting my humidity/pressure/temperature readings from a BME280 sensor. +So far, there are no sensors for volatile gas compounds supported +so I had to do some digging to find a suitable sensor. + +After some searching I found the [*Seeed Studio Grove Multichannel Gas Sensor*][4], which I ordered. Turns out, I probably should have read a bit more. +The board primarily consists of a [SGX Sensortech MiCS-6814 gas sensor][5] for the detection and an [ATmega168PA][6] for the I2C interface. + +The board has a few flaws both in software (fixable) and in hardware (not so easily fixable). [Over at Github][7], paulvha gathered some of the problems he found out. In short: The board hasn't enough power to properly heat the sensor and the precision of the sensor is comromised due to bad choice of load resistors. + +For that reason I started to build my own controller for the MiCS-6814 sensor. +I started out by buying a small board with just the MiCS-6814 sensor from AliExpress. + +[![Sensor board](/posts/images/2018-05-19-MiCS6814-250x204.jpg)][8] + +The board consists of the sensor with a few current limiting resistors, +according to the reference design from the datasheet. +To attach the sensor through I2C, an [ATmega328PA][9] that I had lying around, +is used. For this I needed a small board to manage the heating control, +the programming of the microcontroller as well as potential level shifting. + +## Schematic + +[![I2C Adapter Schematic](/posts/images/2018-05-19-MiCS-6814-I2C.sch.svg)][10] + +The schematic above shows the wiring of the adapter board. +The board is connected to the main air quality sensor through the 5pin connector +at the top left. The MiCS-6814 sensor should always run at 5V so I need a pin for that. To allow for a lower main logic voltage, the VCC pin takes the voltage for the level shifters. +The other pins are just a ground pin and the two pins for the I2C bus. + +In contrast to the datasheet, the resistance values from the sensor are not +read through one single ADC pin but through three separate analog inputs with their individual serial load resistors. The resistor values are taken from the document of [paulvha][7]. + +## PCB Design + +[![PCB front side](/posts/images/2018-05-20-MiCS6814-pcb-front-250x84.png)][11] [![PCB back side](/posts/images/2018-05-20-MiCS6814-pcb-back-250x85.png)][12] + +I designed my pcb in KiCad as can be seen above. The ICSP connector on the back is done as 6 pads, allowing for programming through pogo pins. For initial development, I just soldered a normal pin header to the pads. + +My initial firmware on the controller is just a port of the original firmware from the [Grove Sensor][13], allowing for reusage of the existing library. However, as I am currently getting more and more freaked out by the +really poor code quality of the original library, I am currently doing a rewrite. + +More on that later. + + [1]: https://luftdaten.info/ + [2]: http://kiel.maps.luftdaten.info/#13/54.3226/10.1271 + [3]: https://opensensemap.org/explore/594820b4a4ad59001132e6f9 + [4]: https://www.seeedstudio.com/Grove-Multichannel-Gas-Sensor-p-2502.html + [5]: https://www.sgxsensortech.com/content/uploads/2015/02/1143_Datasheet-MiCS-6814-rev-8.pdf + [6]: http://www.microchip.com/wwwproducts/en/ATmega168PA + [7]: https://github.com/paulvha/multichannel-gas + [8]: /posts/images/2018-05-19-MiCS6814.jpg + [9]: http://www.microchip.com/wwwproducts/en/ATmega328PA + [10]: /posts/images/2018-05-19-MiCS-6814-I2C.sch.svg + [11]: /posts/images/2018-05-20-MiCS6814-pcb-front.png + [12]: /posts/images/2018-05-20-MiCS6814-pcb-back.png + [13]: https://github.com/Seeed-Studio/Mutichannel_Gas_Sensor diff --git a/content/posts/images/2018-05-19-MiCS-6814-I2C.sch.svg b/content/posts/images/2018-05-19-MiCS-6814-I2C.sch.svg new file mode 100644 index 0000000..1f1ce73 --- /dev/null +++ b/content/posts/images/2018-05-19-MiCS-6814-I2C.sch.svg @@ -0,0 +1,9217 @@ + + + + + + image/svg+xml + + SVG Picture created as MiCS-6814-I2C.sch.svg date 2018/05/20 00:18:36 + + + + + + SVG Picture created as MiCS-6814-I2C.sch.svg date 2018/05/20 00:18:36 + Picture generated by Eeschema-SVG + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/posts/images/2018-05-19-MiCS6814-250x204.jpg b/content/posts/images/2018-05-19-MiCS6814-250x204.jpg new file mode 100644 index 0000000..7d4d526 Binary files /dev/null and b/content/posts/images/2018-05-19-MiCS6814-250x204.jpg differ diff --git a/content/posts/images/2018-05-19-MiCS6814.jpg b/content/posts/images/2018-05-19-MiCS6814.jpg new file mode 100644 index 0000000..a6cd112 Binary files /dev/null and b/content/posts/images/2018-05-19-MiCS6814.jpg differ diff --git a/content/posts/images/2018-05-20-MiCS6814-pcb-back-250x85.png b/content/posts/images/2018-05-20-MiCS6814-pcb-back-250x85.png new file mode 100644 index 0000000..614ef18 Binary files /dev/null and b/content/posts/images/2018-05-20-MiCS6814-pcb-back-250x85.png differ diff --git a/content/posts/images/2018-05-20-MiCS6814-pcb-back.png b/content/posts/images/2018-05-20-MiCS6814-pcb-back.png new file mode 100644 index 0000000..3bdd6bb Binary files /dev/null and b/content/posts/images/2018-05-20-MiCS6814-pcb-back.png differ diff --git a/content/posts/images/2018-05-20-MiCS6814-pcb-front-250x84.png b/content/posts/images/2018-05-20-MiCS6814-pcb-front-250x84.png new file mode 100644 index 0000000..7659bd2 Binary files /dev/null and b/content/posts/images/2018-05-20-MiCS6814-pcb-front-250x84.png differ diff --git a/content/posts/images/2018-05-20-MiCS6814-pcb-front.png b/content/posts/images/2018-05-20-MiCS6814-pcb-front.png new file mode 100644 index 0000000..cbbbc30 Binary files /dev/null and b/content/posts/images/2018-05-20-MiCS6814-pcb-front.png differ