

The AMT103 is a non-contact magnetic encoder manufactured by CUI Devices. It is designed to provide precise angular position feedback using a Hall effect sensor to detect the position of a rotating magnet. This encoder is highly reliable and accurate, making it suitable for a wide range of motion control applications.








The following table outlines the key technical details of the AMT103 encoder:
| Parameter | Value |
|---|---|
| Manufacturer Part ID | AMT103 |
| Operating Voltage | 3.3 V to 5.5 V |
| Current Consumption | 6 mA (typical) |
| Resolution | Configurable: 48 to 2048 PPR |
| Output Signal | Quadrature A/B with Index (Z) |
| Maximum Rotational Speed | 60,000 RPM |
| Operating Temperature Range | -40°C to +125°C |
| Communication Interface | Digital (TTL-compatible) |
| Mounting Options | Modular, with multiple shaft sizes |
The AMT103 encoder has a 9-pin connector. The pinout and descriptions are as follows:
| Pin Number | Pin Name | Description |
|---|---|---|
| 1 | VCC | Power supply input (3.3 V to 5.5 V) |
| 2 | GND | Ground connection |
| 3 | A | Quadrature output channel A |
| 4 | B | Quadrature output channel B |
| 5 | Z | Index pulse output |
| 6 | NC | Not connected |
| 7 | NC | Not connected |
| 8 | NC | Not connected |
| 9 | NC | Not connected |
Below is an example of how to connect the AMT103 to an Arduino UNO and read the quadrature signals:
// AMT103 Quadrature Encoder Example
// This code reads the A and B signals from the encoder and calculates position.
#define ENCODER_PIN_A 2 // Connect to AMT103 A pin
#define ENCODER_PIN_B 3 // Connect to AMT103 B pin
volatile int position = 0; // Variable to store encoder position
void setup() {
pinMode(ENCODER_PIN_A, INPUT); // Set A pin as input
pinMode(ENCODER_PIN_B, INPUT); // Set B pin as input
// Attach interrupts to handle encoder signals
attachInterrupt(digitalPinToInterrupt(ENCODER_PIN_A), handleEncoder, 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 handleEncoder() {
// Read the current state of A and B pins
int stateA = digitalRead(ENCODER_PIN_A);
int stateB = digitalRead(ENCODER_PIN_B);
// Determine direction based on A and B signals
if (stateA == stateB) {
position++; // Clockwise rotation
} else {
position--; // Counterclockwise rotation
}
}
position variable stores the current position of the encoder. You can modify the code to reset or calibrate this value as needed.No Output Signals
Erratic Position Feedback
Incorrect Position Readings
Index Pulse Not Detected
Can the AMT103 be used with a 3.3 V microcontroller?
What is the purpose of the index pulse (Z)?
How do I configure the resolution of the AMT103?
What is the maximum rotational speed the AMT103 can handle?
By following this documentation, users can effectively integrate the AMT103 encoder into their projects and troubleshoot common issues with ease.