Reporte Servomotor

22
BENEMÉRITA UNIVERSIDAD AUTÓNOMA DE PUEBLA FACULTAD DE CIENCIAS DE LA ELECTRÓNICA ÁREA DE SISTEMAS DIGITALES DESARROLLO DE SISTEMAS BASADOS EN MICROCONTROLADORES Y DSPS PRÁCTICA #3 Control del servomotor a través del teclado ps2 ALUMNOS: Báez García José Flores Barrientos Pedro 1 Benemérita Universidad Autónoma de Puebla Facultad de Ciencias de la Electrónica

Transcript of Reporte Servomotor

Page 1: Reporte Servomotor

BENEMÉRITA UNIVERSIDAD AUTÓNOMA DE PUEBLA

FACULTAD DE CIENCIAS DE LA ELECTRÓNICA

ÁREA DE SISTEMAS DIGITALES

DESARROLLO DE SISTEMAS BASADOS EN MICROCONTROLADORES Y DSPS

PRÁCTICA #3Control del servomotor a través del teclado ps2

ALUMNOS:

Báez García JoséFlores Barrientos PedroRomero Marcelo Juan CarlosCATEDRÁTICO: M.C. RODRIGO LUCIO MAYA RAMÍREZ

1

Benemérita Universidad Autónoma de PueblaFacultad de Ciencias de la Electrónica

Page 2: Reporte Servomotor

Práctica 3

Control del servomotor a través del teclado ps2

1. Introducción

En esta práctica se hace referencia básicamente al funcionamiento del micro controlador 18f4550, como anteriormente se vino haciendo, se controla otro dispositivo a través del mismo.Ahora se controlara un servomotor a través del pic y un teclado para mandar las instrucciones.Un Servo es un dispositivo pequeño que tiene un eje de rendimiento controlado. Este puede ser llevado a posiciones angulares específicas al enviar una señal codificada. Con tal de que una señal codificada exista en la línea de entrada, el servo mantendrá la posición angular del engranaje. Cuando la señala codificada cambia, la posición angular de los piñones cambia. En la práctica, se usan servos para posicionar superficies de control como el movimiento de palancas, pequeños ascensores y timones. Ellos también se usan en radio control, títeres, y por supuesto, en robots. Los Servos son sumamente útiles en robótica. Los motores son pequeños, cuando usted observa la foto de arriba, tiene internamente una circuitería de control interna y es sumamente poderoso para su tamaño. 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 tamaño. También potencia proporcional para cargas mecánicas. Un servo, por consiguiente, no consume mucha energía. Se muestra la composición interna de un servo motor en el cuadro de abajo. Podrá observar la circuitería de control, el motor, un juego de piñones, y la caja. También puede ver los 3 alambres de conexión externa. Uno es para alimentación Vcc (+5volts), conexión 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 posición)

Conocer el funcionamiento del teclado ps2. Ser capaz de utilizar el micro controlador 18f4550 para poder controlar la posición de un

servomotor a través de un teclado (ps2) además de mostrar su posición en grados a través de un lcd.

Uso del lenguaje c para programar un pic.

Benemérita Universidad Autónoma de Puebla Facultad de Ciencias de la Electrónica Área de Sistemas Digitales

2

Page 3: Reporte Servomotor

Práctica 3

Control del servomotor a través del teclado ps2

3. Especificaciones del Diseño

En la presente práctica 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 caracterización. Utilizaremos el datasheet de la LCD 16j2A para determinar su modo de operación. Se consultará el datasheet del servomotor para su óptimo uso. Se consultará el datasheet del teclado ps2 para la caracterización. Investigar sobre el uso del programa ccs para la programación del pic.

Dicho de otro modo el primer punto a esclarecer es el cómo funciona el teclado ps2 para poder mandar el código con el cual identifica una cifra el cual será la posición de un servomotor, para posteriormente mediante la LCD se muestre la esta.

4. Tareas previas a la Práctica

Funcionamiento de la LCD Investigar que es un teclado ps2 Funcionamiento de un servomotor

5. Procedimiento

Teniendo las especificaciones, características y funcionamiento de los dispositivos principales pasamos al procedimiento que se siguió en la elaboración de la práctica.

Básicamente se dividió la práctica en partes para facilitar el trabajo.

Primero se realizó un programa en el lenguaje c para poder mover el servomotor a través del pic controlándolo con un push botón, sencillamente dos posiciones 0° y 180°, mostrando la posición en la que se encuentra.

Se presentara el código que se utilizó en esta práctica del servomotor

Benemérita Universidad Autónoma de Puebla Facultad de Ciencias de la Electrónica Área de Sistemas Digitales

3

Page 4: Reporte Servomotor

Práctica 3

Control del servomotor a través del teclado ps2

#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);

Benemérita Universidad Autónoma de Puebla Facultad de Ciencias de la Electrónica Área de Sistemas Digitales

4

Page 5: Reporte Servomotor

Práctica 3

Control del servomotor a través del teclado ps2

}}

