Proyecto Microcontrolador

INSTITUTO PÓLITECNICO NACIONAL Escuela Superior de Ingeniería Mecánica y Eléctrica “Unidad Culhuacán” Ing. en Comunicac

Views 102 Downloads 1 File size 2MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

INSTITUTO PÓLITECNICO NACIONAL Escuela Superior de Ingeniería Mecánica y Eléctrica “Unidad Culhuacán”

Ing. en Comunicaciones y Electrónica Microcontroladores Profesor: Prieto Solano José Grupo: 7EV2

Bautista Pérez Jesús Magdiel

Miranda Chávez Alan Michel

Castañeda Durán Giovanna

PROYECTO FINAL: INVERNADERO

ÍNDICE OBJETIVOS.................................................................................................2 MARCO TEÓRICO.......................................................................................3

PROYECTO FINAL

LENGUAJE C ORIENTADO A MICROCONTROLADORES......................................3 CARACTERÍSTICAS Y DESVENTAJAS DE LEGUAJE C...........................................3 PIC16F877....................................................................................................... 5 MPLAB............................................................................................................. 6 ISIS DE PROTEUS............................................................................................. 7 DISPLAY LCD 2X16........................................................................................... 8 CRISTAL CUARZO............................................................................................. 9 AMPLIFICADOR OPERACIONAL LM358............................................................10 TRIMPOT........................................................................................................ 11 CAPACITOR CERAMICO................................................................................... 11

MATERIAL................................................................................................12 ESPECIFICACIONES..................................................................................12 IMPLEMENTACIÓN...................................................................................13 DESARROLLO..........................................................................................14 CONCLUSIONES.......................................................................................39 ANEXOS...................................................................................................41

DATASHEET PIC16F877.................................................................................. 41 DATASHEET LM358........................................................................................ 42 DATASHEET LM35.......................................................................................... 43

BIBLIOGRAFÍA.........................................................................................44

OBJETIVOS Que el alumno: 

Sea capaz de realizar desde cero un proyecto generado de su propio ingenio, poniendo a prueba sus expectativas y aptitudes.



Generar este proyecto en código, simulación y en físico para poder sustentarlo y realizar las pruebas pertinentes.



Aplicar todo lo aprendido en el semestre.

MARCO TEÓRICO LENGUAJE C ORIENTADO A MICROCONTROLADORES El lenguaje C es de tipo profesional, muy completo y potente, pero su manejo exige una buena formación en Informática. También es muy 2

PROYECTO FINAL

conveniente conocer la arquitectura interna del procesador y en muchas ocasiones hay que combinarlo con el lenguaje Ensamblador. Al lenguaje C, se lo puede considerar con un lenguaje intermedio entre alto nivel y bajo nivel, debido a sus características especiales tales como el manejo de punteros, operaciones a nivel de BIT que son propios de lenguajes de bajo nivel. Sin dejar de mencionar la capacidad de empotrar trozos de lenguaje Ensamblador dentro de su código. Un programa codificado en lenguaje C resulta muy útil en la aplicación de microcontroladores, dado que su compilación es bastante eficiente y óptima acercándose a la codificación de lenguaje de máquina. CARACTERÍSTICAS Y DESVENTAJAS DE LEGUAJE C C es un lenguaje de programación de propósito general. Sus principales características son:         

Programación estructurada Economía de las expresiones Abundancia en operadores y tipos de datos. Codificación en alto y bajo nivel simultáneamente. Reemplaza ventajosamente la programación en ensamblador (assembler). Utilización natural de las funciones primitivas del sistema. No está orientado a ningún área en especial. Producción de código objeto altamente optimizado. Facilidad de aprendizaje (;))

Una de las peculiaridades de C es su riqueza de operadores, Puede decirse que prácticamente dispone de un operador para cada una de las posibles operaciones en código máquina. Finalmente, C, que ha sido pensado para ser altamente transportable y para programar lo inprogramable, igual que otros lenguajes tiene sus inconvenientes. Carece de instrucciones de entrada/salida, de instrucciones para manejo de cadenas de caracteres, con lo que este trabajo queda para la biblioteca de rutinas, con la consiguiente pérdida de transpirabilidad. 3

PROYECTO FINAL

La excesiva libertad en la escritura de los programas puede llevar a errores en la programación que, por ser correctos sintácticamente no se detectan a simple vista. Por otra parte las precedencias de los operadores convierten a veces las expresiones en pequeños rompecabezas. A pesar de todo, C ha demostrado ser un lenguaje extremadamente eficaz y expresivo. La programación en lenguaje C, para PIC, es bastante similar en su estructura y sintaxis a la programación tradicional para ordenadores, una de las diferencias esta en las librerías creadas específicamente para los microcontroladores PIC como por ejemplo para el LCD, teclado, bus I2C, etc. La función main ()es imprescindible en todo programa escrito en lenguaje C, pues es la función principal, desde aquí se puede hacer el llamado a otras funciones. Para crear un programa en lenguaje C, hay que seguir los pasos siguientes: 1. 2. 3. 4. 5.

Especificaciones del programa (qué tiene que hacer) Hacer organigrama Escribir el código fuente (conocer el lenguaje) Compilar + Enlazar (Link) Depurar errores, si los hay

PIC16F877 El PIC16F877 es un microcontrolador con memoria de programa tipo FLASH, lo que representa gran facilidad en el desarrollo de prototipos y en su aprendizaje ya que no se requiere borrarlo con luz ultravioleta como las versiones EPROM, sino que permite reprogramarlo nuevamente sin ser borrado con anterioridad. El PIC16F877 es un microcontrolador de Microchip Technology fabricado en tec- nología CMOS, su consumo de potencia es muy bajo y además es completamente estático, esto quiere decir que el reloj puede detenerse y los datos de la memoria no se pierden. 4

PROYECTO FINAL

Fig. 1: PIC 16f877

El encapsulado más común para este microcontrolador es el DIP (Dual In-line Pin) de 40 pines, propio para usarlo en experimentación. Los pines de entrada/salida de este microcontrolador están organizados en cinco puertos, el puerto A con 6 líneas, el puerto B con 8 líneas, el puerto C con 8 líneas, el puerto D con 8 líneas y el puerto E con 3 líneas. Cada pin de esos puertos se puede configurar como entrada o como salida independiente programando un par de registros diseñados para tal fin. En ese registro un bit en "0" configura el pin del puerto correspondiente como salida y un bit en "1" lo configura como entrada. Dichos pines del microcontrolador también pueden cumplir otras funciones especiales, siempre y cuando se configuren para ello, según se verá más adelante.

5

PROYECTO FINAL

Fig. 2: Puertos en el PIC 16f877

MPLAB

Es un programa que corre bajo Windows, Mac OS y Linux. Presenta las clásicas barras de programa, de menú, de herramientas de estado, etc. El ambiente MPLAB® posee editor de texto, compilador y simulación (no en tiempo real). Para comenzar un programa desde cero para luego grabarlo al μC en MPLAB® v7.XX los pasos a seguir son: 1. 2. 3. 4.

Crear un nuevo archivo con extensión .ASM y nombre cualquiera Crear un Proyecto nuevo eligiendo un nombre y ubicación Agregar el archivo .ASM como un SOURCE FILE Elegir el microcontrolador a utilizar desde SELECT DEVICE del menú CONFIGURE

Una vez realizado esto, se está en condiciones de empezar a escribir el programa respetando las directivas necesarias y la sintaxis para luego compilarlo y grabarlo en el PIC. 6

PROYECTO FINAL

Fig. 3: Entorno de desarrollo MPLab

ISIS DE PROTEUS Es una compilación de programas de diseño y simulación electrónica, desarrollado por Labcenter Electronics que consta de algunos programas principales:  Ares  Isis  Módulos VSM  módulos Electra ISIS (Intelligent Schematic Input System) permite diseñar el plano eléctrico del circuito que se desea realizar con componentes muy variados, desde simples resistencias, hasta alguno que otro microprocesador o microcontrolador, incluyendo fuentes de alimentación, generadores de señales y muchos otros componentes con prestaciones diferentes. Los diseños realizados en Isis pueden ser simulados en tiempo real, mediante el módulo VSM, asociado directamente con ISIS.

7

PROYECTO FINAL

Fig. 4: Entorno de desarrollo Isis de Proteus

DISPLAY LCD 2X16 Las pantallas de cristal líquido (LCD) se han popularizado mucho en los últimos años, debido a su gran versatilidad para presentar mensajes de texto (fijos y en movimiento), valores numéricos y símbolos especiales, su precio reducido, su bajo consumo de potencia, el requerimiento de solo 6 pines del PIC para su conexión y su facilidad de programación en lenguajes de alto nivel (por ejemplo, lenguaje C). Desde todo punto de vista el empleo del display LCD 16x2 (LCD 2x16) debería considerarse como la primera opción a la hora de decidir por un dispositivo de presentación alfanumérica, excepto cuando las condiciones de iluminación ambiental no sean las más favorables. En este último caso se debería pensar en el empleo de displays de 7 segmentos, que aunque no tienen la misma versatilidad tienen la ventaja innegable de sus mejores características de visibilidad aún en los ambientes más desfavorables. En la actualidad existen diversos modelos de display LCD, aunque los más comunes son los LCD 16x2 (16 caracteres x 2 filas) o LCD 2x16, gobernados por el controlador Hitachi HD44780, que se ha convertido en el estándar de facto para las aplicaciones con microcontroladores PIC. 8

