weather station ...

I have been interested in running my own weather monitoring station for a while now in order to monitor current climatic conditions and provide a log of past conditions. For a while I have been running a simple station with temperature monitoring and logging, however the temperature sensing became very unreliable and needs to be updated.

Project Status

Ongoing... - Currently in the design phase.
  • New DS18B20 1-wire temperature sensor PIC assembler (asm) code tested and working.
  • Next stage - Need to add the ability to send ROM codes to the PIC from a host controller and read multiple DS18B20 sensor temperatures.

High Level Design

The basic high level design is to create a weather monitoring station that can record and log climatic conditions for temperature, pressure, wind speed, direction, rainfall and humidity.

Requirements / Features

The project demands that the following features are available in the system:
  • Logging of all conditions
  • Access to logs over the internet
  • Temperature sensing (-20 to +50 degrees Celcius)
  • Humidity sensing
  • Pressure sensing
  • Rainfall detection
  • Wind speed & direction

Optional features (nice to have's)

The following features would be good to include if possible but are not critical to the project success:
  • Weather pattern prediction

System Design

The basic system design is detailed below:

Main controller

For the main controller, a Rabbit core module is used. These processors have onboard ethernet and make it extremely easy to provide a web based interface.
 

Temperature sensing

Temperature will be recorded with a Dallas 1-wire DS18B20 sensor. This will be integrated using a direct protocol using a PIC microcontroller as the communication timing needs to be accurate and consistent. Assembler code is used for maximum timing reliability. The PIC can then be connected to the main controller and return final temperature values. Multiple 1-wire devices can be connected to the one PIC controller and are addressable by a unique 64bit ID.
 
After hours of painstaking development and debugging I eventually got the DS18B20 working in 'raw' 1-wire mode. I tried all sorts of timing combinations to get it right with no avail, until I tried building a replica circuit with another PIC and DS18B20 device. I then got immediate results, I havn't pinpointed the problem with the first circuit yet, only that it could be the PIC, the pin number and/or the temperature device itself.
 
Code to follow...