jueves, 5 de noviembre de 2015

USART AVR Comunicación serial

USART AVR conversor serial usbUSART AVR, viene de receptor transmisor síncrono asíncrono universal, es una forma de comunicación entre dispositivos que tengan esta capacidad, donde los datos pueden  ser enviados en grupos de 5, 6, 7, 8 o de 9 bits pero bit por bit, esto es en serie, por eso se dice que esta es una comunicación serial, en esta sección se comentará sobre la comunicación serial asíncrona utilizando el módulo USART del microcontrolador AVR, con el módulo USART AVR el microcontrolador puede comunicarse e intercambiar datos con el ordenador, con otros microcontroladores, etc.
Para la comunicación serial asíncrona entre microcontroladores y para la comunicación entre el microcontrolador y el ordenador, se necesitan 2 hilos de conducción para la transmisión y recepción de datos, y un hilo de conducción para la conexión de los comunes o GND que tienen que ser los mismos,  para la comunicación serial entre el microcontrolador y el ordenador se seguirá la norma RS232.
En la comunicación USART AVR asíncrona, uno de los hilos será para la transmisión de los datos de un dispositivo a otro y el otro hilo será para la recepción de datos entre un dispositivo a otro, la transmisión y la recepción pueden ocurrir en forma simultanea, lo que si se tiene que cumplir es que la frecuencia de trabajo de ambos dispositivos tiene que ser la misma, a esto se le conoce como los baudios que viene a ser la cantidad de bits por segundo que se transmitirán entre ambos dispositivos.
USART AVR atmega88El microcontrolador AVR utilizado como referencia será el ATmega88, los pines de este microcontrolador que trabajan con el módulo USART AVR son el pin RXD o pin receptor y el pin TXD o pin transmisor, los que en la imagen están resaltados resaltados.
El pin RXD es el pin para la recepción de datos.
El pin TXD es el pin para la transmisión de datos.
El pin RXD del AVR tiene que ser conectado al pin TX o TXD del otro dispositivo.
El pin TXD del AVR tiene que ser conectado al pin RX o RXD del otro dispositivo
Los comunes GND de ambos dispositivos también tienen que estar conectados entres si.
Los niveles de tensión con los que trabajan los pines del módulo USART AVR son de 0V y 5V un bajo será 0V mientras que un alto será 5V, por eso cuando la comunicación es entre microcontroladores la conexión entre pines se puede hacer directamente, pero...

miércoles, 28 de octubre de 2015

ENTRADAS SALIDAS DIGITALES ARDUINO

Entradas salidas digitales ArduinoEntradas salidas digitales Arduino, para ver el uso de los pines entradas salidas digitales Arduino se utilizarán como placas de prueba el arduino uno y el arduino mega, el arduino uno tiene 12 pines que pueden ser utilizados como entradas salidas digitales arduino y están numeradas del 2 al 13, los pines 0 y 1 son utilizados para la comunicación serial, el arduino mega tiene 51 pines que pueden ser utilizados como entradas salidas digitales arduino y están numeradas del 2 al 13, y del 22 al 53 los pines 0 y 1 y del 14 al 21 son utilizados para comunicaciónes, algunos de estos pines pueden también cumplir algunas otras funciones pero en esta ocasión solo se comentará sobre su utilización como pines de entradas salidas digitales arduino.
La programación de los pines como entradas salidas digitales arduino será realizada en el software ARDUINO, este lenguaje está basado en C/C++, además como los microcontroladores que forman parte del arduino son microcontroladores AVR, los  pines del arduino como entradas salidas digitales también puede ser programado mediante el lenguaje C/C++ utilizado para programar los microcontroladores AVR, se verán algunos ejemplos de como realizar esto.
En esta sección se verán ejemplos sencillos para comprender como programar los pines del arduino como entradas salidas digitales, es una sección de aprendizaje, ejemplos mas complejos serán publicados en la sección llamada proyectos arduino.

Entradas salidas digitales Arduino

Para elegir si un pin será utilizado como una entrada o salida digital el arduino tiene una función llamada
pinMode() cuya forma general se puede ver así:
pinMode(numero_de_pin , como_entrada_o_como_salida_digital)
para el arduino uno numero_de_pin puede ser de 0 a 13, mientras que para el arduino mega puede ser de 0 a 53, para indicarle si será una entrada digital será mediante la palabra reservada INPUT y para indicarle que será una salida digital será mediante la palabra reservada OUTPUT.
Por ejemplo si se quiere utilizar el pin 37 del arduino mega como entrada digital, esto se hará así:

martes, 20 de octubre de 2015

PWM AVR, MODULACIÓN ANCHO DE PULSO

