Hola Buenas tardes! tengo una duda! Estoy haciendo un control de velocidad, para un carrito, y para ello estoy utilizando optoacopaldores, lo cuales manda pulsos al PIC, y el pic manda señales al puente H.
La duda es que al conectar todo fisicamente, solo me gira un motor!
Mi profesor me ha dicho, que esta mal mi porgrmacion.
ESPERO ME PUEDAN AYUDAR, de antemano GRACIAS!
La duda es que al conectar todo fisicamente, solo me gira un motor!
Mi profesor me ha dicho, que esta mal mi porgrmacion.
ESPERO ME PUEDAN AYUDAR, de antemano GRACIAS!
Código:
//// HEADER
#Include <18F4550.h>
#fuses Hs,noprotect,NOWDT
#use delay (Crystal= 20 MHz)
#use rs232(baud=9600,xmit=pin_c6,rcv=pin_c7,uart1)
////DEFINICIONES
int16 izq,der;
float v_izq,d_izq,v_der,d_der,d_izq_ant,d_der_ant,vel_izq,vel_der,error_izq,error_der;
float vel_deseada=30.5;
#INT_EXT
void int_ext_isr()
{
izq++;
}
#INT_EXT1
void int_ext1_isr()
{
der++;
}
////CUERPO
void main()
{
output_d(0x50);
ext_int_edge(0,H_to_l);
ext_int_edge(1,h_to_l);
enable_interrupts(INT_EXT);
enable_interrupts(INT_EXT1);
enable_interrupts(global);
izq=0;
der=0;
setup_timer_2(t2_div_by_4,249,1);
setup_ccp1(ccp_PWM);
setup_ccp2(ccp_PWM);
set_pwm1_duty(0);
set_pwm2_duty(0);//1023 lo maximo que acepta el PWM y el valor minimo es de 0
while(true)
{
v_izq=izq*0.05;
d_izq=19.47*v_izq;
v_der=der*0.05;
d_der=19.47*v_der;
vel_izq=(d_izq-d_izq_ant)*5.0;
vel_der=(d_der-d_der_ant)*5.0;
error_izq=vel_deseada-vel_izq;
error_der=vel_deseada-vel_der;
if(error_izq>=1023)
{
error_izq=1023;
}
if(error_izq<=0)
{
error_izq=0;
}
if(error_der>=1023)
{
error_der=1023;
}
if(error_der<=0)
{
error_der=0;
}
set_pwm1_duty(error_izq);
set_pwm2_duty(error_der);
PRINTF ("IZQ=%LU DER=%LU\n\r",izq,der);
PRINTF("Vuelta_IZQ=%2.2F Vuelta _DER=%2.2F\n\r",v_izq,v_der);
PRINTF ("Distancia_IZQ=%2.2F Distancia_DER=%2.2F\n\r",d_izq,d_der);
PRINTF ("Velocidad_IZQ=%2.2F Velocidad_DER=%2.2F\n\r",vel_izq,vel_der);
PRINTF ("Error_DER=%2.2F Error_IZQ=%2.2F\n\r",error_izq,error_der);
d_izq_ant=d_izq;
d_der_ant=d_der;
delay_ms(200);
}
}
Adjuntos
Última edición por un moderador: