• No se han encontrado resultados

PICAPCSensortemperaturatexto

N/A
N/A
Protected

Academic year: 2020

Share "PICAPCSensortemperaturatexto"

Copied!
11
0
0

Texto completo

(1)

Resumen— En el presente reporte se mostrara de una forma clara y entendible para personas con bajo conocimiento en el área de instrumentación, como realizar una práctica de comunicación de PIC a PC, con ayuda del conocimiento de la comunicación serial y programas de interfaz gráfica, asimismo nos apoyaremos con material didáctico como son imágenes, códigos de programación y videos; con la finalidad de que dicho reporte en mención sea una guía o comúnmente como una receta, de la realización de la práctica de comunicación PC a PIC(Sensor de Temperatura).

I. INTRODUCCIÓN

El presente documento es una guía de cómo se puede realizar una comunicación serial de PIC a PC Mandando texto, donde se aprenderá paso por paso y con explicaciones claras que materiales son los que se utilizan. La comunicación serial consiste en el envío de un bit de información de manera secuencial, esto es un bit a la vez y a un ritmo acordado entre el emisor y el receptor.

II. PLANTEAMIENTODEL PROBLEMA

Realizar una comunicación serial en la cual por medio del PIC mande texto y este se pueda apreciar en la PC por medio de una forma creada en C#, dicha información para hacerla verídica será impresa en la LCD del PIC utilizando el sensor de temperatura para la muestra de la información.

III. MARCOTEÓRICO

Microcontrolador (PIC 16f877A) Es un circuito integrado o chip que incluye en su interior las tres unidades funcionales de una computadora: CPU, Memoria y Unidades de E/S, es decir, se trata de una computadora completa en un solo circuito integrado programable y se destina a gobernar una sola tarea con el programa que reside en su memoria. Sus líneas de entrada/salida soportan el conexionado de los sensores y actuadores del dispositivo a controlar.

Figura 1. Pic PIC 16f877A

XTAL (cristal)

Dentro de la carcasa de metal es una pequeña pieza de cristal de cuarzo que se ha cortado con precisión en tamaño de modo que la pieza de cristal vibra a una frecuencia específica. El valor del cristal generalmente es de 4Mhz. o 10Mhz.

Figura 2. Cristal utilizado para la frecuencia de ejecución que utiliza el pic.

Prácticas de Instrumentación

Comunicación PIC a PC #2

Miguel Ceballos; Verónica López; Luis López; Ángel Mendoza; Martín Silva INSTITUTO TECNOLÓGICO DE COLIMA

Departamento de Ingeniería Mecatrónica

(2)

Capacitor cerámico

Los capacitores cerámicos son utilizados en circuitos resonantes, alta frecuencia y acoplamiento, dieléctricos de temperatura compensada, estabilidad dieléctrica y otras aplicaciones.

Figura 3. Capacitor cerámico utilizado para el buen funcionamiento del pic.

JY-MCU

Modulo de comunicación serial que recibe la señal que se deséa enviar del PIC transfiriendola vía bluetooth, usador para comunicar de forma inalambrica el PIC con algún dispositivo con bluetooth.

Figura 4.Modulo bluetooth JY-MCU para PIC.

Display LCD (16 x 2)

Las pantallas LCD están construidas en base a un material cuya polarización de la luz varía en presencia de un campo eléctrico denominado cristal liquido, este display funciona gracias a un circuito interno el cual hace que cuando el display se conecte al microcontrolador de forma correcta y por una serie de instrucciones, en la pantalla muestre los caracteres que se quieren.

Figura 5. LCD (display) utilizado para la impresión de resultados.

PCWHD

Compilador C de la firma CCS (Custom Computer Services). Lenguaje de alto nivel que contiene las funciones y librerías necesarias para el diseño de cualquier aplicación basada en microcontroladores PIC: matemáticas, control de protocolos serie, I2C, etc. La versión PCWHD admite todos los dispositivos PIC de las gamas baja (12xxx), media (16xxx) y alta (18xxxx), con núcleos de 12, 14 y 16 bits respectivamente y los nuevos PIC24/dsPIC de 24 bits.

Microsoft Visual C#

Lenguaje de programación orientada a objetos, el cual permite hacer programas con interfaces gráficas, el cual permite además la comunicación atravez de un puerto serie.

ISIS Proteus

El Programa ISIS, Intelligent Schematic Input System (Sistema de Enrutado de Esquemas Inteligente) 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.

(3)

Figura 6. Programa simulador de circuitos electronicos.

Programador MINIPROG+

Es una herramienta de programación y depuración profesional para la familia de microcontroladores PIC. Con dicho programador se le graba al pic el programa creado y compilado en el programa de la figura 8.

Figura 7. Programador

PICKIT

Es una familia de programadores de microcontroladores PIC realizados por Microchip Technology. Se utilizan para programción y depuración de microcontroladores.

Figura 8. Programa para grabar el código al Microcontrolador.

Resistencia

Mayor o menor oposición que ofrecen los cuerpos conductores al paso de la corriente eléctrica, la unidad que mide la resistencia es el Ω, en la práctica se usará cierto número de resistencias las cuales se parecen a la de la Fig. 12, estas resistencias tienen 2 pines, no tienen polaridad y pueden tener un gran número de resistencia el cual es determinado por los colores de las franjas que tiene.

Figura 9. Resistencia

Protoboard

Tablero con orificios conectados eléctricamente entre sí, habitualmente siguiendo patrones de líneas, en el cual se Pueden insertar componentes electrónicos y cables para el armado y prototipado de circuitos electrónicos y sistemas similares.

Figura 10. Protoboard

Virtual Serial Port Driver

Programa usado para crear puertos virtuales los cuales ayudan a poder probar el circuito y los programas de forma virtual.

IV. LISTA DE MATERIALES

 1 PIC 16f877A

 1 Resistencia de 10KΩ  1 Cristal de cuarzo de 4MHz  1 Display LCD 16 x 2

(4)

 Cables para conectar en protoboard

 1 MINIPROG+

 1 Cable de USB A a USB B

 1 Computadora con ISIS proteus, PICkit, PCWHD y C#

 Módulo JY-MCU

 Materiales del sensor de Temperatura (ver practica anterior)

V. DESARROLLO

Para realizar la práctica primeramente se deben tener todos los materiales a la mano, tanto la computadora con los 4 software necesarios y los materiales físicos.

Primer paso. Conexión del circuito en el software ISIS Proteus, con todos los componentes de dicho circuito incluyendo la comunicación serial.

Figura 11. Circuito conectado a comunicación serial.

Segundo paso. Se identifica las variantes de la problemática, y para solucionarlas se crea un programa en el PCWHD y en C#.

Tercer paso. Se crean puertos virtuales con ayuda del programa “Virtual Serial Port Driver” y se hace la configuración de los puertos seriales tanto en C# como en ISIS para que ambos puertos estén sincronizados acomodando el de ISIS en COM2 y el de C# en COM1 y ajustando los baudios de los puertos a 9600.

Cuarto paso. Se le carga el programa al Microcontrolador del circuito conectado

en ISIS Proteus, esto se lleva acabo dando doble clic y cargando el archivo .hex creado al compilar el programa. Cuyo programa ya fue establecido y propuesto anteriormente, el cual consta de un lector de temperatura cuya variable es desplegada en la LCD y también por medio de la comunicación serial desplegaba en un label de una form de C#, con la finalidad de realizar la conexión PIC a PC.

Figura 12. Simulación del circuito de comunicación serial del sensor de temperatura.

Quinto paso. Se hace la prueba del programa realizado en C# en conjunto con la simulación en ISIS para comprobar que efectivamente hace la comunicación.

Figura 13. Simulación del circuito de comunicación serial del sensor de temperatura y programa de C#.

Sexto paso. Una vez que la simulación de ISIS y de C# funcionan como se desea que lo haga el circuito en físico, se le carga el programa al pic 16f8877A utilizando el programador MINIPROG+ y el software PICkit.

Séptimo paso. Se procede a comenzar a conectar el circuito en la Protoboard, En este caso ya se tiene la práctica desarrolladla e instalada en una Protoboar

(5)

el cual define un sensor de luz que proyecta a través de una LCD y del programa C# proyectando dicha información a estos elementos mencionados, la LCD consta de los componentes necesarios:

- 1 resistencia de 10kΩ de la alimentación positiva al pin 1 del pic. El número de pin del pic se puede ver en la figura 15.

- 2 capacitores de 22pF conectados desde tierra, uno al pin 13 y el otro al pin 14 del pic.

- 1 Cristal de cuarzo de 4MHz conectado entre el pin 13 y el pin 14, cabe destacar que el cristal no posee polaridad.

- El pin 11 y 32 del pic se conectan a la alimentación positiva. El pin 12 y 31 se conectan a tierra.

Figura 14. Numeración de los pines del pic 16F877A según el datasheet.

Octavo paso. Conexión de la LCD al pic y un potenciómetro de 5kΩ según como se muestra en la figura 15. La fuente de voltaje que se muestra en dicha figura en forma de triángulo, es una conexión a la alimentación positiva de una de las terminales que está en un extremo del potenciómetro.

Nota. El potenciómetro de 5kΩ solo se utiliza para regular el contraste de la LDC, si no se desea controlar no se utilizará.

Figura 15. Conexión de la LCD.

Noveno paso. Se conecta el modulo bluetooth JY-MCU al PIC, siguiente la configuración impresa en el módulo como se muestra en la figura 16, teniendo en cuenta que el pin Vcc se conecta a 5v, el pin GND a tierra (ambos pines al mismo voltaje y tierra que le PIC), el pin RXD del módulo se conecta al pin 25 del PIC (TX) y el pin TXD del módulo se conecta al pin 26 del PIC (RX)

Figura 16. Módulo JY-MCU visto por atrás..

Decimo paso. Se alimenta el circuito con 5V. Es importante checar que la fuente que alimenta al circuito no sobrepase los 5V porque se quemaría el PIC.

Undécimo paso. Conectar el modulo bluetooth, a la computadora vía bluetooth, esta forma de conectar varía dependiendo de la computadora usada, si para la comunicación se necesita una contraseña se debe intentar usar “1234” o “0000” (estas contraseñas están prestablecidas por el fabricante).

Undécimo paso. Probar que el programa realizado en C# funcione correctamente y que el PIC funcione de igual forma.

(6)

Conclusión.

En esta práctica hubo varias complicaciones las cuales como primera era familiarizarte con la programación ya que es algo no se había visto anteriormente, con el principio que otorgaron los videos se pudo tener la noción y buscar el tipo de código que se utiliza en C# para realizar los procesos deseados, de igual forma se hace un

minucioso revisado porque es muy común que haya fallas de código y tienda a dar errores.

VI. ANEXO 1. SIMULACION EN EL PROGRAMA ISIS PROTEUS

Figura 18. Circuito de comunicación serial funcionando acoplado con el sensor de Temperatura.

VII. ANEXO 2. DESARRO DEL PROGRAMA EN PCWHD

#include <16F877A.h> //Librería del PIC

#fuses XT,NOWDT,NOPROTECT,NOLVP //Librerías de fusibles como xt(para indicar que se usará cristal de cuarzo)

//NOWDT deshabilita el Watchdog timer "perro guardián"

//PUT habilita el Power Up Timer, tiempo de espera para estabilizacion de alimentacion

//NOPROTECT No se protege el codigo del PIC

#use delay(clock=4M) //Permite definir las frecuencia del oscilador del PIC

#use rs232 (baud=9600, xmit=pin_c6, rcv=pin_c7, parity=N, stop=1, bits=8) //Definición establecida de la comunicación serial

//Donde se especifican los baudios, los pines de comunicación,

(7)

float temp; //declaración de variable tipo flotante float x; // declaración de variable tipo flotante

void main() //inicion de function void {

setup_adc_ports(RA0_ANALOG);

setup_adc(ADC_CLOCK_INTERNAL); while(1)

{

lcd_init(); //llamada al LCD

x=read_adc(); // igualación de variables

printf(lcd_putc,"\fADC = %1.2f",x); // despliegue en LCD temp=(x*500.0)/1024; //tempetaruta en grados centigrados lcd_gotoxy (1,2);

printf(lcd_putc,"%f",temp); //Despliegue de variable temp

printf("%S""%.0f""%S;", " Temperatura = ", temp, "Grados"); //Despliegue de variable en C# importante para la comunicación

lcd_gotoxy (6,2); // Coordenadas de despliegue printf(lcd_putc,"oC"); //Despliegue de varible delay_ms(300); // tiempo de retraso

}

} // cierre de función void

VIII. ANEXO 3. Programa de C#

//librerías necesarias para el programa using System;

using System.Collections.Generic; using System.ComponentModel; using System.Data;

using System.Drawing; using System.Linq; using System.Text;

using System.Windows.Forms;

