Está en la página 1de 11

AO DE LA DIVERSIFICACION PRODUCTIVA DEL FORTALECIMIENTO DE LA

EDUCACION
UNIVERSIDAD NACIONAL FEDERICO VILLARREAL
FACULTAD DE INGENIERIA E INFORMATICA
ESCUELA DE TELECOMUNICACIONES

MATERIA: LABORATORIO DE SISTEMAS DIGITALES ll

PROYECTO : FINAL DE FIN DE SEMESTRE

DOCENTE: ING. AMADOR VIVAR RECARTE

INFORME N5

ALUMNOS:

QUILLASH RAMOS JORGE ALEXIS


RUIZ MORENO KAROL SMITH :p
MENDEZ ASPAJO JHONATTAN LUDWITH WITH WITH WITH WITH
ARANTZA BURGA

2015

INTRODUCCION:
A medida que pasa el tiempo la automatizacin ha sido muy importante para la
mejor calidad de vida de las personas, tal es el caso de los motores; como se sabe
un motor es en esencia un conversor electromecnico, que transforma energa
elctrica en mecnica.
Un motor convencional gira libremente al aplicar una tensin comprendida dentro
de ciertos lmites , que corresponden de un lado al par mnimo de vencer su propia
inercia mecnica, y otro sus propias limitaciones de potencia.
Con el tiempo se necesitaron motores precisos, capaces de poder controlarse en
todo tiempo su movimiento ya sea para el uso de posicionadores, maquinas,
movimiento de cmaras, impresoras, en el caso de nuestra carrera el
posicionamiento de antenas.
El motor paso a paso est concebido de tal manera que gira un determinado
ngulo proporcional a la "codificacin" de tensiones aplicadas a sus entradas, la
posibilidad de controlar en todo momento el movimiento de un motor permite
realizar desplazamientos angulares lo suficientemente precisos, dependiendo el
angulo de paso (o resolucin angular).

OBJETIVOS:
El fin de este proyecto fue el de controlar de manera precisa la cantidad de
movimientos que pueda hacer un motor paso a paso dndole comandos tanto
para el numero de pasos que tenga que dar, direccin ,as como el tiempo en el
que tiene que ejecutar esta accin.

DESARROLLO:
En el presente proyecto hemos usado el programa PIC C COMPILER, ya que
estamos familiarizados con este programa.
Lo que hicimos fue usar el PIC 18F4550 para guardar las instrucciones del
programa, los comandos fsicos que le daremos a este proyecto sern: ingresar el
nmero de pasos, tiempo en realizar la accin, estos datos son mostrados en un
LCD 2x16
Para los datos ingresados hemos usado pulsadores, el primer pulsador es para 1
paso, el 2do pulsador es para 10 pasos y el 3er pulsador es para 100 pasos, el 4to
pulsador es el da los comandos al PIC.
Como va en la programacin del PIC, este nos pedir el tiempo en que debe ser
ejecutada la accin, con el 1er pulsador podemos aumentarle 20ms y con el 2do
pulsador podemos restarle 20ms; volvemos a presionar el 4to pulsador para enviar
los datos al PIC.
Ahora el PIC nos pedir la direccin(izquierda o derecha) en la que tiene que ir el
programa, podemos cambiarla con el 2do pulsador., una vez hecho esto
presionamos el 4to pulsador para enviar los datos al PIC.
Como podemos ver en todo momento el LCD nos muestra los datos que vamos
ingresando.

DISEO:
Cabe recalcar que hemos usado 4 pulsadores, para mandar los datos al PIC, y un
pulsador de reset si queremos resetear el circuito.
Para el diseo podramos haber usado un oscilador externo, pero como el PIC
18F4550 cuenta con un oscilador interno, lo nico que hicimos fue declararlo en la
programacin.
El motor usado es un motor paso a paso obviamente para poder controlar el
nmero de pasos, en caso de utilizar un motor DC no funcionara como lo
diseamos.
El datasheet del PIC 18F4550 est en la siguiente figura:

