DC motor speed control using PWM using PIC16F876

If you do not have EAGLE, you can download a full working version from CadSoftUSA http://www.cadsoftusa.com

Here is a zip file with the EAGLE schematics and PCB layout.  http://hans-w.com/MotorSpeedEAGLE.zip

New ! Source code  available

C source code… requires CCS PCM compiler.

DC motor speed control

PCM is available from CCS http://www.ccsinfo.com/picc.shtml

//(C)Copyright 2002 Hans Wedemeyer Houston Texas U.S.A
// for use with Fan motor speed control
// see schematic PWM Motor Speed Control
// Aug. 10 / 2002 This matches the new EAGLE schematic and PCB layout.
//
#include “Motor.h”

long ADCValue=0;
long ADCValueOld=1;

#byte portA = 0X05
#byte portB = 0X06
#byte portC = 0X07

void main()
{
set_tris_A(0b00101011);
set_tris_B(0b00000001);
set_tris_C(0b00000000);

portA=0X00;
portB=0X00;
portC=0X00;

setup_adc_ports(ALL_ANALOG);
setup_adc(ADC_CLOCK_INTERNAL);
setup_spi(FALSE);
setup_counters(RTCC_INTERNAL,WDT_288MS);
setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);
setup_timer_2(T2_DIV_BY_1,255,1);
setup_ccp1(CCP_OFF);
setup_ccp2(CCP_PWM);
enable_interrupts(global);

set_adc_channel(0);
delay_us(10);

while(1)
{
ADCValue = Read_ADC();
delay_ms(100); // monitor 10 times a second

if ( ADCValue != ADCValueOld )
{
set_pwm2_duty(ADCValue);
ADCValueOld = ADCValue;
}
}
}

Source code and Hex files are available here: http://hans-w.com/motorspeed.zip

////////////////////////////////////The original text and pictures://////////////////////////////////////////////////////////////

I tried several ready made PWM speed control circuits. Of the few I tried, there were problems that I did not like.

Here is the schematic.

Schematic DC motor speed control

1) Lots of components.

2) PWM running as a low frequency which became audible as a loud buzzing sound from the motor.

3) I needed to build it now, and did not have all the components.

My solution, although it’s much like cracking nuts with a sledge hammer, solved these problems.


For more detail: DC motor speed control using PWM using PIC16F876

About The Author

Ibrar Ayyub

I am an experienced technical writer holding a Master's degree in computer science from BZU Multan, Pakistan University. With a background spanning various industries, particularly in home automation and engineering, I have honed my skills in crafting clear and concise content. Proficient in leveraging infographics and diagrams, I strive to simplify complex concepts for readers. My strength lies in thorough research and presenting information in a structured and logical format.

Follow Us:
LinkedinTwitter