Skip to the content
PCBKitNew board
2 layers24.8 × 73 mmFlicker, the printed circuit board in 3D

Lighting flicker meter

Size
24.8 × 73 mm
Copper layers
2
Thickness
1.6 mm
Parts
4
Nets
45
Pads
99
Tracks, vias
27, 0
Routed
Yes
KiCad
KiCad 6 (file 20211014)
Created
19 Sep 2021
Updated
4 Jul 2026

Overview

Flicker is an open-source printed circuit board by timdeegan, from the timdeegan/flicker repository on GitHub. It is a 2-layer board of 24.8 × 73 mm with 4 parts on 45 nets, routed with 27 tracks and 0 vias.

It is built around the AD522-00E and SFH 300. Its parts include 2 ICs, 1 resistor and 1 transistor. It belongs with the lEDs and displays boards and the RP2040 boards of this library.

Main components

2

README

README.md

Lighting flicker meter

This device measures the amount and speed of flicker in light sources and screens, using a phototransistor to measure the light and a Raspberry Pi Pico for signal processing. It was designed to be cheap (less than £10 for parts in bulk, probably more like £30 to build just one) while still accurate enough to evaluate screens and lighting for those who are sensitive to flickering light. (For information about the effects of flickering light, see e.g. Lehman and Wilkins, 2014.)

Circuit board

The PCB is a simple 2-layer layout, easily within the cheapest tier of JLCPCB or other manufacturers. The KiCAD files are in the pcb directory, along with all the output files needed to order your own PCBs.

There are only four things to solder on:

  • Raspberry Pi Pico. This is surface-mounted on the PCB but the connections are big enough that it's quite doable by hand. I found it helped to use some 0.1" header pins to hold one side in the right place while soldering the other side.
  • 680Ω through-hole resistor.
  • AD5220BNZ10 digital potentiometer. This costs more than the Raspberry Pi, but is rated for the current and is a through-hole part for easy soldering. The marking on the PCB shows which way round to mount it.
  • SFH300 phototransistor. This must also be soldered the right way round (the flat side should match the marking on the PCB) and at the right height so it's just above the PCB when the leads are bent over.

The assembled PCB

Case

The 3D model for the case is in case/case.3mf. I printed mine in PETG at 0.15mm "quality" on a Prusa i3 MK3S printer.

The flicker meter in its case

Firmware

The firmware that runs on the Pico is in firmware/flicker-v1.0.uf2.

Installing the firmware

First connect the board by USB while holding the BOOTSEL button, which makes it appear as a USB-attached drive. Then copy the .uf2 file to that drive.

Building your own firmware

The firmware source is in the firmware directory. If you want to build it yourself, you will need the Raspberry Pi Pico SDK. Once you have the SDK installed, you should be able to build the firmware using the Visual Studio Code extension as documented in the SDK.

How to use

The flicker meter appears as a USB serial device.

  • On Windows you can use PuTTY. Set the connection type to "Serial", the serial line to "COM3" (or check in Device Manager to see what COM number appears when you plug in the meter) and the speed to 115200.
  • On Android you can use a serial terminal app such as Serial USB Terminal.

Point the sensor at the light you want to measure. It's usualy best to get quite close to the light it you can, unless you see a warning about it being too bright. The measurements appear on the serial output, along with graphs of the frequency and waveform. The graphs work best with a monospaced font and a window at least 80 characters wide.

E.g. measuring a CFL lightbulb:

text
AGC: 66/127
--------------------------------------------------------------------------------
                  *
                 * *
                 * *
                 * *
                *  *
                *   *
                *   *
                *   *
               *    *
               *    *
               *    *
              *      *
              *      *
              *      *
              *      *  *
********     *       *  ***
*       *    *        * * *
*        ****         * * * *
                       *  ** * ***                                             *
                           * ** ************************************************
--------------------------------------------------------------------------------
FFT: peak at 100.105042Hz