En este código podemos observar que una vez que podamos obtener el valor de la posición a través del teclado ps2 entonces será asignado a la variable “posicion” y una vez que este se tenga a través de una formula se el programa realizara la conversión necesaria para determinar el valor de los tiempos en alto y en bajo manteniendo el periodo.

Después se pretendía hacer un código con el cual se detectara el un número con el uso del teclado ps2. El código 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(){

Benemérita Universidad Autónoma de Puebla Facultad de Ciencias de la Electrónica Área de Sistemas Digitales

5

Page 6: Reporte Servomotor

Práctica 3

Control del servomotor a través del teclado ps2

}

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); }

Benemérita Universidad Autónoma de Puebla Facultad de Ciencias de la Electrónica Área de Sistemas Digitales

6

Page 7: Reporte Servomotor

Práctica 3

Control del servomotor a través del teclado ps2

break; default: break;} break;} case 1:{ delay_us(30); break;} break; default: break; } }}

Como se puede apreciar el código no está completo aunque se usaron varios con los cuales no se lograron los resultados deseados.

Benemérita Universidad Autónoma de Puebla Facultad de Ciencias de la Electrónica Área de Sistemas Digitales

7

Page 8: Reporte Servomotor

Práctica 3

Control del servomotor a través del teclado ps2

6. Metodología de Diseño

Se utilizaron diferentes herramientas para el diseño 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 posición del servomotor, el teclado (ps2) para controlar la posición 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.

¿Cómo trabaja un servo?

El motor del servo tiene algunos circuitos de control y un potenciómetro (una resistencia variable) esta es conectada al eje central del servo motor. Este potenciómetro permite a la circuitería de control, supervisar el ángulo actual del servo motor. Si el eje está en el ángulo correcto, entonces el motor está apagado. Si el circuito chequea que el ángulo no es el correcto, el motor girará en la dirección adecuada hasta llegar al ángulo correcto. El eje del servo es capaz de llegar alrededor de los 180 grados. Normalmente, en algunos llega a los 210 grados, pero varía según el fabricante. Un servo normal se usa para controlar un movimiento angular de entre 0 y 180 grados.

Un servo normal no es mecánicamente capaz de retornar a su lugar, si hay un mayor peso que el sugerido por las especificaciones del fabricante.

La cantidad de voltaje aplicado al motor es proporcional a la distancia que éste necesita viajar. Así, si el eje necesita regresar una distancia grande, el motor regresará a toda velocidad. Si este necesita regresar sólo una pequeña cantidad, el motor correrá a una velocidad más lenta. A esto se le llama control proporcional.

El cable de control se usa para comunicar el ángulo. El ángulo está determinado por la duración de un pulso que se aplica al alambre de control. A esto se le llama PCM Modulación codificada de Pulsos. El servo espera ver un pulso cada 20 milisegundos

Benemérita Universidad Autónoma de Puebla Facultad de Ciencias de la Electrónica Área de Sistemas Digitales

8

Page 9: Reporte Servomotor

Práctica 3

Control del servomotor a través del teclado ps2

(.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 posición de 90 grados (llamado la posición 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 duración del pulso indica o dictamina el ángulo del eje (mostrado como un círculo verde con flecha). Nótese 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.

Benemérita Universidad Autónoma de Puebla Facultad de Ciencias de la Electrónica Área de Sistemas Digitales

9

Page 10: Reporte Servomotor

Práctica 3

Control del servomotor a través del teclado ps2

Características del teclado (ps2)

Un teclado PS/2 de 104 teclas para PC es un dispositivo razonablemente inteligente. Esto quiere decir que él mismo se encarga de la parte hardware del rastreo de teclas, de evitar los insufribles rebotes y de transmitirnos, mediante una trama perfectamente establecida, de los resultados de nuestras manipulaciones sobre sus teclas.

El teclado PS/2 tiene un mapa de teclas a las que asigna un código, de uno o dos bytes, para cada una de ellas y que son los códigos que nos va a transmitir para indicarnos que se está pulsando una tecla determinada. A estos códigos les vamos a llamar códigos de rastreo de teclado. Más abajo os muestro una imagen de un teclado estándar donde se muestran los códigos de rastreo de todas y cada una de las teclas:

Benemérita Universidad Autónoma de Puebla Facultad de Ciencias de la Electrónica Área de Sistemas Digitales

10

Page 11: Reporte Servomotor

Práctica 3

Control del servomotor a través del teclado ps2

El teclado PS/2 envía el código 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 repetición, que es programable, y el mismo código de rastreo con el prefijo del byte F0h al ser soltada, también conocido como Break Code.

Por ejemplo: Para conseguir la letra G Mayúscula 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 también admite comandos. Dispone de funciones build-in que podemos disparar mediante el envío 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).

Benemérita Universidad Autónoma de Puebla Facultad de Ciencias de la Electrónica Área de Sistemas Digitales

11

Page 12: Reporte Servomotor

Práctica 3

Control del servomotor a través del teclado ps2

El teclado y el interfaz de teclado están físicamente conectados a través del cable del teclado. Está formado por un grupo de 5 cables con una malla de protección 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 típico seria 300 mA). Las señales clock y data son usadas para la comunicación entre host y teclado en colector abierto.|