PWM AVR, PWM  quiere decir modulación por ancho de pulso; cuando se tiene una onda rectangular de un periodo fijo o de una frecuencia fija, a la parte de la onda rectangular que está a mayor nivel o en alto se le llama pulso el cual tendrá un ancho, mediante el PWM se modifica el ancho de ese pulso, con el módulo PWM pwm avrAVR es muy fácil hacerlo, el uso del PWM tiene mucha importancia en el control de dispositivos en diversos modos como son el control de velocidad de motores, control de iluminación, control de temperatura, de transistores, y mucho mas.
En la imagen se tiene un circuito en el que una carga necesita una tensión VCC para su máxima potencia sin dañarse, si la tensión sobre la carga se disminuye la potencia en la carga también disminuirá, si la tensión se hace cero la potencia en la carga será 0, se puede hacer también lo contrario, es decir aumentar la potencia en la carga aumentando la tensión de la fuente de alimentación, en este caso se ha controlado la potencia en la carga, que es lo mismo que decir se esta controlando el comportamiento de la carga, variando el valor de la tensión de la fuente de alimentación VCC.
Otra forma de lograr variar la potencia sobre la carga, o el comportamiento de la carga, en la que no se tenga que variar el valor de la fuente de alimentación VCC, sería alimentar la carga con el valor de VCC mediante pulsos en forma de una onda rectangular, esto es como cortar la alimentación y luego volver a dar alimentación a una cierta frecuencia, tiene que ser muy rápida, donde el valor máximo de la onda sería VCC y el mínimo 0V, esta onda rectangular tendrá un valor medio que estará comprendido entre VCC y 0V, el valor medio de la tensión que le llega a la carga se puede controlar variando el tiempo que el pulso estará en alto Talto, que es el ancho de pulso de la onda rectangular que alimente a la carga, y esto es justamente la modulación por ancho de pulso PWM, la tensión media máxima que le llegará a la carga será cuando el ancho del pulso sea igual al periodo de la onda rectangular y en ese momento tendrá un valor de VCC, la tensión mínima que le llegará a la carga será cuando el ancho del pulso sea de 0 y en ese momento tendrá un valor de 0V.
PWM AVR ancho de pulso
Se verá como utilizar el módulo PWM AVR para obtener estas ondas rectangulares PWM, para controlar la potencia o en este caso el comportamiento de dispositivos electrónicos, en adelante se les llamará señales PWM, como se ve en la imagen de arriba es importante que el periodo de la señal PWM sea constante y como la frecuencia es la inversa del periodo, el lo mismo que decir que la frecuencia de la señal PWM tiene que ser constante, aunque se puede cambia si se quiere, eso va depender de donde se la vaya a utilizar la señal PWM.

martes, 13 de octubre de 2015

CONVERTIDOR ANALÓGICO DIGITAL ADC CON MICROCONTROLADOR AVR

convertidor analógico digital AVR ejemplo2 imagenEl ADC convertidor analógico digital AVRpermite medir señales analógicas en forma digital, para ello el AVR cuenta con pines por donde le llegará la señal analógica, estos pines deben configurarse como entradas analógicas, el convertidor analógico digital AVR convierte la señal analógica que le llega al pin configurado como entrada analógica, en un número binario de 10 bits que representará la medida analógica, este número binario se guarda en sus registros ADCH y ADCL de 8 bits cada uno pero estos actúan como un solo registro de 16 bits, en el registro ADCH se guardan los bits mas significativos y en el registro ADCL se guardan los bits menos significativos, el número que representa la tensión analógica y guardado en forma binaria dentro de estos registros será de 10 bits para el ATMEGA88 que  será el microcontrolador AVR utilizado para los ejemplos.
El ADC convertidor analógico digital AVR necesita una tensión de referencia para poder trabajar adecuadamente, esta tensión de referencia Vref normalmente será la tensión a la cual trabaja el AVR, aunque por programa se puede elegir otras tensiones de referencia; a la relación que hay entre la tensión de referencia Vref y el máximo número binario de 10 bits 210-1=1023=1111111111 que representará la señal analógica se le conoce como resolución, por ejemplo para el caso del ATmega88 se tendrá que la resolución del convertidor analógico digital AVR será:
Resolución = Vref/(210-1) = Vref/1023
Si se toma como la Vref=5V que es la tensión adecuada a la que trabaja el ATmega88 se tendrá que la resolución de su convertidor analógico digital AVR será:
Resolución = 5V/(210-1) = 5V/1023
de donde
Resolución = 0,004887585533V ≈ 0,0049V luego la resolución para el caso del convertidor analógico digital AVR de 10 bits con un voltaje de referencia de 5V será:
Resolución=4,9mV
La resolución indica en este caso que a la tensión de referencia de 5V se le ha partido en 1023 partes iguales y cada una de esas partes equivalen a aproximadamente 4,9mV, al utilizar esto en forma digital indicará que para un 0 será 0V, si el voltaje aumenta desde 0 en 4,9mV se tendrá un 1, si aumenta 2 veces 4,9mV se tendrá un 2, si aumenta 3 veces 4,9mV se tendrá un 3, si aumenta 4 veces 4,9mV se tendrá un 4 etc.

