Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
LM7805, que entrega el voltaje de alimentación para todo el
Resumen— circuito. El código de programa para el PIC18F4550
RuniBot 007 fue un proyecto que se desarrolló a lo largo del encargado de controlar las señales que entregan los sensores
semestre con el objetivo de participar en la competencia de seguidores de línea y el sensor Sharp y el integrado L293D
mini sumo bajo un reglamento de medidas y funcionamiento quien controla el movimiento de motores en ambos sentidos.
establecidos previamente, se dio inicio al diseño y la En la figura 1 se muestra el Top layer o cara superior del
construcción de la estructura y el circuito de funcionamiento. circuito implementado, en el que se visualiza la organización
A lo largo del documento se explica claramente la de cada uno de los componentes que componen el circuito.
construcción del robot, su funcionamiento tanto mecánico En la figura 2 se muestra el Bottom layer o cara inferior en
como eléctrico, con esquemas y resultado. el que se realizó el trazado de las conexiones de los
componentes.
I. INTRODUCCIÓN
Para el desarrollo del código de programa se diseñó el
Universidad Manuela Beltrán. , Infante Laverde Mónica Paola, Vergara Arevalo Andrés Felipe, Caro Cortés Leonard David. 2
diagrama de flujo que se observa a continuación y se definió El código se desarrolló por medio de interrupciones debido a
el puerto B como entrada y el puerto C como salida. que los sensores utilizados nos entregaban salidas digitales,
por este motivo se habilitaron las interrupciones externas
utilizando el registro GIE=1 y el orden de prioridad utilizando
el registro IPEN=1; y se configuraron las interrupciones para
los pines 33, 34 y 35 que corresponden a los bites RB0, RB1 y
RB2 como se muestra a continuación.
INT0IE=1; //habilita la interrupcion externa por RB0
INTEDG0=1; //interrupcion por flanco Ascendente
INT0IF=0; //pone en 0 la bandera int0
#include <xc.h>
#pragma config FOSC = INTOSC_EC
#pragma config PWRT = ON
#pragma config BOR = OFF
#pragma config LVP = OFF
#pragma config PBADEN = OFF
#pragma config MCLRE = ON
#pragma config WDT = OFF
#define _XTAL_FREQ 8000000
#define M1A LATCbits.LATC0
#define M1R LATCbits.LATC1
#define M2A LATCbits.LATC7
#define M2R LATCbits.LATC6
Figura 3.
Universidad Manuela Beltrán. , Infante Laverde Mónica Paola, Vergara Arevalo Andrés Felipe, Caro Cortés Leonard David. 3
Figura 6.
Figura 4.
Inicialmente el robot realiza un retardo de 5 segundos
después de ser encendido y si no ha detectado a su oponente
gira constantemente hasta que el sensor Sharp detecta al
contrincante, procede a avanzar y a expulsar al oponente fuera Figura 7.
del área de competición. En la etapa regulada de fuente se utilizaron dos
condensadores en paralelo con el fin de eliminar el voltaje rizo
en el circuito como se observa en la figura 8.
Figura 5.
Figura 8.
III. CONCLUSIONES
El uso de sensores con modulo conversor análogo digital
facilito el diseño del código de programa y nos permitió
manejar interrupciones para controlar las señal que entregaba
cada uno de los sensores.
BIBLIOGRAFÍA
[1] geekfactory. (s.f.). Recuperado el 23 de Marzo de
2017, de
http://www.geekfactory.mx/tienda/component
es-electronicos/circuito-integrado-l293d/#
#include <xc.h>
Universidad Manuela Beltrán. , Infante Laverde Mónica Paola, Vergara Arevalo Andrés Felipe, Caro Cortés Leonard David. 5
int i;
void Tiempo(int t)
{
for(i=0;i<t;i++)
{
__delay_ms(10);
}
}
void main(void)
{
TRISC=0; //se declara el PORTD como salida
TRISB=0XFF; //se declara el PORTB como entradas
M1A = 0;
M1R = 0;
M2A = 0;
M2R = 0;
IPEN=1;
GIE=1;
Tiempo(50);
while(1)
{
M1A = 1;
M2R = 1;
}
}
Universidad Manuela Beltrán. , Infante Laverde Mónica Paola, Vergara Arevalo Andrés Felipe, Caro Cortés Leonard David. 6
while (INT0IF==1)
{
M1A = 1;
M1R = 0;
M2A = 1;
M2R = 0;
Tiempo (240);
INT0IF=0;
}
M2A = 0;
}
}
void interrupt low_priority sensores()
{
if(INT1IF||INT2IF )//se pregunta si se genero interrupcion por INT1 o INT2
{
M1R=0;
M2A = 0;
for(i=0;i<10;i++)
{
__delay_ms(2);
}
M1A = 0;
M1R = 1;
M2A = 0;
M2R = 1;
INT1IF=0;
INT2IF=0;
}
}