Línea Descripción

VCC Alimentación del teclado. +5V.

GND Masa del teclado. 0 V.

CLOCK Linea de reloj (CLK, CTS). TTL. Colector abierto.

Benemérita Universidad Autónoma de Puebla Facultad de Ciencias de la Electrónica Área de Sistemas Digitales

12

Page 13: Reporte Servomotor

Práctica 3

Control del servomotor a través del teclado ps2

DATA Línea de datos (RxD, TxD, RTS). TTL colector abierto.

N/C No conectado. Reset en algunos teclados viejos.

Protocolo de comunicación PS/2:

El teclado PS/2 se comunica mediante un Protocolo Serie Síncrono. Utiliza, por lo tanto, una señal de Clock que índica cuando están disponibles los correspondientes bits en la señal de Data.

En reposo la señal de Clock está a nivel alto; a cada pulso a nivel bajo corresponde un pulso a nivel alto o bajo en la señal 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 continuación los 8 bits del Dato a transmitir enviándose primero el LSB (ó bit menos significativo), el décimo es el de paridad (usa la Impar, u Odd en Inglés) y por último un bit de ACK o Stop.

Abajo puede verse un cronograma de esta trama de comunicación PS/2 Teclado.

Donde los tiempos son:

Benemérita Universidad Autónoma de Puebla Facultad de Ciencias de la Electrónica Área de Sistemas Digitales

13

Page 14: Reporte Servomotor

Práctica 3

Control del servomotor a través del teclado ps2

7. Simulación del Diseño

Prácticamente no nos fuimos directamente a conectar los cables y todo por el estilo después de hacer el programa en c para hacer el funcionamiento del pic, ya que sabemos que se nos pueden pasar algunos errores sin darnos cuenta por, por lo mismo tuvimos que ir haciendo simulaciones para ir viendo los errores que teníamos, así ahorrarnos el trabajo con las conexiones físicas. Las simulaciones fueron realizas en el isis profesional.Hasta que en las simulaciones funciona el circuito procedemos a conectar los cables y dispositivos físicamente para asi estar seguros de que va a funcionar. Algunas veces no es suficiente con las simulaciones, ya que en ellas funciona mientras que físicamente sigue con los errores, ahí tenemos que buscar el error ya desde el circuito físico tomando en cuenta hasta la fuente de alimentación así como el protoboard.

A continuación se mostraran algunas imágenes de las simulacines que se realizaron en esta práctica:

Benemérita Universidad Autónoma de Puebla Facultad de Ciencias de la Electrónica Área de Sistemas Digitales

14

Page 15: Reporte Servomotor

Práctica 3

Control del servomotor a través del teclado ps2

Benemérita Universidad Autónoma de Puebla Facultad de Ciencias de la Electrónica Área de Sistemas Digitales

15

Figura. Simulación del circuito sin teclado ps2

Figura. Simulación del circuito sin teclado ps2 oprimiendo el push buttn para la segunda posición

Page 16: Reporte Servomotor

Práctica 3

Control del servomotor a través del teclado ps2

En la última simulación se observa que solo se puede colocar el conector ps2 mas no se puede simular la función del teclado por lo cual se probó solo de forma física si el teclado funcionaba o no.

8. Implementación del Diseño

El circuito físico que se presentó en la simulación anterior correspondiente es el siguiente:

Benemérita Universidad Autónoma de Puebla Facultad de Ciencias de la Electrónica Área de Sistemas Digitales

16

Figura. Simulación del circuito con el teclado ps2

Page 17: Reporte Servomotor

Práctica 3

Control del servomotor a través del teclado ps2

Información breve del PIC18f4550

10. Discusión de Resultados

En esta práctica observamos que en caso de no calcular bien los tiempos del servomotor en la parte práctica este no funciona de forma adecuada ya que puede que este comienzo a vibrar o no se ponga en la posición deseada.

Benemérita Universidad Autónoma de Puebla Facultad de Ciencias de la Electrónica Área de Sistemas Digitales

17

Page 18: Reporte Servomotor

Práctica 3

Control del servomotor a través del teclado ps2

11. Conclusiones

El uso de microcontroladores es de vital importancia para el desarrollo de las industrias, en el desarrollo de los procesos autónomas, 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 economía, 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. Valdés Pérez, R. Pallás Areny; Alfaomega; 2007.

Microcontroladores PIC: Diseño práctico de aplicaciones, 2ª parte; J.M. Angulo Usategui, S. Romero Yesa, I. Angulo Martínez; McGraw Hill; 2ª edición; 2006.

HD44780U (LCD-II) (Dot Matrix Liquid Crystal Display Controller/Driver) HITACHI MICROCHIP DATA SHEET PIC18F4550

Benemérita Universidad Autónoma de Puebla Facultad de Ciencias de la Electrónica Área de Sistemas Digitales

18