Comunicación serial de un ATMega8

June 15, 2017 | Autor: Zenón Martinez Cruz | Categoría: Electronic Engineering, Microcontrollers
Share Embed


Descripción

Interfaces de comunicación serial USART y TWI implementados en microcontrolador ATMega8 Martínez Cruz Zenón Belarmino, Barragán Ortiz Roberto Universidad Tecnológica de la Mixteca, Carretera a Acatlima Km. 2.5, Huajuapan de León, 9531081597, [email protected] [email protected] Resumen La comunicación entre un microcontrolador y un módulo externo, ya sea un sensor o una memoria EEPROM, es una aplicación muy común, lo importante a considerar en ello es la manera de interconectar los dispositivos. La comunicación serial ofrece la ventaja de que un microcontrolador pueda comunicarse con varios dispositivos utilizando pocas terminales. Para la comunicación serial existen diferentes protocolos, por medio de la USART, la interfaz SPI o la interfaz TWI. El presente reporte consta de tres aplicaciones en total, en las cuales se implementa la comunicación serial por medio de la USART o la interfaz TWI. Palabras clave: interfaz, microcontrolador, serial, SPI, TWI, USART.

I. Introducción La comunicación serial es el proceso de envió de datos bit por bit secuencialmente a través de un canal de comunicación normalmente conocido como bus. Este tipo de comunicación es utilizada con muchos propósitos debido al costo y facilidad de implementación. La ventaja que supone la comunicación serial con respecto a la comunicación paralela es el número de líneas de transmisión, en la comunicación serial únicamente se hace uso de dos líneas, uno para recibir los datos y otro para enviar. Para que dos dispositivos cualesquiera se puedan comunicar tienen que ponerse de acuerdo en que sistema de comunicación van a utilizar. La comunicación serial se divide en dos categorías: comunicación síncrona y comunicación asíncrona. La primera requiere de una línea de reloj y una línea de datos, los bits que componen al dato se van transmitiendo uno a uno con cada pulso de reloj. En la

comunicación asíncrona los dispositivos se ponen de acuerdo en la velocidad de transmisión, uno de ellos transmite y el otro recibe y viceversa. SPI, TWI, USART con protocolos de interconexiones serial utilizados en comunicaciones de microcontroladores con periféricos, que es lo que nos interesa. La comunicación se puede llevar acabo con memorias EEPROM, displays LCD u otro tipo de circuitos integrados que soporten cualquiera de los protocolos.

Comunicación serial a través de la USART La terminal destinada para la transmisión de datos es TXD y para la recepción es RXD. Estas terminales corresponden con PD1 (pin 3) y PD0 (pin 2) del ATMega8. En la comunicación asíncrona el emisor únicamente envía los datos y no se envía una señal de reloj como en el caso de la comunicación síncrona. Antes de cualquier transferencia de datos, se deben de configurar los siguientes parámetros:

  



Velocidad de transmisión (Baudrate): La cantidad de bits que se transmiten en un segundo (bauds o bps). Número de bits de datos: Cada dato se integra por un número pre-definido de bits, pueden ser 5, 6, 7, 8 o 9 bits. Bit de paridad: Es un bit de seguridad que acompaña a cada dato, se ajusta automáticamente en alto o en bajo para complementar un número par de 1’s (paridad par) o un número impar de 1’s (paridad impar). El bit de paridad se utiliza para verificar si hubo o no un error en la transmisión. Número de bits de paro: Los bits de paro sirven para separar 2 datos consecutivos. En este caso, se debe definir si se utiliza 1 0 2 bits de paro.

Comunicación Serial por TWI La Interfaz Serial de Dos Hilos (TWI, Two Wire Serial Interface) es un recurso disponible para que diferentes microcontroladores (u otros dispositivos) se comunique por medio de un bus bidireccional de 2 líneas, una para reloj (SCL) y otra para datos (SDA). En la figura 1 se muestra la forma en la que en los diferentes dispositivos se conecta, como hardware externo únicamente se requiere de 2 resistencias conectadas a Vcc (pull-up). El protocolo TWI permite al diseñador conectar hasta 128 dispositivos diferentes, cada uno con su propia dirección.

