Hola Bueno este es un circuito que estoy implementando para el control de dos motores, el problema es que al hacer un cambio de sentido o a veces tan solo parando el accionador estallan los mosfets, despues de 8 mosfets rotos ya me dolio el bolsillo y lo enpece a probar con unos fusibles en la alimentacion y estos se queman en el mismo momento. Los diodos no se queman, siguen funcionando bien. Es muy posible que sea el programa porque probando directamente las entradas con 5 volts no hay problema...no se. Tambien agrego el programa de control en ccs.
Si alguien se da cuenta del problema desde ya muchas gracias.
Si alguien se da cuenta del problema desde ya muchas gracias.
Código:
#include <16F628A.h>
#fuses XT,NOMCLR
#use delay(clock = 4000000)
void main()
{
set_tris_b(0b00110000);
output_low(PIN_b1);
output_low(PIN_B2); // Seteo CCP1 output low
setup_ccp1(CCP_PWM); // Configuro CCP1 as a PWM
setup_timer_2(T2_DIV_BY_1,50, 1); // Aprox 20Khz (los valores del Duty 0-50)
while(true){
pri:
if (input(PIN_B4)==0 && input(PIN_B5)!=0) { set_pwm1_duty(0);
output_high(PIN_B2);
if (input(PIN_B4)==0 && input(PIN_B5)!=0)goto pri;
else { delay_ms(250);
goto cero;}
}
sec:
if (input(PIN_B4)!=0 && input(PIN_B5)==0) { set_pwm1_duty(50);
output_low(PIN_B2);
if (input(PIN_B4)!=0 && input(PIN_B5)==0) Goto sec;
else { delay_ms(250);
goto cero;}
}
ter:
if (input(PIN_B4)!=0 && input(PIN_B5)!=0) { set_pwm1_duty(40);
output_low(PIN_B2);
if (input(PIN_B4)!=0 && input(PIN_B5)!=0)goto ter;
else { delay_ms(250);
goto cero;}
}
cero:
set_pwm1_duty(0);
output_low(PIN_B2);
}
}