View
24
Download
0
Embed Size (px)
DESCRIPTION
MIcrocontroladores
Citation preview
Carrera : VIII CICLO - INGENIERÍA INDUSTRIAL
Curso : PROGRAMACION PARA INGENIEROS
Profesor : Ing. MIGUEL LEVANO STELLA
Alumnos :
Lima, 20 de Diciembre del 2014
Mondelez Perú S.A.
Programación para Ingenieros
Ingeniería Industrial Página 2
Indice
Indice
Dedicatoria
Introducción
Capítulo I. La Empresa
1. Descripción de la empresa
2. Organigrama de la empresa
Capítulo II. Identificación del Problema
1. Descripción del Problema
2. Alternativa de Solución del Problema
Capítulo III. Elaboración del Proyecto
1. Definición del Diseño del Sistema
2. Elementos del Diseño
3. Marco teórico del Microcontrolador
Capítulo IV. Aplicación e Implementación del Sistema
1. Programación o Desarrollo del Software
2. Programación del Microcontrolador (µC)
3. Presentación del Sistema o Prueba y Verificación
Conclusiones
Bibliografía
Programación para Ingenieros
Ingeniería Industrial Página 3
Dedicatoria
Queremos dedicarles este trabajo a
nuestras familias, que continuamente
nos apoyan y son los pilares y la fuerza
que nos mueven a ser mejores
personas, amigos, compañeros esposos
y futuros Ingenieros Industriales.
Programación para Ingenieros
Ingeniería Industrial Página 4
Introducción
El presente trabajo buscamos aplicar los conocimientos recibidos en el curso para
aplicarlos en
Programación para Ingenieros
Ingeniería Industrial Página 5
Capítulo I. La Empresa
1. Descripción de la empresa en estudio y del producto
La Empresa
Mondelez Internacional es una fábrica que comercializa productos alimenticios
procesados para consumo humano, como galletas, caramelos, chocolates,
postres, gelatinas, refrescos, artículos de repostería y dulces en general.
Visión
Así como ayer, hoy y siempre ser el modelo a seguir en resultados, procesos y
gente.
Misión
Hacer galletas, bañados y wafers que encanten a nuestros consumidores, al mejor
costo, con excelente calidad, en el momento y la cantidad requerida por el
mercado.
Ubicación
La planta se encuentra ubicada en Avenida Venezuela N° 2470 Lima.
Historia
Los inicios de golosinas del Perú se remontan por el año se 1899 cuando don
Arturo Field funda la compañía Arturo Field y la estrella, empresa dedicada a la
elaboración de galletas de soda.
Programación para Ingenieros
Ingeniería Industrial Página 6
En el año 1993 Nabisco, una de las grandes multinacionales de alimentos, compra
la compañía de Arturo Field. Siete años después, en el 2000, Kraft Foods
Internacional compra mundialmente a Nabisco, convirtiéndose así en la segunda
empresa mundial de alimentos.
Actualmente Mondedez Internacional tiene operaciones en 150 países del mundo
y aproximadamente 159 plantas industriales, situándose en el Perú la planta de
galletas que abastece la Región Andina y países de Centro América y el Caribe.
Productos que comercializa
La compañía de alimentos Mondelez Internacional posee algunas de las marcas
más queridas por los consumidores peruanos. Produce localmente marcas como
las galletas Soda Field, Oreo, Club Social, Ritz, Charada, Coronita, Doña Pepa,
Cua Cua, entre otras. Asimismo, comercializa el queso Philadelphia, la mayonesa
Kraft, los postres instantáneos y gelatina Royal, los refrescos Clight y Tang, entre
otros.
Programación para Ingenieros
Ingeniería Industrial Página 7
2. Organigrama de la empresa
GERENCIA GENERAL
GERENTE PRODUCCION
MANUFACTURA INGENIERIA
MANTENIMIENTO
PROYECTOS
ASEGURAMIENTO DE CALIDAD
PLANEAMIENTO
GERENTE DE VENTAS
MARKETING VENTAS
GERENTE DE FINANZAS
CONTRALORIA CONTABILIDAD
Gerente de planta
Gerente Sección 1
Jefe de Línea 1
Jefe de Línea 2
Supervisor
Facilitador Facilitador Facilitador
Jefe de Chocolate
Gerente Sección 2
Jefe de Línea 3
Jefe de Línea 4
Supervisor
Facilitador Facilitador Facilitador
Jefe de Línea 5
Programación para Ingenieros
Ingeniería Industrial Página 8
Capítulo II. Identificación del Problema
1. Descripción del Problema
Actualmente las máquinas de empaque de la empresa Mondelez tienen micro
paros que no son registrados por los maquinistas debido a la carga de trabajo que
tienen en su día a día esto a su vez origina que no tengan un control real de
cuanta pérdida de eficiencia les está generando estos micro paros por este motivo
no se tiene una data de los micro paros más ocurrentes así mismo el no tener esta
data no se puede realizar un análisis causa raíz de estos problemas para
encontrar una solución definitiva para disminuir la carga de trabajo de los
maquinistas y mejorar la eficiencia de la línea la cual redundara en una reducción
de los costos de la fabricación de sus productos permitiéndolos volverse más
competitivos.
2. Alternativa de Solución del Problema
Instalar un software mediante microcontroladores anexados a la Máquina que
registre en tiempo real los paros y micro paros ocasionados en las máquinas de
empaque de tal manera que nos permita tener data en tiempo real y de manera
visual mediante una pantalla LCD de las pérdidas de eficiencia que nos están
originando.
Objetivo General
Incrementar el OEE de la planta de 80% a 85%
Objetivos Específicos
Eliminar pérdidas de eficiencia de la planta originada por paros y micro
paros en la maquinaria de planta que no tienen una solución definitiva por
falta de data.
Llevar un control visual de la productividad en tiempo real de tal manera
que se tome acción inmediata en caso de desviaciones negativas.
Instalar pantallas LCD anexada a microcontroladores para llevar un control
visual de la producción.
Programación para Ingenieros
Ingeniería Industrial Página 9
Disminuir la carga de trabajo de los Maquinistas de planta
Justificación
El OEE o eficiencia general de equipos de la planta te mide la cantidad de
paros no planificados o no deseados que ocurren dentro de la planta de
producción.
La planta actualmente tiene un OEE de 80% cada punto de OEE de la
planta tiene un valor de 122000 dólares el incremento en 5% de este
indicador permitirá un ahorro significativo y un aumento de productividad
así como disminución de horas extras para la empresa dándole un plus
de competitividad a sus productos.
Capítulo III. Elaboración del Proyecto
1. Definición del Diseño del Sistema
Para la elaboración del proyecto diseñaremos un sistema de control de puertos
de entrada/salida basados en las características del PIC16F877A, utilizando
lenguaje de programación C y software de simulación Proteus-ISIS con precisión.
El Objetivo de nuestro proyecto es aplicar todos los conocimientos adquiridos para
programar una tarjeta de circuito impreso y enviar mensajes a través de una
pantalla LCD.
2. Elementos del Diseño
Placa de Circuito Impreso: La placa de un circuito impreso es la base para el
montaje del mismo, es el soporte que sujetará los componentes y a la vez los
interconectará mediante una serie de pistas de cobre.
Una placa de circuito impreso está formada por un soporte, que puede ser de
baquelita o de fibra de vidrio y una capa de cobre depositada sobre el soporte.
Programación para Ingenieros
Ingeniería Industrial Página 10
Pantalla LCD: La definición más clara de un LCD es una pantalla de cristal líquido
que visualiza unos ciertos caracteres. Para poder hacer funcionar un LCD, debe
de estar conectado a un circuito impreso en el que estén integrados los
controladores del display y los pines para la conexión del display. Sobre el circuito
impreso se encuentra el LCD en sí, rodeado por una estructura metálica que lo
protege. En total se pueden visualizar 2 líneas de 16 caracteres cada una, es
decir, 2x16=32 caracteres. A pesar de que el display sólo puede visualizar 16
caracteres por línea, puede almacenar en total 40 por línea. Es el usuario el que
especifica qué 16 caracteres son los que se van a visualizar.
Microcontrolador PIC 16F877A: 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.
Programación para Ingenieros
Ingeniería Industrial Página 11
Grabador PIC: Esta herramienta permite grabar o programar todo tipo de
Microcontroladores de Microchip (pics).
3. Marco teórico del Microcontrolador PIC 16F877A
Los microcontroladores son computadores digitales integrados en un chip que
cuentan con un microprocesador o unidad de procesamiento central (CPU), una
memoria para almacenar el programa, una memoria para almacenar datos y
puertos de entrada salida. A diferencia de los microprocesadores de propósito
general, como los que se usan en los computadores PC, los microcontroladores
son unidades autosuficientes y más económicas.
El funcionamiento de los microcontroladores está determinado por el programa
almacenado en su memoria. Este puede escribirse en distintos leguajes de
programación. Además, la mayoría de los microcontroladores actuales pueden
reprogramarse repetidas veces.
Por las características mencionadas y su alta flexibilidad, los microcontroladores
son ampliamente utilizados como el cerebro de una gran variedad de sistemas
embebidos que controlan máquinas, componentes de sistemas complejos, como
aplicaciones industriales de automatización y robótica, domótica, equipos
médicos, sistemas aeroespaciales, e incluso dispositivos de la vida diaria como
automóviles, hornos de microondas, teléfonos y televisores.
Frecuentemente se emplea la notación µC o las siglas MCU (por microcontroller
unit) para referirse a los microcontroladores.
Programación para Ingenieros
Ingeniería Industrial Página 12
Características: Las principales características de los µC son:
Unidad de Procesamiento Central (CPU): Típicamente de 8 bits, pero
también las hay de 4, 32 y hasta 64 bits con arquitectura Harvard, con
memoria/bus de datos separada de la memoria/bus de instrucciones de
programa, o arquitectura de von Neumann, también llamada arquitectura
Princeton, con memoria/bus de datos y memoria/bus de programa
compartidas.
Memoria de Programa: Es una memoria ROM (Read-Only Memory),
EPROM (Electrically Programable ROM), EEPROM (Electrically
Erasable/Programable ROM) o Flash que almacena el código del programa
que típicamente puede ser de 1 kilobyte a varios megabytes.
Memoria de Datos: Es una memoria RAM (Random Access Memory) que
típicamente puede ser de 1, 2 4, 8, 16, 32 kilobytes.
Generador del Reloj: Usualmente un cristal de cuarzo de frecuencias que
genera una señal oscilatoria de entre 1 a 40 MHz, o también resonadores
o circuitos RC.
Interfaz de Entrada/Salida: Puertos paralelos, seriales (UARTs, Universal
Asynchronous Receiver/Transmitter), I2C (Inter-Integrated Circuit),
Interfaces de Periféricos Seriales (SPIs, Serial Peripheral Interfaces), Red
de Área de Controladores (CAN, Controller Area Network), USB (Universal
Serial Bus).
Otras opciones:
– Conversores Análogo-Digitales (A/D, analog-to-digital) para convertir un
nivel de voltaje en un cierto pin a un valor digital manipulable por el
programa del microcontrolador.
– Moduladores por Ancho de Pulso (PWM, Pulse-Width Modulation) para
generar ondas cuadradas de frecuencia fija pero con ancho de pulso
modificable.
La alta integración de subsistemas que componen un µC reduce el número de
chips, la cantidad de pistas y espacio que se requeriría en un circuito impreso si
se implementase un sistema equivalente usando chips separados.
Programación para Ingenieros
Ingeniería Industrial Página 13
Descripción de los PINES:
Programación para Ingenieros
Ingeniería Industrial Página 14
Programación para Ingenieros
Ingeniería Industrial Página 15
Descripción de los Puertos:
Puerto A:
Puerto de e/s de 6 pines
RA0 è RA0 y AN0
RA1 è RA1 y AN1
RA2 è RA2, AN2 y Vref-
RA3 è RA3, AN3 y Vref+
RA4 è RA4 (Salida en colector abierto) y T0CKI(Entrada de reloj del modulo
Timer0) RA5 è RA5, AN4 y SS (Selección esclavo para el puerto serie
síncrono)
Puerto B:
Puerto e/s 8 pines
Resistencias pull-up programables
RB0 è Interrupción externa
RB4-7 èInterrupcion por cambio de flanco
RB5-RB7 y RB3 è programacion y debugger in circuit
Puerto C:
Puerto e/s de 8 pines
Programación para Ingenieros
Ingeniería Industrial Página 16
RC0 è RC0, T1OSO (Timer1 salida oscilador) y T1CKI (Entrada de reloj del
modulo Timer1).
RC1-RC2 è PWM/COMP/CAPT
RC1 è T1OSI (entrada osc timer1)
RC3-4 è IIC
RC3-5 è SPI
RC6-7 è USART
Puerto D:
Puerto e/s de 8 pines
Bus de datos en PPS (Puerto paralelo esclavo)
Puerto E:
Puerto de e/s de 3 pines
RE0 è RE0 y AN5 y Read de PPS
RE1 è RE1 y AN6 y Write de PPS
RE2 è RE2 y AN7 y CS de PPS
Proceso de Desarrollo:
El proceso de desarrollo de una aplicación basada en microcontroladores se
compone de las siguientes etapas principales:
Desarrollo de software: Esta etapa corresponde a la escritura y
compilación/ensamblaje del programa que regirá las acciones del µC y los
sistemas periféricos conectados a este.
Programación del µC: En esta etapa el código de máquina
correspondiente al programa desarrollado en la etapa anterior se descarga
en la memoria del µC.
Prueba y verificación: Por último, el µC debe conectarse al circuito base
y someterse a pruebas para verificar el funcionamiento correcto del
programa.
Programación para Ingenieros
Ingeniería Industrial Página 17
Capítulo IV. Aplicación e Implementación del Sistema
1. Programación o Desarrollo del Software
En esta etapa consiste en escribir y compilar/ensamblar el programa que
determinara las acciones del µC y su funcionamiento. Existen distintas maneras
de desarrollar el programa, dependiendo del lenguaje inicial que se utiliza para
escribir el programa:
Lenguaje Assembly - Lenguaje de Máquina/Código Objeto
(.asm) → ensamblador → (.hex, .o, .bin, .coff)
Lenguaje de Alto Nivel - Lenguaje Assembly - Lenguaje de
Máquina/Código Objeto
(.c, .cpp) → compilador → (.asm) → ensamblador → (.hex, .o, .bin, .coff)
Escribir el Programa en PIC C COMPILER:
Programación para Ingenieros
Ingeniería Industrial Página 18
#include <16f877a.h>
#fuses xt,nolvp,nowdt,put,cpd,protect //configura los fusibles
#use delay(clock=4Mhz) //OSCILADOR <=4MHZ
#include <lcd_portb.h>
void main(void)
{
lcdInicializa();
lcdPosicionXY(2,1);
lcdEnviaMensaje("INTEGRANTES:");
delay_ms(1000);
while(true)
{
lcdPosicionXY(0,2);
lcdEnviaMensaje(" JOSE EFFIO ");
delay_ms(2000); //introduce un retardo de 2000ms
lcdPosicionXY(0,2);
lcdEnviaMensaje("MILTON BOCANEGRA");
delay_ms(2000); //introduce un retardo de 2000ms
lcdPosicionXY(0,2);
Programación para Ingenieros
Ingeniería Industrial Página 19
lcdEnviaMensaje(" ROLANDO NAVARRO");
delay_ms(2000); //introduce un retardo de 2000ms
lcdPosicionXY(0,2);
lcdEnviaMensaje(" NICOLA CALVO ");
delay_ms(2000); //introduce un retardo de 2000ms
lcdPosicionXY(0,2);
lcdEnviaMensaje(" PAMELA PECHE ");
delay_ms(2000); //introduce un retardo de 2000ms
lcdPosicionXY(0,2);
lcdEnviaMensaje(" UPN ");
delay_ms(2000); //introduce un retardo de 2000ms
}
}
Compilar el Programa:
Programación para Ingenieros
Ingeniería Industrial Página 20
Programación de Puerto LCD:
Programación para Ingenieros
Ingeniería Industrial Página 21
#ifndef PUERTO_LCD
#byte TRIS_LCD = getenv("SFR:TRISB") //indica que el puerto b será de
salida
#bit Lcd_D4 = getenv("SFR:PORTB").0
#bit Lcd_D5 = getenv("SFR:PORTB").1
#bit Lcd_D6 = getenv("SFR:PORTB").2
#bit Lcd_D7 = getenv("SFR:PORTB").3
#bit Lcd_EN = getenv("SFR:PORTB").4
#bit Lcd_RS = getenv("SFR:PORTB").5
///////////// Funciones Internas //////////////
void lcdControlComando(void);
void lcdEnviaData(unsigned int);
//////////// Funciones Externas //////////////
void lcdInicializa(void);
void lcdEnviaMensaje(unsigned int);
void lcdPosicionXY(unsigned int, unsigned int);
void lcdRotaDerechaLCD(unsigned int,unsigned long );
void lcdRotaIzquierdaLCD(unsigned int,unsigned long);
void lcdBorraPantalla(void);
void lcdCursorPropiedades(short, short);
void lcdApagaPantalla(void);
void lcdBlinkPantalla(unsigned int contador,unsigned long tiempo);
void lcdPrendePantalla(void);
#define HIGH 1
#define LOW 0
void lcdInicializa(void)
Programación para Ingenieros
Ingeniería Industrial Página 22
{
TRIS_LCD &= ~(1<<0)&~(1<<1)&~(1<<2)&~(1<<3)&~(1<<4)&~(1<<5);
delay_ms(15);
/////// Configuracion Inicial segun Fabricante ///////////////
output_b(0x0C);
lcdControlComando();
output_b(0x0C);
lcdControlComando();
output_b(0x0C);
lcdControlComando();
output_b(0x04);
lcdControlComando();
/////////// Modo transferencia 4 Bits, 2 Lineas, tamaño de Caracter 5x7 /////////////
lcdEnviaData(0x28);
/////////// Modo Funcionamiento: Incrementa Cursor, Modo Normal ///////////
lcdEnviaData(0x06);
/////////// Control ONN/OFF : Display ON, Cursor OF, Intermitente OF ////////////
lcdEnviaData(0x0C);
/////////// Borra Pantalla ////////////////////
lcdEnviaData(0x01);
}
void lcdEnviaData(unsigned int Data)
{
Lcd_D7=bit_test(Data,4);
Lcd_D6=bit_test(Data,5);
Lcd_D5=bit_test(Data,6);
Lcd_D4=bit_test(Data,7);
lcdControlComando();
Lcd_D7=bit_test(Data,0);
Lcd_D6=bit_test(Data,1);
Lcd_D5=bit_test(Data,2);
Programación para Ingenieros
Ingeniería Industrial Página 23
Lcd_D4=bit_test(Data,3);
lcdControlComando();
}
void lcdControlComando(void)
{
Lcd_EN=HIGH;
delay_us(40);
Lcd_EN=LOW;
if(Lcd_RS) delay_us(120);
else delay_ms(5);
}
void lcdEnviaMensaje(unsigned int caracter)
{
Lcd_RS=HIGH;
lcdEnviaData(caracter);
Lcd_RS=LOW;
}
void lcdPosicionXY(unsigned int posColumna,unsigned int posFila)
{
unsigned int Linea=0;
if (posFila==4) Linea=0xD4;
else if (posFila==3) Linea=0x94;
else if (posFila==2) Linea=0xC0;
else if (posFila==1) Linea=0x80;
Linea=Linea+posColumna;
lcdEnviaData(Linea);
Programación para Ingenieros
Ingeniería Industrial Página 24
}
void lcdRotaDerechaLCD(unsigned int Movimientos, unsigned long tiempo)
{
unsigned int contador=0;
for(contador=0;contador<Movimientos;contador++)
{
lcdEnviaData(0b00011000);
delay_ms(tiempo);
}
}
void lcdRotaIzquierdaLCD(unsigned int Movimientos,unsigned long Tiempo)
{
unsigned int contador=0;
for(contador=0;contador<Movimientos;contador++)
{
lcdEnviaData(0b00011100);
delay_ms(Tiempo);
}
}
void lcdBorraPantalla(void)
{
lcdEnviaData(0x01);
}
void lcdCursorPropiedades(short ONOFCursor, short ONOFBlink)
{
lcdEnviaData(0x0C|(ONOFCursor<<1)|(ONOFBlink<<0));
}
void lcdBlinkPantalla(unsigned int contador,unsigned long tiempo)
{
Programación para Ingenieros
Ingeniería Industrial Página 25
unsigned int i=0;
for(i=0;i<contador;i++)
{
lcdEnviaData(0x08);
delay_ms(tiempo);
lcdEnviaData(0x0C);
delay_ms(tiempo);
}
}
void lcdApagaPantalla(void)
{
lcdEnviaData(0x08);
}
void lcdPrendePantalla(void)
{
lcdEnviaData(0x0C);
}
#endif
2. Programación del Microcontrolador (µC)
Este proceso corresponde a utilizar un programa en el PC que toma el código
ensamblado (.hex, .o, .bin, .coff) para el µC específico, y lo envía mediante algún
puerto (serial, paralelo, USB, etc.) a un dispositivo que lo escribe en la memoria
del µC. Se acostumbra denominar programador tanto al software como al
hardware involucrado para este propósito, lo cual puede prestarse a confusión. El
software programador a veces recibe también el nombre de downloader, ya que
su propósito es descargar o transferir desde el PC al µC el código ensamblado.
Programación para Ingenieros
Ingeniería Industrial Página 26
Es importante mencionar que no deben confundirse los términos desarrollo
o programación del software y programación del µC, el primero se refiere a
escribir el programa, mientras que el segundo se refiere transferir el código
de máquina a la memoria del µC.
Interconexión del PIC con el LCD: (ISIS-Proteus)
Programación para Ingenieros
Ingeniería Industrial Página 27
Cargar archivo .hex en el circuito:
Programación para Ingenieros
Ingeniería Industrial Página 28
Ejecutar el circuito:
3. Presentación del Sistema o Prueba y Verificación
Una vez programado el µC, con el grabador de PIC trasladaremos el programa
creado para verificar el funcionamiento y presentar el proyecto.
Programación para Ingenieros
Ingeniería Industrial Página 29
Programación para Ingenieros
Ingeniería Industrial Página 30
Conclusiones
AGREGAR
Programación para Ingenieros
Ingeniería Industrial Página 31
Bibliografía
https://www.youtube.com/watch?v=azpvO_duaXI
https://www.youtube.com/watch?v=bUwx_Gb78p4
https://www.youtube.com/watch?v=E8zKV5BBMoA
https://www.youtube.com/watch?v=6SCx0Q4o-14
http://www.utp.edu.co/~eduque/arquitec/PIC16F877.pdf
http://www.mikroe.com/chapters/view/80/capitulo-2-programacion-de-los-
microcontroladores/
http://www.monografias.com/trabajos18/descripcion-pic/descripcion-pic.shtml
https://www.google.com.pe/search?q=grabador+de+pic16f877a&biw=1440&bih=
766&source=lnms&tbm=isch&sa=X&ei=zJ2VVIC_FsWmNqPlg-
AF&sqi=2&ved=0CAYQ_AUoAQ#tbm=isch&q=pic16f877a&imgdii=_