using System.IO.Ports; //librería especial para puertos serial

//Programa general

namespace WindowsFormsApplication1 {

public partial class PICAPEC : Form {

//Región de variables #region Variables Globales

string[] Puertos = new string[20];//Vector de Cadenas para nombrar a los puertos existentes

string datos_entrantes;//variables recibir pic char caracter_final;//variables recibir pic #endregion

public PICAPEC() {

InitializeComponent();

CheckForIllegalCrossThreadCalls = false;//Desabilita exepciones en subprocesos (Deshabilita la cordinacion de subprograma)

(8)

PuertoSerie.ReadTimeout = 1000; //tiempo de espera para leer PuertoSerie.WriteTimeout = 1500; //tiempo de espera apra escrivir

Puertos = SerialPort.GetPortNames();//Actualización de puertos CMBPUERTOS.Items.Clear(); //Limpia los puertos que hay en el combobox

for (int i = 0; i < Puertos.Length; i++) //ciclo for para rellenar el combobox con los puertos existentes

{

CMBPUERTOS.Items.Add(Puertos[i]); //Impresión en el combobox del com encontrado

}

CMBPUERTOS.Text = CMBPUERTOS.Items[0].ToString(); //Conversión del nombre de los puertos para poder ser vistos por el usuario

CMBPUERTOS.Focus(); //Comando para centrar el programa en esta acción

lblEstado22.Text = "Listo"; //Impresión de palabra listo en la barra de estado

PuertoSerie.DataReceived += new

SerialDataReceivedEventHandler(PuertoSerie_DataRecived); //Recepción de datos del pic

}

#region RECIVIR RS232

private void PuertoSerie_DataRecived(object sender, SerialDataReceivedEventArgs e)

{

try //Comando para hacer que intente hacer la acción entre {} para evitar errores, en caso de que no se haga

{

datos_entrantes = ""; //Borrar lo contenido en la variable datos_entrantes

caracter_final = (char)0; //reiniciar variable caracter_final

while (caracter_final != ';') //ciclo para recibir variables, mientras la variable caracter_final no sea ;

{

caracter_final = (char)PuertoSerie.ReadChar(); //almacenar caracter recibido por el pic en caracter_final

if (caracter_final == ';') //condición para cuando la variable recibida sea ;

break; //comando para terminar el ciclo while datos_entrantes += caracter_final.ToString(); //almacienamiento del caracter recibido en variable datos_entrantes }

label1.Text = datos_entrantes; //impresión de los datos recibidos

this.Invoke(new EventHandler(Actualizar_labels)); //llamado del subprograma Actualizar_labels

}

catch //Acción a realizar si no se pudo hacer lo del TRY {

MessageBox.Show("Conexion Bluetooth perdida, intente conectar nuevamente"); //impresión de una ventana con el texto entre comillas

}

}

private void Actualizar_labels(object s, EventArgs e) {

(9)

label1.Text = "Pic:" + datos_entrantes; //impresión de los datos recibidos

}

#endregion

//Acciones a realizar cuando el boton btnabrir(boton de bluetooth) recibe un click

private void ENCENDER_Click(object sender, EventArgs e) {

try //Comando para hacer que intente hacer la acción entre {} para evitar errores, en caso de que no se haga

{

if (PuertoSerie.IsOpen) //Acción a realizar si hay algún puerto abierto

{

PuertoSerie.Close(); //Cerrar el puerto abierto }

PuertoSerie.PortName = CMBPUERTOS.SelectedItem.ToString(); //Comando para hacer compatible el com selecccionado con el programa

if (!PuertoSerie.IsOpen) //Acción a realizar si no hay puertos abiertos

{

PuertoSerie.Open(); //Comando para abrir el puerto seleccionado del combobox

}

lblEstado22.Text = " Puerto " + PuertoSerie.PortName + " Abierto "; //Imprimir en la barra de estado que el puerto seleccionado se abrió

}

catch (Exception) //Acción a realizar si no se pudo hacer lo del TRY

{

lblEstado22.Text = " No se pudo Abrir el puerto " +

PuertoSerie.PortName; //Impresión en la barra de estado que no se pudo abrir el com seleccionado

} }

//Acciones a realizar cuando el boton btncerrar(boton de apagar) recibe un click

private void APAGAR_Click(object sender, EventArgs e) {

try //Comando para hacer que intente hacer la acción entre {} para evitar errores, en caso de que no se haga

{

PuertoSerie.Close(); //Cerrar el puerto abierto

lblEstado22.Text = " Puerto " + PuertoSerie.PortName + " Cerrado "; //Impresión en la barra de estado para indicar que se cerró el puerto

}

catch (Exception) //Acción a realizar si no se pudo hacer lo del TRY

{

MessageBox.Show(" No se pudo cerrar el puerto ", " Error ", MessageBoxButtons.OK, MessageBoxIcon.Warning); //Alerta para indicar que no se pudo cerrar el puerto

} }

//Acciones a realizar cuando el boton btnrefresh(boton de las flechas) recibe un click

private void ACTUALIZAR_Click(object sender, EventArgs e) {

(10)

try //Comando para hacer que intente hacer la acción entre {} para evitar errores, en caso de que no se haga

{

Puertos = SerialPort.GetPortNames(); //obtención de los com utilizables

CMBPUERTOS.Items.Clear();//Limpieza del combobox

for (int i = 0; i < Puertos.Length; i++) //ciclo for para rellenar el combobox con los puertos existentes

{

CMBPUERTOS.Items.Add(Puertos[i]); //Impresión en el combobox del com encontrado

}

CMBPUERTOS.Text = CMBPUERTOS.Items[0].ToString();

//Conversión del nombre de los puertos para poder ser vistos por el usuario CMBPUERTOS.Focus();

lblEstado22.Text = " Puertos_Actualizados"; //Impresión de frase "Puertos Actualizados" en la barra de estado

}

catch //Acción a realizar si no se pudo hacer lo del TRY {

lblEstado22.Text = " Puertos Cerrados Tienes que abrirlo..!"; //Impresión en la barra de estado que se debe abrir los puertos

} }

private void Form1_FormClosing(object sender, FormClosingEventArgs e) {

if ((MessageBox.Show(" ¿En realidad quieres salir?", "Saliendo RS-232", MessageBoxButtons.YesNo, MessageBoxIcon.Question) ==

DialogResult.No)) //Acción para especificar si se selecciona NO en la ventana

{

e.Cancel = true; //Acción a realizar para cuando se oprime no, se cancela el cerrado

}

else //Acción para cuando se presiona si en el mensaje {

PuertoSerie.Close(); //Cerrado de puerto serie activo para evitar problemas futuros

e.Cancel = false; //Comando para indicar que el cerrado sigue como debería

} }

//acción para el botón salir(la puerta)

private void salir2_Click(object sender, EventArgs e) {

this.Close(); //cerrar programa }

private void PICAPEC_Load(object sender, EventArgs e) {

} } }

