The RFzero has an on-board ULN2803A device which is a 50 V, 500 mA Darlington transistor array. The device consists of eight NPN Darlington pairs, that feature high-voltage outputs with common-cathode clamp diodes for switching inductive loads. The collector-current rating of each Darlington pair is 500 mA. The Darlington pairs may be connected in parallel for higher current capability. The ULN2803A device has a 2,7 kΩ series base resistor for each Darlington pair for operation directly with the MCU.

The RFzero can make use of the ULN2803A for a variety of purposes such as controlling the relays in a low pass filter bank, antenna relays, dish actuators or transmitter and PA keying.


As can be seen from the logic diagram the ULN2083A has built-in output clamp diodes to suppress the kick-back voltage from
inductive loads. The ULN2083A is very robust but is still mounted in a socket for easy replacement – just in case.

Logic diagram for the ULN2803A. Picture courtesy Texas Instruments.

Functional diagram for one channel of the ULN2803A. Picture courtesy Texas Instruments.

When the COM pin is tied to the coil supply voltage the ULN2803A is able to drive inductive loads and suppress the kick-back voltage through the internal free wheeling diodes.

Diagram for connecting inductive loads, e.g. relays. Picture courtesy Texas Instruments and own work.

When driving resistive loads, the COM pin on the ULN2803A can be left unconnected or connected to the load voltage supply. If multiple supplies are used, connect the COM pin to the highest voltage supply.

For more details and connection examples please see the datasheet for the ULN2803A.


To control each of the channels in the ULN2803A by the RFzero is a matter of setting up the connected D0 to D7 pins high or low as required. Please remember that the ULN2803A inverts the input signal. So if you want to pull a relay to ground the input signal to the ULN208A a has to be high.

If you have an eight bits variable where each bit tells if the ULA2803A input channel is high (1) or low (0), then you must unwrap each bit and send it to the ULN2803A bit for bit. It doesn’t matter if the variable is in decimal or hex value. A digital bit is a digital bit.