Temperature does not usually spread uniformly, so to find how it spreads, it is important to measure it at different locations. I was curious about the internal temperature of the computer case at different locations under different computational load, so I decided to test FlexLogger to measure the case internal temperature at 3 different locations.
To make the measurements I used 4 thermocouples. The first one was installed close to the case frontal fans. The second one was installed close to the CPU fan exhaust, where most of the CPU-generated heat flows. The third one was installed above the GPU, where I expected part the GPU heat, that could not be removed through the GPU fan, to flow through convection upwards. The last one was installed outside of the case to measure the ambient temperature.
As the thermocouple cables are relatively stiff, they were fixed into their measuring position through holes and tape. I got the wires inside the computer case through its vent holes so that I could make the measurements with the closed case.
I previously had experience with LabVIEW and NI-DAQmx through Python, so I was curious to test FlexLogger to see what it had to offer compared to the other data acquisition workflows which I was more familiar with.
FlexLogger initial screen has just two options, to open an exiting project or to create a new one. I created a new project which I named "PC". FlexLogger then created the project and presented me 4 tabs to set different aspects of the project: the "Channel specification", the "Logging Specification", the "Test Specification" and the "Screen".
The "Channel Specification" automatically detected the cDAQ with its cDAQ-9171 module and allowed me to configure the channels for data-logging. To configure the 4 thermocouple channels I had to press the cogwheel next to the channel names.
Channel configuration allowed me to set the name of the channel to something more meaningful than its default name, set the temperature unit, its range, the thermocouple type, the Cold Junction Compensation (CJC) source, and the linear transformation of the measured values. FlexLogger also has an option to set alarms so that it detects and warns if measured values get into an arbitrarily temperature range. For this project I did not set any alarm as I was only interested in logging the computer case temperature.
After setting all 4 channels the tab provided me the live values and also allowed me to set the sampling frequency.
In the "Logging Specification" tab I set the path for the TDMS log files, a short description of what I would log, and the "Operator" property. Besides the default properties, it is also possible to add new ones and even set them so that FlexLogger prompts them before every data-logging session.
It is also possible to set the data-logging start and stop conditions to something other than the pressing of the RUN/STOP button. For instance it is possible to set the start or stop triggering condition to a channel condition (e.g., when temperature rises or falls certain threshold) or to a certain time and date.
Other useful options of the tab are the back up file, which keeps a back up of the recordings on a different path (e.g.: a different drive), the segmentation option to divide the recording into multiple files (e.g., one file for every day of recording), and an option to also log the data as a CSV file.
The "Test Specification" provides event operations of the type "if input channel A condition X is true, then generate a Y output on channel B". I skipped that tab and moved to the "Screen" tab.
The "Screen" tab is similar to the front panel LabVIEW window, with the exception that there is no block diagram window, and indicators and controls are connected "directly" to the channels. In the this tab I created a 60 min duration graph to plot the temperature of all thermocouples, but also added, "tank" indicators for every thermocouple channel.
With all the settings properly set I pressed START to begin recording on my notebook as I turned my desktop computer on. I left the desktop computer idling for 30 min, followed by 30 min of 4K video rendering and 30 min of video encoding.
Even though it is possible to export the data as CSV file to then process it with Python or MATLAB, I decided to test FlexLogger TDMS Viewer. The TDMS Viewer is application included in the FlexLogger package that can be used to gain engineering insight from the captured data.
The tool allowed me to explore the capture data values and metadata, but also plot the 4 time series in a Temperature-Time graph.
Since the measured absolute temperatures depend on the External (ambient) temperature, it makes more sense to use relative temperatures. The application allowed me to easily create 3 new time series by subtracting the External temperature from the Case, CPU and GPU temperatures.
The application also allowed me to apply a low pass filter to reduce the high frequency noise.
A few interesting observations I was able to make from the plots are:
- The highest temperature occurred at the CPU thermocouple location during the video encoding phase, and was ~11 above ambient temperature.
- The temperature at the CPU exhaust was higher than that of the other locations during in all 3 operation modes.
- It takes ~1 min to reach idling temperature from the moment the computer is turned on.
- At 100% CPU load during video encoding, the air temperature at the Case location increased >4ºC over ambient temperature. This would suggest that by increasing the air flow into the computer case, all the computer components temperature could be decreased a few degrees.
- During the idling phase the computer really did not stay at a constant load, and the execution of background processes caused swings of temperature during the first ~12 min.
- During 4K video rendering the CPU had a load of ~20% and the GPU of ~45%, so it is hard conclude anything, but it seems that the GPU did not increase the internal air temperature much. This could be explained by the lower power of the GPU and its forced convection out of the computer case (in contrast to the CPU).
I found the FlexLogger data-logging application very intuitive. Even without any previous experience with it, I still was able to figure out how to use it without having to resort to any help.
The application as the name suggests its targeted at data-logging, so it makes it really trivial to configure the hardware for data-logging, but it also adds visualization of raw data, and simple "if X condition then do Y" operations. Building virtual panels feels very similar to how its done in LabVIEW, with the exception that FlexLogger does not support block diagrams. This difference is exactly what makes NI advertise the application as not requiring programming, and makes it much simpler than LabVIEW to create a panel that does not require processing of the captured data.