Está en la página 1de 8

INTRODUCCIN

En el proceso de diseo para la solucin de problemas, el ingeniero electrnico


fundamenta su trabajo en la interaccin entre la aplicacin de sus conocimientos y su
capacidad de anlisis. El rea de la electrnica digital, le permite precisamente explotar
estas dos bases, desarrollando un pensamiento lgico ante determinada problemtica,
facilitndole la produccin de soluciones viables.
Una de las principales bases de la electrnica digital es el micro controlador, que al
exponer su versatilidad, generan controversia ante lo que podra llamarse revolucin
electrnica, en compatibilidad con cada una de sus reas, entre las que se encuentra la
robtica, de la cual se sustentar un breve segmento en el presente informe de
laboratorio.
La aplicacin de micro controladores, en este caso esta enfocada a la manipulacin de un
servomotor y la visualizacin del comportamiento del mismo en base a datos de entrada.
Lo que inicialmente se ver de una forma general por medio de un diagrama de bloques
seguido por el diagrama de flujo, en lo que se basar la simulacin e implementacin del
sistema como tal.

1. DIAGRAMA DE BLOQUES Y PARAMETROS DEL SISTEMA

IMPLEMENTADO
El servomotor tiene la libertad de moverse de cero a ciento ochenta grados, sin embargo
a la hora de ingresar los valores tiene un margen de error de 1.8 aunque no tiene mucha
importancia ya que es un desfase muy pequeo.
Cuando se ingrese el valor del ngulo este ser visualizado en la LCD y nicamente
hasta que oprima la tecla ENTER la informacin ser enviada para que el servomotor se
mueva los grados indicados. Cuando al sistema se le ingrese un valor que exceda los
180 la LCD mostrara un mensaje de error, por lo tanto tendr que volver a ingresar el
valor del ngulo.
Importante al momento de ingresar un ngulo inferior a 100, el valor tiene que comenzar
con un cero a la izquierda, y cuando el ngulo sea inferior a 10, tiene que comenzar con
dos ceros; ejemplo: 045 007.
El presente diagrama de bloques permitir adquirir una idea general sobre el
comportamiento del sistema desarrollado, describiendo de esta forma las partes
principales por las que est compuesto. Este diagrama es de vital importancia ya que de
este se partir para desarrollar el diagrama de flujo.

LCD
11
TECLADO
11

MICROCONTROLADOR
PIC 16 F 877A

SERVO
MOTOR
1

Como se puede observar en la figura 1. Este sistema trabaja con un PIC 16 f 877 A y
cuenta con una entrada de 7 bits, que corresponde a los datos emitidos por medio de un
teclado.
Posterior al sistema de control, se encuentran las dos salidas del sistema, la primera (de 4
bits) es la visualizacin de los datos ingresados, por medio de una LCD; la segunda (de 1
bit), es la maniobra del servomotor tambin en base a los datos de entrada.
Entonces, en base al diagrama de bloques es fcil deducir que la funcin del sistema es
tomar los valores que el usuario ingresa por teclado y ejecutar especficas funciones
sobre ellos de tal manera que los podamos visualizar en una LCD y en la maniobrabilidad
de un servomotor.

2.

DIAGRAMA DE FLUJO DEL SISTEMA DE CONTROL


Inicio