Esta interfaz es compatible en su operación con el bus 𝐼 2 𝐶, el cual es un estándar desarrollado por (NXP Semiconductor). Por lo tanto, puede utilizarse para el manejo de una gama muy de dispositivos, como manejadores de LCD´s y LED´s puertos remotos de entrada/salida, RAMs, EEPROMs, relojes de tiempo real, ADCs, DACs, etc. El protocolo TWI maneja un esquema Maestro-Esclavo, no obstante, cualquier dispositivo puede transmitir en el bus. Por ello deben distinguirse los siguientes términos: Maestro: Dispositivo que inicia y termina una transmisión, también genera la señal de reloj (SCL). Esclavo: Dispositivo direccionado por un Maestro. Transmisor: Dispositivo que coloca los datos del bus La interfaz TWI se compone de diferentes módulos, su organización se muestra en la figura 2. Todos los registros de la interfaz son accesibles por el núcleo AVR, desde el bus interno.

Figura 2. Organización de la interfaz TWI

Figura. 1 Bus de interconexión TWI

La interfaz TWI es manejada por 5 registros para los datos (TWDR), para la dirección como esclavo (TWAR) y para el estado (TWSR), para la velocidad de transmisión (TWBR), para el control (TWCR), y para el estado (TWSR).

La interfaz puede operar en 4 modos:    

Maestro transmisor (MT) Esclavo transmisor (ST) Maestro receptor (MR) Esclavo recetor (SR)

El protocolo TWI utiliza dos líneas para transmitir la información: una para los datos y otra para la señal de reloj; y tierra. Las líneas se llaman: •

SDA: datos



SCL: reloj



GND: tierra

Es necesario utilizar resistencias de pull-up ya que SDA y SCL son a drenador abierto. Cada dispositivo que emplee este protocolo tiene una dirección única, y se dividen en dos: Maestro y esclavo. Un dispositivo maestro inicia la transferencia de datos y además genera la señal de reloj. Un dispositivo esclavo recibe la señal de reloj y recibe o envía datos por el puerto SDA A continuación se hace una breve descripción de los distintos periféricos que se utilizaron en las tres prácticas, así como el hardware externo que se implementó. La implementación de los protocolos de comunicación serial se realizaron con una computadora personal y un módulo que soporta el protocolo de comunicación 𝐼 2 𝐶.

Sensor Ultrasónico HC-SR04 El sonido ultrasónico consiste en una serie de ondas con frecuencias por encima de los 20 KHz, más allá de capacidad auditiva del ser humano. Para las aplicaciones realizadas en la práctica se utilizó el módulo HC-SR04 que funciona según el principio impulso-eco. Cuando recibe de la unidad de control un

impulso digital de emisión, el circuito electrónico excita la membrana de aluminio que se encarga de enviar un tren de pulsos a 40 kHz (ondas ultrasónicas), si esta señal se refleja en alguna superficie u objeto dentro del rango de medición, será captada por su receptor. Con la implementación del módulo HCSR04, generalmente usado como medidores de nivel y distancias, únicamente se considera el pulso a enviar para el transmisor, realizar un conteo a partir del pulso de respuesta y sondear un pulso de fin de conteo. Es importante conocer el principio de funcionamiento del sensor, para su correcta implementación así como realizar una exitosa medición. En la figura 3 se observa el módulo HC-SR04 implementado en la práctica, debido a su bajo costo, sencillez y a la gran cantidad de aplicaciones en las que se puede implementar se optó por usarlo.

Figura 3. Sensor ultrasónico HC-SR04.

A continuación se presentan las características principales del sensor ultrasónico HC-SR04. En la tabla 1 se presentan las especificaciones eléctricas y en la tabla 2 se describe el funcionamiento de cada pin del módulo. Parámetros eléctricos

Módulo HC-SR04

