TARJETA DE ADQUISICION DE DATOS

11
UNIVERSIDAD SURCOLOMBIANA INGENIERIA ELECTRONICA PROGRAMACION I Y LABORATORIO TARJERTA DE ADQUISICION ERINSON ESPINOSA ESCOBAR COD.2005102226 EDNA CAROLINA MORIONES POLANIA COD. 2004200596 OSCAR LEONARDO MOSQUERA DUSSAN COD.2005100830 OBJETIVOS Establecer la adquisición de una señal análoga mediante el puerto serial, usando la norma RS232. Poner en práctica los conocimientos aprendidos durante el semestre. PLANTEAMIENTO DEL PROYECTO Diseñar una tarjeta de adquisición, donde por consola (PC) se le envíen comandos al microcontrolador y este responda. Los comandos tendrán el objetivo de leer los puertos ADC del mircrocontrolador. INTRODUCCION Una manera de conectar dos dispositivos es mediante comunicaciones serie asíncronas. En ellas los bits de datos se transmiten "en serie" (uno detrás de otro) y cada dispositivo realiza tiene su propio reloj. Previamente se ha acordado que ambos dispositivos transmitirán datos a la misma velocidad. En este proyecto se muestran los fundamentos de estas comunicaciones, para conectar el PC con un microcontrolador y las especificaciones técnicas de la norma RS232.

description

Diseño de una Tarjeta de adquisición de datos utilizando microcontroladores Pic de microchip.

Transcript of TARJETA DE ADQUISICION DE DATOS

Page 1: TARJETA DE ADQUISICION DE DATOS

UNIVERSIDAD SURCOLOMBIANAINGENIERIA ELECTRONICAPROGRAMACION I Y LABORATORIOTARJERTA DE ADQUISICIONERINSON ESPINOSA ESCOBAR COD.2005102226EDNA CAROLINA MORIONES POLANIA COD. 2004200596OSCAR LEONARDO MOSQUERA DUSSAN COD.2005100830

OBJETIVOS

Establecer la adquisición de una señal análoga mediante el puerto serial, usando la norma RS232.

Poner en práctica los conocimientos aprendidos durante el semestre.

PLANTEAMIENTO DEL PROYECTO

Diseñar una tarjeta de adquisición, donde por consola (PC) se le envíen comandos al microcontrolador y este responda. Los comandos tendrán el objetivo de leer los puertos ADC del mircrocontrolador.

INTRODUCCION

Una manera de conectar dos dispositivos es mediante comunicaciones serie asíncronas. En ellas los bits de datos se transmiten "en serie" (uno detrás de otro) y cada dispositivo realiza tiene su propio reloj. Previamente se ha acordado que ambos dispositivos transmitirán datos a la misma velocidad.

En este proyecto se muestran los fundamentos de estas comunicaciones, para conectar el PC con un microcontrolador y las especificaciones técnicas de la norma RS232.

MARCO TEORICO

Conversión de una señal análoga a digital

El modulo de conversión análogo a digital del PIC16F877A tiene las siguientes características:

Ocho canales de conversión. Convierte la señal analógica en un número digital de 10 bits. Tensiones de referencia VREF+ y VREF- seleccionables por software.

Page 2: TARJETA DE ADQUISICION DE DATOS

Puede seguir funcionando cuando el PIC está en modo SLEEP ya que dispone de un oscilador RC interno propio

Hay 11 registros asociados a este periférico. Definición de pines de entrada y señales aplicadas TRISA – PORTA – TRISE - PORTE Manejo de interrupciones INTCON – PIE1 – PIR1 Control del conversor A/D ADCON0 – ADCON1 – ADRESH - ADRESL

Comunicaciones serie asíncronas

Los datos serie se encuentran encapsulados en tramas de la forma:

Primero se envía un bit de start, a continuación los bits de datos (primero el bit de mayor peso) y finalmente los bits de STOP.

El número de bits de datos y de bits de Stop es uno de los parámetros configurables, así como el criterio de paridad par o impar para la detección de errores. Normalmente, las

Page 3: TARJETA DE ADQUISICION DE DATOS

comunicaciones serie tienen los siguientes parámetros: 1 bit de Start, 8 bits de Datos, 1 bit de Stop y sin paridad.

En esta figura se puede ver un ejemplo de la transmisión del dato binario 10011010. La línea en reposo está a nivel alto:

Norma RS232

La Norma RS-232 fue definida para conectar un ordenador a un modem. Además de transmitirse los datos de una forma serie asíncrona son necesarias una serie de señales adicionales, que se definen en la norma. Las tensiones empleadas están comprendidas entre +15/-15 voltios.

Conexión de un microcontrolador al puerto serie del PC

Para conectar el PC a un microcontrolador por el puerto serie se utilizan las señales Tx, Rx y GND. El PC utiliza la norma RS232, por lo que los niveles de tensión de los pines entán comprendidos entre +15 y -15 voltios. Los microcontroladores normalmente trabajan con niveles TTL (0-5v). Es necesario por tanto intercalar un circuito que adapte los niveles:

Page 4: TARJETA DE ADQUISICION DE DATOS

El conector DB9 del PC

En los PCs hay conectores DB9 macho, de 9 pines, por el que se conectan los dispositivos al puerto serie. Los conectores hembra que se enchufan tienen una colocación de pines diferente, de manera que se conectan el pin 1 del macho con el pin 1 del hembra, el pin2 con el 2, etc

La información asociada a cada uno de los pines es la siguiente:

Número de pin Señal

1 DCD (Data Carrier Detect)

