Proyecto2 Robotica
Proyecto2 Robotica
Proyecto2 Robotica
Robótica - Entrega II
Diego Chila1 , Laura Sarmiento2 y Helberth Calderón3
Abstract— The design of a robot that evades obstacles con- también se hace uso del sensor de proximidad FC-51, el
sists of several controllers. In order to achieve an adequate cual nos servirá para evitar abismos. Todo esto unido en un
algorithm, one must first have well-characterized the engines chasis de acrı́lico lo que da un peso total de 472 gramos.
and get a precise speed control that ensures the same speed
of the engines. Once this is achieved and with the help of
linear algebra, design and implement controllers in order to A. Regulador
reach the desired point and avoid obstacles. In this report, the
characterization of the motors and the design process of each Para la alimentación del PIC y del dispositivo bluetooth
controller will be detailed. es necesario tener una fuente DC de 5V, para esto se hace
uso del regulador LM7805 con la configuración dada en la
I. INTRODUCCI ÓN Fig 1.
El uso de los sensores es de enorme ayuda para un
robot al dar información sobre su entorno y de esta forma
llevar a cabo su algoritmo de la mejor manera. Actualmente,
existen automóviles que tienen la capacidad de manejarse
por sı́ solos gracias al uso de sensores que lo previenen
de inminentes choques. El objetivo en el presente proyecto
es mostrar los pasos y diseños para lograr implementar un
algoritmo similar al de estos automóviles, donde el prototipo
pueda dirigirse de un punto A hacia un punto B en el
camino más corto posible evitando obstáculos y abismos.
Simultáneamente a esto, poder transmitir los datos de la
posición del robot y graficar su trayectoria en Matlab.
Fig. 1. Circuito del regulador LM7805 a 5V
II. DESCRIPCI ÓN DEL SISTEMA
El prototipo se compone de dos motores, cada uno de-
bidamente acoplado a una rueda de 6.47cm de diámetro, B. Puente H
separadas entre sı́ 11.36cm y acoplados cada uno a un Como etapa de potencia para los motores se implementó
Encoder, ambos Encoder tienen adaptado una caja con la el dispositivo L298N como se mencionó anteriormente, su
cual se protegen de posibles interferencias de luz. Tanto puesta en funcionamiento se muestra en la Fig 2.
el microcontrolador PIC18F4550 como el modulo bluetooth
HC-05 junto con todo el circuito de acondicionamiento, el
cual incluye un regulador de 5 voltios LM 7805, estará
implementado en una PCB hecha a la medida la cual aliviana
el vehı́culo y distribuye mejor el espacio. En cuanto a la
potencia, se utiliza el modulo puente H L298N. Como fuente
de alimentación para el prototipo se hace uso de dos baterı́as
18650, cada una de 3.7 voltios y 4800 mAh, las cuales
suponen una entrega de energı́a más que suficiente para
el vehı́culo. Debido a que se hace necesario saber a qué
distancia está el vehı́culo del obstáculo se utilizan 3 sensores
SHARP con rango de 10 a 80 centı́metros. Por último,
#int_ext2
void int_llantaD() {
tiempoD=get_timer0();
set_timer0(0);
delay_us(300);
}
#int_ext1
void int_llantaI(){
tiempoI=get_timer3();
set_timer3(0);
delay_us(300);
}
Fig. 11. Respuesta al escalón para el motor derecho e izquierdo con controlador
%limites de la s e a l de salida }
if (u_kI>61) }
{
u_kI=61; void controladorDer()
} {
if (u_kI<0.16) %actualizar valores anteriores
{ e_k2D=e_k1D;
u_kI=0.16; e_k1D=e_kD;
} %error = entrada (wdf) - salida (velocidadPromD)
%ecuacion para obtener registro del pwm e_kD=wdf-velocidadPromD;
duty2=(16.814*u_kI)-2.6512; %actualizar valores anteriores
%limites del pwm u_k1D=u_kD;
if (duty2>1023) %controlador derecho
{ u_kD=(64.894*e_kD)-(94.7841764*e_k1D)
duty2=1023; +(33.762635*e_k2D)+u_k1D;
} %limites de la s e a l de salida
else if (duty2<300) if (u_kD>60)
{ {
duty2=300; u_kD=60;
} •r es el valor del radio, es decir, 0.03235 metros
if (u_kD<0.34) •l es la distancia entre la rueda y la mitad del vehı́culo,
{
u_kD=0.34; es decir 0.0568cm
} • VL es la velocidad lineal que se desea.
%ecuacion para obtener registro del pwm • w[k] es la velocidad angular que proporciona la salida
duty1=(17.146*u_kD)-5.7805;
%limites del pwm del PID
if (duty1>1023) Entonces se puede obtener el valor de velocidad angular
{
duty1=1023; de cada motor como:
}
if (duty1<335) wd 30.912 1.7558 VL
=
{ wi 30.912 −1.7558 w[k]
duty1=335;
} Estos valores son enviados al control de velocidad pero
} como frecuencia pues se está controlando con los valores de
frecuencia que ve cada encoder, y a partir de estos valores
B. Control de ángulo se obtiene con la matriz A el valor de velocidad angular y
Para llegar al punto deseado se debe hace uso de un velocidad lineal real del carro:
controlador PID que recibe las coordenadas X y Y deseadas y
por medio de la función trigonométrica de la tangente inversa
r r
VLr wdr 0.016175 0.016176 wdr
se obtiene el ángulo que lleva el carro a dicho punto, para = 2r 2
−r =
w[k]r 2l 2l wir 0.28477 −0.28477 wir
implementar un control PID se desea lo siguiente:
A partir de estos valores se debe realizar un integrador para
Ω(s) ki obtener el ángulo real del carrito, esto a partir de θ̇ = w,
= kp + + kd s (13)
θe (s) s para esto se realizan sumas sucesivas que emulen el valor
1−z −1
de la integral, es decir que los valores ángulo real y de las
Pasando el PID a discreto tomando s = T y expan- coordenadas actuales del carrito se pueden obtener como:
diendo la ecuación se obtiene lo siguiente:
θr [k] = θr [k − 1] + (wkr [k]T ); (20)
kp T +ki T 2 +kd kp T +kd kd
Ω(s) z2( T )− z( T ) + T
= (14)
θe (s) z)z − 1) xr [k] = xr [k − 1] + (T vdr [k]cos(θr [k])); (21)
Para tener una expresión más simple se toma lo siguiente: