Posted in

How to control the speed of a 16mm DC Gear Motor?

If you’ve ever worked with small-scale automation projects, robotics, or precision positioning tasks, you’ve likely encountered 16mm DC gear motors. As a supplier of these compact, reliable motors, I talk to hobbyists, engineers, and small production teams every week who say the same thing: “I can’t get my motor to move at the speed I need.” The 16mm DC gear motor’s size makes it ideal for tight spaces—think camera gimbals, small conveyor belts, or automated door locks—but its speed requires intentional control, not just a random power hookup. Over the past years working with these motors, I’ve tested every common method, and I’m going to break down what actually works, why, and how you can implement it without wasting parts or time. 16mm DC Gear Motor

First, let’s start with the basics: what a 16mm DC gear motor is, for context. This is a brushed DC motor paired with a gear reduction stage that sits inside the 16mm diameter housing. The gearbox lowers the motor’s high no-load speed (which can hit 10,000 RPM or more for the bare motor) to a usable range, usually 10 RPM to 1,000 RPM, depending on the gear ratio. Speed here is directly tied to voltage, but that’s not the whole story—you can’t just plug a 12V motor into a 9V battery and call it done for consistent, repeatable speed, especially under load. A lot of new users miss that: if your motor is driving a small part (like a pen on a plotter) or a load (like a tiny conveyor holding a component), that load will pull the speed down, so you need control that accounts for both voltage and load.

The most straightforward method, and the one most people start with, is variable voltage control. DC motors run on the principle that speed is proportional to armature voltage (this is called the speed-voltage relationship, taught in basic electrical engineering, but it’s easy to apply). For a 16mm DC gear motor rated at 12V, running it at 6V will roughly halve its speed, 9V will bring it to three-quarters, and so on. But here’s the catch: this only works well when load is consistent. If your motor is running a small project where the load never changes, this is simple—use a variable power supply or a potentiometer (a dial that adjusts resistance) in series with the motor. Wait, let’s be clear: a potentiometer isn’t just a resistor you plug in. You need a potentiometer rated for enough current to handle the motor’s draw. A typical 16mm DC gear motor draws 0.1A to 0.5A under no load, so a 1W or 2W potentiometer (1kΩ or 10kΩ) will work. But if you’re pulling the motor to its rated load, say 1A, a small potentiometer will burn out. I’ve seen this happen so many times: a hobbyist grabs a $1 pot from a hobby store, plugs it in, and it melts after 10 minutes. Don’t do that. If you’re using variable voltage, pair it with a resistor rated for the motor’s continuous current, or use a properly sized variable power supply.

But variable voltage has a big flaw: it’s open-loop, meaning you’re only adjusting based on voltage, not actual speed. If your motor’s load increases—say, a small part jams on your conveyor—the motor will slow down, and voltage control won’t fix that. That’s where pulse-width modulation (PWM) comes in, which is the method I recommend for 90% of users working with 16mm DC gear motors, whether for hobby or small automation. PWM works by switching the power to the motor on and off very quickly, thousands of times per second. The “duty cycle” is the percentage of time the power is on: a 50% duty cycle means the motor gets power half the time, which works out to roughly half its rated speed, same as running at half voltage. But here’s why PWM is better for control: it’s efficient, so you don’t waste power as heat like you do with a variable resistor, and it handles load changes way better. If the load increases, you can adjust the duty cycle to compensate, and the motor’s speed stays consistent.

Now, how to implement PWM for a 16mm DC gear motor? You don’t need an expensive industrial controller. For Arduino users, just use a digital pin configured for PWM (marked with a ~) and a motor driver module. Wait, that’s another key point: you can’t run a DC motor directly from an Arduino pin. The Arduino’s pins only output 5V or 3.3V at up to 40mA, which is way too little for a 16mm DC gear motor (most draw 100mA or more, even at low speeds). A motor driver like the L298N or the smaller, more efficient L293D is perfect here—they take the low-power PWM signal from the Arduino and use it to switch the higher power needed for the motor. I’ve tested this dozens of times with 16mm DC gear motors: set the Arduino’s PWM signal between 0 (off) and 255 (full speed), and you’ll get a speed range that’s smooth, consistent, and works even with small load changes. For someone not using Arduino, there are standalone PWM modules that connect directly to a power supply and the motor, no microcontroller needed. These are cheap, easy to install, and great for simple projects where you just need to adjust speed with a dial or a potentiometer.

But what if you need even more precision? Like, if your project is a small medical device that has to move a sample at exactly 20 RPM every time, regardless of load? Then open-loop control (variable voltage or basic PWM) won’t cut it—you need closed-loop speed control, which uses a feedback device to measure actual speed and adjust the power automatically. For a 16mm DC gear motor, the most common feedback device is an optical encoder, which is a small disk with slots attached to the motor’s output shaft. A sensor reads the slots as the motor spins, sending pulses to a controller that calculates speed. The controller then adjusts the PWM duty cycle or voltage to keep speed constant, even if the load changes. I’ve worked with a client who used our 16mm DC gear motors in a lab sample handler—they went from inconsistent speed with basic PWM to perfect ±1 RPM accuracy once they added a tiny optical encoder. The downside is cost: a 16mm motor with an encoder costs a bit more, and you need a controller that can process the encoder signal. But for precision applications, it’s worth every penny.

