

The AMT102 is a high-resolution rotary encoder manufactured by AMT, offering 8192 counts per revolution (CPR). This encoder is designed to provide precise position feedback, making it ideal for applications requiring high accuracy and reliability. Its compact design and robust construction ensure dependable performance, even in demanding industrial environments.








| Parameter | Value |
|---|---|
| Manufacturer | AMT |
| Model | AMT102 |
| Resolution | 8192 CPR |
| Supply Voltage | 4.5V to 5.5V |
| Current Consumption | 10 mA (typical) |
| Output Signal Type | Quadrature (A, B) |
| Operating Temperature | -40°C to +125°C |
| Mounting Options | Modular, adjustable mounting |
| Shaft Diameter Support | 2mm to 8mm (with adapters) |
The AMT102 encoder typically uses a 6-pin connector for interfacing. Below is the pinout:
| Pin Number | Name | Description |
|---|---|---|
| 1 | VCC | Power supply input (4.5V to 5.5V) |
| 2 | GND | Ground connection |
| 3 | A | Quadrature output channel A |
| 4 | B | Quadrature output channel B |
| 5 | Z | Index pulse output (1 pulse per revolution) |
| 6 | NC | Not connected (reserved for future use) |
Below is an example of how to connect and read the AMT102 encoder using an Arduino UNO:
| Encoder Pin | Arduino Pin |
|---|---|
| VCC | 5V |
| GND | GND |
| A | Pin 2 |
| B | Pin 3 |
// Example code to read the AMT102 encoder with Arduino UNO
// Connect encoder A and B outputs to Arduino pins 2 and 3 (interrupt pins)
volatile int position = 0; // Variable to store encoder position
void setup() {
pinMode(2, INPUT); // Set pin 2 as input for channel A
pinMode(3, INPUT); // Set pin 3 as input for channel B
// Attach interrupts to handle encoder signals
attachInterrupt(digitalPinToInterrupt(2), readEncoder, CHANGE);
attachInterrupt(digitalPinToInterrupt(3), readEncoder, CHANGE);
Serial.begin(9600); // Initialize serial communication
}
void loop() {
// Print the current position to the Serial Monitor
Serial.print("Position: ");
Serial.println(position);
delay(100); // Delay for readability
}
void readEncoder() {
// Read the current state of channel A and B
int stateA = digitalRead(2);
int stateB = digitalRead(3);
// Determine direction based on quadrature signal
if (stateA == stateB) {
position++; // Clockwise rotation
} else {
position--; // Counterclockwise rotation
}
}
No Output Signals
Inconsistent Position Readings
Index Pulse Not Detected
High Current Consumption
Q: Can the AMT102 be used with a 3.3V system?
A: No, the AMT102 requires a supply voltage of 4.5V to 5.5V. Use a level shifter if interfacing with a 3.3V system.
Q: How do I calculate the rotational speed using the encoder?
A: Measure the time between pulses on channel A or B and calculate the speed using the formula:
Speed (RPM) = (Pulses per second / CPR) * 60.
Q: Is the encoder resistant to dust and moisture?
A: The AMT102 is designed for industrial environments but is not fully sealed. Use additional protection in harsh conditions.