Controling segment on VFD display with transistor not working? [Solved]


I'm attempting to control a salvaged VFD display from a CD player. I power the filament from the arduino (3.3V). I power the grids and segments from an external 12V power supply.

I can power up a grid and a segment with 12V and it works. That is, I have to two 12V connections active (grid + segment). Now, I would like to turn the connection powering the segment on & off from the arduino using a transistor. Looking at the specs of the BC547B NPN transistor (See below), my understanding is, that it should work.

I insert the transistor in the connection to the segment (12V to the collector, emitter to the display). I thought I could now turn on the segment by connection 3.3V or 5V from the arduino to the base of the transistor, and the segment would light up. This is not the case however. What could be wrong? I have been experimenting with LEDs and transistors with the 5V from the arduino with success.

Any guidance, hints or suggestions much appreciated.

Some info on the VFD: Filament draws 111mA (3.3V). A grid draws 3mA (12V) A segment draws 0.2mA (12V)

Transistor info (BC547B): Vcb max(V): 50 Vce max(V): 45 Veb max(V): 5 Ic max(A): 0.2 hFE (min): 200

Thanks, Tobias

A high-side switch (+12 -> transistor -> load -> ground) has to be a PNP transistor. You have to get the Base of the transistor up near the supply voltage to turn it off. Since the Arduino doesn't have 12V outputs you can't control it directly with the Arduino. Use a 12V pull-up on the Base of the PNP and use a small NPN transistor as a pull-down. Send a HIGH (5V) signal to the Base of the NPN to turn it ON. This drags the base of the PNP low and turns it on. A LOW (0V) signal turns off the NPN and lets the 12V pull-up turn the PNP off.

Hello John.

Thank you for your reply (Which I'm slowly digesting).

How is my setup fundamentally diferent to a (common it seems to me) scenario, where one would control a 12V motor with a single NPN like this example:

Thank you, Tobias


This explains why high-side switching has to be done with a PNP transistor and why you can't just hook it to an Arduino pin when the voltage being switched is higher than 5V.

This article describes the work-around of using an NPN transistor to drive the PNP transistor:

Thank you for the links. I'm now much wiser, and will do as you proposed in your first reply.

Your help is much appreciated.