Sensor Filters For Coders

Anybody interested in building their own robot, sending spacecraft to the moon, or launching inter-continental ballistic missiles should have at least some basic filter options in their toolkit, otherwise the robot will likely wobble about erratically and the missile will miss it’s target.

What is a filter anyway? In practical terms, the filter should smooth out erratic sensor data with as little time lag, or ‘error lag’ as possible. In the case of the missile, it could travel nice and smoothly through the air, but miss it’s target because the positional data is getting processed ‘too late’. The simplest filter, that many of us will have already used, is to pause our code, take about 10 quick readings from our sensor and then calculate the mean by dividing by 10. Incredibly simple and effective as long as our machine or process is not time sensitive – perfect for a weather station temperature sensor, although wind direction is slightly more complicated. A wind vane is actually an example of a good sensor giving ‘noisy’ readings: not that the sensor itself is noisy, but that wind is inherently gusty and is constantly changing direction.

It’s a really good idea to try and model our data on some kind of computer running software that will print out graphs – I chose the Raspberry Pi and installed Jupyter Notebook running Python 3.

The photo on the left shows my test rig. There’s a PT100 probe with it’s MAX31865 break-out board, a Dallas DS18B20 and a DHT22. The shield on the Pi is a GPS shield which is currently not used. If you don’t want the hassle of setting up these probes there’s a Jupyter Notebook file that can also use the internal temp sensor in the Raspberry Pi. It’s incredibly quick and easy to get up and running.

It’s quite interesting to see the performance of the different sensors, but I quickly ended up completely mangling the data from the DS18B20 by artificially adding randomly generated noise and some very nasty data spikes to really punish the filters as much as possible. Getting the temperature data to change rapidly was effected by putting a small piece of frozen Bockwurst on top of the DS18B20 and then removing it again.

Continue reading “Sensor Filters For Coders”

Raspberry Pi Wind Measurement

A well organized approach to a project is a delight to see. [Pavel Gesyuk] takes just that approach with the experiments on his blog. Experiment 13 is a multi-part series using a Raspberry Pi as the heart of a weather station. [Pavel] is looking at wind speed and direction, and temperature measurement, plus solar power for the station. One of his videos, there are many, is after the break.

electrical_02_tThe anemometer and direction sensors are stock units wired to a Raspberry Pi A+ using an analog to digital daughter board. The data from the temperature sensor is acquired using I2C. During one part of the experiment he uses an EDIMAX WiFi adapter for collecting the data.

Python is [Pavel’s’ language of choice for development and freely shares his code for others to see. The code collects the data and displays it on a monitor connected to the Pi.┬áThe experiment also attempts to use solar power to charge batteries so the station is not dependent on mains power.

The mechanical assembly shows attention to detail commensurate with his project presentation and we respect how well organized the work is.

Continue reading “Raspberry Pi Wind Measurement”