Robótica Inteligente Programación PPRK

Anuncio
Robótica Inteligente
Programación PPRK
Marco Antonio López Trinidad
Luis Enrique Sucar Succar
Departamento de Computación
Tec de Monterrey
Programación PPRK
5
Problema: Agregar y obtener lecturas de un
compás, para el PPRK
5
El sensor utilizado, es el compás 1490 de Dinsmore
Instrument Co.
Programación PPRK
5
Interfaz
5
El compás proporciona ocho posibles orientaciones
(N, NE, E, SE, S, SW, W y NW)
5
Las ochos posibles orientaciones se pueden codificar
como (N, E, S y W), que se alimentarán a la tarjeta
PONTECH SV230, como señales digitales por medio
de un arreglo de resistores pull−up
Programación PPRK
5
Problemas
5
La tarjeta PONTECH SV230, no tiene entradas
digitales; sin embargo; cuenta con cinco entradas
analógicas
5
Tres de las entradas analógicas están ocupadas por los
sensores IR
5
Sin embargo, es posible codificar las cuatro señales
digitales del compás 1490, en una sola señal
analógica, que será alimentada a una de las entradas
analógicas de la tarjeta PONTECH SV230
Programación PPRK
5
Comunicación entre circuitos digitales y
analógicos
00110001...
Eo
Programación PPRK
5
Salida analógica de un convertidor unipolar de n
bits
−1
−2
−3
−n
Eo = VR(a12 + a22 +a32 +...+an2 )
Programación PPRK
5
Circuito convertidor de voltaje digital/analógico
de cuatro bits
Programación PPRK
5
Determinación de la orientación
5
La orientación se puede leer mediante los comandos
correspondientes a cualquiera de los puertos AD4 o
AD5, dependiendo si se conecto Vout, a las terminales
4 o 5 del puerto analógico A de la tarjeta
5
El rango de valores que se pueden obtener, depende
de la exactitud de los resistores, por los procesos de
manufactura o bien por ruido
Programación PPRK
Orientación
Norte
Noreste
Este
Sureste
Sur
Suroeste
Oeste
Noroeste
Bajo
149
37
97
78
197
163
181
115
Alto
151
42
100
82
202
164
184
117
Programación PPRK
5
Código para tomar las lecturas del compas 1490
void SimpleFunction(void)
{
EventPtr e;
double horientation; //captura el valor de la horientacion
char incoming[] = "999" //captura el valor del sensor
board.Tx("AD", 4); //indica que se debe leer el puerto analogico 4
board.Rx(incoming); //indica que se debe leer la lectura del sensor y se
//deposita el resultado en incoming
// buffer correction −− replace all ASCII non−numbers with spaces
for (int l=0; l<=2; l++)
if ( incoming[l] == 10 )
incoming[l]=’ ’;
incoming[3] = ’\0’;
Programación PPRK
if (incoming[0] != ’2’) // three digit number cut−off
incoming[2] = ’\0’;
horientation = StrAToF(incoming);
//se despliega que el robot apunta hacia el norte
if((horientation == 149) ||(horientation == 151)
robot.Disp("Norte", 50, 70);
//se despliega que el robot apunta hacia el noreste
if((horientation == 37) ||(horientation == 42)
robot.Disp("Noreste", 50, 70);
//se despliega que el robot apunta hacia el este
if((horientation == 97) ||(horientation == 100)
robot.Disp("Este", 50, 70);
//se despliega que el robot apunta hacia el sureste
if((horientation == 78) ||(horientation == 82)
robot.Disp("Sureste", 50, 70);
//se despliega que el robot apunta hacia el sur
if((horientation == 187) ||(horientation == 202)
robot.Disp("Sur", 50, 70);
//se despliega que el robot apunta hacia el suroeste
if((horientation == 163) ||(horientation == 164)
robot.Disp("Suroeste", 50, 70);
Programación PPRK
//se despliega que el robot apunta hacia el oeste
if((horientation == 181) ||(horientation == 184)
robot.Disp("Oeste", 50, 70);
//se despliega que el robot apunta hacia el noroeste
if((horientation == 115) ||(horientation == 117)
robot.Disp("Noroeste", 50, 70);
}//fin de SimpleFunction
Bibliografia
1.
http://www−2.cs.cmu.edu/~reshko/PILOT/
2.
http://www.lynxmotion.com/
3.
http://www.pontech.com
Descargar