(11)

IX. ANEXO 4. Form usado en el programa de C#

Imagen de el programa realizado en C# para la comunicación PIC a PC

I. ANEXO 5. Circuito para imprimir de la baquelita usada en la práctica

Para poder usar el bluetooth en esta baquelita se deben usar dos jumpers los cuales permiten alimentar el modulo, dichos jumpers van en forma horizontal en donde está el círculo rojo.

Referencias

Documento similar

Una vela para el diablo is unquestionably a representation of the Francoist female monster who needed to conform to their submissive role but transgressed the social and

Se hace presente el instrumento a ser aplicado en la empresa CONSUTIC dentro del área de Sistemas informáticos en los servicios de mesa de ayuda mediante un

Es el proceso mediante el cual se realiza una elección entre diferentes alternativas o formas para resolver diferentes problemas a los que nos enfrentamos en la vida, estas se

&#34;No porque las dos, que vinieron de Valencia, no merecieran ese favor, pues eran entrambas de tan grande espíritu […] La razón porque no vió Coronas para ellas, sería

Cedulario se inicia a mediados del siglo XVIL, por sus propias cédulas puede advertirse que no estaba totalmente conquistada la Nueva Gali- cia, ya que a fines del siglo xvn y en

Habiendo organizado un movimiento revolucionario en Valencia a principios de 1929 y persistido en las reuniones conspirativo-constitucionalistas desde entonces —cierto que a aquellas

Por lo tanto, en base a su perfil de eficacia y seguridad, ofatumumab debe considerarse una alternativa de tratamiento para pacientes con EMRR o EMSP con enfermedad activa

The part I assessment is coordinated involving all MSCs and led by the RMS who prepares a draft assessment report, sends the request for information (RFI) with considerations,