Voltaje de operación

DC +5V

Corriente de operación

15 mA

Frecuencia de trabajo

40 kHz

Rango de medición

2 cm – 500 cm

Ángulo de medición

15°

Señal de entrada al pin Trigger

Pulso de 10 us TTL

Señal de salida del pin Echo

Señal a un nivel TTL proporcional al rango que mide

Dimensiones

45x20x15 mm

Tabla 1. Parámetros eléctricos del módulo ultrasónico HC-SR04.

Figura 4. Display de cristal líquido (LCD) de 16 columnas y dos filas marca QAPASS 1602A.

Pin

Descripción

Número

Pin

Descripción

VCC

Alimentación de +5V

1

VSS

Conexión a tierra

Trig

Pin de disparo

2

VDD

Echo

Pin que devuelve un ‘1’ si se ha detectado una superficie en su rango de medición.

Voltaje de alimentación: 3.3 V − 5.0 V

3

V0

Contraste del LCD

4

RS

Selecciona entre un comando (RS = ‘0’) o un dato (RS = ‘1’)

5

R/W

Selecciona entre una escritura (R/W = ‘0’) o una lectura (R/W = ‘1’)

6

E

Habilitación del LCD

7 – 14

D0-D7

Bus de datos

15

A

Voltaje de alimentación para la luz del fondo

16

K

Conexión a tierra de la luz de fondo

GND

Pin que se conecta a tierra.

Tabla 2. Descripción de los pines que conforman al módulo HC-SR04.

Display de cristal líquido Un display de cristal líquido o LCD es un dispositivo de salida que permite desplegar mayor información que los display de 7 segmentos comunes. Un LCD alfanumérico puede mostrar caracteres ASCII, japoneses o griegos de un conjunto preestablecido. Estos LCDs organizan y presentan la información por medio de columnas y filas, por lo tanto, se clasifican según su tamaño, 16 x 1, 16 x 2 y 20 x 4. Para la práctica realizada se utilizó el LCD alfanumérico QAPASS 1602A, un display de 16 columnas por 2 renglones. En la figura 4 se muestra el LCD implementado así como sus 16 terminales y en la tabla 3 se describe la funcionalidad de cada terminal o pin.

Tabla 2. Descripción de los pines que conforman al LCD marca QAPASS 1602A de 16x2.

Cualquier LCD que se maneje incluye un circuito controlador, éste es el encargado de manejar la pantalla de cristal líquido. El controlador proporciona una interfaz con las terminales descritas anteriormente, para ser manejado por un microcontrolador o un microprocesador, por medio de un conjunto de comandos. Para conectarse el LCD al microcontrolador es posible utilizar una interfaz de 4 o 8 bits. La interfaz de 4 bits es recomendable cuando el microcontrolador tiene pocas terminales o pines de entrada/salida,

como en nuestro caso se usa un ATMega 8, se optó por utilizar dicha interfaz.

Reloj de tiempo real DS1307 El DS1307 es un reloj de tiempo real (RTC, Real-Time Clock) de baja potencia codificado de decima a binario. Es un reloj y calendario integrados en un solo componente, es decir, proporciona la hora en segundos, minutos y horas, así como la fecha en día, fecha, mes y año. En la figura 5 se muestra el circuito integrado DS1307 que consta de 8 terminales, las cuales se especifican en la tabla 3. El valor que regresa el integrado es en BCD (Decimal codificado en binario, Binary-Coded Decimal), por lo tanto, se debe de realizar dos funciones que se encarguen de la conversión de BCD a decimal y de decimal a BCD.

Figura 5. Encapsulado SO y PDIP del DS1307 RTC. N°

Pin

Descripción

1

X1

2

X2

Conexiones para un cristal de cuarzo de 32.758 kHz.

3

𝑉𝐵𝐴𝑇

Alimentación de respaldo de un valor típico de 3V.

4

GND

Conexión a Tierra

5

SDA

Entrada/Salida de datos en serie. Es la entrada/salida para la interfaz 𝐼 2 𝐶.

