

The TI-RSLK MAX Gearmotor and Encoder Assembly for Romi (Manufacturer Part ID: 3675) is a compact and efficient gearmotor designed specifically for the Romi robot platform. Manufactured by Pololu, this assembly integrates a DC motor, a gearbox, and an encoder, providing precise position and speed feedback. This makes it ideal for applications requiring accurate control and movement, such as robotics, automation, and educational projects.








| Parameter | Value |
|---|---|
| Manufacturer | Pololu |
| Part ID | 3675 |
| Motor Type | Brushed DC motor with integrated encoder |
| Gear Ratio | 120:1 |
| Operating Voltage Range | 6 V to 9 V |
| No-Load Speed (at 6 V) | ~150 RPM |
| Stall Torque (at 6 V) | ~1.5 kg·cm |
| Encoder Resolution | 12 counts per revolution of the motor shaft (1440 counts per revolution of the gearbox output shaft) |
| Dimensions | 25 mm × 25 mm × 25 mm (approx.) |
| Weight | ~50 g |
The encoder assembly includes a 6-pin header for interfacing with the motor and encoder. The pinout is as follows:
| Pin Number | Label | Description |
|---|---|---|
| 1 | VCC | Power supply for the encoder (3.3 V or 5 V, depending on your system) |
| 2 | GND | Ground connection |
| 3 | A | Encoder channel A output (quadrature signal) |
| 4 | B | Encoder channel B output (quadrature signal) |
| 5 | M+ | Motor positive terminal |
| 6 | M- | Motor negative terminal |
Powering the Motor and Encoder:
Reading Encoder Signals:
Controlling the Motor:
Below is an example of how to read the encoder signals and control the motor using an Arduino UNO:
// Define encoder pins
const int encoderPinA = 2; // Encoder channel A connected to digital pin 2
const int encoderPinB = 3; // Encoder channel B connected to digital pin 3
// Define motor control pins
const int motorPinPWM = 9; // PWM pin for motor speed control
const int motorPinDir = 8; // Direction control pin
volatile int encoderCount = 0; // Variable to store encoder counts
void setup() {
// Initialize serial communication
Serial.begin(9600);
// Set encoder pins as inputs
pinMode(encoderPinA, INPUT);
pinMode(encoderPinB, INPUT);
// Attach interrupt to encoder channel A
attachInterrupt(digitalPinToInterrupt(encoderPinA), encoderISR, CHANGE);
// Set motor control pins as outputs
pinMode(motorPinPWM, OUTPUT);
pinMode(motorPinDir, OUTPUT);
}
void loop() {
// Print encoder count to the serial monitor
Serial.print("Encoder Count: ");
Serial.println(encoderCount);
// Example: Set motor speed and direction
digitalWrite(motorPinDir, HIGH); // Set motor direction
analogWrite(motorPinPWM, 128); // Set motor speed (50% duty cycle)
delay(100); // Delay for stability
}
// Interrupt Service Routine (ISR) for encoder
void encoderISR() {
// Read both encoder channels
int stateA = digitalRead(encoderPinA);
int stateB = digitalRead(encoderPinB);
// Determine direction based on quadrature encoding
if (stateA == stateB) {
encoderCount++; // Forward rotation
} else {
encoderCount--; // Reverse rotation
}
}
Motor Not Spinning:
Encoder Not Providing Output:
Inconsistent Encoder Readings:
Motor Overheating:
Q: Can I use this gearmotor assembly with a 12 V power supply?
A: No, the recommended operating voltage range is 6 V to 9 V. Using a higher voltage may damage the motor or encoder.
Q: How do I calculate the distance traveled by the robot?
A: Use the encoder counts and the wheel circumference. For example:Distance = (Encoder Counts / Encoder Resolution) × Wheel Circumference
Q: Can I use this gearmotor assembly with platforms other than Romi?
A: Yes, the gearmotor can be used with other platforms, provided it is mounted securely and the electrical connections are compatible.
Q: What is the purpose of the encoder?
A: The encoder provides feedback on the motor's position and speed, enabling precise control in robotics applications.