I had a really difficult time understanding exactly what 555 timer circuits do and how they work. Most explanations online refer to their functionality when paired with RC series, but not exactly what logical interactions between the different input pins are.

To wrap my head around what was going on, I conducted some experiments much like those I did to understand how BJT transistors work. I used

Given that the 555 timer has four input pins (TRIG, RESET, THRES, and CONT) and one relevant output pin (OUT), the idea is to hold three of the input pins fixed, then vary the fourth with the MCP41010 and measure the effect on the OUT pin with the MCP3008.

Experimental Setup

The following figure shows my test circuit.

555 testing circuit

555 testing circuit

Of note,

  • The MCP3008 ADC is on the rightmost breadboard and the MCP41010 digipot is at the top of the leftmost breadboard.
  • The TLC555 at the bottom of the left breadboard has long white, green, black, and yellow wires that are feed into four ADC channels so we can measure the voltage at the TRIG, OUT, RESET, and THRES pins, respectively.
  • A single long-ish yellow wire connects the digipot (g5) to the 555 (d14). We move around the d14 end to vary voltage on different 555 input pins.
  • All input pins have wires going to the center of the breadboard to make it easier to connect these inputs to ground, VDD, or the digipot output. These terminate at b16 (RESET), c15 (OUT), and d14 (TRIG) above.

The experiments involve subjecting one of the input pins to a triangle wave controlled by the digipot and measuring the responses on all of the output pins. It’s important to note

  1. a full wavelength is used to expose any irreversible behavior
  2. between each experiment, any repositioning of connections are done while the 555’s RESET pin is held low. It is brought high right before the experiment is run.

The python script used to control these experiments, as well as the output data and a Jupyter notebook to generate the following plots, are all in my 555 experimentation GitHub repository.

The TRIG and THRES pins

We start out by trying to figure out what the TRIG and THRES pins do and how they are related. According to the TLC555 data sheet, TRIG starts the “timing input” (whatever that means) and the THRES ends it, so we hold one constant and vary the other to see what their effects on OUT are.

For now, we’ll not worry about the RESET and CONT inputs. CONT is an analog control voltage which we can set to VDD, and the datasheet says that OUT will always be low when RESET is low, so let’s keep RESET high. Our test matrix is then

# TRIG THRES RESET CONT OUT
1 vary low low VDD
2 vary high low VDD
3 low vary low VDD
4 high vary low VDD

By running the experiment by shuffling the TRIG and THRES wires to match the above experimental conditions, we get the following data:

555 TRIG and THRES dependency variation over a full high-low-high cycle

TRIG and THRES dependency variation over a full high-low-high cycle

From this, it appears that OUT latches high when THRES is low, but OUT is reversible when THRES is high. This means that there is some irreversible behavior happening, and the 555 demonstrates hysteresis when manipulating the THRES and TRIG pins.

Examining the Hysteresis

To figure out exactly what sequence of TRIG and THRES changes affect the OUT pin, I took a step back and tested the TRIG and THRES pins by hand. I unplugged the digipot from the 555’s inputs and instead attached long orange and white jumpers to the TRIG and THRES pins, respectively:

555 manual testing circuit

555 manual testing circuit

I also added a green LED to show whether OUT was high (on) or low (off). With this, I started with TRIG=low and THRES=low, then did the following:

  1. Change THRES=low to THRES=high (TRIG remains low)
  2. Change TRIG=low to TRIG=high, resulting in TRIG=high, THRES=high)
  3. Change THRES=high to THRES=low (TRIG remains high)
  4. Change TRIG=high to TRIG=low, resulting in TRIG=low, THRES=low

The results from this are:

555 manual TRIG/THRES testing, forward direction

Results of going through the forward TRIG+THRES testing cycle

However, reversing this cycle winds up giving different results. Again starting with TRIG=low and THRES=low,

  1. Change TRIG=high to TRIG=low, resulting in TRIG=low, THRES=low
  2. Change THRES=high to THRES=low (TRIG remains high)
  3. Change TRIG=low to TRIG=high, resulting in TRIG=high, THRES=high)
  4. Change THRES=low to THRES=high (TRIG remains low)

The following table shows the results from this reversed cycle:

555 manual TRIG/THRES testing, reverse direction

Results of going through the reverse TRIG+THRES testing cycle

From this, we know that when both TRIG and THRES are the same, OUT has a deterministic state; OUT is high when TRIG=THRES=low, and OUT is low when TRIG=THRES=high. However, the state of OUT when TRIG != THRES depends on the previous state of OUT.

Taking this a step further, we can use the digipot and ADC to see what these four transitions look like on an analog scale:

Cycling through all states of TRIG and THRES, forward direction

Results cycling through all states of TRIG and THRES in the forward direction

When going through this cycle, both of OUT’s transitions between high and low states happen at 1/3 VDD. However in the reverse direction,

Cycling through all states of TRIG and THRES, reverse direction

Results cycling through all states of TRIG and THRES in the reverse direction

we see the hysteresis–OUT goes low at 2/3 Vdd, but it goes high at 1/3 Vdd. This asymmetric behavior is what gives rise to a neat property of the 555 timer: its ability to act as an astable oscillator.

Astable Mode

Configuring TRIG and THRES so that both are connected to a variable input voltage so that we are changing the voltage to both input pins at the same time. The result is the same asymmetric behavior we observed above:

Varying both TRIG and THRES concurrently

Varying both TRIG and THRES concurrently

This mode of operation is well-documented as the astable mode of operation for a 555 circuit, and you can find a lot of documentation about how this is used practically.

Rather than a digipot as we have used here, though, TRIG and THRES are plugged into a resistor-capacitor series to vary the input voltage. As the discharges and the voltage drops below 1/3 Vdd, OUT goes high and the capacitor begins charging again. This drives the input voltage up again, and once it goes above 2/3 Vdd, OUT goes low again and the capacitor resumes discharging, perpetuating a precisely timed astable oscillation between high and low OUT states with a very sharp transition between the two.