6

SCL

Entrada del reloj que proviene del maestro.

7

SQW/OUT

Square Wave/Output Driver.

8

𝑉𝑐𝑐

Voltaje de alimentación principal del circuito

integrado: 4.5 − 5.5 V Tabla 3. Descripción de las terminales del DS1307.

En la figura 6 se muestra el mapa de direcciones del DS1307 RTC y los registros de la RAM. Los registros del RTC están localizadas entre las direcciones 0x00 y 0x07. Los registros de la RAM se localizan de 0x08 a 0x3F. Para fines prácticos solo se utilizan los primero tres registros (0x00 a 0x02) que son los que contienen el valor de la hora. En primera instancia el oscilador del DS1307 se encuentra desactivado o dicho de otra manera el bit 7 (CH, Clock halt) del registro 0x00 de los segundos se encuentra en un nivel alto, entonces para que el RTC comience a funcionar se debe de configurar en bajo realizando un enmascaramiento con el byte 0x7F.

Figura 6. Registros del DS1307 RTC.

El DS1307 RTC soporta el protocolo 𝐼 2 𝐶 y por lo tanto es compatible con la interfaz de comunicación TWI y opera como esclavo receptor/transmisor. En el modo esclavo receptor (modo de escritura) los datos se reciben serialmente en la terminal SDA y la señal del reloj del maestro (ATMega8) en la terminal SCL. Después de haber recibido todos los bytes se envía un bit de reconocimiento. La dirección del esclavo (DS1307) es el número 1101000 o 0x68 en hexadecimal está dirección se debe considerar cuando se pretende leer o escribir en los registros del RTC. Debido a que la práctica consiste en implementar el protocolo de comunicación serial TWI se utilizó un módulo en donde se integran los componentes necesarios para el óptimo funcionamiento del DS1307. En el módulo se integra dos componentes: el DS1307

RTC y una memoria EEPROM AT24C32 de ATMEL. En la figura 7 se observa el módulo que se contiene el reloj de tiempo real y la memoria EEPROM.

Figura 7. Módulo con dos componentes compatibles con el protocolo TWI: DS1307 y AT24C32.

Convertidor serial USB a TTL En específico el D-SUN USB to TTL, es un módulo convertidor basado en el chip CP2102 de Silicon Labs (SiLabs). Este módulo puede ser usado por las computadoras personales o portátiles que no cuentan con el puerto serie estándar. El módulo crea un puerto serie virtual COM por medio del puerto USB el cual soporta diferentes rangos de baudios para la comunicación serial. Para el funcionamiento del módulo se debe de instalar el controlador adecuado, en este caso se instaló el CP210x de SiLabs el cual es compatible con Windows, Mac OS, Linux y Android 4.2. En la figura 8 se observa el módulo descrito.

Figura 8. Módulo D-SUN convertidor serial USB a TTL.

La característica que hace del módulo recomendable es el nivel TTL que maneja para los datos de entrada/salida. Los pines RxD y TxD pueden ser conectados directamente a las terminales del microcontrolador ATMega8 que trabajan con 5V. En la tabla 4 se describe la función de cada terminal del módulo. Pin

Descripción

3V3

Salida opcional para alimentar algún circuito hasta 50 mA

TXD

Salida de datos. Se conecta al pin RXD del microcontrolador.

RXD

Entrada de datos. Se conecta al pin TXD del microcontrolador.

GND

Conexión a tierra. Debe conectarse a la misma tierra del microcontrolador.

5V

Salida opcional para alimentar un circuito externo hasta 500 mA

Tabla 4. Descripción de las terminales del módulo USB a TTL.

Aplicaciones

1. Medidor de distancias El medir distancias es una aplicación muy utilizada en diversas áreas, por ejemplo una aplicación podría ser medir el contenido de algún recipiente, la profundidad de un objeto o la distancia que se encuentra algún objeto con respecto a otro, algo así como un radar. La primera práctica consiste en el manejo del sensor de ultrasonido HC-SR04 como periférico de entrada y un display de cristal líquido (LCD) como periférico de salida, con la finalidad de obtener la distancia a la que se encuentra un objeto del microcontrolador y la cual se muestra en la pantalla LCD de 16x2 (figura 5). La medición se realiza en

