In this project I engineered and operated a calorimeter system to measure heat transfer across thermophotovoltaic generators for Mesodyne. I independently wrote and edited Python and Arduino scripts to collect and organize data for real-time adjustment and long term recording.
The principle behind any calorimeter is to determine the heat produced from a process via an external fluid. In this case, I flowed water past a combustion and measured its temperature at the inlet and outlet; extrapolating rate of energy transfer for the reaction (dQ/dt) through a simple formula:
dQ/dt = (dm/dt)cΔT
Where (dm/dt) is the mass flow rate, c is the specific heat, and ΔT is the change in temperature.
I had inherited a narrowly functional system plagued with issues including flow problems, inaccuracies, and unreliable hardware.
Hardware
A large part of this project was finding solutions through iteration. For example: an integral component of this calorimeter is determining accurate waterflow through a flow meter. A tight specific range is desired to produce the highest accuracy for a given uncertainty, thus I sought to pump water as slow as possible. Finding a flow meter to detect very slow circulation, stay within our necessary uncertainty, and communicate data to my setup was nearly impossible. Instead, compromises had to be identified through several iterations of sensors and configurations. This process was true of each component including pumps, reservoirs, thermistors, tubing, and fittings.
A major issue causing inaccuracy for the inherited version was air being trapped in the flow path. This skews results for obvious reasons, and is difficult to avoid with a traditional setup. I implemented a specific configuration using the behavior of air bubbles to rise in water, which included a filter and an additional reservoir to catch bubbles. This worked very well to eliminate air from the water lines.
Countless small solutions were implemented to improve the system including: using flexible tubing to dampen pump vibrations, inserting a bypass to better control flow rate, adding sealant to ensure leaks from delicate fittings, etc.
Software
To reliably communicate live data, an inherited custom PCB was used along with a basic Python script, which was heavily modified. I opted to use a USB serial connection due to its reliability and simplicity, which allowed an Arduino mini to communicate raw data. This is taken by the Python script and transformed into graphs that update in real time then record to a spreadsheet. Additionally, up to 6 thermocouples were used concurrently to monitor specific temperature points on the combustion setup through a separate interface.
To communicate findings to the company, I organized results onto a timeseries to convey critical moments and values from multiple perspectives.
Summary
Overall, the system worked to a much higher degree of accuracy than inherited. There are nuances in operation that include optimizing flow rate with burn temperature, and defining specific software configurations. The project took longer than I had hoped, mostly due to long lead times on components. During my time at Mesodyne, the calorimeter data was well received and used frequently without issue.
(due to the proprietary nature of this project, select images and information have been omitted which may lead to a less clear understanding of the system.)