I have a softcore RISC-V CPU running on an FPGA that is controlling a DC motor very simply with a PI controller. There are 7-segment displays for the user to vary the speed setpoint and another 7-segment display to show the actual motor speed. To verify the actual motor speed that is calculated by the RISC-V, a non-contact tachometer physically measures the motor shaft RPM. It works accurately to the exact RPM according to the tachometer.
Currently the PI is updated every 1ms so a new motor speed is calculated at this rate and it is continuously written to the 7-segment display in the C main loop. But the lowest values flicker and makes the value unreadable.
So my question is, how should I process and display the actual motor speed values in software so that it is readable? I have thought about updating the display slower (say every 100ms), or taking an average over the last 10 or 50 (10ms or 50ms respectively). I assume the tachometer is doing something similar as it appears to have almost 1 second delays between refreshing the measurement.
Anyone familiar with motor drivers or have any ideas as to how this is done practically?