PWM del pic18f2550 no funciona

#1
Hola tengo este código que hice basándome en varios ejemplos de Internet, es para controlar la velocidad de giro de un motoreductor.

Muevo el potenciometro y se ajusta el PWM y con ello la velocidad



Código:
#include <18F2550.h>
#device adc=8
#fuses INTRC,NOMCLR,NOWDT,NOLVP,NODEBUG,CPUDIV1
#use delay(clock=4000000)

unsigned int8 valor;

void main()
{
set_tris_A(0b0000001); ///Lo declare asi para que sea entrada el adc 
set_tris_C(0); //Asi porque el CPP1 es salida
output_low(PIN_C2);
setup_ccp1(CCP_PWM);
setup_timer_2(T2_DIV_BY_64, 255, 1);  //Esto no se que hace
setup_adc_ports(AN0|VSS_VDD);
setup_adc(ADC_CLOCK_INTERNAL);
set_adc_channel(0);
delay_us(50);

while(true)
{
   valor=read_adc();
   set_pwm1_duty(valor);
   delay_ms(5);
}

}
Bueno funciona bien con un led conectado pero le conecto un transistor para manejar el motor (un cooler de los que traen foquito del pc) y este parpadea como estrobo. le conecto un motor y funciona pero si lo tomo con las manos se apaga todo y ya no enciende hasta que desconecto y cxonecto

Espero y me ayuden si no pues ni modo ...
 
#2
Los ventadores de pc suelen llevar una controladora que seguramente "se pelee" con el pwm. Si fuese un motor "tonto" funcionaría.
 
#3
¿Cuantas lineas tiene el Bus del ventilador, 2, 3, o 4? Cuando lo paras con la mano ¿has probado a girar manualmente las aspas dándoles impulso a ver si vuelve a girar?
 
#5
Los ventadores de pc suelen llevar una controladora que seguramente "se pelee" con el pwm. Si fuese un motor "tonto" funcionaría.
Si tiene la controladora pero hice esto mismo con el arduino y este motor y funcionaba perfecto.

¿Cuantas lineas tiene el Bus del ventilador, 2, 3, o 4? Cuando lo paras con la mano ¿has probado a girar manualmente las aspas dándoles impulso a ver si vuelve a girar?
Tiene 2 lineas y si lo probe y ya no funciona :LOL:



para mi que a tu diseño le faltan condesadores como filtros podrias publicar exactamente como lo tienes conectado en un diagrama?
Asi Segun yo asi cae en corte y saturacion el transistor :LOL:
Se me ocurre que es problema de la frecuencia a la que trabaja el PWM o que el transistor no sirve para altas frecuencias no se :LOL:
 

Adjuntos

Última edición:
#6
Circuito rrrrrraro rrrrrrrrraro.
Pon el emisor a negativo, la carga en el colector, un diodo volante y una resistencia de base.
Los pwm suelen ir en torno al kHz así que de alta frecuencia nada.

Creo que el circuito de salida de los pic tiene dos corrientes de salida programables, mira a ver si no has activado algo así.
 
Última edición:
#7
Si tiene la controladora pero hice esto mismo con el arduino y este motor y funcionaba perfecto.
Prueba con las siguientes modificaciones al programa que subiste y checa si ahora ya funciona con tu motor.

Lo probé con un motor DC normal de 12V y anduvo bien así como se muestra en el esquema adjunto.

Suerte.
 

Adjuntos

Última edición:
#8
al diseño de darkbytes le agregaria condesadores de 100nF en la alimentacion, MCLR (lo mas cerca posible de los pines) y uno en paralelo al motor(lo mas cerca de los bornes).
 
Última edición:
#9
Muchas gracias a todos ya sirvió con ese ultimo circuito

si no me equivoco es un transistor con polarización por divisor de tensión
pero que función tienen los diodos ??

Lo del capacitor en los bornes del motor para que es ??
Creo era para corregir el factor de potencia o no recuerdo bien tenia eso en mi libreta pero la eche a la basura :LOL:
 
#13
al diseño de darkbytes le agregaria condesadores de 100nF en la alimentacion, MCLR (lo mas cerca posible de los pines) y uno en paralelo al motor(lo mas cerca de los bornes).
Pero lei no recuerdo donde que un diodo rectificador polarizado inversamente, tiene cierta capacitancia como un varicap, y entonces ya no seria necesario el capacitor paralelo al motor


Y funciona igual si lo alimento en lugar de 12v con 5v???
Porque lo habia armado pero olvide el MCLR y no funciono bien, asi que lo armare otra vez bien :LOL:
 
#14
Ya funciono, el problema era que conecte el motor y pic a los 5v por eso se reiniciaba el pic y parecia estr0bo pero le pusse una fuente para el motor y ya funciono gracias a todos