Entradas: teclado (centenas, decenas, unidades, enter(= #))


Salidas: Angulo (LCD), seal servo (servomotor).

Inicializar LCD

Ingresar centenas y visualizar en LCD

Ingresar decenas y visualizar en LCD

Ingresar unidades y visualizar en LCD

Ingresar ENTER

Borrar
LCD

Borrar LCD

Convertir centenas, decenas y unidades de ASCII a entero

Sumar centenas, decenas y unidades y almacenarlo en ngulo

Visualizar
ERROR excedi
el ngulo

Si
Angulo>180
No
Mostrar ngulo en LCD

Borrar LCD

Convertir el ngulo en seal PWM

Visualizar seal PWM

Sacar seal PWM por el puerto de servomotor

Fin

3. CDIGO FUENTE EN PCW COMPILER


#INCLUDE<16F877a.H>
#FUSES HS, NOWDT, NOPROTECT,
NOLVP
#USE DELAY (CLOCK=20000000)
#INCLUDE<FLEXLCD.H>
#INCLUDE<TECLADO.C>
//inicio
//definicin de variables
char Dat_a,Dat_b,Dat_c,enter;
int i;
int16 a,b,c,d,k,Resultado,f;
VOID MAIN()
{
//inicializar LCD
//visualizar: digite ngulo
inicio:
lcd_init();
lcd_putc(" Digite Angulo ");
lcd_putc("\n
");
//ingresar centenas y mostrar en LCD
leer_datoa:
Dat_a=kbd_getc();
if(Dat_a=='+'||Dat_a==''||Dat_a=='X'||Dat_a=='/'||Dat_a=='='){

goto leer_datoa;
}
else{
if(Dat_a==0)
goto leer_datoa;
lcd_putc(Dat_a);
}
//ingresar centenas y visualizar en LCD
leer_datob:
Dat_b=kbd_getc();
if(Dat_b=='+'||Dat_b==''||Dat_b=='X'||Dat_b=='/'||Dat_b=='='){
goto leer_datob;
}
else{
if(Dat_b==0)
goto leer_datob;
lcd_putc(Dat_b);
}
//ingresar unidades y mostrar en LCD
leer_datoc:
Dat_c=kbd_getc();
if(Dat_c=='+'||Dat_c==''||Dat_c=='X'||Dat_c=='/'||Dat_c=='='){
goto leer_datoc;
}
7

else{
if(Dat_c==0)
goto leer_datoc;
lcd_putc(Dat_c);
}
lcd_putc(39);
//ingresar ENTER (en este caso el
ENTER es la tecla '=';
//aunque en el teclado opcional que se
tiene es la tecla '#')
leer_enter:
enter=kbd_getc();
if(enter==0)
goto leer_enter;
if(enter=='='){
lcd_putc('\f');
lcd_putc(" Cargando ");
lcd_putc("\n Angulo ");
delay_ms(1500);
//borrar LCD
lcd_putc('\f');
}
else{
goto leer_enter;
}
//covertir cenenas, decenas y unidades
de ASCII a entero
a=Dat_a-48;
b=Dat_b-48;
c=Dat_c-48;
a=a*100;
b=b*10;
c=c*1;
//sumar centenas, decenas y unidades y
almacenarlo en angulo
Resultado=a+b+c;
//preguntar si el angulo(resultado) es
mayor a 180
if(Resultado>180){
//visualizar ERROR exed el ngulo
lcd_putc(" ERROR!! ");
lcd_putc("\n Excedio Ang.");
delay_ms(2000);
//borrar LCD
lcd_putc('\f');
goto inicio;

}
//mostrar ngulo en LCD
else{
lcd_putc(" Angulo Cargado");
lcd_putc("\n de: ");
printf(lcd_putc,"%Lu",Resultado);
lcd_putc(39);
delay_ms(2000);
//borrar LCD
lcd_putc('\f');
//convertir el angulo en seal PWM
for(i=0;i<Resultado;i++){
k=k+10;
}
d=k+280;
f=20000-d;
//visualizar seal PWM
lcd_putc(" La senal PWM ");
lcd_putc("\n es de: ");
printf(lcd_putc,"%LU",k);
lcd_putc(230);
lcd_putc("s");
delay_ms(25);
//sacar seal PWM por el puerto de
servomotor
impulso:
output_high(PIN_D1);
delay_us(d);
output_low(PIN_D1);
delay_us(f);
output_high(PIN_D1);
delay_us(d);
output_low(PIN_D1);
delay_us(f);
goto impulso;

4. DIAGRAMA DE CONEXIONES EN PROTEUS

CONCLUSIONES

- A partir de la prctica de laboratorio se pudo dar a conocer la versatilidad del micro


controlador con que contamos ya que independientemente de su gama, nos permiten
realizar funciones tan dispendiosas como lo es la manipulacin de servomotores y la
visualizacin de su funcionamiento a la vez.
- Se logr concluir tambin, que para el desarrollo de la prctica es de vital importancia
tener claro que lo que se ingresa por teclado no es mas que dgitos en modo ASCII, as
que es necesario convertirlos a enteros para que la LCD nos los muestre como valores
decimales y convertirlos a seal PWM Para que el servomotor los reconozca como
magnitudes; teniendo en cuenta que cada salida cuenta con su respectiva librera.
- lo mas complicado de este laboratorio es tomar los PWM para que el servo motor se
desplace los grados que se deseen. Aunque lo nico que hay que hacer es encontrar una
relacin matemtica que nos relacione los pulsos con los grados.
- la aplicacin de de control de un servomotor con un micro controlador es muy til ya que
desde este se pueden modificar los valores arbitrariamente, lo cual no se puede lograr
con otros dispositivos.

10

BIBILOGRAFIA

- Garcia, eduardo. Compilador c ccs y simulador proteus para microcontroladores PIC. Editorial
alfaomega, 2005.

- Microcontroladores PIC: diseo prctico de aplicaciones: pic16f87x, segunda. Parte, editorial


mcgraw hill, 2000.

11