Chinese webshops sell a 5Volt 4 channel relay board that is quite popular amongst hobbyist. Sometimes I get the question if it can be used with a 3V3 microprocessor. This ofcourse is very basic Ohms law, so just skip this article if you already know, but for those who still have questions: read on.
Well in short: any relay can be made to work with any microprocessor, but lets look at how this can be done in an efficient way.
Normally, if you have a bare 5Volt relay, it would only require a transistor or a FET to drive the relay with any voltage sufficient to open the transistor. The relay board in question though already has some electronics around it, so lets have a look at the circuit:
It is quite clear that this is not the standard one transistor relay board: the Transistor driving the relay in itself is driven by an optocoupler, that also inverts the signal: It is a LOW on the INx input that will bring the optocoupler to open, thus feeding the base of the transistor, that will subsequently open and activate the relay. The circuit also shows that the optocoupler can be fed from the same voltage source as the relay, or from a different voltage source.
First question we have to ask ourselves: is a 3v3 circuit enough to drive the board?
Well, suppose we feed the board entirely with 5Volt. If we then would connect a 3V3 processor pin such as from a raspberry or ESP8266 or a modern Arduino, a LOW would indeed activate the relay, as described above, but what happens if we do a HIGH?
Well, with a HIGH there would be a voltage of (5-3.3=) 1.7 volt over the series resistor, the optocoupler and the LED. Given the fact that the forward voltage of the optocoupler is about 1.5 Volt and the forward voltage over the red LED is on average 2.2 Volt, that basically absorbs the 1.7 Volt making it safe to say there will be no current flowing through the optocoupler when the IO pin is made HIGH (3V3).
Factually, even if the ‘HIGH’ would only be 2.5 Volt, chances are slim that there would be any current flowing through the optocoupler.
Now ofcourse there are people who shrug at the idea of having any 5Volt source connected to their 3V3 pins, so what happens if we take away the Voltage jumper, feed the relay with 5Volt and the optocoupler with 3V3.
Well, suppose we again make the IO pin LOW, then there will be 3V3 over the optocoupler, the LED and the resistor.
The LED and the optocoupler will have a voltage drop of 1.5+2.2=3.7 Volts. Ergo, there will not be any current flowing through the optocoupler and the relay will not be activated.
Therefore: yes, the relay board can be used with a 3V3 processor, but you will have to feed the entire board with 5Volt. But beware, that means ONLY the entire relayboard. You do not feed your 3v3 processor with 5 volt
But, what if I do not want the signal to be inverted, if I want a LOW to deactivate the relay and a HIGH to activate it?
Well, that is fairly easy: do that with an inverter. One can either use an inverter IC such as a 7404, 7414 or a 4069, but ofcourse then you’d have to wonder whether 3V3 would be enough input for those IC’s (it is).
Another possibility is just a transistor with a base resistor 470-1000 Ohm (1x for every channel).
Mind you though that with this circuit, your I/O pin may see a LOW on start up, something not every ESP8266 pin may be happy with (e.g. GPIO0, GPIO1, GPIO2) and one (GPIO15) that will be very happy with it.