Overview
The TT gear motor is the standard drive motor of hobby robotics: a small brushed DC motor married to a 1:48 plastic gearbox in the familiar yellow housing. The gearing trades raw speed for usable torque, spinning its double-D output shaft at roughly wheel speed โ which is why nearly every line follower, obstacle-avoiding robot, and DIY rover you've seen rolls on these.
It runs on 3-6V and pairs with common motor drivers โ L298N, TB6612FNG, DRV8833 โ for speed (PWM) and direction (H-bridge) control from Arduino, ESP32, Raspberry Pi, or Pico. It is a two-wire motor with no polarity to "get wrong": swap the wires and it simply spins the other way, which you'll use deliberately for steering.
At a Glance
Specifications
| Parameter | Value |
| Operating Voltage | 3-6V DC |
| Gear Ratio | 1:48 (plastic gearbox) |
| No-Load Speed | ~90-125 RPM at 3-4.5V, up to ~200 RPM at 6V |
| No-Load Current | ~120-200 mA |
| Stall Current | ~0.8-1.5 A (budget your driver and battery for this) |
| Torque | ~0.8 kgยทcm class at 6V |
| Output Shaft | Double-sided double-D (fits standard TT wheels) |
| Motor Type | Brushed DC (130-size) |
| Mounting | Through-holes for M3 bolts / chassis brackets |
Wiring & Driving Guide
The motor's two tabs go to a driver's outputs โ never to GPIO pins, and ideally not straight to a battery unless you only ever need full-speed-one-direction. Typical L298N hookup for one motor:
| Connection | Goes To |
|---|---|
| Motor tab 1 / tab 2 | L298N OUT1 / OUT2 |
| L298N IN1 / IN2 (direction) | Two GPIO pins (e.g. D8, D7 on Arduino) |
| L298N ENA (speed, PWM) | PWM GPIO (e.g. D9) โ or jumpered for full speed |
| L298N +12V/VS terminal | Battery pack + (4xAA or 2S pack work well) |
| L298N GND | Battery โ AND microcontroller GND (shared) |
Code Examples
Arduino: speed and direction via L298N
// One TT motor on L298N: IN1=D8, IN2=D7, ENA=D9 (PWM)
const int IN1 = 8;
const int IN2 = 7;
const int ENA = 9;
void setMotor(int speed) {
// speed: -255 (full reverse) .. 255 (full forward)
if (speed >= 0) {
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
} else {
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
speed = -speed;
}
analogWrite(ENA, speed);
}
void setup() {
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(ENA, OUTPUT);
}
void loop() {
setMotor(180); // forward, ~70%
delay(2000);
setMotor(0); // stop
delay(500);
setMotor(-180); // reverse
delay(2000);
setMotor(0);
delay(500);
}
Pico (MicroPython): ramped drive
# TT motor on L298N from a Pico:
# IN1=GP2, IN2=GP3, ENA=GP4 (PWM). Grounds shared.
from machine import Pin, PWM
import time
in1 = Pin(2, Pin.OUT)
in2 = Pin(3, Pin.OUT)
ena = PWM(Pin(4))
ena.freq(1000)
def drive(percent):
"""-100..100; negative = reverse."""
if percent >= 0:
in1.value(1); in2.value(0)
else:
in1.value(0); in2.value(1)
percent = -percent
ena.duty_u16(int(65535 * percent / 100))
# Soft start forward, cruise, stop, reverse
for p in range(0, 81, 10):
drive(p)
time.sleep(0.1)
time.sleep(2)
drive(0)
time.sleep(0.5)
drive(-60)
time.sleep(2)
drive(0)