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.
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.
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