domingo, 11 de octubre de 2015

PANTALLAS LCD CON MICROCONTROLADOR AVR

LCD AVR, se verá el uso de las pantallas LCD 2x16 sobre el cual se comentó aquí, pero  en este  caso  su utilización con el microcontrolador AVR, a lo cual se referirá a esto como LCD AVR, el microcontrolador AVR de prueba será el ATmega88, es muy importante utilizar el LCD AVR para obtener un mayor conocimiento sobre el manejo de los microcontroladores AVR, es una forma sencilla y muy práctica de poder ver en una pantalla como van trabajando los registros del AVR, o como se van actualizando los datos que interesen, con el LCD AVR se puede sacar máximo provecho al microcontrolador AVR, como ya se verá.
Ahora de lo que se tratará es sobre como hacer trabajar juntos la pantalla LCD 2x16 con el microcontrolador AVR utilizando el ATMEL STUDIO, por lo que se necesitará una librería que al ser utilizada como un archivo de cabecera, se podrá manejar el LCD AVR mediante funciones fáciles de recordar; si se busca se puede encontrar muchas librerías en la red, una  de ellas y es la que se usará es la que se puede encontrar aquí en la opción que dice "LCD library for HD44780 based LCD's", se puede descargar como un ZIP; como se puede ver también se tienen librerías para el manejo de las comunicaciones seriales I2C y UART que sería muy importante descargar para  futuros usos.
Es de mencionar que el driver descargado solo trabaja para enviar los datos y caracteres al LCD con 4 bits, se puede elegir entre el nible alto o el nible bajo del bus de datos del LCD.
LCD AVR archivosUna vez descargada y descomprimida la librería para el manejo del LCD AVR, se verá que se tienen los archivos que se muestran en la imagen, los archivos necesarios son los que están resaltados, uno es el lcd.c y el otro el lcd.h, estos archivos serán los originales y hay que cuidarlos, en lo posible no modificarlos, lo que se hará serán copias a las cuales si se podrá modificar pero se recomienda solo la parte en la que se le indica el puerto donde se conectará la pantalla LCD AVR, que viene a ser solo una línea de código, se ve en la imagen que también hay un manual que será de mucha utilidad, además los archivos vienen comentados así que no será complicado utilizarlos, se puede ver el manual en línea aquí, el archivo test_lcd es un ejemplo.

miércoles, 7 de octubre de 2015

INTERRUPCIÓN EXTERNA AVR

interrupción externa AVR atmega88La interrupción externa AVR se produce cuando en un pin preparado especialmente para este fin se produce algún evento, como por ejemplo ocurra algún cambio de estado en el pin como por ejemplo pasar de un bajo(0) a un alto(1); la interrupción externa AVR se comentará para el caso del ATmega88 pero si se quiere utilizar algún otro el procedimiento es muy similar, solo hay que guiarse de la hoja de datos del microcontrolador AVR utilizado.
La interrupción externa AVR es útil para el manejo de pulsadores, detectores de cruce por 0, teclados matriciales y mucho mas; hay 2 tipos de interrupciones externas en los microcontroladores AVR, en la imagen se tiene la  representación de los pines del Atmega88, los pines resaltados que se nombran como INT0 e INT1, son pines que están preparados para producir una interrupción externa AVR por diversos eventos que se pueden elegir por programa, otro microcontroladores AVR tienen mas pines INTx; mientras que los pines nombrados como PCINT0, PCINT1 así hasta PCINT23, son pines que están preparados para producir una interrupción externa AVR cuando en estos pines se produce un cambio de estado, esto es si sus estados pasan de alto a bajo o de bajo a alto; las interrupción externa AVR se producirá no importando si el pin elegido es una entrada o salida digital.

INTERRUPCIÓN EXTERNA AVR INT0 E INT1

Los pines INT0 e INT1 trabajan de forma independiente pero realizan el mismo tipo de tarea, a través de estos pines se pueden realizar una interrupción externa AVR, siendo la causa o el evento que produzca la interrupción uno de los siguientes motivos:
  • Un 0 o bajo en el  pin INT0 o INT1.
  • Por cambio de estado en el pin INT0 o INT1, esto  es que pase de un bajo a un alto o de un alto a un bajo.
  • Por flanco de bajada ocurrido en el pin INT0 o INT1, esto es que el estado del pin pase de un alto a un bajo.
  • Por flanco de subida ocurrido en el pin INT0 o INT1, esto es que el estado del pin pase de un bajo a un alto.
Para elegir el tipo evento que producirá la interrupción externa AVR y el pin a utilizar, se utiliza el registro llamado registro de control de la interrupción externa EICRA.