TL;DR: heating systems signal with current, not with voltage, AFAICT.
Story up top, hard details at the bottom. So, my fuel oil furnace started acting weird, the other day. Or rather, it had been acting weird for a while, but just to the point where you’re like, “is it maybe supposed to do that?” It would kinda, turn on for a few seconds, then turn off, then on, then off, then back on and stay on. But then I woke up one morning and it was just kinda repeatedly failing to start. So I called the repair people and turned it off, to prevent possible further damage. I’d been keeping it at its lowest possible setting, 45*, and this being winter, I was a little nervous the temperature might drop too low and freeze pipes, so I kept my eye on the temperature and considered fetching some firewood for my fireplace. It didn’t drop below 40, though, so I let it be.
The repair guys showed up the next morning; I turn it on; it starts fine, of course. *eyeroll*. They’re charging by the 15-minutes, so they replace the nozzle and oil filter and leave. Of course, it starts doing it again that evening. I call the repair people – the guy’s out sick, but can come by Monday. I’m sorta hesitant anyway; it cost $150 to do what had already been done, and the guy had said the only other thing really to do was replace this other, larger set of parts, and I expect that would have been expensive. For some reason I started wondering about the thermostat. Did some research, pulled out the voltmeter. Got weird readings; it’s supposed to be 24 VAC, but I’d get anywhere between 0 and 24, and not in a pattern that made sense to me. I tried an oscilloscope on it – yeah, it’s AC, alright, but still weird voltages. The voltage would drop when the heater turned on, from 24 down to, say, 18. The diagrams said the red wire was 24 VAC, but that didn’t make sense with what I was seeing. After some time, and some studying of the manual for my particular old thermostat, something clicked, and the pieces feel into place. The thermostat wasn’t applying voltage, it was permitting current – and all the appliance-specific wires were always hot; the red wire was heater ground. (I think.) See bottom for more details. I then wired an INA226 voltage/current sensor between the thermostat and the heater wire, connected it to an ESP8266 (modifying the control code to average many absolute value current readings, to account for AC), and connected that to a computer to write the serial logs to a file. Sure enough, I’d see the current jump to ~100, uh, units, and the heater would turn off. Current stops, heater goes off. And wouldn’t you know it; I had it set to 45*, and when the temperature got to ~47*, the current would erratically turn on and off in several-second segments until it stabilized. I increased the temperature by 10* and had no such problems the rest of the weekend. My thermostat had a bug in it.
(FYI, I have a White-Rodgers 1F86-244 thermostat, apparently wired in the heat/cool, 5-wire, two-transformer configuration. Figure 5. I can’t guarantee yours works the same, but consider the following explanation if you’re getting weird readings from your thermostat wiring.)
Rather than voltages on wires jumping up when they’re turned on, as I’d envisioned, the voltages on the wires are constant-ish. It’s the flow of current that sends the signal. There are one or two “ground” wires, and a couple sensor-specific wires at 24 VAC. (If two grounds, its probably one for the heating system and one for cooling system.) Note – I could have the hot/ground thing backwards; sorta hard to tell with VAC, and without a known ground to compare. Nevertheless, pretend the sensor wires are a constant-ish 24VAC and the other two are ground, a constant-ish 0V. The thermostat is a switch. To turn on the heater, it connects the white heater wire to the red ground wire. Current then flows between the two wires, and the heater turns on. However, the thermostat introduces some resistance, which means the voltage difference between the two wires doesn’t drop all the way to 0 – but it does drop to somewhere between 0 and 24, explaining the readings I was getting. That resistance might also be important to prevent large current from flowing, which explains why the manual warned against testing the system by touching wires together, as I’d been tempted to do.