0% encontró este documento útil (0 votos)
86 vistas14 páginas

Informe 1

Este documento presenta un informe de práctica sobre el control de un motor DC utilizando un microcontrolador PIC16F877A y lenguaje ensamblador. El objetivo es programar el control del motor mediante dos pulsadores, estableciendo la codificación y configuraciones necesarias. Se explican conceptos como microcontroladores PIC, motores DC y el software MPLAB IDE. Se detallan los materiales, desarrollo del código en MPLAB y el diagrama del circuito diseñado en Proteus para implementar el control del motor.

Cargado por

Pato Bautista
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
86 vistas14 páginas

Informe 1

Este documento presenta un informe de práctica sobre el control de un motor DC utilizando un microcontrolador PIC16F877A y lenguaje ensamblador. El objetivo es programar el control del motor mediante dos pulsadores, estableciendo la codificación y configuraciones necesarias. Se explican conceptos como microcontroladores PIC, motores DC y el software MPLAB IDE. Se detallan los materiales, desarrollo del código en MPLAB y el diagrama del circuito diseñado en Proteus para implementar el control del motor.

Cargado por

Pato Bautista
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 14

UNIVERSIDAD TÉCNICA DE AMBATO

FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E


INDUSTRIAL

CARRERA DE INGENIERÍA EN ELECTRÓNICA Y COMUNICACIONES

MICROCONTROLADORES

SÉPTIMO ELECTRÓNICA “A”

Informe-Práctica N° 1

“FUNDAMENTOS DE CONTROL DIO EMPLEANDO LENGUAJE ASSEMBLER”

Integrantes

 Amaguaña Iván
 Bautista Fredy
 Yumisaca José
 Orosco Leonardo

Fecha de Envío

29/03/2018

Fecha de Entrega

05/04/2018

Docente: Ing. Edgar Patricio Córdova Córdova

MARZO 2018 / AGOSTO 2018

AMBATO - ECUADOR
INFORME DE PRÁCTICA Nº1

I. TEMA

FUNDAMENTOS DE CONTROL DIO EMPLEANDO LENGUAJE ASSEMBLER

II. OBJETIVOS

a. Objetivo General

 Programar el control de un motor DC mediante dos pulsadores utilizando el software MPLAB IDE.

b. Objetivos Específicos

 Establecer la codificación y las configuraciones principales que se necesita para generar el control
del motor.
 Determinar los parámetros requeridos para realizar el cambio de giro del motor DC.
 Diseñar e implementar un circuito electrónico una vez realizado la programación propuesto en la
tarea y comprobar el correcto funcionamiento de este.

III. FUNDAMENTACIÓN TEÓRICA

MICROCONTROLADOR PIC

El nombre verdadero de este microcontrolador es PICmicro (Peripheral Interface Controller), conocido


bajo el nombre PIC. Su primer antecesor fue creado en 1975 por la compañía General Instruments. Este
chip denominado PIC1650 fue diseñado para propósitos completamente diferentes. Diez años más tarde, al
añadir una memoria EEPROM, este circuito se convirtió en un verdadero microcontrolador PIC. Hace unos
pocos años la compañía Microchip Technology fabricó la 5 billonésima muestra.
Ilustración 1 Microcontrolador PIC

Ventajas de los microcontroladores PIC de Microchip:


 Eficiencia del código: permiten una gran compactación de los programas.
 Rapidez de ejecución: a frecuencia de 20MHz->5 millones de instr./seg.
 Seguridad en acceso por la separación de memoria de datos y de programa.
 Juego reducido de instrucciones y de fácil aprendizaje.
 Compatibilidad de pines y código entre dispositivos de la misma familia o sin reducción de las
prestaciones internas (muy versátiles).
 Gran variedad de versiones en distintos encapsulados (desde 8 hasta 84 pines) sin reducción de las
prestaciones internas (muy versátiles).
 Posibilidad de protección del código muy fiable.
 Herramientas de desarrollo software y hardware abundantes y de bajo coste.

MOTOR DC

El motor de corriente continua (motor DC) es una máquina que convierte la energía eléctrica en mecánica,
provocando un movimiento rotatorio. En algunas modificaciones, ejercen tracción sobre un riel. Estos
motores se conocen como motores lineales.

Una máquina de corriente continua (generador o motor) se compone principalmente de dos partes, un
estator que da soporte mecánico al aparato y tiene un hueco en el centro generalmente de forma cilíndrica.
En el estator además se encuentran los polos, que pueden ser de imanes permanentes o devanados con hilo
de cobre sobre núcleo de hierro. El rotor es generalmente de forma cilíndrica, también devanado y con
núcleo, al que llega la corriente mediante dos escobillas.
Ilustración 2 Motor DC

