Note: This project is open-source, in a Creative Commons Attribution Share Alike (CC BY-SA) license. Other companies or individuals are welcome to use it and share it, with attribution to Faludi Design. Other parties are allowed to make money from it, and are allowed to modify it, as long as products using it are also open-source with the same CC BY-SA license.
Why Mean Radiant Temperature?
Your thermal comfort is roughly half from air convection and half from the Mean Radiant Temperature (the average temperature radiating from all surfaces in a room). Existing radiant heating and cooling systems don’t measure the mean radiant temperature—they just measure air temperature, or the temperature of one or two surfaces in the room.
Reading both air temperature and the mean radiant temperature gives the more accurate "operative temperature", so controls can keep people more comfortable and use less energy at the same time.
The Oculus radiant thermostat reads the roomís mean radiant temperature & air temperature, then sends signals to turn heating or cooling systems on or off, depending on the desired temperature.
Temperatures are read on a website, connected via wifi. Temperature setpoints can be set on the website, or by physically rotating the device.
This video shows the prototype device in action. (Note, the heating and cooling systems for a real building would obviously be different from those shown here. This is just for completely gratuitous effect.)
How It Works
Incoming radiation of different temperatures is absorbed by the dome, which averages it all to a mean radiant temperature. The dome re-emits this temperature radiation to the thermistor inside. To measure air temperature, slits allow air to flow through the rear chamber, through a cylinder mirrored to reflect radiant heat.
Below is the exploded diagram of all parts. You can click on it to download SolidWorks CAD files to 3D print your own unit, or alter the design.
Arduino Code & Circuit
The circuit reads two temperature sensors and averages them to find operative temperature. It switches on and off a heater and cooler based on the current temperature setpoint. The temperature setpoint can be adjusted by turning the hardware knob (the face of the device, which holds an accelerometer); it can also be set via the web interface. The Arduino uses the CC3000 board to send HTTP Get requests to a PHP server over wifi; each request sends the current radiant temperature, air temperature, operative temperature, heating setpoint, cooling setpoint, and statuses for the heater and cooler being on or off. The PHP server then sends the current heating temperature setpoint back to the Arduino. Scheduled temperature setpoints are stored in a .tsv file which can be edited using the D3 user interface page (see below).
Arduino code downloadable here.
Two versions of the electronics exist:
- One sends 5V / 0V signals to turn on and off the heater and cooler. The heater is a small flame-thrower, requiring one signal to heat the igniter and a second signal to open the propane valve. This is not at all what a real system would use, it's plainly gratuitous for a fun demo.
- The second version of the electronics is what would actually be used: two transistors to switch the heater and cooler on by simply connecting the circuit or not for each one. Diagrams of both circuits and PCBs are shown below.
Click on either image to download the Eagle files for both versions.
Known issues: the current circuit uses one precision thermistor and one thermosensor; both sensors should be precision thermistors. The radiant thermistor requires some manual calibration to compensate for heat from the electronics. An optical encoder would be better than an accelerometer for tilt sensing; even better would be a touch sensor and display that reset when the temperature setpoint changes from the website, so the hardware display is never wrong.
Users schedule temperature setpoints using the web interface, via computer or mobile device. They can also manually override by turning the thermostatís dome to a desired temperature. The system will automatically revert to schedule when the next pre-set setpoint occurs.
(See video above for demonstration.)
Building automation systems can use HTTP Get requests to log data and graph the radiant and air temperatures, as well as scheduling temperature setpoints in lieu of the interface provided.
Click on the image below to download the PHP and D3 files to run the server and web UI. (Note the current system's time-span is only one minute, for easy demonstration. The standard time duration should be a day, or a week. Thanks to Dan Armendariz for extensive coding help.)