centímetros y milímetros para tener una medición más exacta.

2. Gráfica de movimiento Cómo segunda práctica se implementa la comunicación serial entre el microcontrolador ATMega8 y una computadora portátil. Nuevamente se hace uso del módulo HC-SR04 y el LCD de 16x2. Se guardan N datos en la memoria interna del microcontrolador, los cuales indican la distancia de un objeto en movimiento, los cuales después serán enviados serialmente a la computadora la cual se encargará de visualizar los datos, así como de graficarlos. En la figura 9 se muestra un ejemplo de cómo acondicionar el sistema para obtener la posición de un objeto, en este caso una pelota, mientras se mueve dentro de un rango predeterminado.

Figura 9. Sistema de adquisición de datos propuesto.

El microcontrolador se configura para transmitir a una velocidad de 9600 baudios, transmisión de datos de 8 bits, con un bit de paro y si paridad. La función del ATMega8 es de hacer operar el sensor ultrasónico y obtener la distancia del objeto en movimiento en centímetros y milímetros. El LCD muestra la actividad que se está realizando tanto el sensor como el microcontrolador. La computadora muestra los datos capturados por el ATMega8 en una simple interfaz, basada en Java, realizada con la herramienta NetBeans 8.0.

3. Manejo del Reloj en tiempo real DS1307 a través de la interfaz TWI Para la última aplicación se implementa el código en C para la comunicación serial TWI entre el ATMega8 y el DS1207. El RTC opera en dos modos diferentes modo esclavo receptor y modo esclavo transmisor. Básicamente el programa en C se conforma de dos funciones importantes a parte del main(), estos son: read_Data() y write_Data(), el primero se encarga de la lectura de los primeros tres registros del DS1207 para obtener la hora del módulo, la segunda función se emplea para configurar la hora del módulo mediante la escritura de sus primeros tres registros. En la figura 10 se muestran los componentes que se usaron en cada una de las aplicaciones implementadas en la placa de pruebas.

Figura 10. Componentes utilizados en la implementación de las tres aplicaciones.

II. Desarrollo 1. Medidor de distancias Primero se configura al módulo mediante código para que envié una señal en alto a través del pin Trig con una duración de al menos 10 𝜇s. El transmisor integrado en el módulo envía ocho pulsos cuadrados a una frecuencia de 40 kHz. El pin Echo envía una señal en alto al microcontrolador con una duración que depende del tiempo que tarde la señal enviada

por el transmisor en llegar al objeto y rebotar en este mismo hasta llegar al receptor del módulo. En la figura 11 se muestra el diagrama de tiempos del sensor HC-SR04.

la interfaz de 4 bits por medio del puerto B. La interfaz de 4 bits tiene la ventaja de requerir menos terminales y la desventaja es el acceso más lento, pues requiere de 2 accesos al LCD para escribir puesto que son de 8 bits.

Figura 11. Diagrama de tiempos del sensor HCSR04.

Considerando la velocidad del sonido y la trayectoria de la señal transmitida por el modulo, es decir, considerando que la distancia que recorre la señal cuadrada es dos veces la que se requiere conocer, obtenemos la ecuación 1. La velocidad del sonido se define como 344m/s, entonces en 2.90 ms el sonido recorre 1 metro, en centímetros el sonido recorre 1 cm/29 𝜇s. 𝑉𝑠𝑜𝑛𝑖𝑑𝑜 =

𝐷=

344 𝑚 1𝑚 1 𝑐𝑚 = = 𝑠 2.90 𝑚𝑠 29 𝑢𝑠

𝐷𝑢𝑟𝑎𝑐𝑖ó𝑛 𝑑𝑒 𝑝𝑢𝑙𝑠𝑜 𝑥 1 𝑐𝑚 2𝑥29 𝑢𝑠