El sentido de giro de un motor de corriente continua depende del sentido relativo de las corrientes
circulantes por los devanados inductor e inducido. La inversión del sentido de giro del motor de corriente
continua se consigue invirtiendo el sentido del campo magnético o de la corriente del inducido.

Mplab

MPLAB IDE (Integrated Development Environment) es un software profesional implementado por la


empresa Microchip, compatible con XP, Vista y Windows 7 y con versiones recientes disponibles para MAC
y Linux. MPLAB IDE es utilizado como un poderoso auxiliar para el desarrollo de sistemas basados en los
microcontroladores PIC. Su distribución es libre y gratuita y se puede realizar directamente el download
del sitio de Microchip

Ilustración 3 Mplab

El programa incluye un editor de texto, macro-ensamblador, compilador ANSI C, y simulador para trabajar
con cualquier microcontrolador PIC. El simulador puede operarse tanto en programas desarrollados en
lenguaje ensamblador o ANSI C.

IV. MATERIALES Y EQUIPOS

 Mandil
 Protoboard
 Fuente de Alimentación
 Microdontrolador PIC
 Motor DC
 Driver de Motor DC
 Dip switches
 Leds
 Resistencias

V. DESARROLLO

Ejercicio 1 (Generación de secuencias controladas por Dip switches o pulsadores con


visualización de Leds.)

Ejercicio 2 (Control de encendido y cambio de giro de un motor dc mediante dos pulsadores y


la visualización de los procesos a ejecutar.)

Para realizar el control de motor se debe en primera instancia realizar la codificación necesaria en el
software MPLAB, lo cual permite obtener el control de motor DC y asociar todos los elementos
necesario para dicha práctica.
Condiciones de desarrollo:
00 Sistema apagado
10 Sentido horario
01 Sentido anti-horario
Para el cambio de giro de forma horaria y anti horaria, se lo hizo con la ayuda del driver L293D.

Una vez determinada la codificación necesaria se debe copilar, generando e esta manera el archivo
hexadecimal que permitirá poder quemar el PIC 16F877A a través del software PICkit 2,
posteriormente se diseña un circuito electrónico en el software Proteus y finalmente se arma el circuito
y se determina el funcionamiento.

VI. DIAGRAMAS Y ESQUEMAS


Ejercicio 1
Ilustración 4 Diagrama luces

Codigo

#include "p16f877a.inc" ; tipo de pic a utlizar en el registro interno ;

CONFIG ; configuracion principal;

__config 0x3F3A __CONFIG _FOSC_HS & _WDTE_OFF & _PWRTE_OFF & _BOREN_OFF & _LVP_OFF &
_CPD_OFF & _WRT_OFF & _CP_OFF ; definicion de todas las librerias, interrupciones que se necesitan para el
programa

CBLOCK 0x0C ; banco de trabajo en la posicion 0C

ENDC

CBLOCK 0X20 ; banco de trabajo en la posicion 20

ENDC

org 0 ; vector de reset

BSF STATUS, RP0

CLRF TRISB

BSF TRISA, 0

BSF TRISA, 1

BCF STATUS, RP0


INICIO ; inicio de programaciòn

CONTROL1 ; metodo 1

BTFSS PORTC, 0 ;estable en el puerto C las posiciones con un valor a 0

GOTO CONTROL2 ; devuelve al metodo 2

BTFSC PORTC, 1 ;estable en el puerto C las posiciones con un valor a 1

GOTO SECUENCIA3 ;devuelve al metodo denominado secuencia 3

GOTO SECUENCIA1 ; devuelve al metodo denominado secuencia 1

CONTROL2 ; metodo denominado control 2

BTFSS PORTC,1 ;estable en el puerto C las posiciones con un valor a 1

GOTO CERO ; devuelve al metodo denominado cero

GOTO SECUENCIA2 ; devuelve al metodo denominado secuencia 2

CERO ; metodo denominado cero que tendra la funcion de hacer el apagado de leds

MOVLW b'00000000' ; carga el registro en una posicion 00000000 como salida en el puerto B

MOVWF PORTB ; almacena el resultado en el puerto B

GOTO INICIO ; devuelve al metodo inicial

SECUENCIA1 ; metodo denominado secuencia1 que tendra la funcion de hacer el ecendido de leds desde la
derecha

MOVLW b'00000001' ; carga el registro en una posicion 00000001 como salida en el puerto B

MOVWF PORTB ; almacena el resultado en el puerto B

CALL Retardo_100ms ;hace un llamado para un retardo o interrupcion de 100ms

MOVLW b'00000010' ; carga el registro en una posicion 00000010 como salida en el puerto B

MOVWF PORTB ; almacena el resultado en el puerto B

CALL Retardo_100ms ;hace un llamado para un retardo o interrupcion de 100ms


MOVLW b'00000100' ; carga el registro en una posicion 00000100 como salida en el puerto B

MOVWF PORTB ; almacena el resultado en el puerto B

CALL Retardo_100ms ;hace un llamado para un retardo o interrupcion de 100ms

MOVLW b'00001000' ; carga el registro en una posicion 00001000 como salida en el puerto B

MOVWF PORTB ; almacena el resultado en el puerto B

CALL Retardo_100ms ;hace un llamado para un retardo o interrupcion de 100ms

MOVLW b'00010000' ; carga el registro en una posicion 00010000 como salida en el puerto B

MOVWF PORTB ; almacena el resultado en el puerto B

CALL Retardo_100ms ;hace un llamado para un retardo o interrupcion de 100ms

MOVLW b'00100000' ; carga el registro en una posicion 00100000 como salida en el puerto B

MOVWF PORTB ; almacena el resultado en el puerto B

CALL Retardo_100ms ;hace un llamado para un retardo o interrupcion de 100ms

MOVLW b'01000000' ; carga el registro en una posicion 01000000 como salida en el puerto B

MOVWF PORTB ; almacena el resultado en el puerto B

CALL Retardo_100ms ;hace un llamado para un retardo o interrupcion de 100ms

MOVLW b'10000000' ; carga el registro en una posicion 10000000 como salida en el puerto B

MOVWF PORTB ; almacena el resultado en el puerto B

CALL Retardo_100ms ;hace un llamado para un retardo o interrupcion de 100ms

GOTO INICIO ; devuelve al metodo denominado inicio una ves terminado el proceso de secuencia

SECUENCIA2 ;metodo denominado secuencia2 que tendra una secuencia de encendido de leds de izquierda
a derecha y viceversa
MOVLW b'10000000' ; carga el registro en una posicion 10000000 como salida en el puerto B

MOVWF PORTB ; almacena el resultado en el puerto B

CALL Retardo_100ms ;hace un llamado para un retardo o interrupcion de 100ms

MOVLW b'01000000' ; carga el registro en una posicion 01000000 como salida en el puerto B

MOVWF PORTB ; almacena el resultado en el puerto B

CALL Retardo_100ms ;hace un llamado para un retardo o interrupcion de 100ms

MOVLW b'00100000' ; carga el registro en una posicion 00100000 como salida en el puerto B

MOVWF PORTB ; almacena el resultado en el puerto B

CALL Retardo_100ms ;hace un llamado para un retardo o interrupcion de 100ms

MOVLW b'00010000' ; carga el registro en una posicion 00010000 como salida en el puerto B

MOVWF PORTB ; almacena el resultado en el puerto B

CALL Retardo_100ms ;hace un llamado para un retardo o interrupcion de 100ms

MOVLW b'00001000' ; carga el registro en una posicion 00001000 como salida en el puerto B

MOVWF PORTB ; almacena el resultado en el puerto B

CALL Retardo_100ms ;hace un llamado para un retardo o interrupcion de 100ms

MOVLW b'00000100' ; carga el registro en una posicion 00000100 como salida en el puerto B

MOVWF PORTB ; almacena el resultado en el puerto B

CALL Retardo_100ms ;hace un llamado para un retardo o interrupcion de 100ms

MOVLW b'00000010' ; carga el registro en una posicion 00000100 como salida en el puerto B

MOVWF PORTB ; almacena el resultado en el puerto B

CALL Retardo_100ms ;hace un llamado para un retardo o interrupcion de 100ms

MOVLW b'00000001' ; carga el registro en una posicion 00000001 como salida en el puerto B
MOVWF PORTB ; almacena el resultado en el puerto B

CALL Retardo_100ms ;hace un llamado para un retardo o interrupcion de 100ms

MOVLW b'00000010' ; carga el registro en una posicion 00000010 como salida en el puerto B

MOVWF PORTB ; almacena el resultado en el puerto B

CALL Retardo_100ms ;hace un llamado para un retardo o interrupcion de 100ms

MOVLW b'00000100' ; carga el registro en una posicion 00000100 como salida en el puerto B

MOVWF PORTB ; almacena el resultado en el puerto B

CALL Retardo_100ms ;hace un llamado para un retardo o interrupcion de 100ms

MOVLW b'00001000' ; carga el registro en una posicion 00001000 como salida en el puerto B

MOVWF PORTB ; almacena el resultado en el puerto B

CALL Retardo_100ms ;hace un llamado para un retardo o interrupcion de 100ms

MOVLW b'00010000' ; carga el registro en una posicion 00010000 como salida en el puerto B

MOVWF PORTB ; almacena el resultado en el puerto B

CALL Retardo_100ms ;hace un llamado para un retardo o interrupcion de 100ms

MOVLW b'00100000' ; carga el registro en una posicion 00100000 como salida en el puerto B

MOVWF PORTB ; almacena el resultado en el puerto B

CALL Retardo_100ms ;hace un llamado para un retardo o interrupcion de 100ms

MOVLW b'01000000' ; carga el registro en una posicion 01000000 como salida en el puerto B

MOVWF PORTB ; almacena el resultado en el puerto B

CALL Retardo_100ms ;hace un llamado para un retardo o interrupcion de 100ms

MOVLW b'10000000' ; carga el registro en una posicion 10000000 como salida en el puerto B
MOVWF PORTB ; almacena el resultado en el puerto B

CALL Retardo_100ms ;hace un llamado para un retardo o interrupcion de 100ms

GOTO INICIO

SECUENCIA3 ; metodo denominado secuencia1 que tendra la funcion de hacer el ecendido de leds desde la
izquierda

MOVLW b'10000000' ; carga el registro en una posicion 10000000 como salida en el puerto B

MOVWF PORTB ; almacena el resultado en el puerto B

CALL Retardo_100ms ;hace un llamado para un retardo o interrupcion de 100ms

MOVLW b'01000000' ; carga el registro en una posicion 01000000 como salida en el puerto B

MOVWF PORTB ; almacena el resultado en el puerto B

CALL Retardo_100ms ;hace un llamado para un retardo o interrupcion de 100ms

MOVLW b'00100000' ; carga el registro en una posicion 00100000 como salida en el puerto B

MOVWF PORTB ; almacena el resultado en el puerto B

CALL Retardo_100ms ;hace un llamado para un retardo o interrupcion de 100ms

MOVLW b'00010000' ; carga el registro en una posicion 00010000 como salida en el puerto B

MOVWF PORTB ; almacena el resultado en el puerto B

CALL Retardo_100ms ;hace un llamado para un retardo o interrupcion de 100ms

MOVLW b'00001000' ; carga el registro en una posicion 00001000 como salida en el puerto B

MOVWF PORTB ; almacena el resultado en el puerto B

CALL Retardo_100ms ;hace un llamado para un retardo o interrupcion de 100ms

MOVLW b'00000100' ; carga el registro en una posicion 00000100 como salida en el puerto B

MOVWF PORTB ; almacena el resultado en el puerto B


CALL Retardo_100ms ;hace un llamado para un retardo o interrupcion de 100ms

MOVLW b'00000010' ; carga el registro en una posicion 00000100 como salida en el puerto B

MOVWF PORTB ; almacena el resultado en el puerto B

CALL Retardo_100ms ;hace un llamado para un retardo o interrupcion de 100ms

MOVLW b'00000001' ; carga el registro en una posicion 00000001 como salida en el puerto B

MOVWF PORTB ; almacena el resultado en el puerto B

CALL Retardo_100ms ;hace un llamado para un retardo o interrupcion de 100ms

GOTO INICIO ; devuelve al metodo inicio

INCLUDE <RETARDOS.INC> ;librerias de retardos

END ; fin del programa

Ejercicio 2

Ilustración 5 Diagrama motor DC

VII. RESULTADOS
RESULTADOS ESPERADOS

La presente tiene como finalidad realizar una practica donde podamos recortar programación en

asambler MPLAB elaborando dos ejercicios en especifico como son la secuencia de encendido de led

con ciertas condiciones e implementar el control de un motor DC con las indicaciones dictadas por el

docente.

RESULTADOS OBTENIDOS

Se pudo realizar las dos practicas y verificar sus funcionamientos, así como también se pudo recordar
las diferentes líneas de código que se necesitan para poder realizar la práctica.

VIII. CONCLUSIONES

 Para crear un proyecto es importante tener instalas todas las librerías (interrupciones), esto se lo
puede realizar desde el propio programa o también de la cualquier página web.
 Para generar un archivo de programación usando el programa anteriormente mencionado en donde
se debe copilar en primera instancia y seguidamente se exporta los archivos hexadecimales.
 Para la presente práctica se debe analizar y establecer las condiciones de trabajo los cuales deben
cumplir las acciones determinadas por el docente.

IX. RECOMENDACIONES

 Verificar que los PIC esten en buenas condiciones para poder grabarlas sin ningún problema.

 Tener todos los materiales necesarios para realizar la práctica.

 Llevar el mandil para poder entrar a los laboratorios y realizar la practica.

X. BIBLIOGRAFÍA

[1] Enrique Mandado Pérez, Emilio López Matos, “Microcontroladores PIC, Sistema integrado para
el autoaprendizaje”, Editorial Marcombo, Barcelona España, 2007.

[2] RedUSERS, Microcontroladores, funcionamiento, programación y usos prácticos, Buenos


Aires: ISBN, 2011.

[3] P. Abel, Lenguaje ensamblador y programacion para IBM,PC y compatibles, México: Prentice
Hall, 2010.

También podría gustarte