DIY Tungsten‑Tube Lamp with Arduino Control

Ever walked into a room and felt the light was just a little too harsh or too flat? In 2024, with LED everywhere, the warm glow of a real tungsten tube feels like a secret club. Building your own gives you that vintage feel and the satisfaction of saying “I made that light myself.” Let’s dive in and get a tungsten‑tube lamp humming under Arduino’s watchful eye.

What You’ll Need

  • Tungsten tube (a 150 W halogen or a vintage 100 W tube works well)
  • Arduino Uno (or any compatible board)
  • Logic‑level MOSFET (IRLZ44N is a solid choice)
  • Power supply – 120 V AC mains (be sure you’re comfortable working with mains)
  • Heat‑sink for the MOSFET (the tube will draw a lot of current)
  • Breadboard and jumper wires
  • Resistors – 10 kΩ pull‑down, 220 Ω for the LED indicator (optional)
  • Push‑button or potentiometer (to vary brightness)
  • Enclosure – a metal or heat‑resistant box to hold the electronics
  • Screwdriver, wire stripper, soldering iron

Safety gear: insulated gloves, goggles, and a small fire‑extinguisher nearby. I learned the hard way that a stray spark can turn a hobby project into a kitchen fireworks show.

Understanding the Basics

Tungsten Tubes 101

A tungsten tube is basically a glass envelope filled with inert gas and a thin tungsten filament. When you run current through the filament, it heats up and emits a continuous spectrum of light that looks natural to the eye. Unlike LEDs, the filament’s resistance changes with temperature, so you need a way to control the current safely.

Why Arduino?

Arduino gives you a cheap, programmable way to switch the tube on and off, dim it, or even make it pulse to the beat of music. The board itself can’t handle the high voltage or current of a tungsten tube, so we use a MOSFET as a solid‑state switch. The MOSFET takes the low‑voltage signal from the Arduino and lets the high‑current AC flow to the tube.

Step‑by‑Step Build

1. Prepare the Power Side

  1. Cut the mains cord and strip the ends. You’ll have a live (brown), neutral (blue), and earth (green/yellow).
  2. Connect the live wire to one side of the MOSFET’s drain through a socket that will hold the tube’s base. The other side of the socket goes to the tube’s other contact. This creates a simple series circuit: live → MOSFET → tube → neutral.
  3. Mount the MOSFET on a heat‑sink. A 150 W tube can push several amps; the MOSFET will get hot fast. Use thermal paste and a decent sized sink.

2. Wire the Arduino Side

  1. Tie the MOSFET’s source to the neutral line of the mains. This gives the MOSFET a reference point for switching.
  2. Connect a 10 kΩ resistor between the MOSFET’s gate and source. This pull‑down resistor keeps the gate at 0 V when the Arduino is not driving it, preventing accidental turn‑on.
  3. Run a jumper from an Arduino digital pin (say D9) to the MOSFET gate. Add a 220 Ω resistor in series if you want an LED indicator that lights when the lamp is on.

3. Add a Control Interface

  • Push‑button method: Wire a momentary push‑button between 5 V (Arduino’s VCC) and the gate pin. When pressed, the gate sees 5 V, turning the MOSFET on.
  • Potentiometer dimmer: Connect a 10 kΩ potentiometer as a voltage divider between 5 V and ground, feeding the middle wiper to the gate. Use Arduino’s analogRead() to read the voltage and analogWrite() (PWM) to modulate the gate via a MOSFET driver circuit. For simplicity, the push‑button version is enough to get the lamp glowing.

4. Write the Arduino Sketch

const int lampPin = 9;      // MOSFET gate
const int buttonPin = 2;   // optional push button
bool lampOn = false;

void setup() {
  pinMode(lampPin, OUTPUT);
  pinMode(buttonPin, INPUT_PULLUP);
}

void loop() {
  if (digitalRead(buttonPin) == LOW) {   // button pressed
    lampOn = !lampOn;                     // toggle state
    delay(200);                          // debounce
  }
  digitalWrite(lampPin, lampOn ? HIGH : LOW);
}

Upload the code, and you have a simple on/off switch. If you want dimming, replace digitalWrite with analogWrite and map the potentiometer reading to a PWM value (0‑255).

5. Test Safely

  1. Double‑check all connections with a multimeter. Make sure the MOSFET gate is not floating.
  2. Plug the mains into a GFCI outlet (ground‑fault circuit interrupter). Turn the power on and press the button. The tube should light up with a warm amber glow.
  3. Feel the heat after a few minutes. The tube and the MOSFET will be hot; ensure the enclosure has ventilation.

6. Enclose and Finish

Mount the Arduino, MOSFET, and wiring inside the metal box. Drill a hole for the tube’s socket and another for the control button or potentiometer. Seal any gaps with heat‑resistant silicone to keep dust out. I like to label the wires with colored tape – red for live, blue for neutral – so future me doesn’t have to guess.

Tips and Troubleshooting

  • Flickering? Check the MOSFET’s gate voltage. A weak gate drive can cause the MOSFET to hover in its linear region, leading to flicker and extra heat. Adding a gate driver (a small transistor) can give a cleaner 0‑5 V swing.
  • Tube won’t light? Verify the tube’s contacts are clean and the socket is tight. A loose connection can look like a dead lamp.
  • Overheating MOSFET? Increase the heat‑sink size or add a small fan. You can also switch to a MOSFET with a lower on‑resistance (Rds(on)).
  • Noise on the mains? Use a small metal‑oxide varistor (MOV) across the live and neutral lines to suppress spikes. It’s cheap insurance.

Wrap‑Up

Building a DIY tungsten‑tube lamp with Arduino control is a rewarding blend of old‑school lighting and modern micro‑controller magic. You get the nostalgic glow of a filament and the flexibility to program it any way you like. Remember, safety comes first – treat the mains like a live snake and never work on a powered circuit. Once you’ve got it running, you’ll understand why engineers still love a good hot filament. Light up your workspace, your studio, or just a cozy corner, and enjoy the warm, steady glow that only a tungsten tube can give.

Reactions