Motors
A motor turns electrical energy into motion: it spins a computer's fans, moves a printer's head and steers a model car. This article explains the force behind every motor, then the three kinds a beginner meets first, the brushed DC motor, the stepper motor and the servo motor: how each works, how to read its numbers, drive it, test it, and stay safe.
About the analogies. Everyday comparisons appear only in shaded "Analogy" boxes, and each says where it stops working.
1. A short recap
- A current in a coil of wire makes a magnetic field, and a changing magnetic field induces a voltage in a coil (recap). When the current in a coil is suddenly switched off, the coil can produce a large voltage spike (inductive kickback).
- A diode lets current flow one way only. Placed across a coil, a flyback diode gives that spike a safe path (recap).
- A transistor lets a small signal switch a much larger current; a MOSFET is the kind most used for this (recap). A relay is a switch moved by a coil (recap).
- PWM (pulse-width modulation) switches a supply on and off very quickly; the fraction of time it is on, the duty cycle, sets the average power (recap).
- A Hall-effect sensor detects a magnet without touching it (recap).
2. What a motor is, and the numbers that describe it
In an electric motor, loops of wire sit in a magnetic field; a current through them makes the field push on the wire, and the push turns a shaft, the rod that sticks out of the motor.[1] Three quantities describe the shaft:
- Torque is a turning force. It is a force multiplied by its distance from the center of rotation, measured in newton-meters (N·m).[1] Hobby datasheets often use kilogram-force centimeters (kg·cm, the pull of a 1 kg weight hanging 1 cm from the center) or ounce-inches (oz·in). One kg·cm is about 0.098 N·m, and one oz·in about 0.0071 N·m (calculated).[2]
- Speed is how fast the shaft turns, usually in revolutions per minute (RPM).
- Mechanical power is torque multiplied by speed: P = τω, where τ (tau) is the torque and ω (omega) is the speed in radians per second.[3] (60 RPM is 2π, about 6.28, rad/s.) A motor held still, or spinning with no load, does no useful work: power needs both torque and speed.
3. The physics: force, torque and switching the current
A magnetic field pushes sideways on a wire carrying a current. For a straight wire at right angles to the field, the force is F = IlB, where I is the current in amperes, l the length of wire in the field in meters, and B the field strength in teslas (T). The push is at right angles to both the wire and the field.[4] This is the same force that moves a speaker cone (recap).
Now bend the wire into a rectangular loop on a shaft, between the north and south poles of a magnet. Current flows one way along one side of the loop and the opposite way along the other, so the two sides are pushed in opposite directions. Together they twist the loop. For a coil of N turns, each enclosing area A, the torque is:[1]
τ = NIAB sin θ
where θ (theta) is the angle between the field and a line pointing straight out of the loop's face. More turns, more current, a bigger loop or a stronger magnet all give more torque, and the torque falls to zero when the loop's face points along the field.[1]
There is a catch. Past the zero-torque position the torque reverses, so the loop would just rock back and forth. To keep it turning, the current must reverse every half turn.[1] The brushed DC motor does this with sliding contacts; the stepper motor relies on an external circuit.
4. Brushed DC motors
How it is built
A brushed DC motor is the simplest and most common motor. It has four main parts:[5]
- the stator, the stationary outer part, which makes a fixed magnetic field with permanent magnets or with coils of wire;
- the rotor, also called the armature, the part that spins, carrying one or more coils (windings);
- the commutator, a copper sleeve on the shaft split into segments, each connected to a rotor winding;
- two brushes, usually carbon blocks, pressed against the commutator by springs, which carry current in from the motor's two terminals.
As the shaft turns, the brushes slide from one commutator segment to the next, so the current reaches the rotor windings in a changing order and the rotor's poles keep being pulled toward the stator's opposite poles. This switching is called commutation; here it is mechanical, with no control circuit.[5] With a single loop, the split ring's two halves swap brushes every half turn: exactly the reversal section 3 asked for.[1]
The brushes and commutator rub, so they are the parts that wear out.[5] Their bouncing contact also makes electrical noise (section 5).[6]
Analogy: a donkey chasing a carrot on a stick. The rotor's magnetic poles chase the stator's opposite poles, and the commutator keeps moving the target just as they arrive, so the chase never ends.
Where it breaks down: Nothing in the motor "wants" anything. The rotor turns because the magnetic force on the current in its wires makes a torque (τ = NIAB sin θ), and the commutator reverses that current at the moment the torque would otherwise reverse.
Common types
The permanent-magnet (PMDC) motor is the most common type: its speed follows the applied voltage, and its current follows the load torque, in nearly straight lines. Larger motors may make the stator field with coils instead, wired in parallel with the rotor (shunt-wound, for good speed control), in series (series-wound, for high torque) or both (compound-wound).[5]
A gearmotor adds a gearbox, which trades speed for torque: a 10:1 gearbox turns the output ten times slower and, apart from friction losses, about ten times stronger.[7][2] A brushless DC motor (BLDC) replaces the brushes with electronic switching, guided by built-in Hall-effect sensors or by sensing the back EMF described below. It is quieter, but needs a dedicated controller.[8]
Back EMF: why a running motor draws less current
A coil spinning in a magnetic field has a voltage induced in it; that is how a generator works.[9] So a turning motor is also a generator. The voltage it makes opposes the supply and is called back EMF (EMF, electromotive force, means a source voltage). It is zero when the shaft is still and grows in proportion to speed.[10]
Model the motor's coil as a resistance R in series with the back EMF E (Figure 3). The current is then:
I = (V − E) / R
OpenStax's example: coils of 0.400 Ω on 48.0 V. At switch-on there is no back EMF, so 120 A flows, heating the coils at 5.76 kW. At running speed the back EMF is 40.0 V, leaving 8.0 V across the coil, and the current falls to 20 A. That is why lights dim briefly when a refrigerator starts.[10]
Back EMF also lets a motor adjust to its load. Load the shaft and the motor slows, the back EMF drops, and more current flows to make more torque. Unloaded, it speeds up until the back EMF nearly equals the supply.[10]
Speed, torque and stall
So a permanent-magnet motor follows two nearly straight lines (Figure 4).[5][10] Speed falls as torque rises, from the no-load speed to zero at the stall torque. Current rises with torque, from a small no-load current (enough to overcome friction) to the stall current, which is simply the supply voltage divided by the coil's resistance. And speed follows voltage: halve the voltage and, ideally, the speed halves.[5]
A stalled motor does no work, so all its power becomes heat in the coils; a motor forced to run too slowly can burn out.[10] Pololu calls the stall figures for its small gearmotors "theoretical values", warning that stalls could damage them.[7]
Units and markings
Small brushed motors rarely carry markings; the numbers come from a datasheet. A "130-size" hobby motor (a common case size) lists:[11]
| Quantity | Value | What it means |
|---|---|---|
| Rated voltage | 6.0 V DC | The voltage the other numbers apply to |
| No-load speed / current | 9,100 ± 1,800 RPM / 70 mA max | Spinning freely |
| Loaded speed / current | 4,500 ± 1,500 RPM / 250 mA max | At its intended working load |
| Starting (stall) torque | 20 g·cm (about 2 mN·m, calculated) | The most torque it can make |
| Stall current | 500 mA max | Current when held still |
A similar Pololu motor draws about 70 mA spinning freely but around 800 mA stalled at 6 V,[12] so its coil resistance is roughly 6 V / 0.8 A = 7.5 Ω (calculated). Design around the stall current, not the running current: every motor briefly draws it at switch-on.[10] Polarity only sets direction: reverse the wires and the motor runs backward.[5]
5. Driving a DC motor
Never from a microcontroller pin
A microcontroller, the small computer chip on boards such as the Arduino Uno, cannot power a motor directly. The Uno's ATmega328P is rated for at most 40 mA per pin,[13] while even a small motor can draw 800 mA when stalled,[12] twenty times as much. The pin only signals a driver, a transistor circuit or chip that switches the motor's current.
One direction: a transistor switch
For one direction, put a MOSFET between the motor and ground, a low-side switch (Figure 5). Microchip adds a diode across the motor, a gate resistor (R1) to protect the microcontroller from current spikes, and a resistor (R2) from gate to ground to keep the MOSFET off while the pin is not driven.[5]
The diode is essential. When the MOSFET switches off, the winding's current must keep flowing for a moment; without a path, it makes a voltage spike that can destroy the MOSFET. The diode, stripe toward the positive supply, gives that current a loop back through the motor.[5][14] It is the same flyback diode used across relay coils (recap).
Speed control with PWM
Since speed follows voltage, a driver slows a motor by switching the full supply on and off with PWM, rather than wasting power in a series resistor. The average voltage is:[5]
Vaverage = D × Vsupply
where D is the duty cycle (0 to 1). The winding's inductance smooths the pulses into a steady current, so a motor rated 15,000 RPM at 12 V ideally turns at 7,500 RPM at 50% duty. Microchip suggests 4 to 20 kHz: lower is noisy and sluggish, higher wastes power in the transistors.[5]
Both directions: the H-bridge
Reversing a motor means reversing its current. The H-bridge, named for its shape on a schematic, does this with four switches and the motor across the middle (Figure 6); each side is a half-bridge. Q1 and Q4 on drives current one way (forward); Q3 and Q2 on drives it the other way (reverse). All off lets the motor coast. Both bottom switches on brakes it: a spinning motor is a generator, and shorting its terminals stops it quickly.[5]
One rule matters above all: never turn on both switches on the same side. That shorts the supply to ground and destroys them.[5] Even a too-quick changeover can leave both on for an instant, so drivers insert a short dead time with all switches off.[14] Each switch also needs a diode (often built into the MOSFET) to carry the motor's current when the bridge switches.[5][14]
Driver chips
Most projects use a driver integrated circuit, a complete circuit on one chip (recap):
- L293D: four half-bridges (enough for two motors), 4.5 to 36 V, up to 600 mA per channel, with the clamp diodes built in. The older L293 handles 1 A but needs external diodes.[15] It powered many early Arduino motor shields.[2]
- DRV8833: two MOSFET H-bridges for two DC motors or one stepper, 2.7 to 10.8 V, up to 1.5 A RMS per bridge in its thermally enhanced packages, with protection against overcurrent, short circuits, low supply voltage and overheating. Two inputs per motor set it: 1 0 forward, 0 1 reverse, 0 0 coast, 1 1 brake, with PWM on one input for speed.[16]
Whatever the driver, check that its continuous current rating covers the motor,[8] and power the motor from its own supply with a shared ground: a board's small onboard regulator struggles with anything but the smallest servo[17] (regulator heat).
Taming motor noise
Brush bounce and the coils' inductance put noise on the power lines that can upset sensors or reset a microcontroller. Pololu recommends a 0.1 µF ceramic capacitor across the motor's terminals (non-polarized, since the motor may reverse), short twisted motor leads kept away from signal wires, and a large electrolytic capacitor across the supply near the electronics[6] (decoupling).
Knowing how fast it turns
Load, heat and wear change a motor's speed, so precise control needs feedback, a measurement of what the motor is doing. An encoder is a slotted wheel on the shaft between an infrared LED and a phototransistor, giving a pulse per slot; a magnet wheel and a Hall-effect sensor work the same way. Or measure the back EMF between PWM pulses.[5]
6. Stepper motors
A stepper motor turns in fixed increments called steps. It has no brushes: a driver switches current through the stator coils in sequence, and the rotor moves one step per change. If it is not overloaded, the controller knows the shaft's position just by counting steps, with no sensor (open-loop positioning), and the motor can hold its shaft still.[18] Hence steppers in 3D printers, CNC machines and plotters.[2]
How it works
The coils are grouped into phases, switched together.[2] In the common permanent-magnet and hybrid steppers, the rotor is a magnet. Energize a phase and its stator poles become magnets that pull the rotor's opposite poles into line; the current's direction decides which pole is north. Energize the next phase and the rotor moves on.[18] (A third type, variable reluctance, uses an unmagnetized toothed iron rotor.[18])
The step angle is the turn per step: a 1.8° motor takes 200 steps per revolution.[2] Permanent-magnet steppers commonly step 7.5° or 3.6°; finely toothed hybrids 3.6° to 0.9°.[18]
Full steps, half steps and microsteps
- Full step, one phase on: uses the least power.[18]
- Full step, two phases on: the rotor sits between two energized poles. Same step size, more torque, more power.[18]
- Half step: alternate one and two phases on. Each move is half a step, so a 200-step motor gives 400 positions (calculated), though the torque varies from step to step.[18]
- Microstepping: intermediate coil currents place the rotor between full steps; in quarter-step mode a 200-step motor gives 800 microsteps per revolution.[19]
Holding torque and its relatives
The headline figure is holding torque: the torque needed to turn the shaft while the windings are energized and still. Detent torque is the smaller torque needed with the power off; the rotor magnet still pulls on the stator, so an unpowered stepper feels "notchy". Pull-in and pull-out torque are the loads it can start against and keep moving at a given step rate.[18] Torque falls as the step rate rises, and most steppers are limited to below 1,000 steps per second. Overload makes the motor slip, missing steps so that the controller no longer knows the position,[18] which is why machines use a limit switch to find a "home" position.[2]
Unipolar and bipolar
- A unipolar stepper has two windings, each with a center tap (a wire to its middle) connected to the supply; the driver grounds one half-winding or the other. It has 5 or 6 wires and needs only simple transistor switches.[18]
- A bipolar stepper has two windings and four wires; each winding's current must reverse, so it needs two H-bridges. Using the whole winding gives roughly 30% more torque than a unipolar motor of the same size.[18]
- An 8-wire motor can be connected either way.[2]
Units and markings
Two figures matter most: the current per phase, the most a winding can carry without overheating, and the resistance per phase. Any rated voltage usually follows from them by Ohm's law.[2]
| NEMA 17 bipolar (Adafruit 324) | Small geared unipolar (Adafruit 858) | |
|---|---|---|
| Steps per revolution | 200 (1.8°) | 32 at the motor, about 516 at the shaft through 1:16.128 gearing |
| Rated voltage and current | 12 V, 350 mA | 5 V |
| Resistance per winding | 35 Ω | about 42 Ω |
| Holding torque | 20 N·cm (0.2 N·m) | 150 g·cm (15 mN·m) |
| Wires | 4 | 5 |
Check: 12 V across 35 Ω gives about 340 mA (calculated). NEMA 17 describes only the mounting faceplate size; two NEMA 17 motors can have quite different electrical ratings.[2]
Driving a stepper
- Unipolar: four transistor switches. The ULN2003A holds seven Darlington switches rated 500 mA and 50 V, with clamp diodes built in,[22] plenty for the small geared motor above at about 120 mA per winding (5 V / 42 Ω, calculated).
- Bipolar: two H-bridges, such as an L293D or DRV8833.[2][16] These apply a fixed voltage, so the motor's resistance must limit the current.[2]
- Current-limiting ("chopper") drivers use a higher voltage so the current builds faster at each step, then "chop" it at a set limit, giving more torque at speed.[2] The popular A4988 handles up to 35 V and ±2 A, full to sixteenth steps; each pulse on its STEP pin moves one microstep, in the direction set by its DIR pin.[23] On Pololu's board a trimmer sets the current limit; about 1 A per phase needs no heat sink.[19]
Two surprises: a stepper draws its most current standing still, so it runs hot even when idle; and because most modes energize two phases, the supply should be rated for at least twice the current per phase.[2]
7. Servo motors
A servomechanism, or servo, uses feedback to reach a desired result. A hobby servo (or RC servo, from radio control) is a small box holding a DC motor, a gearbox, a potentiometer (a variable resistor) turned by the output shaft, and a control circuit, with three wires: power, ground and signal.[17]
The feedback loop
The signal gives the desired position; the potentiometer reports the actual one. The control circuit compares them and drives the motor, usually through a small H-bridge, in whichever direction makes them match.[17] This is closed-loop control, unlike the stepper's open loop: push the shaft away and the circuit pushes back.
Analogy: a thermostat. You set the temperature you want; the thermostat compares it with the room's measured temperature and turns the heater on until they match. A servo does the same with position.
Where it breaks down: A thermostat only switches a heater on or off, and only heats. A servo's H-bridge can push the motor either way, so it corrects an overshoot as well as an undershoot, and it reads its position fifty times a second.
The control pulse
The signal wire carries a pulse every 20 milliseconds (50 Hz). The pulse width, typically 1 to 2 ms, sets the position, with 1.5 ms at the center. A common servo turns about 90° over that range, but this is a convention, not a standard: some turn farther with wider pulses, and driving them past their stops can damage them.[17] Adafruit's SG92R micro servo turns about 180° and may need 0.75 to 2.25 ms to reach its ends.[24]
Microcontroller PWM hardware can make these pulses.[17] The Arduino Servo library defaults to 544 to 2,400 microseconds (µs), centered on 1,500 µs and repeated every 20,000 µs;[25] those ends are wider than many servos accept, so set narrower limits if yours strains at the ends.[17]
Position or continuous rotation
A continuous-rotation servo spins all the way around, and its pulse sets speed and direction: on the FeeTech FS5103R, 1.5 ms is stop, 2 ms full speed one way, 1 ms full speed the other, with a trimmer to make 1.5 ms truly stop.[26][17] Strictly it is no longer a servo, since its position feedback is disabled.[8] Top speed is around 60 RPM.[17]
Units, markings and power
- Wire colors: the drabbest wire (black or brown) is usually ground and red is power; the third (yellow, white or orange, depending on the maker) is the signal.[17]
- Voltage: typically 4.8 to 6 V; 4.8 V is the nominal radio-control battery voltage.[17] The SG92R is rated 4.8 V nominal (3 to 6 V).[24]
- Torque, in kg·cm: 2.5 kg·cm for the 9-gram SG92R, 3 kg·cm stall torque at 4.8 V for the larger FS5103R.[24][26]
- Speed, as time per 60° of travel: 0.1 s/60° at 4.8 V for the SG92R.[24]
Current varies with load, from about 10 mA for a small idle servo to an ampere or more for a large one straining. A stalled servo can drag the supply down and reset the microcontroller, so use a supply that can deliver the current, with separate wires from it to each servo.[17]
8. Which motor for which job?
| Brushed DC | Stepper | Hobby servo | |
|---|---|---|---|
| Best at | Continuous, fast rotation | Exact positions and speeds | Moving to an angle and holding it |
| Control | Voltage or PWM; H-bridge to reverse | Step sequence from a driver | One pulse every 20 ms |
| Knows its position? | Only with an encoder | By counting steps (open loop) | Yes, from its potentiometer (closed loop) |
| Watch out for | Stall current, brush noise | Missed steps, heat at standstill | Limited travel and speed, supply sag |
9. Testing
- DC motor resistance. Power off, meter across the terminals: a small motor reads a few ohms (about 7.5 Ω for the Pololu motor, calculated). No reading at all points to a broken winding or worn brushes.[5]
- DC motor as a generator. On DC volts, spin the shaft by hand: a healthy motor makes a voltage that rises with speed and flips sign when you reverse.[9][10]
- Current. With the meter in series, an unloaded motor should draw near its no-load current. Check stall current only for a moment; a stalled motor heats fast.[10][7]
- Stepper coils. Two wires showing a resistance belong to the same winding; wires from different windings show no connection. Compare with the resistance per phase.[2] A unipolar center tap reads about half the full winding to each end, since it sits at the winding's middle (calculated).[18]
- Servo. A 1.5 ms pulse should center a positional servo and stop a continuous one (if not, adjust its trimmer). Sweep slowly toward the ends, and check that the supply voltage does not sag while it moves.[17][26]
10. Everyday uses
- Brushed DC: toys, cordless tools, phone vibration motors, power car seats, and the insides of RC servos.[5][8] Brushless: computer fans, disk drives, drones and electric vehicles.[8]
- Steppers: inkjet and 3D printers, CNC machines, metering pumps and camera platforms.[18][2]
- Servos: steering in radio-controlled models, robot arms and animatronics.[17]
11. Safety
- Design for stall current. Every motor draws it at switch-on and when jammed. Size the driver, wiring and supply for it, and never leave a motor stalled: the heat can burn out the windings.[10][7] Overloading a driver will likely burn it out.[8]
- Give a coil's current somewhere to go. Fit a flyback diode across a transistor-switched motor and use drivers with clamp or body diodes;[5][15][14] otherwise the switch-off spike can destroy the switch (inductive kickback).
- Never short a half-bridge. Hold every H-bridge input off while the microcontroller starts, for example with pull-down resistors.[5]
- Protect the logic. Keep motor current off the microcontroller's pins and regulator, share grounds, and add noise capacitors.[13][6][17]
- Wire with the power off.[8] Connecting or disconnecting a stepper while its driver is powered can destroy the driver; Pololu also recommends at least 47 µF across the A4988 board's motor supply against voltage spikes.[19]
- Fuse the wiring. Use wire thick enough for the current, with a fuse if the supply can deliver more than the wire can carry (choosing a fuse). Shorted batteries and supplies can cause fire, so double-check polarity[8] (lithium safety).
- Respect moving parts. Wear eye protection, keep wires and tools clear, and stand back from mechanisms when applying power; they can move suddenly.[8] Steppers run hot,[2] so touch motors and drivers carefully.
The whole story in brief
- A current loop in a magnetic field feels a torque τ = NIAB sin θ; reversing the current every half turn keeps it turning.
- A brushed DC motor reverses it with brushes and a commutator. Speed follows voltage, current follows load, and back EMF limits the running current; stalled, it draws the most.
- Drive motors through transistors or driver chips, never a pin: PWM for speed, an H-bridge for direction, diodes for the coil's current.
- A stepper moves in fixed steps (full, half or micro) as its phases are switched; holding torque keeps it still, overload makes it slip.
- A hobby servo closes the loop with a potentiometer; a 1 to 2 ms pulse every 20 ms sets its position, or a continuous servo's speed.
- Design for stall current, separate motor and logic power, and keep fingers clear.
Coming up in this section: 21 Crystals and Oscillators.
Sources
- OpenStax, College Physics 2e, section 22.8, "Torque on a Current Loop: Motors and Meters": https://openstax.org/books/college-physics-2e/pages/22-8-torque-on-a-current-loop-motors-and-meters
- Bill Earl, Adafruit Learning System, "All About Stepper Motors" (updated June 2024, PDF): https://cdn-learn.adafruit.com/downloads/pdf/all-about-stepper-motors.pdf
- OpenStax, University Physics Volume 1, section 10.8, "Work and Power for Rotational Motion": https://openstax.org/books/university-physics-volume-1/pages/10-8-work-and-power-for-rotational-motion
- OpenStax, College Physics 2e, section 22.7, "Magnetic Force on a Current-Carrying Conductor": https://openstax.org/books/college-physics-2e/pages/22-7-magnetic-force-on-a-current-carrying-conductor
- Reston Condit, Microchip Technology, AN905 "Brushed DC Motor Fundamentals" (DS00905B, 2010, PDF): https://ww1.microchip.com/downloads/en/AppNotes/00905B.pdf
- Pololu, "Using the Motor Driver on the 3pi Robot and Orangutan Robot Controllers", section 9, "Dealing with Motor Noise": https://www.pololu.com/docs/0J15/9
- Pololu, "10:1 Micro Metal Gearmotor HPCB 6V" product page (item 3061): https://www.pololu.com/product/3061
- Bill Earl, Adafruit Learning System, "Adafruit Motor Selection Guide" (PDF): https://cdn-learn.adafruit.com/downloads/pdf/adafruit-motor-selection-guide.pdf
- OpenStax, College Physics 2e, section 23.5, "Electric Generators": https://openstax.org/books/college-physics-2e/pages/23-5-electric-generators
- OpenStax, College Physics 2e, section 23.6, "Back Emf": https://openstax.org/books/college-physics-2e/pages/23-6-back-emf
- Adafruit, "DC Toy / Hobby Motor - 130 Size" product page (product 711): https://www.adafruit.com/product/711
- Pololu, "Brushed DC Motor: 130-Size, 6V, 11.5kRPM, 800mA Stall" product page (item 1117): https://www.pololu.com/product/1117
- Microchip Technology, ATmega48A/PA/88A/PA/168A/PA/328/P data sheet (DS40002061B, 2020), "Absolute Maximum Ratings" (PDF): https://ww1.microchip.com/downloads/aemDocuments/documents/MCU08/ProductDocuments/DataSheets/ATmega48A-PA-88A-PA-168A-PA-328-P-DS-DS40002061B.pdf
- Murugavel Raju, Texas Instruments, "Current Recirculation and Decay Modes" (SLVA321A, revised April 2021, PDF): https://www.ti.com/lit/an/slva321/slva321.pdf
- Texas Instruments, L293x Quadruple Half-H Drivers data sheet (SLRS008D, revised January 2016, PDF): https://www.ti.com/lit/ds/symlink/l293.pdf
- Texas Instruments, DRV8833 Dual H-Bridge Motor Driver data sheet (SLVSAR1E, revised July 2015, PDF): https://www.ti.com/lit/ds/symlink/drv8833.pdf
- SparkFun Electronics, "Hobby Servo Tutorial": https://learn.sparkfun.com/tutorials/hobby-servo-tutorial
- Reston Condit and Douglas W. Jones, Microchip Technology, AN907 "Stepping Motors Fundamentals" (DS00907A, 2004, PDF): https://ww1.microchip.com/downloads/en/AppNotes/00907a.pdf
- Pololu, "A4988 Stepper Motor Driver Carrier" product page (item 1182): https://www.pololu.com/product/1182
- Adafruit, "Stepper motor - NEMA-17 size - 200 steps/rev, 12V 350mA" product page (product 324): https://www.adafruit.com/product/324
- Adafruit, "Small Reduction Stepper Motor - 5VDC 32-Step 1/16 Gearing" product page (product 858): https://www.adafruit.com/product/858
- Texas Instruments, ULN200x, ULQ200x High-Voltage, High-Current Darlington Transistor Arrays data sheet (SLRS027T, revised March 2025, PDF): https://www.ti.com/lit/ds/symlink/uln2003a.pdf
- Allegro MicroSystems, A4988 DMOS Microstepping Driver with Translator and Overcurrent Protection data sheet (PDF): https://www.allegromicro.com/-/media/files/datasheets/a4988-datasheet.pdf
- Adafruit, "Micro servo [TowerPro SG92R]" product page (product 169): https://www.adafruit.com/product/169
- Arduino, Servo library source,
Servo.h(GitHub, arduino-libraries/Servo): https://github.com/arduino-libraries/Servo/blob/master/src/Servo.h - Adafruit, "Continuous Rotation Servo [FeeTech FS5103R]" product page (product 154): https://www.adafruit.com/product/154