Difference between revisions of "Encoders"

Line 1: Line 1:
 
Rotary encoders are devices that generate electrical pulses as they rotate. The angle or rate of rotation that the encoder is experiencing can be measured by monitoring the number or frequency of the pulses. In robotics, encoders are most commonly attached to the robot's drive motors and used to measure the robot's linear speed, angular speed, and distance traveled. More generally, encoders can be attached to any of the robot's joints to track its speed and/or angle, such as a rotating joint in a robotic arm.
 
Rotary encoders are devices that generate electrical pulses as they rotate. The angle or rate of rotation that the encoder is experiencing can be measured by monitoring the number or frequency of the pulses. In robotics, encoders are most commonly attached to the robot's drive motors and used to measure the robot's linear speed, angular speed, and distance traveled. More generally, encoders can be attached to any of the robot's joints to track its speed and/or angle, such as a rotating joint in a robotic arm.
  
== Sensor Overview ==
+
==Sensor Overview==
 
Measurement: Motor rotation distance. When attached to the drive motors, can be used to generate position and heading estimates. In most practical applications encoders are best used to track linear and angular velocities instead.
 
Measurement: Motor rotation distance. When attached to the drive motors, can be used to generate position and heading estimates. In most practical applications encoders are best used to track linear and angular velocities instead.
  
Line 7: Line 7:
  
 
Sensor Pros:
 
Sensor Pros:
 +
 
*Quite accurate over short time periods/distances
 
*Quite accurate over short time periods/distances
 
*Works indoors and outdoors, day or night
 
*Works indoors and outdoors, day or night
Line 14: Line 15:
  
 
Sensor Cons:
 
Sensor Cons:
 +
 
*Requires initial calibration between encoder counts and amount of robot movement
 
*Requires initial calibration between encoder counts and amount of robot movement
 
*Assumes no slip between robot wheel and ground. An unstable or inconsistent surface beneath the robot can lead to wheel slippage. Skid-steer robots also experience wheel slippage while turning. This causes error in the estimated robot position because the wheel moves but the robot doesn’t.
 
*Assumes no slip between robot wheel and ground. An unstable or inconsistent surface beneath the robot can lead to wheel slippage. Skid-steer robots also experience wheel slippage while turning. This causes error in the estimated robot position because the wheel moves but the robot doesn’t.
Line 25: Line 27:
  
 
==Reading an Encoder==
 
==Reading an Encoder==
There are two basic ways of integrating an encoder into your design. The encoder can either feed back to your motor control circuit or your microcontroller circuit. For feeding the data back to the motor controller itself frees up your microcontroller for other tasks and is incredibly simple to implement. Take Dimension Engineering's Kangaroo x2 Motion Controller. The motion controller attaches to their Sabertooth and SyRen product line and automatically takes care of speed control functions for you. The disadvantage is that it takes your microcontroller out of the loop and misses out of that data so you cannot write a program to move the motor precisely 90 degrees because the microcontroller doesn't know where the motor is. The Kangaroo can be polled for the data, but that is typically not fast enough. Other motor controllers such as the RoboteQ's have encoders built in too.
+
We have two preferred ways for tracking and reading encoder values.
  
The other option is to have the encoder output wired to your microcontroller circuit. It is possible to have it directly tied to your microcontroller but you will have to have it constantly sit there and check for the pulses. This will tie up your microcontroller so it will not be able to complete another function while the motor is moving. A solution for this is our LS7366R quadrature buffer breakout. The LS7366R takes care of watching for the encoder pulses and you simply send it a SPI command when you want to know where you are or to reset the encoder counts. This way you can receive precise encoder feedback without having to devote all of your resources to it.
+
=== Quadrature Encoder Buffer Board ===
 +
<br />
  
 +
=== Roboteq Motor Controller ===
 +
<br />
 
==Quick Links to our Encoders and Accessories:==
 
==Quick Links to our Encoders and Accessories:==
 
'''Encoder Buffer and Pull-up Boards:'''
 
