CHUSBIE552

Showing posts with label Sensors. Show all posts
Showing posts with label Sensors. Show all posts

Sunday, 5 July 2015

What makes a DHT11 temperature humidity sensor Tick

A DHT11 is very low cost and well supported temperature and relative humidity I've had a few of these for a while and always wondered how they work. I think its time for a TEARDOWN.


There are a lot manufactures for the DHT11 this one is made my AOSONG. It can run between between 3 and 5 volts and uses a simple one wire protocol to communicate with other devices. For more details on the sensor itself check out the datasheet.


The casing is in two parts so to get inside it is just a matter of getting a sharp knife and splitting the case apart.




Inside the case is a small PCB with a SOIC 14 packaged IC unfortunately the part number has been removed so there is really no way to tell if this is a custom part or a specially programmed MCU. along the edge of the IC are couple of  ceramic capacitors for decoupling and noise suppression, and some other misc passive components. The green resistor I can assume is a precision resistor for the humility sensor (explained in more detail later).  


On the other side the sensor hardware itself. This consists of a PCB with interlaced traces that creates capacitance this with change based on the amount of moisture present in the air around it.  



HOW DOES IT WORK

The interlaced +ive and -ive traces allow a small amount of charge to be stored in each of the traces allowing the circuit to charge up a little, this is called capacitance and this is effected by the material separating the +ive and -ive which is mostly air and its airs permittivity one of the factors for calculating capacitance is affected by temperature and humidity
So the chip uses the precision resistor I mentioned earlier and measures the discharge time through that resistor to calculate the capacitance, and then uses that figure used with the internal temperature sensor inside the main IC to calculate the relative humidity.
    

Sunday, 14 June 2015

Fun with the Silicon Labs BIOMETRIC-EXP-EVB development board

This week I've been having a good look at the the BOIMETRIC-EXP-EVB dev board from Silicon Labs a Fab-less chip manufacturer based in Austin Texas.

The board is designed as an expansion board for their EMF32 Wonder GEKO development system. The board contains a SI1146 Ambient, IR , UV and 2D Gesture sensor, SI7013 Temperature and humidity and a TS3310 step up DC to DC coveter. The dev board also contains a Microchip 24AA024 eeprom that I believe it communicates with other Silicon Labs contains specific info about the board. It also has a green and red LED for good measure. This development board is around $29.00 at the moment so if you fancy toying with a selection of sensors then I recommend it.  

 This week I've been specificity trying out the  SI1146. This chip has the ability to  measure ambient light level, Infra red level and  measure UV index which is a standardised measurement of UV light level normally used in calculating sun burn time. The chip is also can sense 2D gestures using 2 external infra red LEDs its internal LED constant current driver and taking independent reading of refection from each of the LEDs with can then be used to calculate distance on 2 axis (distance from chip and north/south or east/west depending on the LED location)

Wiring up 

Just to note the development board is runs both power and logic at 3v3 so if your are using a 5v platform like and Arduino Uno you will require a I2C compatible logic level shifter for that data lines or there is a risk of damaging the dev board.

All the devices on the board communicates with a two wire serial protocol called I2C. This is a bus based protocol that requires devices on the bus to have individual 7 bit addresses. To use these I2C devices SDA ( serial data ), SCL (serial  clock ) and GND ( ground ) need to be connected.

 There is a little bit of a got-ya with wiring up this board  in the datasheet states that the the Si1146 SDA is connected to pin 16 and SCL is connected to pin 17 this is true for the JP3 header this is the one on the left side of the board, but on the right side the JP4 header it is connected to pin 15.  The INT pin is used for interrupt driven reading of the sensor when it when a sensors readings are ready this pin will change.

For my tests I'm using a Raspberry Pi B+  and coding in python using the SMBus module which runs the Raspberry Pi's I2C bus.

The pin numbers start at the bottom or south of the board and go across the header starting from the bottom row hopefully this picture makes more sense.



so hook up:
Raspi                                              Biometeric board
Pin 1                     3.3v                    Pin 2
Pin 3                     SDA                   Pin 16  
          Pin 5                     SCL                    Pin 17 on JP3 or Pin 15 on JP4
Pin 6                     GND                   Pin 1

Software 

I have spent a few hours getting this to run in Python and at this moment still working on the code to make it into a python module for the Si114x range possibly for a future development. My work so far is available on github Here.

The moment it is just a single program that runs the Si1146 and outputs its data on screen. 

So just type:

git clone https://github.com/rabid-inventor/SI1146-software.git
Then
cd SI1146-software/RaspberryPi/Python/
and to run the python script
sudo python si1146.py

This will output UV index , Proximity sensor and visible light level.

currently having a lot of fun with this sensor and will keep updating especially when I get as far as using the sensor to measure pulse and 2D gestures. At a later stage I will be revisiting the Si7013 temperature humidity sensor an see if I can finally get it running with a Raspberry Pi.