Using PWM for motor speed control

by Oscar

Just like what we did in our first project, we control the brightness of a LED using potentiometer, we will be using a motor instead of the LED, the only difference is we will introduce BJT to our circuit. The reason we use BJT is because the digital output pins on the Arduino is not powerful enough to power a motor, so we have to have an external power source for the motor. The BJT can be controlled by Arduino output pin, to provide varying power to the motor, thus varying speed.

Some of the links on this page are affiliate links. I receive a commission (at no extra cost to you) if you make a purchase after clicking on one of these affiliate links. This helps support the free content for the community on this website. Please read our Affiliate Link Policy for more information.

Actually, it’s not right to say ‘varying power’ here, because it’s a analogue term, and the output pins on an arduino are all digital (can only give constant voltage of HIGH or LOW). The ‘varying voltage’ we see, comes from a useful technique call PWM (pulse-width modulation). It basically varies the percentage of time that the output is HIGH, thus varies the total power it gives. Let me know if you have trouble with it.

coming soon, just realised I haven’t got a BJT… will order some

Leave a Comment

By using this form, you agree with the storage and handling of your data by this website. Note that all comments are held for moderation before appearing.


Don 27th February 2019 - 11:49 pm

can you publish a simple circuit that will regulate 600 to a 1000 volts dc at 200 or so milliamps with a bjt or mosfet device ?

Toshak Singhal 18th February 2016 - 4:08 pm

Can you tell me why would you use BJT instead of MOSFET here to drive a motor for PWN output?