I worked on developing a digital frostpoint hygrometer for measuring water vapor at NOAA. Using an old analog instrument as a reference, I created this new hygrometer using AVR microcontrollers and other digital electronics. I laid out the circuit board using Altium DXP, had the PCBs fabricated through various companies, and soldered all the parts onto each board.
I also wrote both the embedded C microcontroller code and C++ control program for the hygrometers. The embedded software handles all of the logic, communication protocols, and data processing on the circuit board. The control program displays and plots the hygrometer data, and allows for certain calibrations to be set.
Altium DXP: Schematic CAD
Using Altium DXP, I created the schematic for the frostpoint hygrometer. It centers around an Atmel AVR microcontroller (with decoupling capacitors, a reset pullup resistor, a crystal oscillator, a status LED, and a UART/RS232 header). Many parts are connected through the SPI bus and other IO pins, including an ADC, pressure transducer, and SD card connector.
Altium DXP: PCB CAD
I laid out this printed circuit board from the hygrometer schematic. Copper traces connect various ICs, using vias to change layers when necessary. Designators and layout information are silkscreened on the top layer for reference. Companies like Imagineering can use this layout to fabricate the actual PCBs.
Frostpoint Hygrometer Board
This is the finished hygrometer board. I soldered all parts on the PCB using a regular soldering iron. As production increases, we will move to a more efficient means of fabrication (hot air reflow, or using a separate company that has a pick and place machine). These instruments are now used as the standard on our balloon flights to measure water vapor, giving accurate data even in the upper atmosphere (with incredibly low water content in the air). I wrote the embedded software for the microcontroller in C using the WinAVR toolchain. It manages the main functionality of the system, using the many attached slave devices, and emulates the behavior of another chip to communicate with a separate board that transmits our data wirelessly.
This is a screenshot of the hygrometer control software I wrote in C++. It uses the wxWidgets and OpenGL libraries to create the GUI and plotting area, developed with Microsoft Visual Studio 2008. A worker thread continuously runs in the background collecting hygrometer data from the serial port. It sends messages to the GUI thread when new data is received, which is then displayed and plotted on the window. The plot works like an oscilloscope, with a sliding view to show the incoming values, and can dynamically scale to the visible data range. Menu options allow for thermistor calibration values to be set (both on the program and hygrometer), and SD card data retrieval.