Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Laboratorio PIC16F887A PDF

Descargar como pdf o txt
Descargar como pdf o txt
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.

4
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 4

TECLADO MICROCONTROLADOR
PIC 16 F 877A SERVO
11
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.

5
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

Borrar Ingresar ENTER


LCD

Borrar LCD

Convertir centenas, decenas y unidades de ASCII a entero

Sumar centenas, decenas y unidades y almacenarlo en ngulo

Visualizar Si
ERROR excedi Angulo>180
el ngulo
No
Mostrar ngulo en LCD

Borrar LCD

A
6
A

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> goto leer_datoa;


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

7
else{ }
if(Dat_c==0)
goto leer_datoc; //mostrar ngulo en LCD
lcd_putc(Dat_c); else{
} lcd_putc(" Angulo Cargado");
lcd_putc("\n de: ");
lcd_putc(39); printf(lcd_putc,"%Lu",Resultado);
//ingresar ENTER (en este caso el lcd_putc(39);
ENTER es la tecla '='; delay_ms(2000);
//aunque en el teclado opcional que se //borrar LCD
tiene es la tecla '#') lcd_putc('\f');
leer_enter:
enter=kbd_getc(); //convertir el angulo en seal PWM
if(enter==0) for(i=0;i<Resultado;i++){
goto leer_enter; k=k+10;
if(enter=='='){ }
lcd_putc('\f'); d=k+280;
lcd_putc(" Cargando "); f=20000-d;
lcd_putc("\n Angulo "); //visualizar seal PWM
delay_ms(1500); lcd_putc(" La senal PWM ");
//borrar LCD lcd_putc("\n es de: ");
lcd_putc('\f'); printf(lcd_putc,"%LU",k);
} lcd_putc(230);
else{ lcd_putc("s");
goto leer_enter; delay_ms(25);
} //sacar seal PWM por el puerto de
//covertir cenenas, decenas y unidades servomotor
de ASCII a entero impulso:
a=Dat_a-48; output_high(PIN_D1);
b=Dat_b-48; delay_us(d);
c=Dat_c-48; output_low(PIN_D1);
delay_us(f);
a=a*100; output_high(PIN_D1);
b=b*10; delay_us(d);
c=c*1; output_low(PIN_D1);
//sumar centenas, decenas y unidades y delay_us(f);
almacenarlo en angulo goto impulso;
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;

8
4. DIAGRAMA DE CONEXIONES EN PROTEUS

9
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

También podría gustarte