PWM or pulse width modulation is a very common method used for controlling the power across devices like motor, light etc. In PWM method the power across the load is controlled by varying the duty cycle of the drive signal. More the duty cycle more power is delivered across the load and less the duty cycle, less power is delivered across the load. A hex keypad is used for controlling the speed. The speed can be varied in seven steps using the hex keypad. Arduino UNO is the type os arduino development board used in this circuit. The circuit diagram of the PWM motor speed control using arduino is shown in the figure below.
Row pins R1 and R2 of the hex keypad are interfaced to digital pins 6 and 7 of the arduino. Column pins C1, C2, C3 and C4 are interfaced to the digital pind 10, 11, 12 and 13 of the arduino. The key pressed on the hex keypad is identified using the column scanning method and it is explained in detail in this article. Interfacing hex keypad to arduino. The digital pins of the arduino can source or sink only up to 4omA of current. So the digital pin 3 cannot drive the motor directly. To solve this problem an NPN transistor (2N2222) is used to drive the motor according the the PWM signal available at digital pin 3. 100 ohm resistor R1 is used to limit the base current of the transistor. The motor is connected as a collector load to the transistor. The 0.1uF capacitor C1 connected across the motor is used to by-pass the voltage spikes and noises produced during the switching of the motor.
The arduino board is powered through the external power jack provided on the board. The arduino board can be also powered by the PC through USB but there must be an additional external source for powering the motor. The complete program for PWM motor speed control using arduino is given below. Explanation of the program is given under the “About the program” heading.
For more detail: PWM motor speed control using Arduino