Download Práctica 7 - Comunicación Serial con la PC En la presente práctica

Document related concepts
no text concepts found
Transcript
Práctica 7 - Comunicación Serial con la PC
En la presente práctica veremos un par de ejemplos que nos ayudarán a mandar
información desde el Handy Board a la PC, utilizando las conexiones que ya están
implementadas (usando tarjeta de comunicación serial). En el primer ejercicio
implementaremos el sensor de efecto Hall para tomar mediciones.
El sensor de efecto Hall es un simple switch que genera un pulso cuando un imán esta
cerca del sensor. Esta es una buena opción para construir un encoder, ya que podemos
llevar la cuenta de las veces que el imán ha pasado por el sensor (pulsos generados) y
definir por ejemplo la distancia que se ha recorrido.
La conexión con el Handy Board es sencilla: pin 1 a voltaje, pin 2 a tierra y el tercer pin
es la señal. Debido a que el switch tiene salida de colector abierto, es necesario agregar
una resistencia de pull-up (de 8 a 10 K Ohm).
Este tipo de switch se utilizan mucho para medir la posición y velocidad de elementos
como un motor girando, por lo cual es utilizado mucho en la industria automotriz, y
funciona gracias al voltaje generado transversalmente al flujo de corriente en el conductor
cuando se le aplica un campo magnético.
Para utilizar los ejemplos proporcionados es necesario contar con las librerías: printdec.c
y serialio.c ; a continuación, hay que cargar en el Handy Board el siguiente código, y
asegurarnos que el sensor de efecto Hall este conectado en el puerto digital 8.
/* serial_puerto.c
requiere printdec.c y serialio.c */
#use "serialio.c"
#use "printdec.c"
void main()
{
disable_pcode_serial();
while (1) {
printdec(digital(8));
newline();
msleep(500L);
}
}
Después de haber cargado el código es necesario salir del Interactive C para desocupar el
puerto serial. A continuación, hay que crear una nueva conexión con el hyperterminal
(conexión directa a COM1 o algún otro puerto en caso de tener un adaptador USBSerial). La velocidad de transmisión es de 9600 b/s, utilizando 8 bits de datos, sin paridad
y con un bit de stop.
Después de establecer la conexión, el hyperterminal estará esperando los valores, por lo
que hay que correr el código grabado en el Handy Board (apagando y prendiendo el
Handy). En el hyperterminal se desplegara el valor actual del sensor de efecto hall, por lo
cual hay que pasar un imán cerca del sensor para visualizar los cambios que se registran.
Ahora utilizaremos otro ejemplo que guarda cierto número de valores sensados en un
arreglo, para luego desplegar toda la información por medio del hyperterminal. Es
necesario utilizar una fotoresistencia en el puerto análogo 6, para después cargar el
siguiente código:
/* serial_capturar.ic
requiere printdec.c y serialio.c */
#use "serialio.c"
#use "printdec.c"
int SAMPLES=20;
char data[20];
void main()
{
disable_pcode_serial();
printf("Start para sensar info\n");
start_press();
collect_data();
beep();
printf("Start para imprimir info\n");
start_press();
dump_data();
beep();
printf("terminado.\n");
}
void collect_data()
{
int i;
for (i= 0; i< SAMPLES; i++) {
data[i]= analog(6);
sleep(0.2);
}
}
void dump_data()
{
int i;
for (i= 0; i< SAMPLES; i++) {
printdec(data[i]);
serial_putchar(10); /* line feed */
serial_putchar(13); /* carriage return */
}
}
Como podemos ver, el código captura 20 muestras para luego desplegarlas en la PC; es
posible aumentar tanto las muestras como el tiempo de muestreo modificando el código
proporcionado.