The important numbers there are 10% flicker (the amount by which the brightness varies over one cycle of the flickering) and 100Hz (how fast it is flickering, in this case twice the 50Hz mains electricity frequency).

By contrast, a mobile phone screen using PWM for brightness control shows a faster but much deeper flicker:

text
AGC: 127/127 (TOO DARK)
--------------------------------------------------------------------------------
                          *
                          *
                          *
                          **     *
                          **     *
                          **     *
                          **     *   *
                         * *    **   *
                         * *    **   *
                         * *    **  **
                         * *    **  ** *
                         * *    **  ** **
                         * *    **  ** **
                         * *    **  ** **
                         * *    **  ** ****
                        *  *    **  ** ****
                        *   *   **  ** ****
                        *   *   * * ** *****
         ************   *   *   * * *  *** *  ****                             *
*********            ****    ****  ***** ***************************************
--------------------------------------------------------------------------------
FFT: peak at 239.751190Hz

Limitations

It doesn't handle very bright or very dark sources, though it will warn about them being too bright or dark. It tends to report flicker of >60KHz when in total darkness, which I assume is noise from the Pi Pico.

The phototransistor circuit is rather simple, based on my limited knowledge at the time, and the brightness compensation is a bit clunky. I would like to redesign it at some point with a proper variable-gain amplifier and an antialiasing filter.

I haven't tried calibrating this meter or comparing it to a properly calibrated one. Calibrated meters are rather expensive, which is why I built this in the first place. If you have access to proper calibration equpment and would like to test one of these meters, get in touch!

Parts

4
QtyValueFootprintReferences
1680RResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR1
1AD5220Package_DIP:DIP-8_W7.62mmU2
1PicoPico:RPi_Pico_SMD_THU1
1SFH300LED_THT:LED_D5.0mm_ClearQ1

Questions

How big is the Flicker PCB?

It measures 24.8 × 73 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Flicker use?

4 parts, built around the AD522-00E and SFH 300. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Flicker KiCad files?

From the timdeegan/flicker repository on GitHub, at the commit this page was made from: the board is pcb/flicker.kicad_pcb and its schematic pcb/flicker.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Flicker design in my own project?

Its repository states no licence, so its author keeps all rights: ask timdeegan before reusing the design.

Similar boards

  • 2 layersDat, the printed circuit board in 3D

    Dat

    Ni3nayka/sketch

    This repository contains small programs for different robots

    36 parts
  • 2 layers49 × 34 mmEdno, the printed circuit board in 3D

    Edno

    AgustinPrietoValdez/competition-robots

    Custom competition robots — maze/micromouse (MISA), sumo (TATAMI 1) & mini-sumo (RUCHO). KiCad PCBs, STM32/Arduino firmware, Fusion 360. National champion & international prizes — by EDNAROBOTICS.

    40 partsMIT
  • 2 layers18.5 × 26 mm24g2usb rp2350zero, the printed circuit board in 3D

    24g2usb rp2350zero

    joypad-ai/joypad-os

    Universal controller firmware for building adapters, dongles, and custom controllers.

    4 parts1.7kApache-2.0
  • 2 layers116 × 33 mm966595-1 and 963356-1, the printed circuit board in 3D

    966595-1 and 963356-1

    rusefi/rusefi

    rusefi - GPL internal combustion engine control unit

    4 parts1.2k
  • 2 layers19 × 18 mmDaughter board, the printed circuit board in 3D

    Daughter board

    hackclub/OnBoard

    💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

    4 parts915
  • 2 layers24.8 × 24.8 mmNrf24 breakout, the printed circuit board in 3D

    Nrf24 breakout

    tardate/LittleArduinoProjects

    a collection of "Little Electronic & Arduino Projects", most involving electronics or an Arduino in one way or another!

    4 parts803MIT
  • 2 layers26 × 20 mmCap chain, the printed circuit board in 3D

    Cap chain

    drandyhaas/KiCadRoutingTools

    A set of Python/Rust tools to aid routing in KiCad

    4 parts744MIT