Está en la página 1de 9

UNIVERSIDAD FRANCISCO DE PAULA SANTANDER FACULTAD DE INGENIERIAS PLAN DE ESTUDIOS DE INGENIERIA ELECTRNICA MICROCONTROLADORES VISUALIZACIN DE LA VELOCIDAD DE UN MOTOR DC CON

UN PIC16F877
Ing. Gabriel Snchez Surez gabrielsanchezsuarez@hotmail.com Estudiantes: Luis Carlos Seplveda luicasbe@yahoo.com Manuel Alejandro Maldonado R Manuelalejo_maldo@hotmail.com Mario Yesid Veloza myesidvel@hotmail.com Edward Viviescas Duran edwardviviescas@hotmail.com

En el desarrollo de este curso, por lo tanto y en concordancia con el curso de Electrnica de Potencia se presenta la visualizacin de velocidad de un motor DC, por medio del microcontrolador PIC 16F877, en una pantalla LCD. OBJETIVO GENERAL: Visualizar la velocidad de un motor DC con el PIC 16F877, que muestre la velocidad (rps) en una pantalla LCD. OBJETIVOS ESPECIFICOS: Recibir y contar los pulsos enviados por el encoder del motor en una escala de tiempo para ser cargados en una variable y posteriormente ser manipulados. Simulacin del cdigo en el programa MPLAB. Realizar subrutinas especiales para ejecutar divisiones, ya que el PIC 16F877 no cuenta con esta instruccin. Mostrar en una pantalla LCD 2x16, la velocidad (rps) a la que gira el motor.

RESUMEN El proyecto consiste en el manejo de una pantalla LCD, y el control de un motor DC por medio del PIC16F877, para esto se utiliz el software para simulacin de lenguaje ASM para PICs llamado MPLAB el cual permite depurar programas y configurar los puertos de la cualquier microcontrolador PIC de cualquier gama, una pantalla LCD (2X16) para la visualizacin de las revoluciones del motor. INTRODUCCION: En el desarrollo de la ingeniera y de los procesos industriales, el aporte de los microcontroladores ha sido notable, desde simple actividades de conteo, hasta el control de todo un sistema de produccin entre otros.

Ing. Gabriel Snchez Surez gsanchez@bari.ufps.edu.co

MARCO TEORICO:

en 360 (pulsos en un giro). Este proceso me permite conocer el nmero de revoluciones en un giro. Sin embargo esta divisin por restas no me permite conocer el valor en decimales, aunque en este caso no es necesaria la exactitud. Al mantener el valor de las revoluciones en un segundo en el registro de trabajo W, se procedi a la visualizacin en la pantalla.

Todo lo concerniente al marco terico se encuentra al final. Ver anexos. DESARROLLO: Lo primero a desarrollar fue la etapa de adecuacin de la seal del encoder, pues esta es la seal a medir; para este caso utilizamos un inversor smith trigger, 74C14N, de esta manera la seal llega al microcontrolador en valores de 0 y 5v respectivamente y en forma cuadrada, medio periodo en el estado alto y la otra mitad en el estado bajo, que es la seal deseada para el conteo de los pulsos. El siguiente paso fue la programacin del PIC, para este caso se desarrollo en un primer modulo, que se encargaba de realizar divisiones, ya que el PIC 16F877 no cuenta con esta opcin, este proceso se desarrollo mediante las restas consecutivas, e incrementando un contador, que a su ves depende del valor de la bandera del registro STATUS,C que me indica si el acarreo en la suma o en la resta, para as de esta manera saber cuantas veces cabe un nmero, en este caso 3600 (conteo aproximado de pulsos por el encoder en un intervalo de tiempo),

Para llevar a cabo la visualizacin primero se tubo en cuenta separar el numero decimal de dos dgitos en una componente decimal y la otra en unidades, para poder ser mostradas en el display, as se muestra primero el valor en decenas de las revoluciones y luego el valor de las unidades. Esta subrutina se hizo de esta forma ya que, cuando se visualiza en la pantalla se enva nmero por nmero. Teniendo en variables diferentes los valores de decenas y unidades se procedi a desarrollar la rutina de visualizacin en la pantalla, se habilito el puerto D del microcontrolador, en esta caso trabajamos con un bus de direcciones de 8 bits, pues es mas sencillo y no existe la necesidad de ahorrar pines, aunque se pudo haber realizado con un bus de 4 bits. Adems del bus se habilitaron los pines E0 y E1 para las variables de control E y RS (enable, register select) respectivamente. En los anexos adjuntos existe un manual en cual nos basamos para relizar la habilitacin y el envi de datos segn el diagrama de tiempos sugeridos. Ya elaborado el programa compilado y simulado en MPLAB, se procedi a programar el PIC en

Ing. Gabriel Snchez Surez gsanchez@bari.ufps.edu.co

el programador EPIWIN, por ser sencillo y contar con el hardware preciso. Una vez programado el PIC, se realizo el montaje sobre protoboard, y se realizaron las pruebas respectivas. CONCLUSIONES: Reconocimos la ventaja de los microcontroladores PIC, pues estos tiene aplicaciones precisas que se pueden aprovechar, como 8 canales de conversores A/D, timers, 2 PWM. Entre otros. Se desarrollo rutinas dentro del programa para realizar divisiones, ya que esta el PIC en sus registros no cuenta con esta opcin. Para la visualizacin de datos en la pantalla LCD 2X16 se guardo en variables equivalentes (decenas, centenas) para hacer mas sencillo el proceso. BIBLIOGRAFIA: www.dunkermotoren.de info@dunkernmotoren.de

Ing. Gabriel Snchez Surez gsanchez@bari.ufps.edu.co

TITLE

"TACOMETRO DIGITAL" LIST P=16f877,C=140 ; PROCESSOR TYPE ERRORLEVEL 1, -(305) __CONFIG _PWRTE_ON&_XT_OSC&_LVP_OFF&_WDT_OFF #INCLUDE "P16F877.INC"

BYTE_L EQU BYTE_H EQU VAR3 EQU VAR4 EQU AUXL EQU AUXH EQU PARL EQU PARH EQU CONTA EQU AUXU EQU AUXD EQU

0X21 0X22 0X23 0X24 0X25 0X26 0X27 0X28 0X29 0X30 0X31

ORG 0X00 GOTO INI ORG 0X05 INI BSF STATUS,RP0 MOVLW 0X06 MOVWF ADCON1 CLRF TRISD CLRF TRISE MOVLW 0XFF MOVWF TRISC MOVLW B'11000101' MOVWF TMR0 BCF STATUS,RP0 MOVLW B'00000010' MOVWF T1CON CLRF TMR1L CLRF TMR1H BSF T1CON,0 CALL RET1 BCF T1CON,0 MOVF TMR1L,W MOVWF BYTE_L MOVF TMR1H,W MOVWF BYTE_H ;BANCO 1 ;PUERTO E COMO IN/OUT DIGITAL ; ;PUERTO D COMO OUT ;PUERTO E COMO OUT ;PUERTO C COMO IN ; ;PRE-64,TMR0,ASCENDENTE,TEMPORIZADOR ; ;BANCO 0 ;DESACTIVA TMR1,RELOJ EXTERNO(RC0) ;PRE-1:1

F4

F3

;ACTIVA TMR1 ;CONTEO DE PULSOS ;DESACTIVA TMR1 ;GUARDA PARTE BAJA ; ;GUARDA PARTE ALTA ;;;

INICIO1 CLRF CONTA MOVF BYTE_H,0 MOVWF PARH MOVF BYTE_L,0 MOVWF PARL MOVLW B'00000001' MOVWF AUXH MOVLW B'01101000' MOVWF AUXL CLRF AUXD CLRF AUXU INCF CONTA,1 F1 COMF AUXL,1 COMF AUXH,1

;ALTO(360) ;BAJO(360)

;COMPLEMENTO A 1 ;COMPLEMENTO A 1

Ing. Gabriel Snchez Surez gsanchez@bari.ufps.edu.co

MOVLW 0X01 ADDWF AUXL,1 BTFSC STATUS,C INCF AUXH,1 MOVF AUXL,0 ADDWF PARL,1 BTFSC STATUS,C INCF PARH,1 MOVF AUXH,0 ADDWF PARH,1 CALL RESTA MOVF AUXH,0 XORWF PARH,0 BTFSC STATUS,2 GOTO F0 MOVF AUXH,0 SUBWF PARH,0 BTFSS STATUS,C GOTO CONVER INCF CONTA,1 GOTO F1 RESTA1 INCF AUXD,1 GOTO CONVER RESTA2 INCF AUXD,1 CLRF AUXU GOTO INICIO F0 MOVF SUBWF BTFSS GOTO INCF GOTO AUXL,0 PARL,0 STATUS,C CONVER CONTA,1 F1

;CARRY? ;SI ;NO ;CARRY? ;SI ;NO

;SON IGUALES? ;SI ;NO ;MAYOR? ;NO ;SI ;AUMENTA DECENAS ;AUMENTA DECENAS ;PARA LA VISUALIZACION

;MAYOR? ;NO ;SI

RESTA MOVLW B'00000001' MOVWF AUXH MOVLW B'01101000' MOVWF AUXL RETURN CONVER1 MOVLW 0X0A XORWF CONTA,0 BTFSC STATUS,2 GOTO RESTA2 MOVLW 0X0A SUBWF CONTA,1 BTFSC STATUS,C GOTO RESTA1 MOVLW 0X0A ADDWF CONTA,0 MOVWF AUXU GOTO INICIO CONVER MOVLW 0X0A XORWF CONTA,0 BTFSS STATUS,2 GOTO CONVER1 INCF AUXD CLRF AUXU GOTO INICIO INICIO CALL CALL CALL CALL CLS FUNCION ON_OFF CLS

;SON IGUALES ;SI ;NO ;MAYOR? ;SI ;NO ;PARA LA VISUALIZACION

;SON IGUALES? ;NO ;SI ;PARA LA VISUALIZACION

Ing. Gabriel Snchez Surez gsanchez@bari.ufps.edu.co

CALL CALL CALL CALL CALL GOTO RET1

MEN NUMD CHAR NUMU CHAR F4 ;CONTEO DE PULSOS ;RETARDO DE 2.77ms

BCF INTCON,2 MOVLW 0X8D MOVWF TMR0

DELAY1 BTFSS INTCON,2 GOTO DELAY1 RETURN CLS MOVLW B'00000001' CALL CONTROL RETURN ;BORRA PANTALLA, UBICA CURSOR

ON_OFF MOVLW B'00001111' CALL CONTROL RETURN FUNCION MOVLW B'00111000' CALL CONTROL RETURN CONTROL BCF PORTE,0 NOP MOVWF PORTD NOP BCF PORTE,1 CALL DEL BSF PORTE,1 NOP NOP RETURN CHAR MOVWF PORTD NOP BSF PORTE,0 NOP NOP BCF PORTE,1 NOP CALL DEL BSF PORTE,1 NOP NOP RETURN

;PANTALLA ON, CURSOR ON, PARPADEO DEL CURSOR

;8 BITS, 2 LINEAS, 5X7 PIXELS

NUMU MOVF AUXU,0 CLRF PCLATH ADDWF PCL,1 RETLW '0' RETLW '1' RETLW '2' RETLW '3' RETLW '4' RETLW '5' RETLW '6' RETLW '7' RETLW '8' RETLW '9' NUMD MOVF CLRF AUXD,0 PCLATH

Ing. Gabriel Snchez Surez gsanchez@bari.ufps.edu.co

ADDWF PCL,1 RETLW '0' RETLW '1' RETLW '2' RETLW '3' RETLW '4' RETLW '5' RETLW '6' RETLW '7' RETLW '8' RETLW '9' MEN MOVLW 0X00 CALL CONTROL movlw "V" call CHAR movlw "E" call CHAR movlw "L" call CHAR movlw "O" call CHAR movlw "C" call CHAR movlw "I" call CHAR movlw "D" call CHAR movlw "A" call CHAR movlw "D" call CHAR movlw " " call CHAR movlw "E" call CHAR movlw "N" call CHAR movlw " " call CHAR movlw "R" call CHAR movlw "P" call CHAR movlw "S" call CHAR return

DEL

MOVLW .255 MOVWF VAR3 CICLO2 MOVLW .255 MOVWF VAR4 CICLO1 DECFSZ VAR4,1 GOTO CICLO1 DECFSZ VAR3,1 GOTO CICLO2 RETURN END

Ing. Gabriel Snchez Surez gsanchez@bari.ufps.edu.co

TITLE "DIVISION DE UN BINARIO DE 16 BITS" LIST P=16F877,C=140 ERRORLEVEL 1, -(305) #INCLUDE "p16f877.INC" AUXL AUXH PARL PARH CONTA AUXU AUXD EQU EQU EQU EQU EQU EQU EQU 0X20 0X21 0X22 0X23 0X24 0X25 0X26

ORG 0X00 GOTO INICIO ORG 0X05 INICIO BSF STATUS,5 CLRF PORTB BCF STATUS,5 CLRF CONTA MOVLW B'00011000' MOVWF PARH MOVLW B'10011100' MOVWF PARL MOVLW B'00000001' MOVWF AUXH MOVLW B'01101000' MOVWF AUXL CLRF AUXD CLRF AUXU INCF CONTA,1 F1 COMF AUXL,1 COMF AUXH,1 MOVLW 0X01 ADDWF AUXL,1 BTFSC STATUS,C INCF AUXH,1 MOVF AUXL,0 ADDWF PARL,1 BTFSC STATUS,C INCF PARH,1 MOVF AUXH,0 ADDWF PARH,1 CALL RESTA MOVF AUXH,0 XORWF PARH,0

;BAJO(6300) ;ALTO(6300) ;ALTO(360) ;BAJO(360)

;COMPLEMENTO A 1 ;COMPLEMENTO A 1 ;CARRY? ;SI ;NO ;CARRY? ;SI ;NO

BTFSC GOTO MOVF SUBWF BTFSS GOTO INCF GOTO

STATUS,2 F0 AUXH,0 PARH,0 STATUS,C CONVER CONTA,1 F1

;SON IGUALES? ;SI ;NO ;MAYOR? ;NO ;SI ;AUMENTA DECENAS ;AUMENTA DECENAS

RESTA1 INCF AUXD,1 GOTO CONVER RESTA2 INCF AUXD,1 CLRF AUXU GOTO INICIO

Ing. Gabriel Snchez Surez gsanchez@bari.ufps.edu.co

F0

MOVF SUBWF BTFSS GOTO INCF GOTO

AUXL,0 PARL,0 STATUS,C CONVER CONTA,1 F1

RESTA MOVLW B'00000001' MOVWF AUXH MOVLW B'01101000' MOVWF AUXL RETURN CONVER1 MOVLW 0X0A XORWF CONTA,0 BTFSC STATUS,2 GOTO RESTA2 MOVLW 0X0A SUBWF CONTA,1 BTFSC STATUS,C GOTO RESTA1 MOVLW 0X0A ADDWF CONTA,0 MOVWF AUXU GOTO INICIO CONVER MOVLW 0X0A XORWF CONTA,0 BTFSS STATUS,2 GOTO CONVER1 INCF AUXD CLRF AUXU GOTO INICIO END

;SON IGUALES ;SI ;NO ;MAYOR? ;SI ;NO

;SON IGUALES? ;NO ;SI

Ing. Gabriel Snchez Surez gsanchez@bari.ufps.edu.co

También podría gustarte