Overview
The 1027 is a flat "coin" vibration motor — 10 mm across, under 3 mm thick — the same class of part that buzzes in phones and smartwatches. Feed it around 3V and its internal eccentric weight spins up to produce silent, tactile vibration for notifications, alarms, haptic feedback on buttons, and wearables where an LED or beeper won't do.
It is a two-wire brushed motor with tiny lead wires, and it should be driven through a small transistor with a flyback diode rather than straight off a GPIO pin. PWM lets you shape intensity: short pulses read as taps, ramps feel like modern phone haptics. The circuit and code below give you both.
At a Glance
Specifications
| Parameter | Value |
| Model | 1027 flat coin vibration motor (ERM type) |
| Rated Voltage | 3.0V DC (typical operating window ~2.5-3.5V) |
| Rated Current | ~60-90 mA (startup surge higher) |
| Start Voltage | ~2.3V or lower |
| Rated Speed | ~9,000-12,000 RPM |
| Dimensions | 10 mm diameter x 2.7 mm thick |
| Mounting | Adhesive pad or clamp — vibration transfers best when pressed against the enclosure |
| Lead Wires | Fine gauge — strain-relieve them; they do not survive repeated flexing |
| Load Type | Inductive brushed motor — flyback diode required |
Wiring & Driving Guide
Drive it with any small NPN transistor (2N2222, S8050) or logic-level MOSFET (2N7000, AO3400):
| Connection | Goes To |
|---|---|
| Motor lead 1 | +3.3V rail (ideal) or 3V battery |
| Motor lead 2 | Transistor collector / MOSFET drain |
| Emitter / source | GND, shared with the microcontroller |
| Base via 1k / gate via 220R | PWM-capable GPIO (D9 Arduino, GP15 Pico) |
| Flyback diode (1N4148/1N4001) | Across motor leads, cathode (stripe) to + |
| Optional 0.1 µF ceramic cap | Across motor leads — tames brush noise |
Code Examples
Arduino: notification buzz patterns
// 1027 coin motor through a transistor on D9 (PWM).
// Motor powered from 3.3V; duty values here assume that rail.
const int MOTOR_PIN = 9;
void buzz(int strength, int ms) { // strength 0-255
analogWrite(MOTOR_PIN, strength);
delay(ms);
analogWrite(MOTOR_PIN, 0);
}
void setup() {
pinMode(MOTOR_PIN, OUTPUT);
}
void loop() {
// Single tap
buzz(255, 80);
delay(1000);
// Double tap
buzz(255, 60); delay(100); buzz(255, 60);
delay(1000);
// Soft ramp (phone-style)
for (int p = 60; p <= 255; p += 15) {
analogWrite(MOTOR_PIN, p);
delay(30);
}
analogWrite(MOTOR_PIN, 0);
delay(2000);
}
Pico (MicroPython): intensity control
# Coin motor via transistor on GP15, motor powered from 3V3.
from machine import Pin, PWM
import time
motor = PWM(Pin(15))
motor.freq(1000)
def vibe(percent, ms):
motor.duty_u16(int(65535 * percent / 100))
time.sleep_ms(ms)
motor.duty_u16(0)
while True:
vibe(100, 80) # tap
time.sleep(1)
vibe(60, 300) # soft buzz
time.sleep(1)
for p in range(30, 101, 10): # rising alert
motor.duty_u16(int(65535 * p / 100))
time.sleep_ms(40)
motor.duty_u16(0)
time.sleep(2)



