si es un ventilador de PC, podrías con un BD135 hacer un control por PWM de la velocidad de este con un par de pulsadores. Aquí te dejo el código de ejemplo:
#include <18F4550.h>
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN
#use delay(clock=48000000)
#include "include\types.h"
#include "include\lcd.c"
#define SW1 PIN_E0 // button 1
#define SW2 PIN_E1 // button 2
#define intractor PIN_C2
void main(void)
{
long int opc=1;
lcd_init ();
setup_ccp1(CCP_PWM);
setup_timer_2(T2_DIV_BY_1, 127, 1);
lcd_putc("\f");
lcd_gotoxy(1,1);
printf(lcd_putc,"Prueba PWM");
lcd_gotoxy(1,2);
printf(lcd_putc,"PWM: ");
while(true)
{
lcd_gotoxy(6,2);
printf(lcd_putc,"%li",opc);
if(!input(SW1)){delay_ms(300); opc++; set_pwm1_duty(opc);}
if(!input(SW2)){delay_ms(300); opc--; set_pwm1_duty(opc);}
}
}
pd: Si no encuentras la forma de conectar el transistor bd135 dimelo y te pongo una imagen.
s2!