Skip to the content
PCBKitNew board
2 layers26.5 × 259 mmGeneric8chPCB, the printed circuit board in 3D

Background info on endless / infinite potentiometers, code to read them out and examples for pcb designs with ADCs

Size
26.5 × 259 mm
Copper layers
2
Thickness
1.6 mm
Parts
12
Nets
46
Pads
96
Tracks, vias
222, 46
Pours
1
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
26 Dec 2024
Updated
13 Mar 2026

Overview

Generic8chPCB is an open-source printed circuit board by justaboutdone, from the justaboutdone/endless-pots repository on GitHub, published under the MIT licence. It is a 2-layer board of 26.5 × 259 mm with 12 parts on 46 nets, routed with 222 tracks and 46 vias.

Its parts include 3 ICs and 1 capacitor. It belongs with the ESP32 and RISC-V boards of this library.

README

README.md

Endless Pots

The secret 360º endless-potentiometers that make rotary encoders obsolete

Wait a minute...! There are endlessly rotating pots? But how does that work and why didn't I (nor the internet) know about them?

We recently stumbled across the existence of endless pots, analog rotary potentiometers that can be turned not just once, but an infinite number of times. These can be used to read out the absolute position (and thus also relative angle changes over time) with high accuracy (analog read out). And no, we don't mean rotary encoders, which usually have a poor operating feel and can only measure rotation digitally and in discrete steps.

When we realized that the internet seems to have a blind spot to this topic, we decided to share our researched knowledge so that everyone can throw away their stupid rotary encoders start using endless pots in their devices. :)

Documentation

This article will assume you understand the basics of using normal potentiometers with a single wiper, and that you have experience programming Arduinos.

Prelude by Connor

I recently embarked on an Arduino project that required rotary encoders – or so I thought. And I wasn’t so happy about it, because I really dislike rotary encoders. The affordable ones have click-steps and are usually limited to 20-30 steps – unless you want to dish out some serious cash – and even then, they’re bulky, harder to program, and nearly impossible to multiplex.

While trying to find non-shitty encoders, a thought popped into my mind… “Didn’t I used to have a MIDI controller with like, 16 smooth encoders?!”

akai_apc40

Ah yes, the APC40 mk1! Sure enough, it has 16 damn encoders with LED rings! And even with an 8x5 clip launcher, tons of buttons, 9 faders and a cross-fader, it was still relatively affordable. So, where can I get these magically cheap, perfectly smooth encoders?!

This question sent me down one of the deepest internet rabbit-holes I’ve ever been on. And odds are, if you’re reading this now, you’re in the same position.

The Alpha 360º Endless Potentiometer

The secret is the Alpha 360º Endless Potentiometer with two wipers.

RV112FF-40

Prices can vary a lot (from $1 in special offers to $4.24 on Mouser) and the pots are offered under many different names. We already bought these (which recently just jumped up in price???) and these and can confirm they work properly and have good turning resistance.

They almost certainly are the RV112FF-40B1 model, but we can't say for sure as they are sold under different names. Very often they are sold with terms like "Alpha Boss GT10", "MPK, MPD, APC rotary pot", etc. to show that they can be used as replacement parts for these products.

We also bought some of this other model from Mouser, which are the same, but also include a push-switch, so you can click the knob in like a button. However, the turning-resistance on these is very weak, which makes them feel much cheaper than the non-switch model. As it is pretty cool to have the push function, we are working on solutions to artificially add torque by e.g. sticking foam to the pot caps… It's a work in progress.

Update (2026-03-13): After months of frustration, it can be safely concluded that the model with the push-button has a fundementally flawed design which causes wiper-contact failure in 10-15% of units after only a few months of regular use. The turning shaft has too much tolerance, which means that as the pot is turned, it can be slightly wiggled side-to-side. This can have the long-term effect of bending the wipers (the tiny metal pins that make contact with the resistor plate) in unpredictable directions; this can cause the occassional loss of contact, creating jitter that cannot be effictively smoothed without significant latency or loss in responsiveness. TLDR: Don't buy the model with the push buttons!

Pins

