I recently created an Arduino Adjustable Timer Controller with Relay project
to control my millivolt (thermopile) gas porch heater. The pictures used in that project, as well as the pictures used in this project, are the same, because there is only a minimal change between the two - both show the inclusion of a thermocouple amplifier shield placed onto the Arduino UNO board.
As noted at the end of that instructable, I decided I needed to change to a Thermocouple-based controller (I chose that instead of a different temperature sensor because I already had those components).
This instructable will present the thermocouple-based controller.
With respect to my millivolt gas heater, it has a simple on-off switch that allows the millivolts generated by the in-pilot thermopile to activate a gas solenoid valve. Until till now, even though I have a lot of experience with thermocouples and solenoid valves, I didn't realize that a thermopile could directly drive a low-voltage solenoid! I spent some time looking for batteries on my heater before finding the information in the user's guide that came with the heater.
The heater has several built-in safety features, which I wanted to retain. Therefore, I did not want to do anything that might change or modify those elements in any way, or prevent their safety features from fully functioning.
With this in mind, I chose to use a relay, placing the NO (normally-open) contacts in serial with the existing on-off switch that came as part of the heater. With this addition, I have an AND circuit - both the existing manual switch must be on and this project's relay energized before the solenoid gas valve will be energized. I could also have wired this project's relay in an OR configuration, which would have been in parallel with the existing on-off switch, in which case the heater would have been on whenever the manual switch OR the project's relay's contacts were closed.
Here is a link to my existing web page which gives more detail on the project, along with a Fritzing layout, and Arduino source code listing, which you can copy and paste. Link to Arduino Thermocouple-based Temperature Controller with Relay