In my previous post, I have introduced the idea of turning a household refrigerator into a diagnostic test-bed. In this post, we will discuss the design and implementation of the test-bed. The main functionality of any diagnostic test-bed is to collect sensor data, to allow the injection of faults and to allow multiple configurations.
The most important characteristics of the test-bed is the support of reproducible diagnostic experiments. To create a diagnostic benchmark we need multiple repetitions of the same diagnostic experiment (fault-injection) so we can statistically validate the correctness of our diagnostic algorithms (it does not matter if they are data-driven, model-driven, rule-driven, or probabilistic).
Notice that in the case of the refrigerators, we do not have full control over the environment. Although, the room in which the refrigerators are placed is climate controlled, there are small variations due to the outside weather, room use and maintenance or malfunctions of the main building's HVAC system. To compensate for these variations in the environment we will apply the rule: "measure what you cannot control".
Figure 1 shows the architecture of the test-bed. The rectangles show the various components in the test-bed and the arrows signify the type of information that is being transferred or the physical quantity that is being measured or changed.
Multiple temperature sensors measure the temperature inside the refrigerator, inside the freezer, and in the room. We disconnect the thermostat from the compressor circuit and we connect it to a digital input of the Arduino MEGA 2560 board. This way we can think of the thermostat as a one-bit temperature sensor. The power is measured by a voltage and current sensor.
On the actuation side, we have a relay board that switches the fridge on and off. We also install a linear actuator that can open or close the door to simulate human activity.
The test-bed refrigerator is controlled by an Arduino MEGA 2560 board. The Arduino board is also responsible for interfacing the sensors and sending the sensed values to the Linux base. The Arduino board waits for commands from the Linux base station and actuates the linear actuator (for opening or closing the door) or the power relay (for turning the refrigerator on or off).
In addition to the relay controlling the compressor we use relays for bypassing the PTC.