Thermal systems are difficult to model because of the modes of heat transfer: conduction, convection, and radiation. Thermal conductivity can vary depending on the temperature and direction (such as with some crystals). Convection needs to consider fluid dynamics, which can be free or forced, laminar or turbulent. Thermal radiation is electromagnetic radiation, and as such, can be reflected or refracted. Through finite element methods it is possible to model all the modes of heat transfer, but this tends to be computational expensive.
Here I will show how to empirically measure a simple thermal system and fit a simple thermal model to estimate the thermal capacity and rate of heat loss of the system.
The thermal system was built as shown.
A 35.37g borosilicate beaker was filled with 40.00g of mineral oil and a small magnetic bar was added. A tiny piece of nichrome wire was submerged into the liquid to heat it with an SMU connected to the cable through a 4-wire connection. Two thermocouples were used, one to measure the temperature of the liquid, and the other to measure the ambient temperature. The beaker was kept thermally insulated from the magnetic stirrer so that the hot plate would not act as a heatsink and make the modelling of the system more complex.
The system behavior was probed by making a continuous temperature measurement of the two thermocouples while injecting ~22 W (4 V constant voltage) of heat for 120 s into the liquid through the nichrome wire. 90 min were measured since the heat injection, and the magnetic stirrer was left running during the whole process to keep the temperature uniform.
Temperature measurements were made using FlexLogger and saved as CSV. SMU measurements were made using the SMU front panel and saved on a pen drive as CSV.
The temperature time series looked like this:
I noticed that the initial temperature of the liquid did not match the environment temperature. Some factor that may have caused this mismatch are the slow liquid temperature adaption to the ambient temperature, thermocouple differences and the heat injected through the rotating magnetic bar.
Thermal Model #1
To model the temperature behavior I initially tried the following ordinary differential equation (ODE):
T is the temperature of the beaker in °C.
p is the rate of heat injected into the filled-beaker with the nichrome wire in W.
G is the thermal conductance between the filled-beaker and the environment in W/°C.
Te is the environment temperature in °C.
C is the thermal capacity of the filled-beaker in J/°C.
I optimized the C and G values to find the best fit (minimum sum of squared residuals) to the measured data. For a C of 102.7 J/°C, and a G of 0.072 W/°C I got a root mean square residual (RMSR) of 0.734 °C.
The fit was not bad, but not great either, so I tried to improve the results.
Thermal Model #2
To eliminate the effect of the temperature offset I added a To parameter.
This time for a C = 96.1 J/°C, G = 0.088 W/°C and To = 1.8 °C I got a RMSR = 0.235 °C. As it can be seen from the simulation, the model fits much better the measured temperatures.
To check how close my estimation of the thermal capacity was, I compared it to what it should be for 35.37g of borosilicate and 40.00g of mineral oil. I found on the literature that the specific thermal capacity of borosilicate and mineral oil are 0.83 J/(g °C) and 1.67 J/(g °C) respectively. So the thermal capacity of the beaker filled with oil (without considering the magnetic bar and wire) should be: 35.37 * 0.83 + 40 * 1.67 = 96.2 J/°C. Evidently this surprisingly close match between the estimated and and the "true" value was far better than what I expected. This was probably the result of many errors cancelling each other out.
In this experiment I showed how I was able to empirically estimate the thermal properties of a system. Of all the tasks involved in doing the experiment, setting up FlexLogger, making the measurements and exporting the data as CSV, took the least amount of time, while writing Python code to process the CSV files, optimize the models and generate the outputs took me most of the time. Here I showed that even though thermal systems can get extremely complex to simulate, it is possible to achieve accurate results through the usage of simple thermal models that take into consideration only the dominating thermal effects.