Screenshot+2024-12-03+at+13.44.52

Unlike normal potentiometers, these 360º pots have 4 pins for the wipers. Two of them are ground and voltage like a normal pot, but instead of having just one pin for the analog read out, there are two. This is because there are two wipers (variable resistors), which are offset from each other. Using the analog data you get from both pins, you can find the absolute position of the knob in radians.

Screenshot+2024-12-03+at+13.45.08

Pins ① and ③ are ground and voltage, and pins ② and 2 are analog data. You’ll have to experiment until you get them in the correct direction.

Signal Path of the Wipers

signalpath

Getting the aboslute position from the two analog read pins isn't as easy as it may seem. We provide a basic Arduino script that can read any number of these pots (two pots in the example) and report their absolute values as MIDI or Serial. The key is the 2-argument arctangent function, aka atan2. Using this with the values from both wipers gives you the position of the knob from -pi to +pi.

The second example we provide is a generic PCB with 8 of these pots connected to ADCs. They read the wipers and pass the values on to an ESP32, where a similar calculation is done to get the angle change since the last cycle. This can then be sent via Serial (or other protocols) to a computer to only trigger relative changes on a parameter...

Links and Sources

When we started researching this topic, we couldn't really find a source. This was partly because we used the wrong terms. We went back and collected all the forums and discussions on the topic when we were preparing this repo. Here are the most important ones (unorganized, maybe we'll do that later). Some of them already contain the right clues if you look closely ;-) Many thanks for the work of others so far!

Parts

12
QtyValueFootprintReferences
8RV112FF-40B1-15F-0B20K-0068myfootrpintlib:RV112FF40B115F0B20K0068VR1, VR2, VR3, VR4, VR5, VR6, VR7, VR8
2MCP3208-BI_PPackage_SO:SOIC-16_3.9x9.9mm_P1.27mmU2, U3
110uFlibrfrompcb:_0805C2
1XIAO-ESP32-C3-DIPRF_Module:MCU_Seeed_ESP32C3U4

Questions

How big is the Generic8chPCB PCB?

It measures 26.5 × 259 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Generic8chPCB use?

12 parts. 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 Generic8chPCB KiCad files?

From the justaboutdone/endless-pots repository on GitHub, at the commit this page was made from: the board is generic8chPCB/kicad/generic8chPCB.kicad_pcb and its schematic generic8chPCB/kicad/generic8chPCB.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Generic8chPCB design in my own project?

Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

  • 2 layersNrf bga, the printed circuit board in 3D

    Nrf bga

    github-linguist/linguist

    Language Savant. If your repository's language is being reported incorrectly, send us a pull request!

    12 parts14kMIT
  • 2 layers66.9 × 74.5 mmDeskHop, the printed circuit board in 3D

    DeskHop

    hrvach/deskhop

    Fast Desktop Switching Device

    12 parts7.9kGPL-3.0
  • 2 layers40 × 15 mmSensors, the printed circuit board in 3D

    Sensors

    google/mozc-devices

    Circuit diagrams and firmware source code for Gboard DIY keyboards

    12 parts3kApache-2.0
  • 2 layers42.7 × 56.5 mmTle6240 driver, the printed circuit board in 3D

    Tle6240 driver

    rusefi/rusefi

    rusefi - GPL internal combustion engine control unit

    12 parts1.2k
  • 2 layers49 × 25 mm5v boost regulator, the printed circuit board in 3D

    5v boost regulator

    hackclub/OnBoard

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

    12 parts915
  • 2 layers28.3 × 10.3 mmTap Photosensor PCB, the printed circuit board in 3D

    Tap Photosensor PCB

    VoronDesign/Voron-Tap

    Tap is a nozzle-based z-probe for the V2 and Trident printer designs. The entire toolhead moves to trigger an optical switch. Tap offers many advantages:

    12 parts716GPL-3.0
  • 2 layers25.4 × 70.4 mmTpmsniffer, the printed circuit board in 3D

    Tpmsniffer

    stacksmashing/pico-tpmsniffer

    A simple, very experimental TPM sniffer for LPC bus

    12 parts696