Examen Control de Un Horno

Embed Size (px)

DESCRIPTION

Control de un horno

Citation preview

/* Aplicacion de Microcontroladores Examen realizado por Bryan Peralta Vargas Profesor German Vasquez Araya Explicacion del funcionamiento del programa realizado Mostrar en la terminal virtual RS232 el setpoin y el sensor, los cuales son comandados por potenciometros y segun la tabla lo realice de esta manera Cuando el sensor marca entre 0 y 100, se encienden todas las salidas del puerto B (B0-B7) todos los quemadores ON Cuando el sensor marca entre 100 y 200, se enciende solo 7 salidas (B1-B7) Cuando el sensor marca entre 200 y 300, se enciende solo 6 salidas (B2-B7) Cuando el sensor marca entre 300 y 400, se enciende solo 5 salidas (B3-B7) Cuando el sensor marca entre 400 y 500, se enciende solo 4 salidas (B4-B7) Cuando el sensor marca entre 500 y 600, se enciende solo 3 salidas (B5-B7) Cuando el sensor marca entre 600 y 700, se enciende solo 2 salidas (B6-B7) Cuando el sensor marca entre 800 y ,900 se enciende solo 1 salida (B7) Cuando el sensor marca 995, se apagan todas las salidas (B1-B7)*/#include "C:\Users\User\Documents\UTN\CURSOS UTN\microcontroladores\microcontroladores la 3era vez 2015\2 examen\Examen Control horno\Examen Control horno.h"#include float valoranalogico1=0; // se utilizan float para numeros realesfloat valoranalogico2=0;int16 valor1=0; // se utilizan int para numeros enterosint16 valor2=0;void main(){ setup_adc_ports(AN0_AN1_AN3); setup_adc(ADC_CLOCK_INTERNAL); setup_spi(SPI_SS_DISABLED); setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); setup_timer_1(T1_DISABLED); setup_timer_2(T2_DISABLED,0,1); setup_comparator(NC_NC_NC_NC); setup_vref(FALSE); set_tris_a ( 0x07 ); //Se configura puerto a con 3 entradas set_tris_b ( 0x00 ); //Se configura puerto b con 8 salidas set_tris_c ( 0x00 ); //Se configura puerto c con 8 salidas output_a(0x00); // se colocan las salidas en cero output_b(0x00); output_c(0x00); printf(" Bryan Peralta Vargas\r"); //dato a imprimir printf(" Control de un horno\r"); //dato a imprimir delay_ms(1000); while(true) { delay_ms ( 1 ); set_adc_channel ( 0 ); //Se selecciona entrada analogica 0 ( AN0 ) delay_ms ( 1 ); //Retardo necesario valoranalogico1 = read_adc(); //leer valor analogico en la entrada delay_us(5); // tiempo de espera para el adc valor1=valoranalogico1*1000/1023; // conversion para obtener voltaje1 de 0-1000 grados printf("Sensor=\n"); printf("%4Lu\r",valor1); delay_ms(1000); delay_ms ( 1 ); set_adc_channel ( 1 ); //Se selecciona entrada analogica 1 ( AN1 ) delay_ms ( 1 ); //Retardo necesario valoranalogico2 = read_adc(); //leer valor analogico2 en la entrada delay_us(5); // tiempo de espera para el adc valor2=valoranalogico2*1000/1023; // conversion para obtener voltaje2 de 0- 1000 grados printf("Setpoint=\n"); printf("%4Lu\r",valor2); delay_ms(1000); if((valor1>=0)&(valor1=100)&(valor1=200)&(valor1=300)&(valor1=400)&(valor1=500)&(valor1=600)&(valor1800)&(valor1=995)){ // todos los quemadores OFF output_low ( Pin_B0 ) ; output_low ( Pin_B1 ) ; output_low ( Pin_B2 ) ; output_low ( Pin_B3 ) ; output_low ( Pin_B4 ) ; output_low ( Pin_B5 ) ; output_low ( Pin_B6 ) ; output_low ( Pin_B7 ) ; } }}