(1)

Considerando que la distancia máxima que puede medir el sensor es de aproximadamente 5 m, entonces el pulso máximo que devuelve el modulo es de 500 cm x 29 𝜇s = 14 500 𝜇s = 14.5 ms. Con el dato anterior se configura al Temporizador 1 del ATMega8 el cual se encargará de medir el tiempo del pulso de salida del sensor, con un valor de comparación igual a 14 4999, con esto se propone el límite que contará el temporizador 1. Con respecto a la forma de mostrar la distancia medida, se hace uso de la interfaz de 4 bits con el LCD. En la figura 12 se muestra la conexión del ATMega8 con un LCD, utilizando

Figura 12. Diagrama esquemático del circuito medidor de distancias.

2. Gráfica de movimiento Se retoman algunas de las funciones realizadas en la primera práctica, también se implementan otras totalmente nuevas, este es el caso de la configuración de la transmisión serial USART y la implementación de la interrupción INT0 para la captura de datos. Los parámetros que se configuran para la comunicación serial asíncrono son: velocidad de transmisión de 9600 bps, modo asíncrono a doble velocidad, para reducir el margen de error, se habilita tanto el receptor como el transmisor, asignando un 1 a los bits RXEN y TXEN y se configura para una transmisión de datos de 8 bits, sin paridad y con un bit de paro. El microcontrolador realiza la captura de 150 datos cada 40 ms, para eso se sondea el registro TCNT1 del temporizador 1 el cual lleva el conteo de la duración del pulso de salida del módulo HC-SR04 y también se encarga de realizar las muestras cada 40 ms. Las 150 muestras se guardan en un arreglo de

300 unsigned char, debido a que después de que se procesa las 150 muestras se obtienen 150 enteros (cm) y 150 decimales (mm). Entonces en un mismo arreglo se guarda tanto la parte entera como la parte fraccionaria. Por lo tanto, en la parte de transmisión se envían dos números, la parte entera y la parte fraccionaria. El programa en Java se encarga de darle formato al recibir el número y poder mostrarlo en pantalla. En la figura 13 se muestra la interfaz realiza en NetBeans 8.0.

Figura 13. Interfaz realizada en Java con la herramienta NetBeans 8.0.

En lo que respecta al programa realizado en NetBeans, se utilizaron diversas librerías para llevar a cabo la recepción y visualización de los datos, las principales librerías son las siguientes: java.awt.Graphics java.awt.Graphics2D giovynet.nativelink.SerialPort giovynet.serial.Baud giovynet.serial.Com giovynet.serial.Parameters Las primeras dos se utilizan para realizar graficas en 2D, las siguientes vienen incluidas en el paquete de Giovynet Driver. La interfaz de la figura 9 cuenta únicamente con tres botones: Limpiar: se encarga de borrar los datos del área de texto.

Graficar: abre un cuadro de dialogo en donde se muestra la gráfica obtenida a partir de los datos recibidos. Salir: Sirve para salir de la aplicación. 3. Manejo del Reloj en tiempo real DS1307 a través de la interfaz TWI El DS1307 es compatible con el protocolo TWI, por lo tanto, se implementan las funciones correspondientes para la lectura y escritura de los registros usando los registros correspondientes de la interfaz TWI del ATMega8, los cuales son: TWDR, TWAR, TWBR, TWCR y TWSR. En la hoja de datos del componente se explica el proceso que se debe llevar a cabo cuando el RTC opera como esclavo receptor o esclavo emisor. Primero se considera el modo esclavo receptor (escritura de los registros) para ello se debe considerar la figura 14. El microcontrolador se encarga de mandar una condición de Inicio para comenzar con la transmisión seguido de la dirección del DS1307 (0x68) más el bit de R/W (W = 0), entonces el dato que se manda es el 0xD0 (0x68
Lihat lebih banyak...

Comentarios

Copyright © 2017 DATOSPDF Inc.