Octofet
A power switch transistor array to toggle various things on and off.One module to switch them all
Do you need to control many similar devices with your Arduino, Raspberry Pi, or another controller board? Fine, that's just what your general input/output pins are made for.
Unfortunately, they can handle only a few milliamps which are sufficient to drive only low-power components such as 3mm LED. Anything more power hungry like a LED strip, pump, solenoid valve, laser, or DC motor requires some kind of a controllable power source.
You could use a mechanical relay or a solid-state transistor switch circuit. This is exactly what Octofet is: a power switch based on P-Channel MOSFET transistors.
8 channels over 3 signal wires
We’ve put a shift register IC between the Octofet’s signal input and the transistor switches. That means you don’t have to spend a single GPIO pin of your controller per switching channel.
The whole module is controlled through the SPI interface, which uses only 3 pins. In case you want to address the second, third, or fourth Octofet, only one extra GPIO pin is required.
Octofet is a lifesaver for projects where the number of devices you need to control exceeds the number of controller pins available.
Daisy chain to multiply the channels
As told above, an additional Octofet requires an extra GPIO pin of the controller. If this is already out of reach, you may link several Octofets in a chain by wiring the logical output pin headers of one module to the inputs of another. The update time will slightly increase, but you’ll be able to switch 16, 24, 32, 40, 48, and even more channels using only three wires of your controller board!
Switch up to 30 volts with a 3-to-5 volt signal
Octofet is compatible with the logic level of 3 to 5 volts which means it is electronically compatible with most microcontrollers and single-board computers on the market. You don’t even need to supply the logic voltage from your board since Octofet will take care of it by sourcing the required logic voltage from its common power input.
The power input may be anything in the range from 5 to 30 volts DC and is passed with a minimal voltage drop (acts as a .1 Ohm resistor) to the output channels. The board can deliver a continuous current of 2 amps per each channel simultaneously.
Clear indication
Octofet provides nine status LEDs for easier debugging and device monitoring. Each channel is accompanied by a little LED which lights up whenever the channel is switched on, and a dedicated LED shows whether the board receives power at all.
OFF means OFF
In contrast to many simple power switching modules, when a controlled device (load) is told to switch OFF by Octofet, it is switched OFF, i.e., pulled to the ground (GND).
Most transistor switches are based on so-called N-channel FET transistors because they require no extra circuity to be driven with a microcontroller. On the other hand, the N-channel transistors can only break the connection between the load and ground/chassis, effectively leaving the load wired to the positive voltage bus. This is OK for dumb and isolated devices like LEDs but causes problems if you want to control digital devices or interconnected devices. Furthermore, it’s physically impossible to disconnect the ground in some cases. For example, all devices in cars are hard-wired to the chassis (which is the ground), and the only way to control them is to switch the positive wire.
Octofet uses extra components to drive its P-channel FETs without any hassle, so you don’t have to worry about it. Plug the power in, wire up the DC devices to switch, and you’re all set up!
Works fine with inductive loads
When an inductive load like a DC motor or electric magnet gets turned off, it generates so-called reverse EMF, damaging the controlling circuit. Octofet uses transistors with flyback diodes, which can handle reverse current pulses up to 16 amps. That means you can safely drive inductive loads with Octofet.
Octofet is compatible with (but not limited to) Arduino Uno, Nano, Mega 2560, Pro Mini, Raspberry Pi, and their analogs. It only requires the SPI bus and works with any voltage between 3.3 and 5 volts. In fact, it’s compatible with the vast majority of DIY-controllers on the market.
We prepared a ready-to-use library for Arduino with quickstart examples.
Here’s a sneak peak:
// Two Octofet libraries have to be included first
#include <Octofet.h>
#include <SPI.h>
// any GPIO pin can be used as pinCS
constexpr auto pinCS = 10;
// Create an object of Octofet type to use hardware SPI
Octofet octofet(pinCS);
void setup() {
// Start communication with the board
octofet.begin();
}
void loop() {
// Set each power switch to "on" state
// one by one with 1 second interval
for (int i = 0; i < 8; i++) {
octofet.digitalWrite(i, HIGH);
delay(1000);
}
// Similarly, set switches to "off" state
for (int i = 0; i < 8; i++) {
octofet.digitalWrite(i, LOW);
delay(1000);
}
}
Octofet works fine with Raspberry Pi. We have a Python library for it, which can be found along with documentation on GitHub.
Here’s how it looks:
# Switches Octofet channels to "on" state
# one by one with 1 second interval.
import time
# Import the class required
# from the library octofet
from octofet import Octofet
# Create an Octofet object connected
# to the CE0 pin of the Raspberry Pi board.
octo = Octofet(0)
# Switch state variable.
state = True
while True:
# For each switch.
for switch in range(8):
# Set the current state for the switch.
octo.digital_write(switch, state)
# Wait 1 second.
time.sleep(1)
# Toogle state.
state = not state
XOD visual programming language supports Octofet as well. We have published a library which provides a few nodes to interact with Octofet.
Here’s how a power switch program looks like:
RoHS compliant
Octofet does not contain lead, so it is safe for children. It also won’t poison the rivers one day it would be wasted.Specifications
- Electrical Characteristics
- Rated Voltage: 3.3–5 V
- Supply Current: ≤50 mA
- Max Switch Voltage: 30 V
- Max Current per Channel: 2 A
- Max Current Total: 16 A
- Communication
- Interface: SPI
- Update Frequency (8-ch write): 1 MHz
- Design
- Load Channels: 8
- Power MOSFET: IRLML9301
- Shift Register: STPIC6C595
- Voltage Regulator: L78L05AB
- Connection
- 0.1” / 2.54 mm pin headers
- Screw terminals
- Mechanical Characteristics
- Dimensions: 3×1.4×0.6” / 76×35×16 mm
- Weight: 31 g