Wait, let’s talk about common mistakes that people make with 16mm DC gear motors, because even with the right method, a small error can ruin speed control. First, ignoring the gear ratio. A lot of new users pick a motor based on its rated speed, but forget that the gear ratio affects speed and torque. If you need 50 RPM, a 16mm motor with a 100:1 gear ratio will give you that, while a 50:1 will give you 100 RPM. Mixing up gear ratios leads to trying to control a motor that’s meant for a different speed range, which makes control harder. Second, not accounting for the motor’s no-load vs. loaded speed. A 16mm motor rated for 100 RPM at no load might only do 80 RPM when loaded with 100g of force. If you set your PWM to get 100 RPM no load, it will slow down under load—so you have to adjust for that, either in open-loop by testing the load, or in closed-loop with an encoder. Third, using the wrong power supply. A lot of users plug a 12V motor into a 12V wall adapter that’s only rated for 0.5A, but their motor draws 1A when loaded. The adapter can’t supply enough current, so the voltage drops, and the motor slows down. Always pick a power supply rated for at least 1.2 to 1.5 times the motor’s maximum continuous current. For our 16mm DC gear motors, we usually recommend a 1A or 2A power supply for loads up to half the motor’s torque rating, which is more than enough for most projects.

Another thing: if you’re using your 16mm DC gear motor in an environment with a lot of vibration or temperature changes, those can affect speed too. Vibration can loosen connections, leading to inconsistent power delivery, and extreme cold can make the motor’s internal parts stiff, slowing it down. For most hobby projects, this isn’t a big issue, but for industrial small-scale automation, it’s worth accounting for—maybe add some strain relief to power cables, or choose a motor with sealed bearings if the environment is dusty.

Let’s put this all together in a step-by-step example for a common project, like a small automated label dispenser that uses a 16mm DC gear motor to pull labels. First, figure out your required speed: let’s say the labels need to move at 30 RPM. Pick a 16mm DC gear motor with a 50:1 gear ratio (that will deliver roughly 30 RPM at 12V, adjusted slightly for load). Next, choose your control method: if you’re a hobbyist, use an Arduino, an L293D motor driver, and a standalone PWM module. Write a simple loop to send a PWM signal of around 127 (out of 255, so 50% duty cycle) to the driver, test it with the label roll loaded (that’s your load), and adjust the PWM number up or down until the label moves at exactly 30 RPM. If you need more precision, add a $5 optical encoder to the motor’s shaft, and use a PID controller (a simple algorithm that adjusts power based on speed feedback) to keep it consistent. For someone making a production label dispenser, closed-loop control with an encoder will make sure every label is pulled at the same speed, no jams, no misalignment.

As someone who’s supplied 16mm DC gear motors for thousands of projects over the years, I can tell you that most speed control issues aren’t from the motor itself—they’re from choosing the wrong method for the job. You don’t need to overcomplicate it with encoders if your project is a one-off robotics arm. A simple PWM module and a properly sized power supply will work just fine. If you’re not sure which method fits your needs, the best thing is to reach out and talk through your project details. We work with every type of user, from students building their first robot to small factories upgrading their assembly lines, and we can help you pick the right motor and control setup to get the speed you need.

48mm DC Gear Motor If you’re working on a project that relies on consistent, controlled speed for your 16mm DC gear motor, don’t waste time testing setups that don’t fit your needs. Whether you’re looking for a basic open-loop solution for a hobby build or a precision closed-loop system for automation, we have the motors and components to match. Reach out to our team to discuss your requirements, test sample setups, and get guidance on the best way to control your motor’s speed for your specific application.

References

  1. Electric Motors and Drives: Fundamentals, Types and Applications, by Austin Hughes
  2. Design and Application of Small DC Motors for Consumer Electronics, IEEE Transactions on Industrial Electronics, 2019
  3. PWM Control for Low-Power DC Gear Motors, Hobby Electronics Association Technical Brief, 2021
  4. Precision Speed Control for Small Automation Systems, International Journal of Manufacturing Technology, 2020

I.CH Motion Co., Ltd.
I.CH Motion Co., Ltd. is one of the most professional 16mm dc gear motor manufacturers and suppliers in China, featured by quality products and good price. Please rest assured to buy cheap 16mm dc gear motor from our factory. Contact us for customized service.
Address: D2-1704, Vanke Duhui Tiandi, 28 Jiangnan Road,Dongshan Street, Jiangning District, Nanjing City, Jiangsu Province
E-mail: info@ichmo.com
WebSite: https://www.ichgearmotor.com/