2 RX

3 TX

4 DTR (Data Terminal Ready)

5 GND

6 DSR (Data Sheet Ready)

7 RTS (Request To Send)

8 CTS (Clear To Send)

9 RI (Ring Indicator)

El chip MAX 232

Page 5: TARJETA DE ADQUISICION DE DATOS

Este chip permite adaptar los niveles RS232 y TTL, permitiendo conectar un PC con un microcontrolador. Sólo es necesario este chip y 4 condensadores electrolíticos de 22 micro-faradios. El esquema es el siguiente:

PROCEDIMIENTO

Lo primero que se realizo fue el código usando el software CCS PIC C Compiler el cual se encarga de configurar el modulo conversor A/D para la conversión de cada uno de los canales cuando recibe una orden de la consola (PC), la lista de comandos que se envviaran de la consola (PC) son las siguientes:

Tecla ‘0’ adquisición de la conversión en AN0 Tecla ‘1’ adquisición de la conversión en AN1 Tecla ‘2’ adquisición de la conversión en AN2 Tecla ‘3’ adquisición de la conversión en AN3 Tecla ‘4’ adquisición de la conversión en AN4 Tecla ‘5’ adquisición de la conversión en AN5 Tecla ‘6’ adquisición de la conversión en AN6 Tecla ‘7’ adquisición de la conversión en AN7

El código ASCII para las teclas anteriores es el siguiente:

Tecla ‘0’=30H Tecla ‘1’=31H Tecla ‘2’=32H

Page 6: TARJETA DE ADQUISICION DE DATOS

Tecla ‘3’=33H Tecla ‘4’=34H Tecla ‘5’=35H Tecla ‘6’=36H Tecla ‘7’=37H

Código utilizado:

#include <16f877a.h> #fuses XT, NOWDT, NOPROTECT //Configuracion de fusibles #use delay (clock=4M)//Reloj de 4MHz#define Tx PIN_C6 // PIN de Transmisión #define Rx PIN_C7 // PIN de Recepción #use rs232(baud=9600, xmit=Tx, rcv=Rx, bits=8)

//Declaramos variables globales char comando=0;char dato=0;short valor;

//Función para adquirir continuamente la conversión de un canal, y de esta forma detectar las //variaciones de la señal análoga.void conf_adquirir(){valor=0;delay_us(30);//Demora necesaria entre la elección de un canal y la lectura del mismo. //30us>20us

//bucle para leer continuamente el canal hasta que un nuevo dato sea detectado while(valor==0) { dato=read_adc();//leemos el valor de la conversión del canal seleccionado con

//con anterioridad. putc(dato); //enviamos el dato leído. valor=kbhit(); //kbhit() devuelve un uno cuando se detecta el inicio de un Nuevo dato delay_ms(100);//Demora para visualizar de una mejor manera los datos adquiridos }}

//Función principal en la cual configuramos los puertos, el modulo ADC, y realizamos la //selección del canal dependiendo del comando enviado por consolavoid main() { set_tris_a(0xff);//configuramos el puerto A y E como entradasset_tris_e(0xff);setup_adc_ports(ALL_ANALOG); //todas las entradas del conversor análogassetup_adc(ADC_CLOCK_DIV_8);//Reloj de conversión de tal forma que Tad>1.6us

//Bucle infinito para estar eligiendo que canal leer dependiendo del comando digitado.while(1) { comando=getc();// Recibimos el valores enviado por consola

Page 7: TARJETA DE ADQUISICION DE DATOS

//Llevamos a cabo un switch con el objetivo de seleccionar uno de los ocho canales //dependiendo del valor que haya recibido la variable comando.switch (comando) { //Cada case corresponde a la lectura y trasmisión de uno de los canales del conversor. case 0x30: //Correspondiente a la tecla 0 en el codigo ASCII set_adc_channel(0);//canal elegido de acuerdo al comando conf_adquirir(); //Llamamos a la función que es la subrutina encargada de leer break; // el canal y trasmitir el dato. case 0x31: set_adc_channel(1); conf_adquirir(); break; case 0x32: set_adc_channel(2); conf_adquirir(); break; case 0x33: set_adc_channel(3); conf_adquirir(); break; case 0x34: valor=0; set_adc_channel(4); conf_adquirir(); break; case 0x35: set_adc_channel(5); conf_adquirir(); break; case 0x36: set_adc_channel(6); conf_adquirir(); break; case 0x37: set_adc_channel(7); conf_adquirir(); break; }} }

Una vez desarrollado el código lo simulamos utilizando el software Proteus, en la simulación no es necesario usar el max232.

Page 8: TARJETA DE ADQUISICION DE DATOS

Foto del circuito montado

Page 9: TARJETA DE ADQUISICION DE DATOS

CONCLUSIONES

Es necesario a la hora de establecer una comunicación serial asíncrona entre un PC y un microcontrolador hacer la conversión de niveles de TTL y RS232 para el correcto funcionamiento del sistema.

La lectura de las conversiones debe estar constantemente haciéndose para detectar cambios en la señal análoga de la entrada, sin embargo los intervalos de tiempo de adquisición de los mismos se realizan cada 100ms para evitar que haya una acumulación grande de datos en el SIO (serial input output) de CCS.

Los tiempos de transmisión y recepción de la información se realiza en tiempos y canales distintos. La transmisión por el canal TX y la recepción por el canal RX.

BIBLIOGRAFIA

http://www.iearobotics.com/proyectos/cuadernos Datasheet del integrado MAX232 Datasheet del integrado PIC16F877A