Control de temperatura con PIC16F887
Posted by Administrador on Abr 15, 2014 in PIC | 26 comments
Control de temperatura con PIC16F887
Control y sensado de temperatura por
medio de PIC16F887
Autor: Mndez Cruz Juan Daniel
Introduccin.
Temperatura
La temperatura es una magnitud fsica que poseen los cuerpos rgidos, gases etc., y que
es la energa cintica que contiene ese cuerpo en un instante de tiempo, en otras palabras
es la medida en la que se puede dictaminar si un cuerpo est caliente o esta frio,esto con
ayuda de un Sensor de temperatura y esto se hace mediante escalas de temperatura
como lo son Celsius, Kelvin, Fahrenheit.
La temperatura es un factor a considerar para todo, ya que un gran incremento en la
temperatura por ejemplo de una maquina industrial causara desperfectos en ella, tan
solo en el cuerpo humano un incremento de temperatura mayor a 36 grados Celsius
podra causar un grave dao en el organismo, de la misma manera pasa cuando se tienen
temperaturas menores a los 36 grados Celsius se podra caer hipotermia, por ello el
control de la temperatura es un factor a considerar, y la industria no es la excepcin , ya
que la temperatura pude influir en causar daos a la misma mquina o al producto etc.
El Control de temperatura ha sido un tema de inters para la ingeniera, por ello se han
implementado diferentes sistemas de control de temperatura ya sea para aumentar la
temperatura si se desea o hacer que esta descienda, para ello se tiene sistemas de
calefaccin, ciclos de refrigeracin , lavado de aire que comnmente se le conoce como
aire acondicionado para mayor informacion puedes
visitar http://es.wikipedia.org/wiki/Termorregulaci%C3%B3n.
Este tipo de sistemas de control se pueden encontrar en todo tipo de instalaciones desde
hogares, establecimientos, pequeas empresas e industrias a gran escala. La importancia
de estos sistemas de control es tal que siempre se consideran en este tipo de
instalaciones.
Por ello es que el control de la temperatura permite ambientar un cuarto con personas,
reducir el dao de maquinas por aumento de temperatura, reducir riesgos de cortos
elctricos, incendios entre una serie de factores tales que hacen que la temperatura sea
importante.
Para el control de la temperatura se hace uso de la tecnologa de sistemas automatizados
dotados de sensores y actuadores los cuales al recibir datos atreves de Sensor de
temperatura se decide si la temperatura es la adecuada o es demasiado alta, y en base a
estas consideraciones los actuadores entran en accin, ya sean ventiladores, ciclos de
refrigeracin etc.
Los microcontroladores son pequeos dispositivos electrnicos que son considerados
computadoras dentro de un chip, obviamente con recursos ms limitados hablando de
CPU,RAM,ROM, perifricos entre otras cosas, enfocndonos en este caso se har
nfasis en los microcontroladores PIC de Microchip, los cuales tiene distintos mdulos
que son realmente tiles, como comparadores, conversar analgico digital, PWM entre
muchas ms, para el caso de control de temperatura se utilizar el convertidor analgico
digital.
Para la recepcin de datos atreves del controlador a una interfaz grfica se hace uso de
la conexin seria RS232 la cual se describe a continuacin:
El protocolo RS-232 es una norma o estndar mundial que rige los parmetros de uno
de los modos de comunicacin serial. Por medio de este protocolo se estandarizan las
velocidades de transferencia de datos, la forma de control que utiliza dicha
transferencia, los niveles de voltajes utilizados, el tipo de cable permitido, las distancias
entre equipos, los conectores, etc.
Adems de las lneas de transmisin (Tx) y recepcin (Rx), las comunicaciones seriales
poseen otras lneas de control de flujo (Hands-hake), donde su uso es opcional
dependiendo del dispositivo a conectar.
Objetivos:
Desarrollar un sistema automtico para la regulacin y control de la temperatura
mediante un Sensor de temperatura aplicado a una maquina industrial.
Poner en prctica los conocimientos de programacin de microcontroladores
PIC.
Dar una aplicacin real de los circuitos digitales que sean de utilidad.
Material y equipo:
Grabador de PICs Mini Prog +
1 PIC 16F887
1 Cristal de cuarzo a 20Mhz
10 LEDs de 5 mm.
10 Resistores de 330 . a watt
Cable de colores 24 AWG.
2 Tabletas de prueba Protoboard.
2 Capacitor Cermico de 22 uF.
1 Fuente de Corriente Continua.
2 Cables Banana- Caimn.
4 Push button
ISIS Proteus v7.6 SPO
PIC C CCS
Computadora PC
Pickit 2
2 sensores de temperatura LM35
L293D
2 Ventiladores de 12 V
Pantalla LCD 162
1 Buzzer
Planteamiento verbal del problema.
Se requiere disear un sistema que sea capaz de censar la temperatura en tiempo real
mostrada por medio de un LCD, donde se tendrn tres rangos de temperatura si la
temperatura es menor a 0 C se considera baja, la temperatura es menor de a 30 C se
considera temperatura media, pero si esta excede los 40 C se considera alta y se
mandara una alerta , para controlar la temperatura se activaran dos ventiladores con el
fin de bajar la temperatura cuando la temperatura es mayor a 20 C se activara un
ventilador para que regule la temperatura y evitar que esta aumente.
Diagrama de Bloques
Se trata de un diagrama ilustrativo que muestra, la interacin entre los elementos, como
es que se conectan y cmo funciona el circuito se muestra a continuacin.
Diagrama de bloques
Desarrollo.
Diagrama de flujo.
El diagrama de flujo es un estructura grafica que permite visualizar el algoritmo a seguir
para tener una programacin mas estructurada del microcontrolador esto con el fin de
tener un mayor orden en el diseo del sistema de control de temperatura.
Diagrama de flujo
A partir del diagrama de flujo se procedi a la programacin del microcontrolador
empelando el software PIC C CCS, en lenguaje C, el programa se muestra a
continuacin, con sus respectivos comentarios vase Apndice parte 1.
Diagrama electrico
Una vez depurado de errores y sintaxis errnea se procedi a compilar el programa el
cual no tiene ningn error. Posteriormente se simul el programa en PROTEUS y se
comprob que efectivamente el circuito de control cumpliera con las especificaciones y
objetivos del proyecto, dando resultados positivos de esta manera se paso al siguiente
paso, a grabar el chip por medio una tarjeta de desarrollo para el PIC16F887, por medio
de el programa TinyBootloader se programo por el archivo generado por el compilador
en extensin *.hex
Diagrama electrico simulacion
En la Figura se muestra la simulacin del circuito el cual consiste en diferentes etapas
las cuales son las siguientes:
Procesamiento: EL cual se da por medio del microcontrolador PIC16F887
Sensores: Por medio de dos sensores de temperatura LM35
Actuadores: Se lleva a cabo por medio de dos ventiladores de 12 V a 1.2 A
Despliegue: Este forma dos partes:
Ambiente grfico en C# mediante comunicacin RS232
LCD de 162 Pixeles
Interaccin: Por medio de dos botones dedicados para cada sensor de temperatura.
Alarma: Esta conforma por tres LEDs los cuales fungirn como semforos, cuando si la
temperatura es mayor a 40 C se activa una alarma sonora.
El sistema funcionara con la interaccin de cada una de las etapas, donde el
micrcontrolador mostrara una serie de mensajes acerca de el nombre del proyecto, los
nombres de los integrantes, como se muestra a continuacin.
Pantallas LCD
Posteriormente se comenzara la lectura de la temperatura proporcionada por un Sensor
de temperatura LM35 , donde el microcontrolador comenzara la lectura del la seal
proporcionada por el Sensor mediante el convertidor analgico, configura a una
resolucin de 10 bits, lo cual nos proporcionara una buena lectura de la seal.
A continuacin se muestra cmo es que se da el despliegue de la seal por medio del
LCD, adems de la comunicacin RS232 esta se simulara por medio de una terminal
virtual que es una herramienta que nos proporciona el simulador Proteos, el tema
referente al ambiente grafico se tratara posteriormente.
Despliegue de la seal (LCD)
En este caso se muestra una temperatura de 45C lo cual segn nuestro rango de
temperaturas es alto por lo cual se mandara una seal de alarma por medio de un buzzer,
ademas de que en el semforo se debe encender el LED rojo, ademas de estar
funcionando ambos ventiladores, con el fin de reducir la temperatura.
Simulacion del funcionamiento
En el caso de que se encuentre una temperatura en el rango medio, que debe ser el
adecuado, se procede de la misma forma, solo que en este caso solo se acciona un
motor, con el fin de eficiente el suministro de energa, el despliegue se da de la misma
manera, esto se ilustra a continuacin.
Diagrama de control
Para ltimo caso que la temperatura sea menor de 10 C, el despliegue del LCD, el
semforo, ser de la siguiente manera, hay que resaltar que no se encendern los
ventiladores, ya que no es necesario.
Diagrama de control
Ese es el funcionamiento del circuito de control, se han tratado los tres posibles casos, y
es de esta manera que el sistema funciona, solo queda abarcar el tema referente a la
comunicacin R232 que estar dada por un programa en ambiente grafico, programado
en lenguaje C# el cual se muestra a continuacin.
PROGRAMA C#
En este ambiente de control grafico tenemos que cuenta tres botones uno de ellos nos
conecta al Pic y comienza a recibir datos por medio de la comunicacin RS232, el
segundo botn nos desconecta de dicha conexin y el tercer botn se utiliza para salir de
la aplicacin asi mismo cuenta con un label el cual nos indica el estado de nuestra
aplicacin, ya sea conectado o desconectado, cuenta con tres label mas uno de ellos nos
da la fecha y hora en la que se est operando el programa, otro ello nos informa el
estado de los motores es decir si se encuentran desactivados, un solo motor activado o
ambos motores activados y un tercer laber en el cual nos indica la temperatura actual
que se encuentra nuestro dispositivo este tiene la particularidad de cambiar de color
dependiendo del nivel de temperatura es decir podr estar de color verde, amarillo y
rojo, adems de estos label cuenta con una caja de texto en la cual se va guardando el
histrico de las lecturas de temperatura hechas en nuestra conexin.
Interfaz grafica
En esta imagen observamos que la conexin es exitosa y asi mismo tiene una
temperatura de 9C por lo tanto su color es verde y as mismo se encuentran los motores
desactivados
Interfaz grafica
En esta siguiente imagen observamos que ahora la temperatura es de 19C por lo tanto
nos encontramos en una alerta media lo cual lo vemos en la imagen ya que es de color
amarillo y se encuentra un motor activado
Interfaz grafica
Para esta imagen vemos que la temperatura es de 40C y por lo tanto nos manda una
seal de alerta as como los indicadores color rojo
Implementacin fsica
Ya pasada la etapa de programacin y simulacin del micrcontrolador, verificando que
todo se lleve a cabo desacuerdo a lo que se programo se procedi a la parte de la
implantacin fsica se fue dado por varios procesos:
Implementacin del Circuito
Implementacin de una maqueta ilustrativa
La implementacin del circuito de prueba en Protoboard, con el fin de verificar que el
circuito funcione adecuadamente, verificando que opere de manera adecuada.
Circuito de prueba
Se abrevara que estn conectados todos los elementos del circuito que conforman al
sistema de control de temperatura, se verifico que este funcionada adecuadamente, y
que la lectura del sensor fuese adecuada tenindose excelentes resultados.
La parte de los ventiladores se dio por medio de una etapa de amplificacin, empleado
un chip L293D que es un puente H, ya que los ventiladores funciona a 12 V y a 1.2 , por
lo que el microcontrolador no es capaz de suministrar tal energa, se muestra a
continuacin el ventilador a emplear cuyas dimensiones son [1212 cm].
Ventilador
Implementacin de una maqueta ilustrativa:
Esta se realizo, pensando en ilustrar una edificacin que consiste en un cuarto, donde los
elementos del circuito de control estn dentro del cuarto, y que el sistema de de
procesamiento y el LCD se encentren fuera, con el fin de visualizar de una mejor
manera las lecturas obtenidas atreves del sensor. A continuacin se muestran algunas
fotografas de como se llevo a cabo la construccin de la maqueta.
Maqueta fisica
Los resultados obtenidos se muestran en las siguientes imgenes que muestran el
proyecto final, ya implementado en su totalidad, y que ya se encentra funcionando,
verificando que las lecturas del sensor sean las adecuadas.
Proyecto final
Proyecto final
Conclusiones.
Mndez Cruz Juan Daniel
El convertidor analgico digital es una herramienta con bastante utilidad para realizar el
Control de Temperatura ya que lo que hace es convertir una seal analgica de un
Sensor de temperatura en una digital lo til de esta parte es que sistemas o dispositivos
actuales manejan seales digitales, por lo cual son mas fciles de procesar y de
manipular, adems de poder ser empleadas la misma informacin pero ahora para poder
emplearla en algn especifico cosa que no se puede hacer con seal analgicas de una
manera fcil.
Es decir se puede decidir qu hacer o no atreves de que la seal esta digitalizada, es de
esta manera como se tiene el control de temperatura si rebasa ciertos rangos los
ventiladores actuaran con el fin de disminuir temperatura.
El PIC tiene este modulo incluido por lo que resulta muy til para procesar seales de
audio, video, se sensores de presin, temperatura, proximidad etc. Gracias a que
contiene 14 canales se pueden tener varias seales, las cuales pueden ser monitoreadas,
es un dispositivo til ya que la modernizacin es precisamente ya no trabajar con
seales analgicas, ms bien digitales.
Se puede decir que cualquier dispositivo de control que tenga una entrada analgica
digital, y a la salida de este muestre los datos de manera digital ya se da por LCD, o por
medio se sonidos o luces contiene forzosamente un convertidor analgico digital.
Pude aplicar mis conocimientos obtenidos a lo largo del curso de circuitos digitales, as
de un poco de programacin en lenguaje C para poder desarrollar el proyecto, y que
resulta ser un sistema que puede llegar a ser til para el control de temperatura,
obviamente con sensores ms precisos ventiladores con mayor flujo de aire etc., pero el
funcionamiento la idea resulto ser funcional e inteligente
Chvez Luna Carlos
El controlador te temperatura es una aplicacin que se puede llevar a cabo con
microcontroladores PIC y con un Sensor de temperatura, entre muchas que se pueden
desarrollar, ya que estos circuitos son muy verstiles y ofrecen un amplio espectro de
posibilidades para poder disear circuitos digitales, que pueden llegar a ser muy
complejos.
En este proyecto se pudo disear satisfactoriamente un sistema de control inteligente y
automtico que sea capaz de mantener una temperatura no alta para evitar que la
temperatura se eleve atreves de la lectura de un Sensor de temperatura y el encendido de
ventiladores. Pude aprender a programar los PIC en otro lenguaje en este caso C, que
resulta ser ms fcil de dominar pero con algunas limitantes frente a ensamblador,
tambin as pude aplicar criterios de diseo que son tiles para poder llevara a cabo
diversos productos y aplicaciones, tambin me resulto interesante es que estos circuitos
tiene una respuesta demasiado rpida, por lo que no existen problemas por una respuesta
tarda o lenta.
Gracias a lo visto en teora es que se pudo llevar a cabo el proyecto, implico poner a
prueba los conocimientos adquiridos en el curso y as me doy cuenta del aprendizaje
que eh tenido.
Bibliografa.
Ronald J. Tocci. Sistemas digitales: principios y aplicaciones,8 edicin. Mxico DF
2003.
Datasheet PIC16F887 Microchip Technologic inc 2001
Eduardo Garca Brejio Compilador C CCS y simulador Proteus para
microcontroladores PIC, 2 edicin Editorial Alfaomega, Mxico DF2008
Apndice
Cdigo de programacin del micrcocontrolador en lenguaje C por medio del compilador
CCS
?
001
002
003
004
005
006
007
008
//Mendez Cruz Juan Daniel
//Carlos Chavez
//Control de temperatura por medio de dos sensores LM35 controlados por PIC16F8
//Rangos de Temperatura baja>10 grados C,Temperatura media[10,30] grados C
//Temperatura alta> 40 grados C, para temperatura media se acciona un ventilado
//Para Temperatura alta se acciona segundo ventilador se dispara una alarma
#include <16F887.h>
#device ADC=10
//Resolucin de 10 bits para ADC
#fuses INTRC_IO,NOCPD,NOWDT,NOPUT,NOLVP,NOBROWNOUT,MCLR
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
036
037
038
039
040
041
042
043
044
045
046
047
048
049
050
051
052
053
054
055
056
057
058
#use delay(clock=2M)
#define use_portd_lcd TRUE
#use rs232(baud=9600,xmit=PIN_C6,rcv=PIN_C7) // Pines para establecer comunicac
#include <lcd.c>
#use fast_IO(A)
// Configuracin rpida del puerto A
#use fast_IO(B)
// Configuracin rpida del puerto B
#use fast_IO(C) // Configuracin rpida del puerto C
long temp;
//Variable de tipo long temp
long conversion; //Variable de tipo long conversin
long conversion1; //Variable de tipo long conversin1
float temo;
// //Variable de tipo flotante temo
unsigned int16 resultado;
//Variable de 16 bits sin signo resultado
float sensor(int8 primero , int8 segundo) //funcin que controla al sensor de t
{
while(true)
//Cliclo siempre activo
{
set_adc_channel(primero);
//Seleccionando canal a primero
delay_us(10);
// tiempo de espera de 10 us segundos
conversion=read_adc();
//conversin lee el canal analgico
set_adc_channel(segundo);
// definiendo el canal que se va a leer
delay_us(10);
// tiempo de espera de 10 us segundos
conversion1=read_adc() ;
//Conversin1 lee el canal analico
if(conversion>conversion1)
//Condisin conversin> conversi 1
{
temp=conversion-conversion1;
temo=temp*500/1023 ;
//rectifica el sensor de temperatura
lcd_gotoxy(2,1);
// posicin 2 en x y 1 en y de LCD
printf(lcd_putc,"Tempera:%f",temo);
//Imprime en el LCD Tempera es temo
printf("%6.2F",temo); //imprime en LCD
delay_ms(200); //tiempo de espera de 200 msSegundos
lcd_gotoxy(2,2); // posicion 2x y 2 y del LCD
printf(lcd_putc"Grados Celcius"); // imprime en el LCD
delay_ms(200); // tiempo de retardo 200 ms S
if(temo>30)
// consicion de rangos de temp si temo menor a treinta
{
OUTPUT_high(PIN_C3); // nivel alto pin C3
delay_ms(30);
//espera 50 ms S
OUTPUT_low(PIN_C3);
//apaga C3
delay_ms(20);
//espera 50 ms S
OUTPUT_high(PIN_C3); //nivel alto pin C3
delay_ms(20);
//espera 50 ms S
OUTPUT_low(PIN_C3);
//apaga C3
delay_ms(20);
//espera 50 ms S
OUTPUT_high(PIN_C3);
// nivel alto pin C3
delay_ms(20);
//espera 50 ms S
OUTPUT_low(PIN_C3);
//apaga C3
delay_ms(20);
//espera 50 ms S
OUTPUT_high(PIN_C3);
// nivel alto pin C3
delay_ms(20);
//espera 50 ms S
OUTPUT_low(PIN_C3);
//apaga C3
delay_ms(20);
//espera 50 ms S
OUTPUT_high(PIN_C3);
// nivel alto pin C3
OUTPUT_low(PIN_C4);
//apaga C4
059
060
061
062
063
064
065
066
067
068
069
070
071
072
073
074
075
076
077
078
079
080
081
082
083
084
085
086
087
088
089
090
091
092
093
094
095
096
097
098
099
100
101
102
103
104
105
106
107
108
OUTPUT_low(PIN_C5);
}
//apaga C5
if(temo>10 && temo<30 )
{
OUTPUT_high(PIN_C4);
delay_ms(100);
OUTPUT_low(PIN_C4);
delay_ms(100);
OUTPUT_high(PIN_C4);
delay_ms(100);
OUTPUT_low(PIN_C3);
OUTPUT_low(PIN_C5);
//temo esta entre 10 y 30
//prende CA
//espera 100 ms
//apaga C3
//espera 100 ms S
//prende C4
//espera 100 ms
//apaga C3
//apaga C5
}
if(temo>10)
//temo mayor a 18
{
OUTPUT_HIGH(PIN_C0); //enciende C0
OUTPUT_LOW(PIN_B6);
//enciende Buzzer
}
else
{
OUTPUT_LOW(PIN_C0);
OUTPUT_LOW(PIN_B6);
}
if(temo>40)
{
OUTPUT_HIGH(PIN_B7);
OUTPUT_HIGH(PIN_B6);
}
else
{
OUTPUT_LOW(PIN_B7);
OUTPUT_LOW(PIN_B6);
}
//apaga C0
//temo mayor a 40
//enciende B7
//enciende B7
//apaga B7
//enciende B7
if(temo>0 && temo<10)
//temo mayor a 0
{
OUTPUT_high(PIN_C5);
// enciende C5
delay_ms(100);
//espera 100 ms S
OUTPUT_low(PIN_C5);
// apaga C5
delay_ms(100);
//espera 100 ms S
OUTPUT_high(PIN_C5);
//enciende C5
delay_ms(100);
//espera 100 ms S
OUTPUT_low(PIN_C3); // apaga C3
OUTPUT_low(PIN_C4);
// apaga C4
}
}
if(conversion1>conversion) //conversion1>conversion
{
temp=conversion1-conversion;
temo=temp*500/1023 ;
lcd_gotoxy(2,1);
//posicin 2x 1y del LCD
printf(lcd_putc,"Tempera:-%f",temo); //impirme en LCD
lcd_gotoxy(2,2);
//posicin 2x 2y del LCD
printf(lcd_putc"Grados Celcius"); //imprime en LCD
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
delay_ms(200);
// espera 200 ms
// printf("\fUNAM MECATRONICA FI\rCircuitos Digitales \rTemperatura: -%6.2f C
delay_ms(200);
//tiempo de 200 ms
if(temo>0)
//temo mayor a 0
{
OUTPUT_high(PIN_C5);
// enciende C5
delay_ms(100);
//espera 100 ms S
OUTPUT_low(PIN_C5);
// apaga C5
delay_ms(100);
//espera 100 ms S
OUTPUT_high(PIN_C5);
//enciende C5
delay_ms(100);
//espera 100 ms S
OUTPUT_low(PIN_C3); // apaga C3
OUTPUT_low(PIN_C4);
// apaga C4
}
}
delay_ms(800); //tiempo de espera 800 ms S
}
return temo; //regresa el valor de temo
}
void main ()
{
set_tris_b(0x0C);
set_tris_c(0x00);
//configurando como salida el puerto B
//configurando como salida el puerto C
setup_adc(ADC_CLOCK_DIV_32);
//EL RELOJ DE CONVERSIN del ADC
setup_adc_ports(sAN0| sAN1| sAN5|sAN6);
//Canales analgicos a usarse
delay_ms(100);
//tiempo de espera 100 ms
lcd_init();
//printf("\fUNAM MECATRONICA FI\rCircuitos Digitales \rProyecto Final");
delay_ms(500);
//tiempo de espera 500 ms S
//printf("\fCargando......");
// imprimiendo por medio de RS232
delay_ms(200);
//tiempo de espera 200 ms S
printf(lcd_putc,"UNAM INGENIERIA\n MECATRONICA FI");
//imprimiendo en LCD
delay_ms(2000);
//tiempo de espera 1000 ms S
printf(lcd_putc,"\f"); // borrando LCD
printf(lcd_putc," Control de \n temperatura"); //imprimiendo en LCD
delay_ms(1000);
//tiempo de espera 1000 ms
printf(lcd_putc,"\f");
// borrando LCD
printf(lcd_putc," Circuitos\n Digitales"); //imprimiendo en LCD
delay_ms(1000);
//tiempo de espera 1000 ms
printf(lcd_putc,"\f");
// borrando LCD
printf(lcd_putc," DanielMendez\n Carlos Chavez"); //imprimiendo en LCD
delay_ms(1000);
//tiempo de espera 1000 ms
lcd_init();
//INICIALIZA LCD
while(true) //bucle infinito
{
if(input(PIN_A2)==0 && input(PIN_A2)==0 )
//si a2 esta apagado
{
printf(lcd_putc,"Presione\n un boton"); // imprime LCD
delay_ms(3000);
//espera 1500 ms
printf(lcd_putc,"\f");
//borrando LCD
OUTPUT_LOW(PIN_B7);
OUTPUT_LOW(PIN_C0);
}
if(input(PIN_A2)==1)
//apaga B7
//apaga C0
// si la entrada A2 se presiona
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
{
printf(lcd_putc,"Sensor 1"); //impirme en LCD
delay_ms(500);
//espera 1500 ms
printf(lcd_putc,"\f");
//borrando LCD
delay_ms(500);
sensor(5,6);
//activa funcin sensor con canala analgico 5, 6
DELAY_MS(200); //espera 200 ms S
}
if(input(PIN_A3)==1) // si la entrada A3 se presiona
{
printf(lcd_putc,"Sensor 2"); //imprime en LCD
delay_ms(500);
//espera 1500 ms
printf(lcd_putc,"\f");
//borrando LCD
delay_ms(500);
sensor(0,1); //activa funcin sensor con canala analgico 0, 1
}
}
}
209
PROGRAMA c#
?
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
036
037
038
039
040
041
042
043
044
using
using
using
using
using
using
using
using
using
using
using
using
System;
System.Collections.Generic;
System.ComponentModel;
System.Data;
System.Drawing;
System.Linq;
System.Runtime.InteropServices;
System.Text;
System.Diagnostics;
System.Threading;
System.Windows.Forms;
System.Windows.Forms.DataVisualization.Charting;
namespace SerialPort
{
public partial class Form1 : Form
{
string RxString;
int y;
public Form1()
{
InitializeComponent();
}
public void timer1_Tick(object sender, EventArgs e)
{
this.tiempo.Text = DateTime.Now.ToString("dddd d MMMM yyyy \n
Di();
}
private void button1_Click(object sender, EventArgs e)
{
serialPort1.PortName ="COM3";
serialPort1.BaudRate =9600;
try
{
serialPort1.Open();
if (serialPort1.IsOpen)
{
//recibido.Clear();
btStart.Enabled = false;
btStop.Enabled = true;
textBox1.ReadOnly = false;
lStatus.Text = "CONECTADO";
lStatus.ForeColor = Color.Green;
cbPorts.Enabled = false;
}
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
HH:mm.ss "
045
046
047
048
049
050
051
052
053
054
055
056
057
058
059
060
061
062
063
064
065
066
067
068
069
070
071
072
073
074
075
076
077
078
079
080
081
082
083
084
085
086
087
088
089
090
091
092
093
094
}
private void Di()
{
if (serialPort1.IsOpen)
do
{
Thread.Sleep(500);
y = Convert.ToInt32(RxString);
if (y >= 40)
{
this.label7.Text = Convert.ToString(y) + ".00 C";
label7.BackColor = Color.Red;
label7.ForeColor = Color.White;
this.label9.Text = "ALERTA TEMPERATURA ALTA";
label9.BackColor = Color.Red;
label9.ForeColor = Color.Yellow;
this.label12.Text = "MOTORES ACTIVADOS";
}
else
{
if (y < 40 && y >= 10)
{
this.label7.Text = Convert.ToString(y) + " C";
label7.BackColor = Color.Yellow;
label7.ForeColor = Color.Red;
this.label9.Text = "";
this.label12.Text = "MOTOR 1 ACTIVADO";
}
else
{
if (y < 10 && y >= -10)
{
this.label7.Text = Convert.ToString(y) + " C";
label7.BackColor = Color.Green;
label7.ForeColor = Color.Yellow;
this.label9.Text = "";
this.label12.Text = "MOTORES DESACTIVADOS";
}
}
}
} while (!serialPort1.IsOpen);
}
private void signalRead()
{
}
private void DisplayText(object sender, EventArgs e)
{
textBox1.AppendText(RxString);
}
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataR
{
RxString = serialPort1.ReadExisting();
this.Invoke(new EventHandler(DisplayText));
}
095
096
097
098
099
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
// If the port is closed, don't try to send a character.
if (!serialPort1.IsOpen) return;
// If the port is Open, declare a char[] array with one element.
char[] buff = new char[1];
// Load element 0 with the key character.
buff[0] = e.KeyChar;
// Send the one character buffer.
serialPort1.Write(buff, 0, 1);
// Set the KeyPress event as handled so the character won't
// display locally. If you want it to display, omit the next line.
e.Handled = true;
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (serialPort1.IsOpen) serialPort1.Close();
}
private void btStop_Click(object sender, EventArgs e)
{
if (serialPort1.IsOpen)
{
serialPort1.Close();
btStart.Enabled = true;
btStop.Enabled = false;
textBox1.ReadOnly = true;
// trackBar1.Enabled = false;
//trackBar1.Value = 1;
// button1.Enabled = false;
cbPorts.Enabled = true;
lStatus.Text = "DESCONECTADO";
lStatus.ForeColor = Color.Red;
}
}
private void button1_Click_1(object sender, EventArgs e)
{
Application.Exit();
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
}
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
AUTOR: Mndez Cruz Juan Daniel