PRCTICA #3
Control del servomotor a travs del teclado ps2
ALUMNOS:
Bez Garca Jos Flores Barrientos Pedro Romero Marcelo Juan Carlos
1. Introduccin
En esta prctica se hace referencia bsicamente al funcionamiento del micro controlador 18f4550, como anteriormente se vino haciendo, se controla otro dispositivo a travs del mismo. Ahora se controlara un servomotor a travs del pic y un teclado para mandar las instrucciones. Un Servo es un dispositivo pequeo que tiene un eje de rendimiento controlado. Este puede ser llevado a posiciones angulares especficas al enviar una seal codificada. Con tal de que una seal codificada exista en la lnea de entrada, el servo mantendr la posicin angular del engranaje. Cuando la seala codificada cambia, la posicin angular de los piones cambia. En la prctica, se usan servos para posicionar superficies de control como el movimiento de palancas, pequeos ascensores y timones. Ellos tambin se usan en radio control, tteres, y por supuesto, en robots. Los Servos son sumamente tiles en robtica. Los motores son pequeos, cuando usted observa la foto de arriba, tiene internamente una circuitera de control interna y es sumamente poderoso para su tamao. Un servo normal o Standard como el HS-300 de Hitec tiene 42 onzas por pulgada o mejor 3kg por cm. de torque que es bastante fuerte para su tamao. Tambin potencia proporcional para cargas mecnicas. Un servo, por consiguiente, no consume mucha energa. Se muestra la composicin interna de un servo motor en el cuadro de abajo. Podr observar la circuitera de control, el motor, un juego de piones, y la caja. Tambin puede ver los 3 alambres de conexin externa. Uno es para alimentacin Vcc (+5volts), conexin a tierra GND y el alambre blanco es el alambre de control.
2. Objetivos
Conocer el funcionamiento del servomotor ( periodo y tiempos para obtener una posicin) Conocer el funcionamiento del teclado ps2. Ser capaz de utilizar el micro controlador 18f4550 para poder controlar la posicin de un servomotor a travs de un teclado (ps2) adems de mostrar su posicin en grados a travs de un lcd. Uso del lenguaje c para programar un pic.
En la presente prctica utilizaremos el simulador Proteus 7 de Labcenter Electronics, y el PIC 18 Simulator IDE de OshonSoft para el desarrollo de pruebas, antes de bajar al PIC el Firmware resultante. Se consultar el datasheet del PIC18F4550 para la caracterizacin. Utilizaremos el datasheet de la LCD 16j2A para determinar su modo de operacin. Se consultar el datasheet del servomotor para su ptimo uso. Se consultar el datasheet del teclado ps2 para la caracterizacin. Investigar sobre el uso del programa ccs para la programacin del pic.
Dicho de otro modo el primer punto a esclarecer es el cmo funciona el teclado ps2 para poder mandar el cdigo con el cual identifica una cifra el cual ser la posicin de un servomotor, para posteriormente mediante la LCD se muestre la esta.
5. Procedimiento
Teniendo las especificaciones, caractersticas y funcionamiento de los dispositivos principales pasamos al procedimiento que se sigui en la elaboracin de la prctica. Bsicamente se dividi la prctica en partes para facilitar el trabajo. Primero se realiz un programa en el lenguaje c para poder mover el servomotor a travs del pic controlndolo con un push botn, sencillamente dos posiciones 0 y 180, mostrando la posicin en la que se encuentra.
#use delay(clock=4000000) #define use_portb_lcd TRUE #include <lcd.c> int16 ta, tb, posicion; void main() { set_tris_a(0x02); set_tris_b(0x0); set_tris_d(0x01); output_a (0); // saca un nivel bajo de salida en los puertos output_b (0); output_d (0); lcd_init(); while(true) { switch (input(PIN_D0)){ case 0:{ posicion=0; ta=(posicion*10)+200; tb=200000-ta; output_d(0x02); delay_us(ta); output_d(0x00); delay_us(tb); break;} case 1:{ posicion=180; ta=(posicion*10)+200; tb=200000-ta; output_d(0x02); delay_us(ta); output_d(0x00); delay_us(tb); break;} break; default: break; } lcd_gotoxy(5,1); printf(lcd_putc, "Posicion = ");
lcd_gotoxy(6,2); printf(lcd_putc, " %Lu ",posicion); } } En este cdigo podemos observar que una vez que podamos obtener el valor de la posicin a travs del teclado ps2 entonces ser asignado a la variable posicion y una vez que este se tenga a travs de una formula se el programa realizara la conversin necesaria para determinar el valor de los tiempos en alto y en bajo manteniendo el periodo.
Despus se pretenda hacer un cdigo con el cual se detectara el un nmero con el uso del teclado ps2. El cdigo que se utilizo fue el siguiente:
#use delay(clock=4000000) int16 ta, tb, posicion, dato; int enter, comprueba; unsigned char const shifted[11][2] = { 0x70,'0', 0x69,'1', 0x72,'2', 0x7a,'3', 0x6B,'4',0x73,'5', 0x74,'6', 0x6c,'7', 0x75,'8', 0x7d,'9', }; void lee_cadena(){ for (delay_us(5); PIN_A1 == 0; delay_us(5);) for (delay_us(5); PIN_A0 == 1;delay_us(5);) lee_8(); lee_3(); } void lee_b(){ for (delay_us(5); PIN_A1 == 0; delay_us(5);) for (delay_us(5); PIN_A0 == 1;delay_us(5);) } void lee_8(){ }
void lee_3(){ } void fo(){ } void une_cadenas(){ } void servo(posicion){ ta=(posicion*10)+200; tb=200000-ta; output_b(0x02); delay_us(ta); output_b(0x00); delay_us(tb); } void main(void) { set_tris_a(0x02); set_tris_b(0x0); set_tris_d(0x01); posicion=0; servo(posicion); while(true) { delay_us(30); switch (input(PIN_A0)){ case 0:{ switch (input(PIN_A1)){ case 0:{ for (fo(); comprueba == 1; lee_cadena();) une_cadenas(dato); posicion=dato; servo(posicion);
} } case 1:{
delay_us(5); } break; default: break;} break;} case 1:{ delay_us(30); break;} break; default: break; } } } Como se puede apreciar el cdigo no est completo aunque se usaron varios con los cuales no se lograron los resultados deseados.
6. Metodologa de Diseo
Se utilizaron diferentes herramientas para el diseo del circuito, los cuales cada uno de ellos tienen distintos funcionamientos. Se utiliz una fuente de 5v para alimentar el circuito, un lcd para mostrar la posicin del servomotor, el teclado (ps2) para controlar la posicin del servomotor, el micro controlador para hacer el funcionamiento del dispositivo, un servomotor el cual es lo que se va a controlar. Antes de entrar directamente a las conexiones del pic con el servo y el el teclado primero explicaremos el funcionamiento de los mismos.
(.02 segundos). La longitud del pulso determinar los giros de motor. Un pulso de 1.5 ms., por ejemplo, har que el motor se torne a la posicin de 90 grados (llamado la posicin neutra). Si el pulso es menor de 1.5 ms., entonces el motor se acercar a los 0 grados. Si el pulso es mayor de 1.5ms, el eje se acercar a los 180 grados. Como se observa en la figura, la duracin del pulso indica o dictamina el ngulo del eje (mostrado como un crculo verde con flecha). Ntese que las ilustraciones y los tiempos reales dependen del fabricante de motor. El principio, sin embargo, es el mismo. Para los Hitec: 0.50 ms = 0 grados, 1.50 ms = 90 grados y 2.5 ms = 180 grados.
10
El teclado PS/2 enva el cdigo de rastreo asociado a una tecla al ser sta pulsada, tantas veces como sea necesario si se mantiene pulsada con una cadencia tal como indique su tiempo de repeticin, que es programable, y el mismo cdigo de rastreo con el prefijo del byte F0h al ser soltada, tambin conocido como Break Code. Por ejemplo: Para conseguir la letra G Mayscula debemos pulsar la tecla Shift y mientras la mantenemos pulsada, pulsar la tecla G, soltar la tecla G y soltar la tecla Shift. Esa secuencia de pulsaciones nos va a hacer que el teclado transmita la siguiente secuencia de bytes: Pulsar Shift -> 12h, Pulsar "G" -> 34h, Soltar "G" -> F0h 34h y soltar Shift -> F0h 12h o escribiendo solo los bytes que vamos a recibir: 1h, 34h, F0h, 34h, F0h, 12h Ah queda eso. Nuestro cometido va a ser recibir e interpretar esta secuencia de bytes y actuar en consecuencia. El teclado PS/2 tambin admite comandos. Dispone de funciones build-in que podemos disparar mediante el envo del comando correspondiente. Abajo muestro una tabla con los comandos disponibles que podemos enviarle a nuestro teclado. (Nosotros, en este proyecto no vamos a utilizarlos, pero ah quedan por si alguno de mis amables visitantes desea ampliar la funcionalidad del mismo).
11
El teclado y el interfaz de teclado estn fsicamente conectados a travs del cable del teclado. Est formado por un grupo de 5 cables con una malla de proteccin contra interferencias. La intensidad que el interfaz es capaz de suministrar al teclado varia de una placa base a otra, pero debe ser suficiente para alimentar un teclado normal (del orden de cientos de mA; un valor tpico seria 300 mA). Las seales clock y data son usadas para la comunicacin entre host y teclado en colector abierto.|
Lnea VCC
12
Masa del teclado. 0 V. Linea de reloj (CLK, CTS). TTL. Colector abierto. Lnea de datos (RxD, TxD, RTS). TTL colector abierto. No conectado. Reset en algunos teclados viejos.
El teclado PS/2 se comunica mediante un Protocolo Serie Sncrono. Utiliza, por lo tanto, una seal de Clock que ndica cuando estn disponibles los correspondientes bits en la seal de Data. En reposo la seal de Clock est a nivel alto; a cada pulso a nivel bajo corresponde un pulso a nivel alto o bajo en la seal de Data, que se traducen respectivamente como bits 0 1 del dato a transmitir.
La trama completa se compone de 11 bits. Siendo el primero un bit de Start, a continuacin los 8 bits del Dato a transmitir envindose primero el LSB ( bit menos significativo), el dcimo es el de paridad (usa la Impar, u Odd en Ingls) y por ltimo un bit de ACK o Stop. Abajo puede verse un cronograma de esta trama de comunicacin PS/2 Teclado.
13
A continuacin se mostraran algunas imgenes de las simulacines que se realizaron en esta prctica:
14
Figura. Simulacin del circuito sin teclado ps2 oprimiendo el push buttn para la segunda posicin
15
En la ltima simulacin se observa que solo se puede colocar el conector ps2 mas no se puede simular la funcin del teclado por lo cual se prob solo de forma fsica si el teclado funcionaba o no.
16
17
11. Conclusiones
El uso de microcontroladores es de vital importancia para el desarrollo de las industrias, en el desarrollo de los procesos autnomas, as como el control totalmente industrial, esto quiere decir que todo est automatizado y que una sola persona est encargada de checar cada uno de los procesemos. En el transcurso del tiempo que estuvimos en el curso, pudimos darnos cuenta de que estos ingeniosos microchips son de gran utilidad para desarrollar un proyecto sea cual sea su rea, principalmente en la industria, ya que se trata de tener un mejor rendimiento en el trabajo y con pocas herramientas, en este caso un microchip puede hacer varias tareas de las cuales puede sustituir muchos dispositivos y herramientas, as como el tiempo y el trabajo invertido en el proyecto, En cuanto a la economa, es muy viable realizar proyectos de gran importancia utilizando estos microcontroladores.
14. Referencias
MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS. 3 EDICION, PALACIOS MUNICIO, ENRIQUE Microcontroladores: Fundamentos y aplicaciones con PIC; F. E. Valds Prez, R. Palls Areny; Alfaomega; 2007. Microcontroladores PIC: Diseo prctico de aplicaciones, 2 parte; J.M. Angulo Usategui, S. Romero Yesa, I. Angulo Martnez; McGraw Hill; 2 edicin; 2006. HD44780U (LCD-II) (Dot Matrix Liquid Crystal Display Controller/Driver) HITACHI MICROCHIP DATA SHEET PIC18F4550
18