If feedback is not being received from the encoder, please follow the below steps to troubleshoot:
1. Physical connections
Channel A of the encoder should be connected to Enc1A and channel B of the encoder to ENC1B. If dual channel controller is used and second motor, Channel A of the second encoder should be connected to ENC2A of the controller and Channel B of the second encoder to ENC2B of the controller. The encoder can be powered from 5 V output of the controller (If 5V is in the encoder powering range as per encoder datasheet) and controller’s ground. Be aware that the controller 5V output can provide a maximum of 200 mA so if many external devices are powered from there, the controller’s 5V output might drop.
- Check with a multimeter that 5V output of the controller is stable
- If external power source is used, make sure that controller and encoder have common ground. Ensure that either by connecting the two grounds together (controller and encoder) or by connecting the two power source grounds. If DC/DC converter is used check if the input/output is isolated.
2. Encoder’s output circuitry
Depending on the circuitry used, encoders can be push-pull, line drive and open collector. Open collector encoders need a pullup resistor from each channel output (A and B) to the supplied voltage. Roboteq BLDC controllers do not have pull ups on encoder inputs so in case of open collector they should be added externally. The pullup resistor’s value can be determined from the encoder datasheet.
- Check with a multimeter or oscilloscope, with the encoder connected to the controller, if the signals value is changing from high to low
3. Check the encoder counter
The Encoder counts will be stored at ENC Counter 1 and Encoder Counter 2
By rotating the motor by hand, Encoder counter should be increasing in one direction and decreasing in the opposite. If the counter is not changing, verify the following:
- You can check that the digital inputs used for the encoder are toggling at the Roborun+ Run tab. If you see both A and B channel turn ON, then it is a good indication that the encoder might function properly.
- If only one of the two channels is blinking, then the counter will not increase but it will fluctuate between current value +- 1.
- Even if all signals are being received, the controller is looking for a specific pattern to change the counter. If there are clues that the encoder does not send the correct pulses an oscilloscope can be used on A and B channels. The patter should look like below:
4. Check Roborun+ configuration
If the Encoder counter is changing but still the motor cannot rotate, verify the following:
- If encoder will be used for the commutation of the motor, it has to be configured as sinusoidal sensor. If encoder is configured properly the motor should be able to run in Open Loop, after performing motor sensor setup.
Encoder resolution should be also configured at the I/Os configuration tree
Encoder PPR is mentioned on the encoder datasheet. Beware not to confuse it with encoder CPR that is PPR*4. If the motor will run in closed loop, the use of the encoder must be set to feedback.
- When Encoder is used for Closed Loop Feedback, the closed loop feedback sensor must be configured to “other”
- If all the below have been done properly the motor should be able to run by using encoder in Open Loop and Closed Loop.
5. Check Encoder Inputs
If one or both signals of the encoder are missing the problem can be on controller or on motor side. To verify if the problem is on controller take a cable and connect the 5 V controller's output on both encoder A and B inputs and see in the input state is changing. You can monitor the input state directly at run tab.