PROYECTO FINAL

Fig. 5: Pantalla LCD

CRISTAL CUARZO

Tipo de resonador

Cuarzo

Frecuencia

20MHz

Tolerancia de resonadores

±30ppm

Alcance de capacidad

16…30 pF

Potencia

1mW

Montaje

THT

Estabilidad en tiempo ±5ppm/año 4.88mm

Ráster de terminales

Fig. 6: Cristal Cuarzo

9

PROYECTO FINAL

AMPLIFICADOR OPERACIONAL LM358 Amplificador operacional de doble propósito general. No requiere fuente dual. Alta ganancia, bajo consumo de potencia. En electrónica el uso de amplificadores operacionales es muy común. Sobre todo porque son muy útiles en una amplia gama de circunstancias, gracias a sus distintas configuraciones. Lo que nos permite un control simple de la ganancia, incluso con valores muy altos. Teniendo en cuenta las limitaciones técnicas: la tensión de salida del amplificador estará por debajo de la tensión de alimentación positiva Características:   

Aplicación:    

Voltaje de alimentación: 3V a 32V fuente sencilla (±1.5V a ±16V fuente dual) Bajo consumo de potencia Ancho de banda típico: 1 MHz

Radio frecuencia Audio frecuencia Generación de pulsos Sensores

Fig. 7: Integrado LM358

TRIMPOT

10

PROYECTO FINAL

Trim o Trimpot, son potenciómetros que se ajustan con la ayuda de un destornillador. Sirven para que el circuito al que pertenecen, actúe adecuadamente (en su punto) y compensar las tolerancias en otros componentes los Trimpot son resistencias variables que tienen 3 patitas o pines, cuyo valor cambia a medida que mueves una perilla, la cual se desliza en una cubierta de carbón, por lo que la resistencia entre la patita que se desliza y uno de los extremos varia lineal o logarítmicamente según la especificación del trimpot.

Fig. 8: Trimpot

CAPACITOR CERAMICO Capacitores de disco de cerámica de baja tensión (de color naranja) y de poliéster metalizado (de color verde). Los capacitores de cerámica se fabrican con muy pequeñas capacidades y su tamaño también es pequeño. Se emplean, fundamentalmente, en circuitos de alta frecuencia y junto con los capacitores electrolíticos, son los más ampliamente utilizados en electrónica.

Fig. 9: Capacitor cerámicos

MATERIAL 

Equipo de cómputo



PIC16F877A 11

PROYECTO FINAL



Programador para PICs



Diodos led



Resistencias de distintos valores/Trimpots



Protoboard



Alambre calibre 22



Fuente de voltaje



Capacitores



LCD



LM35/LM358



Pushbuttons

ESPECIFICACIONES Se necesita crear un invernadero automatizado que cumpla con las siguientes funciones y características: Al encender todo el sistema, primeramente se configurara la hora actual del dispositivo, luego se pedirá al usuario la hora en la cual el sistema tomara la temperatura del invernadero y después se pedirá la hora en la que se regara el agua. Para el regado de agua se deben de tener en cuenta las siguientes especificaciones: 1. Si la temperatura censada fue de 5 a10 grados se regara durante 10 minutos. 2. Si la temperatura censada fue de 11 a 15 grados se regara durante15 minutos. 3. Si la temperatura censada fue de 21 en adelante se regara 20 minutos. Además se contara con el control de una ventana y de un ventilador, los cuales actuaran para mantener baja o alta la temperatura del invernadero, considerando lo siguiente: 12

PROYECTO FINAL

1. Si la temperatura está entre 0 y 24 grados (temperatura ambiente), la ventana se mantendrá cerrada. 2. Arriba de 25º se abrirá la ventana 3. Si la temperatura es mayor de 30º se mantiene abierta la ventana y se activa un ventilador. 4. Si la temperatura comienza a bajar se desactivara el ventilador y se cerrara la ventana [el ventilador se desactivara a menos de 31º y la ventana se cerrara a los 24 grados] Esto no contara con una hora específica, ya que se estará sensando a toda hora la temperatura. Todo esto será visualizado en una pantalla LCD para que el sistema sea más amigable con el usuario. IMPLEMENTACIÓN Para poder implementar las especificaciones del proyecto expuestas anteriormente, decidimos utilizar lo siguiente: Pic16f877A, LM358, LM35, LCD, Pushbuttons, donde los últimos servirán como periféricos de entrada, donde el usuario lograra ingresar los datos requeridos. En la LCD se mostraran menús amigables con el usuario, los cuales pedirán la hora, desplegando un aumento o disminución de minutos y horas, que iran haciendo saltos si el usuario ya haya terminado de ingresar los datos correctamente. Utilizaremos el modo de 24 horas para que el usuario no pueda rebasar de las 24 horas establecidas normalmente. Se mostrara la hora actual y la hora de riego, además de la temperatura del invernadero y la temperatura senasada. Para los actuadores del aspersor, la ventana y el ventilador, se utilizaran LEDs para que sepamos cuando se activan o se desactivan los mismos, todo esto será explicado más adelante. “Todo esto será presentado en protoboards, con su respectivo alambrado” 13

PROYECTO FINAL

DESARROLLO 1. Genere un nuevo proyecto en MPLab para desarollar el proyecto explicado con anterioridad, posteriormente agregue un archivo .c para comenzar a programar siguiendo los pasos mostrados. a. Ejecute MPLab X en el equipo de cómputo b. Seleccione el PIC que va a ser utilizado c. Asígnele nombre a dicho proyecto y elija la ruta en donde será guardo. d. Agregue un archivo .c y asígnele un nombre e. Comience a programar sobre el archivo .asm antes creado Utilizando el entorno de desarrollo MPLab X se generó un proyecto, seguido, se selecciono el PIC16F877A, se le asigno el nombre al proyecto llamado Invernadero, se creo un nuevo archivo .c con el mismo nombre en cada proyecto, siguiendo estos pasos el entorno de desarrollo quedó listo para comenzar a programar. Cabe mencionar que para la programación de este proyecto fu necesario utilizar diversas librerías para ahorrar código en el programa principal, las librerías implementadas controlaron dispositivos tales como:     

LCD Convertidor digital Librerías para el PIC Fuses implementados en el PIC Retardos

14

PROYECTO FINAL

Figura 10: Proyecto y archivo .c generado en MPLab

2. En el archivo .c generado realice programe las funciones del proyecto. Para generar el siguientes pasos:         

proyecto

propuesto

se

realizaron

los

Se agregó la librería necesario para el PIC16F877A la cual aparece al inicio del programa. Se definieron todas las librerías a utilizar. Se inicializó el programa. Se declararon los puertos necesarios tales como puertos de entrada y salida. Se generó el código necesario para cubrir los requerimientos. Se procedió a comentar cada línea del proyecto para llevar una buena relación y entendimiento del mismo. El programa fue compilado, indicándonos que no se generó ningún error. El archivo .hex fue identificado en la carpeta en dónde se guardó el proyecto. Se extrajo el archivo .hex para posteriormente utilizarlo en la simulación correspondiente montado en Isis de Proteus.

15

PROYECTO FINAL

Figura 11: Compilación correcta del proyecto Invernadero

Los pasos a seguir para hacer funcionar el proyecto generado, son mostrados a continuación.     

Encender el dispositivo Definir la hora actual auxiliándose de un reloj Definir la hora en la que se tomará la temperatura para comenzar a regar Observar cómo funciona el dispositivo Reiniciar el dispositivo

Código generado: #define #define #define #define #define #define

RS RD2 // Inicialización de puertos EN RD3 D4 RD4 D5 RD5 D6 RD6 D7 RD7

#include #include #include #include

// Librerias



16

PROYECTO FINAL

#include "lcd.h" // CONFIG #pragma config FOSC = HS // Oscillator Selection bits (HS oscillator) #pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled) #pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled) #pragma config BOREN = ON // Brown-out Reset Enable bit (BOR enabled) #pragma config LVP = OFF // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (RB3 is digital I/O, HV on MCLR must be used for programming) #pragma config CPD = OFF // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off) #pragma config WRT = OFF // Flash Program Memory Write Enable bits (Write protection off; all program memory may be written to by EECON control) #pragma config CP = OFF #define FOSC 20000000L /* target device system clock freqency */ #define FCYC (FOSC/4L) /* target device instruction clock freqency */ #define _XTAL_FREQ FOSC /* required for __delay_ms, __delay_us macros */ int int int int int int

usegundos3=0; dsegundos3=0; uminutos3=0; dminutos3=0; uhoras3=0; dhoras3=0;

//Variable //Variable //Variable //Variable //Variable //Variable

de de de de de de

unidades para los segundos decenas para los segundos unidades para los minutos decenas para los minutos unidades para las horas decenas para las horas

int int int int int int

usegundos4=0; dsegundos4=0; uminutos4=0; dminutos4=0; uhoras4=0; dhoras4=0;

//Variable //Variable //Variable //Variable //Variable //Variable

de de de de de de

unidades para los segundos decenas para los segundos unidades para los minutos decenas para los minutos unidades para las horas decenas para las horas

void riego (int x) //Inicia función para el reloj del tiempo { usegundos4=usegundos3; //Igualamos variables dsegundos4=dsegundos3; uminutos4=uminutos3; dminutos4=dminutos3; uhoras4=uhoras3; dhoras4=dhoras3; // Fin de la igualación int j=0; for(j=0; j