Los pines que no usamos los podemos dejar al aire ya que no los hemos
programado para que se activen.
Cabe resaltar que el programa PIC C Compiler al momento de ejecutar, nos da el
archivo HXD que es con el que debe quemarse el PIC. El MIKRO C tambin
funcionaria pero nos pareci ms viable usar el PIC C COMPILER ya que en mi
parecer y el de mis compaeros nos result ms favorable al momento de
programar ya que pudimos declarar al comienzo de la programacin el oscilador
interno.

DIAGRAMA DE CONECCIONES:

CODIGO:
#include <18F4550.h>
#fuses HS,NOPROTECT,NOPUT,NOWDT
#use delay (clock=20000000)
#include <lcd.c>
#use fast_io(A)
#use fast_io(B)
#use fast_io(D)
unsigned int16 ayudadegiro=1;
unsigned int16 referencia=0;
unsigned int16 conteo=1,ejecutar=0;
int16 velocida=100;
void stop(void){
if((input(PIN_A0)==1)&&(input(PIN_A1)==0)&&(input(PIN_A2)==1)&&(input(PI
N_A3)==1)){
reset_cpu();
}
}
void giro1(void){

for(ejecutar=0;ejecutar<conteo;ejecutar++){
stop();
lcd_gotoxy(14,1);
printf(lcd_putc,"%ld",referencia);
output_B(0x01);
delay_ms(velocida);
referencia++;
output_B(0x02);
delay_ms(velocida);
referencia++;
ejecutar++;
}
}
void giro(void){
for(ejecutar=0;ejecutar<conteo;ejecutar++){
stop();
output_B(0x04);
delay_ms(velocida);
referencia++;
lcd_gotoxy(14,1);
printf(lcd_putc,"%ld",referencia);
output_B(0x08);
delay_ms(velocida);
referencia++;
lcd_gotoxy(14,1);
printf(lcd_putc,"%ld",referencia);
ejecutar++;
}
}
void inicializar(void){
lcd_init();
lcd_gotoxy(1,1);
lcd_putc("Audio Vision! ");
delay_ms(10);
}
void tercermenu(void){
lcd_putc('\f');
lcd_gotoxy(1,2);
printf(lcd_putc,"Derecha
");
delay_ms(10);
for(;;){
lcd_gotoxy(1,1);
printf(lcd_putc,"izquierda
");
delay_ms(10);
if((input(PIN_A0)==0)&&(input(PIN_A1)==1)&&(input(PIN_A2)==1)&&(input(PI
N_A3)==1)){
lcd_gotoxy(1,2);

printf(lcd_putc,"Derecha
");
ayudadegiro=1;
}
if((input(PIN_A0)==1)&&(input(PIN_A1)==0)&&(input(PIN_A2)==1)&&(input(PI
N_A3)==1)){
lcd_gotoxy(1,2);
printf(lcd_putc,"Izquierda ");
ayudadegiro=2;
}
if((input(PIN_A0)==1)&&(input(PIN_A0)==1)&&(input(PIN_A2)==1)&&(input(PI
N_A3)==0)){
if(ayudadegiro==1){
lcd_putc('\f');
delay_ms(10);
lcd_gotoxy(1,1);
printf(lcd_putc,"Derecha
");
delay_ms(10);
lcd_gotoxy(1,2);
printf(lcd_putc,"%ld",velocida);
delay_ms(5);
lcd_gotoxy(4,2);
printf(lcd_putc," ms,");
delay_ms(5);
lcd_gotoxy(14,2);
printf(lcd_putc,"%ld",conteo);
giro();
reset_cpu();
}
if(ayudadegiro==2){
lcd_putc('\f');
delay_ms(10);
lcd_gotoxy(1,1);
printf(lcd_putc,"Izquierda ");
delay_ms(10);
lcd_gotoxy(1,2);
printf(lcd_putc,"%ld",velocida);
delay_ms(5);
lcd_gotoxy(4,2);
printf(lcd_putc," ms,");
delay_ms(5);
lcd_gotoxy(14,2);
printf(lcd_putc,"%ld",conteo);
giro1();
reset_cpu();
}
}
delay_ms(30);
}
}
void segundapantalla(void){

delay_ms(30);
lcd_putc('\f');
for(;;){
delay_ms(25);
lcd_gotoxy(1,1);
printf(lcd_putc,"Pasos=");
lcd_gotoxy(8,1);
printf(lcd_putc,"%ld",conteo);
delay_ms(5);
lcd_gotoxy(12,2);
printf(lcd_putc,"%ld",velocida);
delay_ms(5);
lcd_gotoxy(1,2);
lcd_putc("Time (ms)=");
if(input(PIN_A0)==0&&input(PIN_A1)==1&&input(PIN_A2)==1&&input(PIN_A3)
==1){
velocida = velocida+20;if(velocida>=2000){velocida=2000;}
}
if((input(PIN_A0)==1)&&(input(PIN_A1)==0)&&(input(PIN_A2)==1)&&(input(PI
N_A3)==1)){
lcd_putc('\f');
velocida = velocida-20;
if(velocida<=0){velocida=1;}
}
if((input(PIN_A0)==1)&&(input(PIN_A1)==1)&&(input(PIN_A2)==0)&&(input(PI
N_A3)==1)){
velocida = 100;
}
if((input(PIN_A0)==1)&&(input(PIN_A0)==1)&&(input(PIN_A2)==1)&&(input(PI
N_A3)==0)){
tercermenu();
}
if(conteo>=999){conteo=999;}
delay_ms(20);
}
}
void velocidad(void){
lcd_putc('\f');
for(;;){
lcd_gotoxy(1,1);
printf(lcd_putc,"Pasos=");
delay_ms(10);
lcd_gotoxy(10,1);
printf(lcd_putc,"%ld"conteo);
if((input(PIN_A0)==0)&&(input(PIN_A1)==1)&&(input(PIN_A2)==1)&&(input(PI
N_A3)==1)){
conteo++;
}
if((input(PIN_A0)==1)&&(input(PIN_A1)==0)&&(input(PIN_A2)==1)&&(input(PI
N_A3)==1)){

conteo=conteo+10;
}
if((input(PIN_A0)==1)&&(input(PIN_A1)==1)&&(input(PIN_A2)==0)&&(input(PI
N_A3)==1)){
conteo=conteo+100;
}
if((input(PIN_A0)==1)&&(input(PIN_A0)==1)&&(input(PIN_A2)==1)&&(input(PI
N_A3)==0)){
segundapantalla();
}
delay_ms(30);
if(conteo>=999){conteo=1;}
}
}
void main()
{
lcd_init();
SET_TRIS_B( 0xF0 );
SET_TRIS_D( 0x00 );
inicializar();
for(;;){
velocidad();
}
}

CONCLUSIONES:
Podemos concluir que se puede usar tanto un oscilador interno como
externo, en este caso hemos usado un oscilador interno de 20MHZ.
En este caso este programa puede ser usado para controlar el
movimiento de un una impresora, ya que se requiere de mucha precisin
para este aparato.
El motor paso a paso es muy til en cuanto al movimiento preciso; con
un motor DC no se podran lograr estos objetivos, salvo que se tenga un
freno que desacelere el movimiento, pero en todo caso este generara
calor en los frenos lo cual afectara el correcto funcionamiento de estos
aparatos que necesitan precisin.

BIBLIOGRAFIA:
*C++ como programar DEITEL
*https://www.ccsinfo.com/downloads/ccs_c_manual.pdf (manual PIC C
Compiler)
*http://www.profesormolina.com.ar/tecnologia/motor_pap.htm (teora
motor PAP)
*http://www-app.etsit.upm.es/departamentos/teat/asignaturas/labingel/motores%20paso%20a%20paso_1def.pdf (mas teora motor PAP)
*https://www.youtube.com/watch?v=sRlXSrpku-U (como usar el
oscilador)

También podría gustarte