I'm looking to detect HVAC thermostat calls using ESP32 GPIO inputs. I have a total of six inputs (two compressor speeds, blower, reversing valve, and two aux heat levels). Nominally 24 VAC, but my transformer shows more like 28 VAC RMS.
I'm using Vishay SFH620a optos. I'm using the ESP32 internal pull-down resistors for simplicity, assuming they're about 30 kΩ. I'm using the pull-down option mainly because the pull-up option blocks the internal "delayed off" command for smoothing.
The SFH620 has a bipolar emitter, so no need to use a diode on the input. I have it working with a 1 kΩ resistor on the input side. 2 kΩ is on the ragged edge, as about half of my optos don't trigger at this level. Somehow, my setup requires about 26 mA forward current to activate the opto.
Problem is, 1 kΩ means a very warm resistor, dissipating about 640 mW, too much for my 1/4 watt resistor kit. I see a few options:
- Order some 1 W resistors. Not ideal as I'd really just rather decrease the forward current requirement somehow.
- Find another "AC input" phototransistor optocoupler with higher CTR.
- Do some series/parallel arrangement of a different resistor value to get greater power dissipation with my existing 1/4 W kit. Disadvantage: clutters up my breadboard.
- Add some components to the output side of the opto to decrease the forward current requirement.
Thanks for the EE advice in advance for this electronics amateur.