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.