Rotary encoder in CNC servo boucles


I’ve a CNC project with the Beaglebone Black. Is It possible to put 4 rotary encoder without a lost of performance of the servo boucles (servo cycle of 1ms)?
I saw some libraries but there are limitations and a way is to acces GPIO in mode 7 and use internal timers.
So my question is if the CPU timers are accessible throught a kernel module, and how many, from the 8 timers present on the processor, are usable?

I’ve planed to use the machinekit but, if i’ve good understand, it’s only possible to work with 2 encoders on the BeagleBone Black.

Fun is in the horizon, write a nex cnc software :slight_smile:

The AM335x CPU has three PWM subsystems, each one containing an eQEP module. So three rotary encoders are supported by the hardware (speed and direction/position @ 100 MHz counters).

In order to measure speed only (no direction/speed) you can use the eCAP modules in two of that subsystems (the third one isn’t wired to any header pin). Or you can use one of the four TIMER subsystems (24 MHz counters).

If you need a fourth direction/position sensor, there’s a PRU firmeware in the BBBlue package.

Thank you for the answer.
I finaly decided to make a custom hardware with a STM32 to match the accurity that i want, the speed factor isn’t important an it simplify the global design.
A nice 6 layers PCB tha fit in the HMI case of the machine.


If you’re interested, I’ve hosted the project to Grabcad.

Here is the link:

Thank you and best reguards.