Buenas noches. En la escuela estamos trabajando en un robot Sumo el cual cuenta con dos motores DC y 3 sensores de proximidad infrarrojos.
Logramos que estos desprecien el negro de la pista pudiendo así darle limites al robot.
En PICBasic hice un programa básico y uno complejo con un sensor de ultrasonido.
El problema surgió cuando grabé el PIC, aparentemente con éxito, pero cuando lo pongo en la placa y conecto todas las entradas de los sensores y las salidas al puente H que controla los motores; ésta no funcionaba, no hacia nada.
Decidí montarlo de vuelta en un protoboard y nada, no responde, o a veces si y queda prendido solo una salida y no se apaga nunca.
Utilicé un cristal de 10mhz, con dos capacitores cerámicos de 22pf, una resistencia de 10k para el reset y un capacitor 0.1mf entre la alimentación.
Aquí les dejo el programa, por si le ven algún error.
Espero puedan ayudarme.
Desde ya, muchas gracias.
Logramos que estos desprecien el negro de la pista pudiendo así darle limites al robot.
En PICBasic hice un programa básico y uno complejo con un sensor de ultrasonido.
El problema surgió cuando grabé el PIC, aparentemente con éxito, pero cuando lo pongo en la placa y conecto todas las entradas de los sensores y las salidas al puente H que controla los motores; ésta no funcionaba, no hacia nada.
Decidí montarlo de vuelta en un protoboard y nada, no responde, o a veces si y queda prendido solo una salida y no se apaga nunca.
Utilicé un cristal de 10mhz, con dos capacitores cerámicos de 22pf, una resistencia de 10k para el reset y un capacitor 0.1mf entre la alimentación.
Aquí les dejo el programa, por si le ven algún error.
Código:
AllDigital
TRISB = %00000000
TRISA = %11111111
Symbol onn = PORTA.0
Symbol lif2 = PORTA.1
Symbol lif3 = PORTA.2
Symbol lif4 = PORTA.3
Symbol mia = PORTB.0
Symbol mi = PORTB.1
Symbol mda = PORTB.2
Symbol md = PORTB.3
ddd:
If onn = 0 Then Goto ddd
If onn = 1 Then WaitUs 3000
asd:
If PORTA = %00001110 Then
mi = 1
If PORTA = %00001110 Then
md = 1
WaitUs 100
If PORTA = %00001110 Then Goto asd
Else
Goto inicio
Endif
inicio:
'pregunta infrarrojo superior derecho
If lif2 = 0 Then mi = 1
If lif2 = 0 Then md = 1
If lif2 = 0 Then WaitUs 1000
mi = 0
md = 0
If lif2 = 0 Then Goto inicio
'pregunta infrarrojo inferior izquierdo
If lif3 = 0 Then mia = 1
If lif3 = 0 Then mda = 1
If lif3 = 0 Then WaitUs 1000
mia = 0
mda = 0
If lif3 = 0 Then Goto inicio
'pregunta infrarrojo inferior derecho
If lif4 = 0 Then mia = 1
If lif4 = 0 Then mda = 1
If lif4 = 0 Then WaitUs 1000
mia = 0
mda = 0
If lif4 = 0 Then Goto inicio
Endif
Goto asd
End
Desde ya, muchas gracias.
Última edición por un moderador: