Microprocesadores y Microcontroladores Paso3 Grupo 29
Short Description
Microprocesadores y Microcontroladores...
Description
MICROPROCESADORES Y MICROCONTROLADORES
Pasó 3 Solucionar los circuitos y avances del proyecto
PRESENTADO POR: CARLOS RABIN CUBIDES LOPEZ COD: 79792670 JAVIER ANDRES DONCEL ZAMBRANO COD: 80030874 DIEGO JAVIER COHECHA LEON COD: 80228006
GRUPO: 309696_29
PRESENTADO A: Ing. NESTOR JAVIER RODRIGUEZ
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA BOGOTA D. C, - COLOMBIA ABRIL 2018
INTRODUCCION
En este trabajo se presentará la solución a ejercicios planteados mediante el Microcontrolador Pic16f877 realizando su diseño y programación dando solución a una determinada aplicación o aplicaciones que muy posiblemente de ven en el campo industrial empleándose sensores y control de variables como lo es la temperatura. Para este trabajo se utilizó el lenguaje de programación Pic C y la simulación del software mediante Proteus
Diseño e implementación de tres soluciones con micro controladores Pic 16f877. Utilizando el programa de lenguaje asembler para la elaboración de los programas respectivos. Simulado en programa Proteus 7.9 o Versiones 8.0 en adelante. Las aplicaciones de control, medición, instrumentación, entretenimiento y consumo, son las promotoras y fuente del creciente mercado tanto de microprocesadores como de microcontroladores. Con el desarrollo de este trabajo se busca que los estudiantes de la materia de microprocesadores y controladores desarrollen una serie de prácticas empleando los circuitos integrados (PIC) y otros componentes electrónicos para la solución de algún problema o requerimiento. requerimien to. Para esto es necesario que el estudiante estudian te ponga en práctica los conocimientos adquiridos durante el desarrollo de la presente fase, y además que se despejen algunas dudas que surjan durante la construcción y/o desarrollo del mismo. Utilización de software para la programación y compilación de los códigos que se utilizan en la programación de los diferentes microcontroladores, el cual conectado a un sistema eléctrico y mecánico tendremos algunas respuestas.
OBJETIVOS
Los estudiantes conocerán analizarán y comprenderán las bases de programación en lenguajes de alto nivel así como los sistemas microcontrolados de última generación y sus aplicaciones. Efectuar los respectivos montajes con con los componentes eléctricos necesarios de acuerdo a lo establecido en cada práctica, colocando a prueba los conocimientos adquiridos durante el desarrollo de la fase. Desarrollar y establecer los códigos en assembler para los PIC empleados· Debe tener un sistema de actuadores (salidas) controlados por el Microcontrolador (bobinas, motores dc, servomotores, etc.) que cumplan la función de control. Diseñar circuitos estudiando las diferentes aplicaciones que se puede tener con el Micro controlador Pic16f877a, acoplados a Dth 11(sensores de temperatura y humedad). Diseñar circuitos empleando el acoplamiento y uso de pulsadores
Actividades a desarrollar Diseño e implementación de 2 circuitos en microcontroladores: Utilizando el pic16f877a Los programas gratuitos a utilizar son s on lenguaje C: Pic C. Micro C. Con las siguientes características: Micro controlador Pic16f877a 1 Display 16 X 2 1 Dth11 (sensor de temperatura y humedad) 3 leds (rojo, amarillo, verde) 2 Motores 12 vdc (ventilador) 3 resistencias de 220 ohmios 3 resistencias de 1 k ohmios 5 pulsadores Programa 1: Debe sensar la humedad y temperatura del ambiente con el sensor dth11 de proteus, monitorizando las dos variables y visualizándolas en un display 16 x2 y si la temperatura está menor o igual de 15 grados el led verde se encenderá, si la temperatura está entre los 20 y 28 grados se e ncenderá un led amarillo, y si supera los 30 grados el led rojo se prendera y debe dar una alarma constante y prenderse el ventilador hasta que baje la temperatura menor o igual a 20 grados. En el display se debe visualizar el valor de la temperatura y la activación de motor como MOTOR ON o MOTOR OFF. Debe sensar a todo momento la humedad del ambiente al pasar por el 60% se debe activar un motor ventilador y se debe apagar cuando esta baje a menos de 50%.
Carlos Cubides:
Si la temperatura está menor o igual de 15 grados el led verde se encenderá.
Si la temperatura está entre los 20 y 28 grados se encenderá un led amarillo.
Si supera los 30 grados el led rojo se prendera y debe dar una alarma constante y prenderse el ventilador hasta que baje la temperatura menor o igual a 20 grados.
Código Compiler:
Programa 2: Se diseñará un sistema de cerradura electrónica el cual deberá en un display 16X2 desplegar en la primera línea el nombre del curso y numero de grupo, habrá un teclado matricial de 4 x4, y al digitar el número de cedula de cada estudiante debe aparecer en el display y al ser el correcto se debe encender un led para cada uno de los estudiantes, serán 5 leds (verde, amarillo, rojo, azul y blanco)
-Con la propuesta escogida de trabajo final debe realizar: - Metodología - Inicio de fase del Algoritmo - Esquema General - Análisis de resultados - Recursos a utilizar
EJERCICIO SELECIONADO
Sistema de seguridad:
Alarma con 6 puntos de sensibilidad con sensores de movimiento, infrarrojos, temperatura, presión etc. con indicación de zona de ingreso y por medio de un lcd 16x2, y 3 salidas que activen los leds de color rojo, amarillo y verde como zona segura (verde), alerta (amarilla) y alarma (rojo), zona segura no se activa ningún sensor, alerta máximo 2 sensores activados y alarma 3 sensores activados, más una salida a relevos para sirena.
Metodología
Conocimiento previo para el desarrollo de la práctica:
Los integrantes del curso debe realizar lectura de los contenidos del curso y material bibliográfico suministrado en el curso “e -BIBLIOTECA, utilizar la documentación y los ejemplos suministrados en el aula de curso, en el recurso “Herramientas y sistemas de desarrollo” y módulo de curso , material de soporte como videos en YouTube, google, www,arduino.com.co, Etc, de manera que tenga los fundamentos teóricos y los conocimientos necesarios para diseñar y desarrollar algoritmos, diagramas de flujo y programas en lenguaje ensamblador, simulación del sistema microcontrolado “proteus”, programación de la memoria del microcontrolador “Arduino” e implementación del circuito electrónico.
Inicio de fase del Algoritmo
Para la realización de los ejercicios, los estudiantes deben diseñar individualmente sus algoritmos hacer la compilación, depuración y ejecución del programa.
Establecer las variables, constantes y entradas y/o salidas necesarias,
Establecer
los
microcontrolador
elementos
componentes
principalmente
el
“ARDUINO” y los componentes o periféricos que
estarán conectados al microcontrolador “ARDUINO”.
Diseñar el esquema general de conexiones y su correspondiente circuito electrónico.
Diseñar el algoritmo y diagrama de flujo solución del problema planteado.
Generar el código fuente, producto del algoritmo diseñado.
Compilar, depurar y ejecutar el programa, hacer uso del simulador IDE u otro software de uso libre, evaluación o gratuito para realizar una simulación previa y garantizar el funcionamiento de la fase de diseño de software.
Grabar el programa “Compilar” en la memoria del microcontrolador físico “ ARDUINO”
Realizar la implementación del montaje electrónico, siguiendo los esquemas generales y de conexión de circuito electrónico, tomar las precauciones de establecer la correcta continuidad entre componentes, su distribución y montaje correcto en protoboard o tabla de prototipos
Incorporar el microcontrolador en el montaje, probar su conexión antes de energizar.
Energizar y probar el funcionamiento del programa, si hay fallas o correcciones para reevaluar el algoritmo proseguir con los pasos siguientes hasta obtener la solución al problema planteado.
Esquema General
Sistema de alarma basado en Arduino. Con sensores movimiento, infrarrojos, temperatura, presión los cuales activaran la alarma. Después de detectar alarma, se entra en un estado de pre-alarma que si no se introduce la clave correcta en 10 segundos, paso a un estado de alarma. Para entrar en estado de alarma hay dos condiciones:
Detectar un movimiento (activar el sensor tilt) Detectar más de 5 segundos una iluminación superior a 900
.
Para salir del estado de pre-alarma se debe introducir la clave correcta por teclado en los 10 segundos siguientes a la detección de alarma. Para salir del estado de alarma no debe haber ninguna de las dos condiciones de alarma y se debe pulsar el botón. En estado normal led apagado y zumbador apagado
Análisis de resultados
Recursos a utilizar
Computador PC compatible con el sistema operativo Windows o que pueda instalarse los paquetes de software necesarios para realizar la práctica.
Fuente de poder regulada , fuente poder “Batería litio.”
Tarjeta de desarrollo Microcontrola dor “Arduino” UNO, MEGA, NANO.
Protoboard, Multímetro, punta lógica
Teclado matricial (3x4 o 4x4),
display 16*2 LCD, según esquemas de circuito.
Pinzas, pelacables, cable AWG22 (similar al de UTP) en varios colores.
Se utiliza principalmente herramientas de Software libre o gratuito limitado o versiones DEMO estas pueden ser “ARDUINO”:
Compilador ( Arduino”)
Simulador Proteus, prueba funcionamiento código.
Dth11 (sensor de temperatura y humedad)
sensores de movimiento, infrarrojos, temperatura, presión
Zumbador
Javier Doncel:
Esta menor o igual a 15 grados: 11 grados
Supera los 30 grados:
Esta entre 20 y 28 grados:
Código: // LCD module connections sbit LCD_RS at RB0_bit; sbit LCD_EN at RB1_bit; sbit LCD_D4 at RB2_bit; sbit LCD_D5 at RB3_bit; sbit LCD_D6 at RB4_bit; sbit LCD_D7 at RB5_bit; sbit LCD_RS_Direction at TRISB0_bit; sbit LCD_EN_Direction at TRISB1_bit; sbit LCD_D4_Direction at TRISB2_bit; sbit LCD_D5_Direction at TRISB3_bit; sbit LCD_D6_Direction at TRISB4_bit; sbit LCD_D7_Direction at TRISB5_bit; // End LCD module connections #define LEDV PORTD.RD0 #define LEDA PORTD.RD1 #define LEDR PORTD.RD2 #define VENTILADOR PORTD.RD4 unsigned long valor; char texto; char texto2; void sonido1() { Sound_play(1000, 500); } void sonido2() { Sound_play(1059, 500); }
void main () { TRISD=0; PORTD=0;
Sound_Init (&PORTD, 3); ADC_Init ();
Lcd_init(); Lcd_Cmd(_LCD_CLEAR); Lcd_Cmd(_LCD_CURSOR_OFF); Lcd_out(1,1,"TEMPERATURA"); LCD_Out(2,4,"'C"); while (1) { valor=ADC_Read(2); valor=valor * 5000 / 1023; texto=valor / 100; Lcd_chr(2,1,48+texto); texto2=(valor / 10) % 10; Lcd_chr_cp(48+texto2);
if ( texto < 2 ){ LEDV=1; LEDA=0; LEDR=0; VENTILADOR=0; Lcd_out(2,8,"MOTOR OFF"); sonido1(); delay_ms(2000); } else { if ( texto < 3 ) { LEDV=0; LEDA=1; LEDR=0; VENTILADOR=0; Lcd_out(2,8,"MOTOR OFF"); } else { if ( texto >= 3 ) { LEDV=0; LEDA=0; LEDR=1; VENTILADOR=1; Lcd_out(2,8,"MOTOR ON "); Sonido3();
Programa 2: Se diseñará un sistema de cerradura electrónica el cual deberá en un display 16X2 desplegar en la primera línea el nombre del curso y numero de grupo, habrá un teclado matricial de 4 x4, y al digitar el número de cedula de cada estudiante debe aparecer en el display y al ser el correcto se debe encender un led para cada uno de los estudiantes, serán 5 leds (verde, amarillo, rojo, azul y blanco)
Código del Micro //LCD conexiones al PIC #define LCD_RS_PIN PIN_C0 #define LCD_RW_PIN PIN_C1 #define LCD_ENABLE_PIN PIN_C2 #define LCD_DATA4 PIN_C3 #define LCD_DATA5 PIN_C4 #define LCD_DATA6 PIN_C5 #define LCD_DATA7 PIN_C6 //Aqui terminan las conexiones al PIC #define Boton_1 pin_D0 #define Boton_2 pin_D1
#include #use delay(crystal=4000000) #include
void main(){
while(TRUE) { lcd_init(); lcd_gotoxy(1,1); printf(lcd_putc,"Micropr-Microcon"); lcd_gotoxy(1,0); printf(lcd_putc,"Grupo_25"); delay_ms(2000);
if(input(pin_D0)) {
lcd_init(); lcd_gotoxy(1,1); printf(lcd_putc," FABIAN CELIS "); lcd_gotoxy(1,0); printf(lcd_putc,"C.C. 1.098.619.117"); delay_ms(2000); } if(input(pin_D1)) { lcd_init(); lcd_gotoxy(1,1); printf(lcd_putc," MAURICIO CARDONA "); lcd_gotoxy(1,0); printf(lcd_putc,"CC 18.533.116"); delay_ms(2000); } } }
-Con la propuesta escogida de trabajo final debe realizar: - Metodología - Inicio de fase del Algoritmo - Esquema General - Análisis de resultados - Recursos a utilizar
EJERCICIO SELECIONADO
Sistema de seguridad:
Alarma con 6 puntos de sensibilidad con sensores de movimiento, infrarrojos, temperatura, presión etc. con indicación de zona de ingreso y por medio de un lcd 16x2, y 3 salidas que activen los leds de color rojo, amarillo y verde como zona segura (verde), alerta (amarilla) y alarma (rojo), zona segura no se activa ningún sensor, alerta máximo 2 sensores activados y alarma 3 sensores activados, más una salida a relevos para sirena.
Metodología:
Conocimiento previo: Contenidos del curso y material bibliográfico suministrado en el curso “e-BIBLIOTECA. Emplear los conocimientos necesarios para diseñar y desarrollar algoritmos, diagramas de flujo y programas en lenguaje ensamblador, simulación del sistema microcontrolado “proteus”, programación de la memoria del microcontrolador “Arduino” e implementación del circuito electrónico
Inicio de fase del Algoritmo
Análisis de resultados Por medio de las simulaciones en programa. Recursos a utilizar
Computador PC con softwares necesarios para realizar la práctica y simulaciones.
sensores
Resistencias con valores según calculado en el diseño
Speaker
Lcd
Led de diferentes colores.
Zumbador
Diego Cohecha: Actividades a desarrollar
Programa 1:
Microcontrolador Pic16f877a 1 Display 16 X 2 1 Dth11 (sensor de temperatura y humedad) 3 leds (rojo , amarillo, verde) 2 Motores 12 vdc (ventilador) 3 resistencias de 220 ohmios 3 resistencias de 1 k ohmios 5 pulsadores Debe sensar la humedad y temperatura del ambiente con el sensor dth11 de proteus, monitorizando las dos variables y visualizándolas en un display 16 x2 y si la temperatura está menor o igual de 15 grados el led verde se encenderá , si la temperatura está entre los 20 y 28 grados se encenderá un led amarillo , y si supera los 30 grados el led rojo se prendera y debe dar una alarma constante y prenderse el ventilador hasta que baje la temperatura menor o igual a 20 grados. En el display se debe visualizar el valor de la temperatura y la activación de motor como MOTOR ON o MOTOR OFF. Debe sensar a todo momento la humedad del ambiente al pasar por el 60% se debe activar un motor ventilador y se debe apagar cuando esta baje a menos de 50%. Para este primer ejercicio realice la aplicación mediante PIC C, a continuación describo el código: #include #fuses HS,NOWDT,NOPROTECT,NOLVP #use delay(clock = 20M) #define PCF_SDA PIN_C2 #define PCF_SCL PIN_C1 // LCD con i2C #use i2c(master, sda=PCF_SDA, scl=PCF_SCL) #define PCF_ID 7 #define PCF 64 // Puede ser 112 ó 64 (PCF8574T=64, PCF8574A=112, PCF8574=64) #define blacking P3 #define LCD_RS P0 #define LCD_RW P1 #define LCD_E P2 #define LCD_DB4 P4 #define LCD_DB5 P5 #define LCD_DB6 P6 #define LCD_DB7 P7 #include // Librerio para manejar el I2C #use fast_io(D) // Asignacion de pin para conectar el DTH11 al puerto D0
#BIT Data_Pin = 0x08.0 #BIT Data_Pin_Direction = 0x88.0
// Pin mapped to PORTD.0 // Pin direction mapped to TRISD.0
short Time_out;//Variable para el tiempo de respuesta del sensor unsigned int8 T_byte1, T_byte2, RH_byte1, RH_byte2,Temp,RH,CheckSum ; void start_signal(){ Data_Pin_Direction = 0; Data_Pin = 0; delay_ms(25); Data_Pin = 1; delay_us(30); Data_Pin_Direction = 1; }
// Configure connection pin as output // Connection pin output low // Connection pin output high // Configure connection pin as input
short check_response(){ delay_us(40); if(!Data_Pin){ // Read and test if connection pin is low delay_us(80); if(Data_Pin){ // Read and test if connection pin is high delay_us(50); return 1;} } } unsigned int8 Read_Data(){ unsigned int8 i, k, _data = 0; // k is used to count 1 bit reading duration if(Time_out) break; for(i = 0; i < 8; i++){ k = 0; while(!Data_Pin){ // Wait until pin goes high k++; if (k > 100) {Time_out = 1; break;} delay_us(1);} delay_us(30); if(!Data_Pin) bit_clear(_data, (7 - i)); // Clear bit (7 - i) else{ bit_set(_data, (7 - i)); // Set bit (7 - i) while(Data_Pin){ // Wait until pin goes low k++; if (k > 100) {Time_out = 1; break;} delay_us(1);} } } return _data; } //Cadena para el manejo del char donde se enviara los datos para el i2c Const char Letra1[8]= {0b00000,0b11011, 0b11011, 0b00000, 0b11111, 0b11111, 0b01110, 0b00000 }; char i;
//Variable para el i2c
void main(){ lcd_init(); // Initialize LCD module CGRAM_x(5); lcd_putc('\f'); // LCD clear for(i=0;i
View more...
Comments