'''Encoder Buffer and Pull-up Boards:'''
* [##ITEM1523## Dual LS7366R Quadrature Encoder Buffer Breakout Board (TE-183-002)]
+
 
* [##ITEM1514## Kangaroo x2 motion controller (TE-180-000)]
+
*[##ITEM1523## Dual LS7366R Quadrature Encoder Buffer Breakout Board (TE-183-002)]
* [##ITEM1512## IG32, IG42, and IG52 Gear Motor Encoder Pull-up Board (TE-179-000)]
+
*[##ITEM1514## Kangaroo x2 motion controller (TE-180-000)]
 +
*[##ITEM1512## IG32, IG42, and IG52 Gear Motor Encoder Pull-up Board (TE-179-000)]
 +
 
 
'''Motors with Encoders:'''
 
'''Motors with Encoders:'''
* [##ITEM1238## IG42 24VDC 013 RPM Gear Motor with Encoder (TD-044-013)]
+
 
* [##ITEM1181## IG52-04 24VDC 082 RPM Gear Motor with Encoder (TD-045-082)]
+
*[##ITEM1238## IG42 24VDC 013 RPM Gear Motor with Encoder (TD-044-013)]
* [##ITEM1134## IG32P 24VDC 075 RPM Gear Motor with Encoder (TD-055-075)]
+
*[##ITEM1181## IG52-04 24VDC 082 RPM Gear Motor with Encoder (TD-045-082)]
* [##ITEM1099## IG32 24VDC 074 RPM Gear Motor with Encoder (TD-054-074)]
+
*[##ITEM1134## IG32P 24VDC 075 RPM Gear Motor with Encoder (TD-055-075)]
* [##ITEM1036## IG42 24VDC 078 RPM Gear Motor with Encoder (TD-044-078)]
+
*[##ITEM1099## IG32 24VDC 074 RPM Gear Motor with Encoder (TD-054-074)]
* [##ITEM998## IG32P 24VDC 265 RPM Gear Motor with Encoder (TD-055-265)]
+
*[##ITEM1036## IG42 24VDC 078 RPM Gear Motor with Encoder (TD-044-078)]
* [##ITEM997## IG32P 24VDC 190 RPM Gear Motor with Encoder (TD-055-190)]
+
*[##ITEM998## IG32P 24VDC 265 RPM Gear Motor with Encoder (TD-055-265)]
* [##ITEM996## IG32 24VDC 191 RPM Gear Motor with Encoder (TD-054-191)]
+
*[##ITEM997## IG32P 24VDC 190 RPM Gear Motor with Encoder (TD-055-190)]
* [##ITEM937## IG52-04 24VDC 010 RPM Gear Motor with Encoder (TD-045-010)]
+
*[##ITEM996## IG32 24VDC 191 RPM Gear Motor with Encoder (TD-054-191)]
* [##ITEM873## IG52-04 24VDC 136 RPM Gear Motor with Encoder (TD-045-136)]
+
*[##ITEM937## IG52-04 24VDC 010 RPM Gear Motor with Encoder (TD-045-010)]
* [##ITEM849## IG42 24VDC 122 RPM Gear Motor with Encoder (TD-044-122)]
+
*[##ITEM873## IG52-04 24VDC 136 RPM Gear Motor with Encoder (TD-045-136)]
* [##ITEM843## IG52-04 24VDC 285 RPM Gear Motor with Encoder (TD-045-285)]
+
*[##ITEM849## IG42 24VDC 122 RPM Gear Motor with Encoder (TD-044-122)]
* [##ITEM840## IG42 24VDC 240 RPM Gear Motor with Encoder (TD-044-240)]
+
*[##ITEM843## IG52-04 24VDC 285 RPM Gear Motor with Encoder (TD-045-285)]
 +
*[##ITEM840## IG42 24VDC 240 RPM Gear Motor with Encoder (TD-044-240)]
 +
 
 
'''Motor Controllers with direct encoder feedback:'''
 
'''Motor Controllers with direct encoder feedback:'''
* [##ITEM1197## SyRen 50A Regenerative Motor Driver (TE-098-150)] with [##ITEM1514## Kangaroo Option]
+
 
* [##ITEM1169## RoboteQ SDC2150 - 2x20A 50V Motor Controller with Encoder Input (TE-144-050)]
+
*[##ITEM1197## SyRen 50A Regenerative Motor Driver (TE-098-150)] with [##ITEM1514## Kangaroo Option]
* [##ITEM1168## RoboteQ SDC2130 - 2x20A 30V Motor Controller with Encoder Input (TE-144-030)]
+
*[##ITEM1169## RoboteQ SDC2150 - 2x20A 50V Motor Controller with Encoder Input (TE-144-050)]
* [##ITEM2233## RoboteQ XDC2460 - 2x150A 60V Motor Controller with Encoder Input (TE-286-150)]
+
*[##ITEM1168## RoboteQ SDC2130 - 2x20A 30V Motor Controller with Encoder Input (TE-144-030)]
* [##ITEM1834## RoboteQ MDC2460 - 2x60A 60V Motor Controller with Encoder Input (TE-240-060)]
+
*[##ITEM2233## RoboteQ XDC2460 - 2x150A 60V Motor Controller with Encoder Input (TE-286-150)]
* [##ITEM1833## RoboteQ MDC2230 - 2x60A 30V Motor Controller with Encoder Input (TE-240-030)]
+
*[##ITEM1834## RoboteQ MDC2460 - 2x60A 60V Motor Controller with Encoder Input (TE-240-060)]
* [##ITEM848## SyRen 25A Regenerative Motor Driver (TE-098-125)] with [##ITEM1514## Kangaroo Option]
+
*[##ITEM1833## RoboteQ MDC2230 - 2x60A 30V Motor Controller with Encoder Input (TE-240-030)]
* [##ITEM847## SyRen 10A Regenerative Motor Driver (TE-098-110)] with [##ITEM1514## Kangaroo Option]
+
*[##ITEM848## SyRen 25A Regenerative Motor Driver (TE-098-125)] with [##ITEM1514## Kangaroo Option]
* [##ITEM822## Sabertooth Dual 25A Motor Driver (TE-091-225)] with [##ITEM1514## Kangaroo Option]
+
*[##ITEM847## SyRen 10A Regenerative Motor Driver (TE-098-110)] with [##ITEM1514## Kangaroo Option]
* [##ITEM1225## Sabertooth Dual 60A motor driver (TE-091-260)] with [##ITEM1514## Kangaroo Option]
+
*[##ITEM822## Sabertooth Dual 25A Motor Driver (TE-091-225)] with [##ITEM1514## Kangaroo Option]
 +
*[##ITEM1225## Sabertooth Dual 60A motor driver (TE-091-260)] with [##ITEM1514## Kangaroo Option]
 +
 
 
'''Encoder support:'''
 
'''Encoder support:'''
* [https://sdrobots.com/ig3242-52-encoder-interfacing-cpr-calculation/ IG32,42, and 52 Encoder Interfacing and CPR Calculation.]
+
 
* [https://sdrobots.com/tech-thursday-029-encoder-cpr-resisted/ Encoder CPR – Revisited.]
+
*[https://sdrobots.com/ig3242-52-encoder-interfacing-cpr-calculation/ IG32,42, and 52 Encoder Interfacing and CPR Calculation.]
* [https://sdrobots.com/roboteqs-xdc2460-controller-speed-controller-encoder-input/ Speed controller with encoder input.]
+
*[https://sdrobots.com/tech-thursday-029-encoder-cpr-resisted/ Encoder CPR – Revisited.]
* [https://sdrobots.com/encoder-support-overview/ Encoder Support Overview]
+
*[https://sdrobots.com/roboteqs-xdc2460-controller-speed-controller-encoder-input/ Speed controller with encoder input.]
 +
*[https://sdrobots.com/encoder-support-overview/ Encoder Support Overview]
 +
 
 
[[Category:Sensors]]
 
[[Category:Sensors]]

Revision as of 20:53, 2 October 2020

Rotary encoders are devices that generate electrical pulses as they rotate. The angle or rate of rotation that the encoder is experiencing can be measured by monitoring the number or frequency of the pulses. In robotics, encoders are most commonly attached to the robot's drive motors and used to measure the robot's linear speed, angular speed, and distance traveled. More generally, encoders can be attached to any of the robot's joints to track its speed and/or angle, such as a rotating joint in a robotic arm.

Sensor Overview

Measurement: Motor rotation distance. When attached to the drive motors, can be used to generate position and heading estimates. In most practical applications encoders are best used to track linear and angular velocities instead.

Ideal operating conditions: Robot operating on smooth/even ground where wheels maintain constant rolling contact with no slip.

Sensor Pros:

  • Quite accurate over short time periods/distances
  • Works indoors and outdoors, day or night
  • Good for mitigating discrete jumps in position and orientation estimates when fused with other sensors
  • Great fallback sensor when things go wrong
  • Can be used for speed control of the wheels

Sensor Cons:

  • Requires initial calibration between encoder counts and amount of robot movement
  • Assumes no slip between robot wheel and ground. An unstable or inconsistent surface beneath the robot can lead to wheel slippage. Skid-steer robots also experience wheel slippage while turning. This causes error in the estimated robot position because the wheel moves but the robot doesn’t.
  • Position errors from wheel slippage and imperfect calibration accumulate over time/distance to give a progressively worse position estimate. *When used to measure speed instead of position this is less of an issue.
  • Additional hardware is often needed to keep track of the encoder counts. However, some motor controllers (such as Roboteq models) have this functionality built-in.

Encoder Output

Encoders typically output what is known as a quadrature signal. A quadrature signal is comprised of two channels (Channel A and Channel B). Channel B is 90 degrees out of phase from channel A. This allows the circuitry watching the output signal to know what direction you are traveling. If B trails A then your motor is moving clockwise, if A trails B then your motor is moving counter clockwise.

Picture

Reading an Encoder

We have two preferred ways for tracking and reading encoder values.

Quadrature Encoder Buffer Board


Roboteq Motor Controller


Quick Links to our Encoders and Accessories:

Encoder Buffer and Pull-up Boards:

  • [##ITEM1523## Dual LS7366R Quadrature Encoder Buffer Breakout Board (TE-183-002)]
  • [##ITEM1514## Kangaroo x2 motion controller (TE-180-000)]
  • [##ITEM1512## IG32, IG42, and IG52 Gear Motor Encoder Pull-up Board (TE-179-000)]

Motors with Encoders:

  • [##ITEM1238## IG42 24VDC 013 RPM Gear Motor with Encoder (TD-044-013)]
  • [##ITEM1181## IG52-04 24VDC 082 RPM Gear Motor with Encoder (TD-045-082)]
  • [##ITEM1134## IG32P 24VDC 075 RPM Gear Motor with Encoder (TD-055-075)]
  • [##ITEM1099## IG32 24VDC 074 RPM Gear Motor with Encoder (TD-054-074)]
  • [##ITEM1036## IG42 24VDC 078 RPM Gear Motor with Encoder (TD-044-078)]
  • [##ITEM998## IG32P 24VDC 265 RPM Gear Motor with Encoder (TD-055-265)]
  • [##ITEM997## IG32P 24VDC 190 RPM Gear Motor with Encoder (TD-055-190)]
  • [##ITEM996## IG32 24VDC 191 RPM Gear Motor with Encoder (TD-054-191)]
  • [##ITEM937## IG52-04 24VDC 010 RPM Gear Motor with Encoder (TD-045-010)]
  • [##ITEM873## IG52-04 24VDC 136 RPM Gear Motor with Encoder (TD-045-136)]
  • [##ITEM849## IG42 24VDC 122 RPM Gear Motor with Encoder (TD-044-122)]
  • [##ITEM843## IG52-04 24VDC 285 RPM Gear Motor with Encoder (TD-045-285)]
  • [##ITEM840## IG42 24VDC 240 RPM Gear Motor with Encoder (TD-044-240)]

Motor Controllers with direct encoder feedback:

  • [##ITEM1197## SyRen 50A Regenerative Motor Driver (TE-098-150)] with [##ITEM1514## Kangaroo Option]
  • [##ITEM1169## RoboteQ SDC2150 - 2x20A 50V Motor Controller with Encoder Input (TE-144-050)]
  • [##ITEM1168## RoboteQ SDC2130 - 2x20A 30V Motor Controller with Encoder Input (TE-144-030)]
  • [##ITEM2233## RoboteQ XDC2460 - 2x150A 60V Motor Controller with Encoder Input (TE-286-150)]
  • [##ITEM1834## RoboteQ MDC2460 - 2x60A 60V Motor Controller with Encoder Input (TE-240-060)]
  • [##ITEM1833## RoboteQ MDC2230 - 2x60A 30V Motor Controller with Encoder Input (TE-240-030)]
  • [##ITEM848## SyRen 25A Regenerative Motor Driver (TE-098-125)] with [##ITEM1514## Kangaroo Option]
  • [##ITEM847## SyRen 10A Regenerative Motor Driver (TE-098-110)] with [##ITEM1514## Kangaroo Option]
  • [##ITEM822## Sabertooth Dual 25A Motor Driver (TE-091-225)] with [##ITEM1514## Kangaroo Option]
  • [##ITEM1225## Sabertooth Dual 60A motor driver (TE-091-260)] with [##ITEM1514## Kangaroo Option]

Encoder support: