Está en la página 1de 11

UNIVERSIDAD FRANCISCO DE PAULA SANTANDER

INGENIERA ELECTRNICA
MICROCONTROLADORES
Controlador de velocidad de un motor DC basado en un
PIC 16F877
Lina Mara Aguilar
linamaria_a_l@hotmail.com

Javier Mauricio Roln


maorolon2@hotmail.com

RESUMEN
El proyecto se fundamenta en el diseo de un
controlador de velocidad de un motor DC basado
en un PIC 16F877. En una pantalla LCD se
visualizar la velocidad real del motor y la velocidad
deseada por el usuario que es introducida a travs
de un teclado. La estrategia de control es
proporcional y la velocidad del motor se vara por
medio de la modulacin por ancho de pulso PWM.

DESARROLLO
El proyecto es un controlador de velocidad de un
motor DC bajo condiciones variables de carga y
voltaje, basado en un sistema con microcontrolador
PIC16F877. La velocidad deseada y la velocidad
real se visualizan en una pantalla LCD de 2 lneas
por 16 caracteres. El usuario puede introducir la
velocidad deseada a travs de un teclado decimal
para una velocidad no mayor a 199RPM que es la
nominal del motor.
El programa que contiene el microcontrolador
PIC16F877 cumple las siguientes funciones:
Mediante una interrupcin generada por el timer0
se almacenan los pulsos contador por el timer1 en
modo contador durante un perodo de conteo
preestablecido en el timer0 que esta dado por los
parmetros del motor, este perodo equivale a
60mseg.
Tambin, mediante una interrupcin externa se
obtiene la velocidad deseada tecleada por el
usuario a travs del teclado decimal.

Luis Javier Martinez


javiermm@engineer.com

programa principal del microcontrolador PIC16F877


que realiza la estrategia de control proporcional y
visualiza en la
pantalla LCD las velocidades
deseada y real del motor, y la etapa de aislamiento
y potencia que esta conformada por un
optoacoplador y un mosfet de potencia.
Para el programa principal del microcontrolador
diseamos una librera que incluye rutinas para el
envo de datos y comandos a la pantalla LCD como
recurso para este y futuros proyectos que
involucren una pantalla LCD.
A continuacin se presenta una descripcin de las
etapas de controlador de teclado y del programa
principal del microcontrolador.

CONTROLADOR DE TECLADO
Para el ingreso de la velocidad deseada se
implement en una GAL22V10 un controlador de
teclado decimal utilizando la herramienta PALASM.
Para el desarrollo del controlador de teclado se
program una mquina de estados de Moore, la
cual contiene 11 estados, 5 salidas, 10 entradas,
las cuales se resumen de la siguiente manera:
Salidas:
OUT4: Genera una seal que habilita al
microcontrolador para que este realice la lectura del
puerto. Est conectado al pin RA4.
OUT3 - OUT0: Generan el nmero tecleado en
binario para ser ledo por el PIC en los pines RA3 RA0.
Entradas:

Despus de tener almacenados estos dos datos, se


realiza la diferencia entre la velocidad deseada y la
velocidad real y se incrementa o decrementa el
ancho del pulso del PWM, segn el resultado sea
positivo o negativo respectivamente y de este modo
se consigue variar la velocidad del motor DC y
llegar hasta la deseada por el usuario.
Bsicamente las partes que conforman el proyecto
son: el controlador de teclado, que se implement
en una GAL22V10 y permite codificar los dgitos en
binario e interrumpir el microcontrolador, el

Los dgitos del teclado son las entradas de la GAL,


las cuales generan los cambios de estado en la
mquina de Moore. Las teclas # y * no son
entradas de la GAL ya que estas estn conectadas
directamente al PIC.
La entrada dada por * es la interrupcin externa al
microcontrolador.
Estados:

Ing. Gabriel Snchez Surez


gabrielsanchezsuarez@hotmail.com

UNIVERSIDAD FRANCISCO DE PAULA SANTANDER


INGENIERA ELECTRNICA
MICROCONTROLADORES
Controlador de velocidad de un motor DC basado en un
PIC 16F877
Lina Mara Aguilar
linamaria_a_l@hotmail.com

Javier Mauricio Roln


maorolon2@hotmail.com

La mquina de estados de Moore est compuesta


por 11 estados, empezando por un estado de
reposo en el cual el habilitador OUT4 no est
activado y 10 estados, uno para cada dgito (0 a 9)
en los cuales se activa el habilitador y se forma en
binario el nmero tecleado.
OUT4 OUT3 OUT2 OUT1 OUT0
Estado
X
0
1
2
3
4
5
6
7
8
9

0
1
1
1
1
1
1
1
1
1
1

0
0
0
0
0
0
0
0
0
1
1

0
0
0
0
0
1
1
1
1
0
0

0
0
0
1
1
0
0
1
1
0
0

0
0
1
0
1
0
1
0
1
0
1

Procedimiento para el ingreso de datos mediante el


teclado para la velocidad deseada:
Para ingresar la velocidad deseada, el usuario debe
visualizar el teclado decimal y seguir los siguientes
pasos:
1. Oprimir asterisco (*), lo cual genera una
interrupcin en el PIC y este queda a la espera de
la entrada de dgitos.
2. Oprimir dgito a dgito la velocidad deseada,
ingresando primero las centenas, luego el nmero
de decenas y por ltimo las unidades.
El sistema est diseado para recibir cualquier
cantidad de datos, de los cuales slo admitir los
tres ltimos dgitos organizndolos en el orden
anteriormente mencionado.
Debido a que a velocidad nominal del motor es 199
RPM, ste puede ser el mximo valor digitado. Si
se digita un valor mayor a este, el dato no ser
admitido y el sistema retornar el ltimo dato vlido
recibido.
3. Oprimir numeral (#), con lo cual se guarda el dato
y el controlador comenzar el respectivo proceso
para obtener la nueva velocidad deseada en el
motor.

Luis Javier Martinez


javiermm@engineer.com

PROGRAMA DEL MICROCONTROLADOR


PIC16F877
Declaracin de registros de uso general en las
posiciones de memoria disponibles en el banco0
UNI
DEC
CEN
VELREAL
VELDES
DUTY
TEMPORAL
TUNI
TDEC
TCEN
RESTA
DUTYT
REALUNI
REALDEC
REALCEN
TEMVELREAL
CONT
NUMERO
DECX
CENX
Temporal_1
Temporal_2
DELAY
DELAY1 EQU
DELAY2 EQU

EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
37H
38H

20H
21H
22H
23H
24H
25H
26H
27H
28H
29H
2AH
2BH
2CH
2DH
2EH
2FH
30H
31H
32H
33H
34H
35H
36H

ORG 0X00
GOTO PRINCIPAL
ORG 0X04
GOTO INTER

Librerias que incluyen las rutinas de manejo de la


pantalla LCD y los registros especiales SFRs del
PIC 16F877.
INCLUDE
INCLUDE

"LCD.INC"
"P16F877.INC"

Declaracin de la tabla del mensaje inicial, segn


el valor contenido en el registro W, se devuelve el
carcter ASCII a visualizar en la pantalla LCD,
empleando el PCL para el desplazamiento a travs
del mensaje
Tabla_Mensajes:
MOVWF PCL

Ing. Gabriel Snchez Surez


gabrielsanchezsuarez@hotmail.com

UNIVERSIDAD FRANCISCO DE PAULA SANTANDER


INGENIERA ELECTRNICA
MICROCONTROLADORES
Controlador de velocidad de un motor DC basado en un
PIC 16F877
Lina Mara Aguilar
linamaria_a_l@hotmail.com

Javier Mauricio Roln


maorolon2@hotmail.com

Rutina de declaracin del mensaje inicial a


visualizar en la pantalla, la directiva dt genera

tantas instrucciones retlw como caracteres se


contengan encerrados entre comillas, la posicin
inicial de cada mensaje es asignada arbitrariamente
segn el pcl
Mens_0
EQU
dt

$;Mens_0 apunta al primer carcter


"VD(RPM) VR(RPM)",0x00

EQU
dt

$;Mens_1 apunta al primer carcter


" 000
000 ",0x00

Mens_1

Rutina que visualiza en la pantalla LCD el mensaje


inicial cuyo inicio est indicado en el acumulador
W. El fin de un mensaje se determina mediante el
cdigo 0x00. Los registros Temporal_1 y
Temporal_2 contienen la posicin de memoria del
carcter a visualizar y el cdigo ascii de dicho
carcter, repectivamente
Mensaje
MOVWF Temporal_1
Mensaje_1
MOVF Temporal_1,W
CALL
Tabla_Mensajes
MOVWF Temporal_2
MOVF Temporal_2,F
BTFSS STATUS,Z
GOTO No_es_ultimo
RETURN
No_es_ultimo
CALL
LCD_DATO
INCF
Temporal_1,F
GOTO Mensaje_1

Rutina de atencin de interrupcin, si es externa


(debida al teclado) o si es interna (debida al timer0)
INTER
BTFSC INTCON,INTF
;Ha sido el TECLADO ?
GOTO INTER_TECLADO
BTFSS INTCON,T0IF
;Ha sido el TIMER ?
RETFIE

Rutina de atencin de la interrupcin debida al


timer0, es utilizada para obtener la velocidad real

Luis Javier Martinez


javiermm@engineer.com

del motor, al atenderse la interrupcin el dato


guardado en el timer-contador1 se almacena en el
registro VELREAL, se realiza la resta entre la
velocidad deseada y la velocidad real para obtener
el cam bio en el ancho del pulso del PWM que
controlar la velocidad del motor. Es en esta rutina
donde tambin se aplica la constante de
proporcionalidad (0.5) del motor que representa la
estrategia de control proporcional empleada en este
proyecto. El ancho de pulso del PWM es
almacenado en el registro DUTY y llevado al
exterior mediante el SFR CCPR1L. Adems la
velocidad real es separada en unidades, decenas y
centenas y finalmente es visualizada en la pantalla
LCD
INT_TIMER
BCF
BCF
MOVLW
MOVWF
DECFSZ
GOTO
BCF
MOVF
MOVWF
BCF
MOVF
SUBWF
BTFSS
GOTO
MOVWF
RRF
RRF
RRF
ANDLW
ADDWF
BTFSS
GOTO
MOVLW
MOVWF
L5
BCF
GOTO
L3
MOVWF
COMF
INCF
MOVWF
RRF
RRF
RRF
ANDLW
SUBWF
BTFSC
GOTO
MOVLW
MOVWF
L6
BCF
L4
BCF

STATUS,RP0
INTCON,T0IF
0X14
TMR0
CONT,1
L9
T1CON,TMR1ON
TMR1L,0
VELREAL
STATUS,RP0
VELREAL,0
VELDES,0
STATUS,C
L3
ROTAR
ROTAR,1
ROTAR,1
ROTAR,0
b'00011111'
DUTY,1
STATUS,C
L5
0FFH
DUTY
STATUS,C
L4
RESTA
RESTA,1
RESTA,0
ROTAR
ROTAR,1
ROTAR,1
ROTAR,0
b'00011111'
DUTY,1
STATUS,C
L6
00H
DUTY
STATUS,C
STATUS,RP0

Ing. Gabriel Snchez Surez


gabrielsanchezsuarez@hotmail.com

UNIVERSIDAD FRANCISCO DE PAULA SANTANDER


INGENIERA ELECTRNICA
MICROCONTROLADORES
Controlador de velocidad de un motor DC basado en un
PIC 16F877
Lina Mara Aguilar
linamaria_a_l@hotmail.com

L7

L8

L9

MOVF
MOVWF
CLRF
CLRF
MOVLW
MOVWF
BSF
MOVF
MOVWF
CLRF
CLRF
CLRF
MOVLW
SUBWF
INCF
BTFSC
GOTO
MOVLW
ADDWF
DECF
MOVLW
SUBWF
INCF
BTFSC
GOTO
MOVLW
ADDWF
DECF
MOVF
MOVWF
MOVLW
MOVWF
MOVLW
CALL
MOVLW
ADDWF
CALL
MOVLW
ADDWF
CALL
MOVLW
ADDWF
CALL
RETFIE

Javier Mauricio Roln


maorolon2@hotmail.com

DUTY,0
CCPR1L
TMR1L
TMR1H
0X14
TMR0
T1CON,TMR1ON
VELREAL,0
TEMVELREAL
REALUNI
REALDEC
REALCEN
.100
TEMVELREAL,1
REALCEN,1
STATUS,C
L7
.100
TEMVELREAL,1
REALCEN,1
.10
TEMVELREAL,1
REALDEC,1
STATUS,C
L8
.10
TEMVELREAL,1
REALDEC,1
TEMVELREAL,0
REALUNI
05H
CONT
b'11001011'
LCD_REG
30H
REALCEN,0
LCD_DATO
30H
REALDEC,0
LCD_DATO
30H
REALUNI,0
LCD_DATO

Luis Javier Martinez


javiermm@engineer.com

no se toma en cuenta y se visualiza en pantalla la


velocidad deseada ingresada en la interrupcin
anterior.
INTER_TECLADO
BCF
CLRF
CLRF
CLRF

L1

Rutina de atencin de interrupcin del teclado, se


presenta cuando se pulsa asterisco para ingresar
una velocidad deseada.
El usuario tiene la
posibilidad de ingresar la cifra de tres dgitos en el
orden de centenas, decenas y unidades
permitindose un solapamiento en estos, y al
oprimir numeral se finaliza y se toma el dato
pulsado como la velocidad deseada. Cada vez que
se pulsa un digito este se visualiza en pantalla y
debido a que la mxima velocidad del motor es 199
RPM si el usuario ingresa un nmero mayor a este

LRET1
LRET2
LRET
LRET4
LRET3

CLRF
CLRF
BSF
CLRF
BSF
MOVLW
MOVWF
MOVLW
MOVWF
BCF
CLRF
BCF
BCF
BTFSC
GOTO
BTFSS
GOTO
MOVF
MOVWF
MOVF
MOVWF
MOVF
ANDLW
MOVWF
MOVLW
CALL
MOVLW
ADDWF
CALL
MOVLW
ADDWF
CALL
MOVLW
ADDWF
CALL
MOVLW
MOVWF
DECFSZ
GOTO
GOTO
MOVLW
MOVWF
DECFSZ
GOTO
GOTO
MOVLW
MOVWF
DECFSZ
GOTO
GOTO

STATUS,RP0
TCEN
TDEC
TUNI
PORTA
PORTB
STATUS,RP0
TRISA
STATUS,RP0
B'00111111'
TRISA
B'00000001'
TRISB
STATUS,RP0
PORTA
STATUS,RP0
INTCON,INTF
PORTA,5
MULTIPLICACION
PORTA,4
L1
TDEC,0
TCEN
TUNI,0
TDEC
PORTA,0
0FH
TUNI
b'11000010'
LCD_REG
30H
TCEN,0
LCD_DATO
30H
TDEC,0
LCD_DATO
30H
TUNI,0
LCD_DATO
19H
DELAY
DELAY,1
LRET2
L1
0C8H
DELAY1
DELAY1,1
LRET4
LRET1
0C8H
DELAY2
DELAY2,1
LRET3
LRET

Ing. Gabriel Snchez Surez


gabrielsanchezsuarez@hotmail.com

UNIVERSIDAD FRANCISCO DE PAULA SANTANDER


INGENIERA ELECTRNICA
MICROCONTROLADORES
Controlador de velocidad de un motor DC basado en un
PIC 16F877
Lina Mara Aguilar
linamaria_a_l@hotmail.com
TERMINAR
MOVF
MOVF
MOVWF
MOVF

L12

MOVWF
MOVF
MOVWF
MOVLW
CALL
MOVLW
ADDWF
CALL
MOVLW
ADDWF
CALL
MOVLW
ADDWF
CALL
RETFIE

CEN,0
TCEN,0
CEN
TDEC,0
DEC
TUNI,0
UNI
b'11000010'
LCD_REG
30H
CEN,0
LCD_DATO
30H
DEC,0
LCD_DATO
30H
UNI,0
LCD_DATO

MULTIPLICACION
CLRF
NUMERO
MOVF TCEN,0
MOVWF CENX
MOVLW B'11111110'
ANDWF CENX,1
BTFSS STATUS,Z
GOTO RESTAURAR
VALIDO MOVF TCEN,0
MOVWF CENX
BTFSC CENX,0
GOTO LA
CLRF
CENX
GOTO LB
MOVLW .0
LR
ADDLW .100
DECFSZ CENX,1
GOTO LR
MOVWF NUMERO
LB
MOVF TDEC,0
MOVWF DECX
MOVLW b'11111111'
ANDWF DECX,1
BTFSC STATUS,Z
GOTO L10
MOVLW 0H
LC
ADDLW .10
DECFSZ DECX,1
GOTO LC
GOTO L11
L10
MOVLW .0
L11
ADDWF NUMERO,0
ADDWF TUNI,0
MOVWF NUMERO
MOVWF VELDES
GOTO TERMINAR
RESTAURAR
MOVF CEN,0
MOVWF TCEN

Javier Mauricio Roln


maorolon2@hotmail.com
MOVF
MOVWF
MOVF
MOVWF
GOTO
RESTAURAR1
MOVF
MOVWF
MOVLW
ANDWF
BTFSS
GOTO
MOVLW
ANDWF
BTFSS
GOTO
MOVLW
ANDWF
BTFSS
GOTO
GOTO

Luis Javier Martinez


javiermm@engineer.com
DEC,0
TDEC
UNI,0
TUNI
L12
TCEN,0
CENX
b'11111101'
CENX,1
STATUS,Z
RESTAURAR
b'11111111'
TDEC,0
STATUS,Z
RESTAURAR
b'11111111'
TUNI,0
STATUS,Z
RESTAURAR
VALIDO

Programa principal, contiene la inicializacin de los


registros especiales que permiten el control de los
timer, del PWM, el triestado de los puertos, la
preescala asociada a los timer empleados, la
habilitacin de las interrupciones empleadas:
internas (timer0) y externas (teclado). Adems se
inicializa la pantalla LCD enviando los comandos
necesarios y se visualiza en ella el mensaje inicial
mediante un llamado a las subrutinas de la librera
LCD.INC. Los registros SFRs empleados son los
de triestado de los puertos (TRISX), el
OPTION_REG para definir la preescala del timer 0,
el INTCON que activa las interrupciones interna y
externa, el T1CON que activa al timer 1 como
contador, el T2CON que activa el timer 2 como
generador de la preescala del PWM. La preescala
asociada con el timer 1 en modo contador es 256 y
el dato asignado al timer 0 en modo contador es
235 (se guarda el complemento de este numero),
adems se inicializa un contador que repite la
interrupcin 5 veces antes de atenderla para
cumplir con el perodo de conteo necesario que
corresponde a 60ms. En el registro PR2 se carga
el perodo del PWM empleado para este proyecto,
es asignado FFH que corresponde a una frecuencia
de 19.53KHz.
PRINCIPAL
BCF
BCF
BCF

STATUS,RP0
STATUS,RP1
STATUS,C

Ing. Gabriel Snchez Surez


gabrielsanchezsuarez@hotmail.com

UNIVERSIDAD FRANCISCO DE PAULA SANTANDER


INGENIERA ELECTRNICA
MICROCONTROLADORES
Controlador de velocidad de un motor DC basado en un
PIC 16F877
Lina Mara Aguilar
linamaria_a_l@hotmail.com

Javier Mauricio Roln


maorolon2@hotmail.com

Luis Javier Martinez


javiermm@engineer.com
;Preescaler de 256 para el TMR0

CLRF
PORTA
CLRF
PORTB
CLRF
PORTC
MOVLW 0xFF
MOVWF VELDES
MOVLW 0x00
MOVWF DUTY
BSF
STATUS,RP0
MOVLW 06H
MOVWF ADCON1
MOVLW 3FH
MOVWF TRISA
MOVLW b'00000001'
MOVWF TRISB
MOVLW b'00000001'
MOVWF TRISC
MOVLW 05H
MOVWF CONT
BCF
STATUS,RP0
CLRF
CCPR1L
CLRF
CCPR1H
BCF
STATUS,RP0
MOVLW b'10110000'
MOVWF INTCON
;ACTIVA LA INTERRUPCIN DEL TMR0
BCF
STATUS,RP0
MOVLW b'00000011'
MOVWF T1CON
;TIMER1 EN ONN
BCFSTATUS,RP0
MOVLW b'00001111'
MOVWF CCP1CON
;CONFIGURAR PWM
BSFSTATUS,RP0
MOVLW 0FFH
MOVWF PR2
;CARGA EL PERIODO DEL PWM
BCF
STATUS,RP0
MOVLW B'00000100'
MOVWF T2CON
;T2 EN ON
CLRF
PORTD
CLRF
PORTC
BSF
STATUS,RP0
CLRF
TRISD
MOVLW b'00000001'
MOVWF TRISC
BCF
STATUS,RP0
CALL
LCD_INI
;INICIALIZACION DE LA PANTALLA LCD
MOVLW Mens_0
CALL
Mensaje
;VISUALIZACIN DEL MENSAJE DE LA LINEA 1
DE LA LCD
MOVLW b'11000000'
CALL
LCD_REG
MOVLW Mens_1
;VISUALIZACIN DEL MENSAJE INICIAL DE LA
LINEA 2 DE LA LCD
CALL
Mensaje
BSF
STATUS,RP0
MOVLW b'00000111'
MOVWF OPTION_REG

L2

BCF
STATUS ,RP0
MOVLW 0x14
;COMPLEMENTO DE PARA EL TIMER0
MOVWF TMR0
BCF
STATUS,RP0
MOVLW b'00000011'
;TIMER1 EN ONN
MOVWF T1CON
GOTO L2
END

LIBRERIA QUE CONTIENE LAS RUTINAS DE


MANEJO DE LA PANTALLA LCD
LCD.INC

Las siguientes rutinas presentan a continuacin


permiten realizar las tareas bsicas de control para
la visualizacin de un mensaje en la pantalla LCD.
Declaracin de palabras especiales empleadas en
el control de la pantalla LCD, se declaran como un
nivel alto o bajo en pines especiales del puerto
empleado para el control Puerto C.
#define ENABLE
bsf PORTC,5
;ACTIVA SEAL E
#define DISABLE
bcf PORTC,5
SEAL E
#define LEER
bsf PORTC,4
;COLOCA LA LCD EN MODO RD
#define ESCRIBIR bcf PORTC,4
;COLOCA LA LCD EN MODO WR
#define OFF_COMANDO bcf PORTC,3
RS (MODO COMANDO)
#define ON_COMANDO bsf PORTC,3
;ACTIVA RS (MODO DATO)

;DESACTIVA

;DESACTIVA

Rutina de lectura del flan Busy de la pantalla LCD


para mantener el retardo necesario en los
comandos y datos enviados a ella.

LCD_BUSY

LCD_BUSY_1

ENABLE
;ACTIVA LA LCD
OFF_COMANDO
LEER
;COLOCA LA LCD EN MODO RD
BSF
STATUS,RP0
MOVLW H'FF'
MOVWF TRISD
BCF
STATUS,RP0
nop
BTFSC PORTD,7
;CHEQUEA BIT DE BUSY

Ing. Gabriel Snchez Surez


gabrielsanchezsuarez@hotmail.com

UNIVERSIDAD FRANCISCO DE PAULA SANTANDER


INGENIERA ELECTRNICA
MICROCONTROLADORES
Controlador de velocidad de un motor DC basado en un
PIC 16F877
Lina Mara Aguilar
linamaria_a_l@hotmail.com

Javier Mauricio Roln


maorolon2@hotmail.com

GOTO CD_BUSY_1
DISABLE
;DESACTIVA LA LCD
SF
STATUS,RP0
CLRF
TRISD
BCF
STATUS,RP0
ESCRIBIR
;COLOCA LA LCD EN MODO WR
RETURN

Rutina de escritura de datos en la memoria DDRAM


de la pantalla LCD, el carcter se encuentra
almacenado en el acumulador W.
LCD_DATO

MOVLW 01H
;BORRA LCD Y HOME (RESET).
CALL
LCD_REG
RETURN

CONCLUSIONES

La mayor ventaja que tiene el


microcontrolador PIC16F877 frente a
los dems microcontroladores es que
este
posee
mdulos
internos
especficos
que
son
empleados
generalmente en sistemas de control
y deban implementarse en hardware
externo al microcontrolador.
Estos
mdulos son entre otros conversor
anlogo- digital, timers y contadores,
mdulo generador de PWM. La forma
de operar estos mdulos es a travs
de los registros especiales SFRs
direccionando bit a bit cada uno de
ellos para configurar, activar o
desactivar cada una de sus funciones.

Al emplear el mulo PWM en el


PIC16F877
encontramos
que
se
presenta
el
inconveniente
que
dependiendo del oscilador de c ristal
empleado se puede obtener una
frecuencia mxima del PWM y una
resolucin de bits. Para nuestro caso
el PWM es de 19.6KHz, y para
conseguirlo a una resolucin de 10
bits
fue
necesario
emplear
un
oscilador de 20MHz que permitan
obtener las 200 velocidades del
motor.

Del microcontrolador PIC16F877 nos


fue de gran utilidad el time0 en modo
temporizador y el timer1 en modo

ENABLE
ON_COMANDO
;ACTIVA RS (MODO DATO)
MOVWF PORTD
;VALOR ASCII A EXTERIORIZAR POR
PORTD
DISABLE
CALL
LCD_BUSY
;ESPERA
QUE SE LIBERE LA LCD
RETURN

Rutina de escritura de comandos de control en la


pantalla LCD, el comando se encuentra presente en
el acumulador W.
LCD_REG

ENABLE
OFF_COMANDO
;DESACTIVA
RS (MODO COMANDO)
MOVWF PORTD
;CDIGO DE COMANDO.
DISABLE
CALL LCD_BUSY
;ESPERA QUE SE LIBERE LA LCD
RETURN

Rutina de inicializacin de la pantalla LCD, con los


codigos necesarios para configurar la LCD en modo
de 8 bits, el display en ON, el cursor en OFF y sin
parpadear, en forma que incremente las
direcciones, y borrar la LCD.
LCD_INI

MOVLW 38H
CALL
LCD_REG
;ENVIO DEL COMANDO
MOVLW 0CH
;DISPLAY ON, CURSOR OFF, NO
PARPADEA.
CALL
LCD_REG
MOVLW 06H
;INCREMENTA CONTADOR DE
DIRECCIONES.
CALL
LCD_REG

Luis Javier Martinez


javiermm@engineer.com

Ing. Gabriel Snchez Surez


gabrielsanchezsuarez@hotmail.com

UNIVERSIDAD FRANCISCO DE PAULA SANTANDER


INGENIERA ELECTRNICA
MICROCONTROLADORES
Controlador de velocidad de un motor DC basado en un
PIC 16F877
Lina Mara Aguilar
linamaria_a_l@hotmail.com

Javier Mauricio Roln


maorolon2@hotmail.com

contador para realizar el tacmetro


que nos permita obtener la velocidad
real del motor. En nuestro caso el
timer0 interrumpe al microcontrolador
cada 60 milisegundos (perodo de
conteo)
y el timer1 almacena la
cuenta de los pulsos enviados por el
encoder evitando el uso de hardware
externo.

El diseo de la librera que maneja el


envo de datos y comandos a la
pantalla LCD mediante rutinas nos
permiti el ahorro de lneas del
programa principal y en proyectos
posteriores facilitar la visualizacin
de caracteres en la pantalla LCD.

Para ingresar los datos desde el


teclado hasta el microcontrolador nos
fue
necesario
implementar
una
GAL22V10 que codifique los dgitos en
forma binaria y habilite la lectura del
dgito oprimido ya que contabamos
con un puerto de 6 pines (PORTA)
disponible para esta tarea.

Ing. Gabriel Snchez Surez


gabrielsanchezsuarez@hotmail.com

Luis Javier Martinez


javiermm@engineer.com

UNIVERSIDAD FRANCISCO DE PAULA SANTANDER


INGENIERA ELECTRNICA
MICROCONTROLADORES
Controlador de velocidad de un motor DC basado en un
PIC 16F877
Lina Mara Aguilar
linamaria_a_l@hotmail.com

Javier Mauricio Roln


maorolon2@hotmail.com

Luis Javier Martinez


javiermm@engineer.com

A continuacin se muestra el esquema del circuito completo del controlador de velocidad, donde se
incluyen el teclado decimal, la pantalla LCD y el dispositivo de potencia.

Las siguientes fotografas muestran el teclado decimal empleado para ingresar la velocidad deseada,
la pantalla LCD donde se visualizan la velocidad deseada y la velocidad real del motor en RPM
(revoluciones por minuto) y el motor empleado en el proyecto con capacidades nominales de 20V y
3A.

Ing. Gabriel Snchez Surez


gabrielsanchezsuarez@hotmail.com

UNIVERSIDAD FRANCISCO DE PAULA SANTANDER


INGENIERA ELECTRNICA
MICROCONTROLADORES
Controlador de velocidad de un motor DC basado en un
PIC 16F877
Lina Mara Aguilar
linamaria_a_l@hotmail.com

Javier Mauricio Roln


maorolon2@hotmail.com

Ing. Gabriel Snchez Surez


gabrielsanchezsuarez@hotmail.com

Luis Javier Martinez


javiermm@engineer.com

UNIVERSIDAD FRANCISCO DE PAULA SANTANDER


INGENIERA ELECTRNICA
MICROCONTROLADORES
Controlador de velocidad de un motor DC basado en un
PIC 16F877
Lina Mara Aguilar
linamaria_a_l@hotmail.com

Javier Mauricio Roln


maorolon2@hotmail.com

Luis Javier Martinez


javiermm@engineer.com

La prxima fotografa muestra el circuito completo del sistema controlador de velocidad del motor DC
empleando un PIC16F877.

Ing. Gabriel Snchez Surez


gabrielsanchezsuarez@hotmail.com

También podría gustarte