Pancake Vibration Motor
Category:
Subcategory:
Signal Type:
n/a
IDeATe Component Number:
0450
Vibrates quickly when powered. Usually used as a simple tactile signal. Operates at 5V.
Pancake Vibration Motor
About

Vibration motors are perfect as non-audible indicators. Use in any number of applications to indicate to the wearer when a status has changed. The unit vibrates softly but noticeably. (Adapted from Sparkfun)

There are two primary types:

ERA vibration motor
ERA vibration motor | Image from precisionmicrodrives.com

Eccentric Rotating Mass vibration motors use the magnetic field from an electrical current to drive an object in a circle. The rotating mass is off-center from the point of rotation, which produces an uneven centripetal force, causing vibrations. The DC current supplied dictates the vibrational intensity. (Adapted from Azom.com)

LRA vibration motor
LRA vibration motor | Image from precisionmicrodrives.com

A Linear Resonant Actuator uses an alternative current (AC) voltage to drive a voice coil. This voice coil is pressed against a moving mass which is attached to a spring. When the voice coil is at the same resonant frequency as the spring, a magnetic field is generated and the whole actuator vibrates with a noticeable force.

Both the frequency and the amplitude of the actuator can be adjusted by changing the AC input. However, regardless of the input, the actuator must be driven at its resonant frequency to generate a large enough force. As such, linear resonant actuators can only be effectively used in a narrow frequency range; and they are ideal for those who wish to operate in a specific frequency range but still want to produce haptic waveforms. (Adapted from Azom.com)

Use DC to power the LRA's in the Physical Computing lab as they come with a built in driver that converts DC to AC.

Getting started
Vibration motor schematic
Vibration motor schematic

The above circuit uses a transistor to switch the motor on and off.

const int MOTORPIN = 5;

void setup()
{
  pinMode(MOTORPIN, OUTPUT);
}

void loop()
{
  digitalWrite(MOTORPIN, HIGH);
  delay(1000);
  digitalWrite(MOTORPIN, LOW);
  delay(1000);
}
Resources
Related Components