Salidas analogicas con Hormiga 877 y PIC16F877A




Antes de explicar  lo básico de las señales PWM, o "salidas analogicas" veamos un aspecto importante de estas; las salidas de un microcontrolador son enteramente digitales, esto es, que solo pueden estar encendidas, o apagadas, que en el caso del Microcontrolador PIC16F877A montado en la placa Hormiga 877, es 5 Volt  para encendido, o un "1" lógico y  0 Volt para apagado, o un "0" lógico, de lo único además que tiene estas terminales de salida digitales es poder encenderse y apagarse, o pasar de un estado lógico alto a uno bajo muy rápidamente, miles de veces por segundo, por lo tanto , dos cosas son ciertas para el caso de trabajar con terminales digitales del microcontrolador:

  1. Poseen dos valores lógicos predeterminados y únicos, Estado alto (5 Volt) y estado bajo (0 Volt).
  2. Son Capaces de pasar de un estado alto a bajo y viceversa  muy rápidamente.
Dicho lo anterior para poder producir un valor de voltaje intermedio que permita tener diferentes niveles a 0 volt y 5 Volt, el microcontrolador incorpora una serie de módulos y temporizadores que se llaman "Capture/Compare/PWM" y otro que se llama "TIMER 2", estos módulos del microcontrolador trabajan juntos para producir continuamente una serie  valores lógicos altos y bajos repetidos muy rápidamente y a periodos de tiempo constante, produciendo un tren de pulsos con las siguientes características:

  1. Amplitud de Voltaje constante, estos es, como se dijo arriba, el tren de pulsos solo tiene dos valores posibles; encendido y apagado, 5Volt y 0V.
  2. Frecuencia del tren de pulsos constante, es decir, que el tiempo en que se vuelve a repetir una secuencia de encendido y apagado siempre es la misma durante toda la presencia del tren de pulsos.
Diagrama Simplificado de la Operación del Módulo de PWM


A partir de estos dos puntos lo unico variable en este tren de pulsos de frecuencia y amplitud constante es el "ciclo de trabajo", ahora bien esta palabra nueva, simplemente es una comparación del tiempo que la señal está encendida respecto total del ciclo, esto es, el tiempo que la señal dura en estado alto agregado al tiempo que la señal está en un valor bajo; en formula quedaria algo asi:

Donde:
  • Ct = Ciclo de trabajo.
  • Ton = Tiempo de encendido de la señal.
  • Toff = Tiempo de Apagado de la señal.

Cel resultado de esta división siempre queda entre un máximo de 1 y un mínimo de 0 (debido a que se dividen unidades de segundos y por ende el resultado es adimensional) se evitan los decimales resultantes del cociente multiplicando por 100  y por costumbre se dice que el ciclo de trabajo está entre un 0% y un 100% siendo:
  1. 100% de ciclo de trabajo, correspondiente a una señal digital completamente encendida.
  2. 0% de ciclo de trabajo, correspondiente a una señal digital completamente apagada.
Elementos de un tren de pulsos.


Las bondades de cambiar solo el ciclo de trabajo de la señal digital, resultan en que el voltaje promedio a lo largo del tiempo de esta señal digital es el voltaje del valor lógico alto, multiplicado por el cociente del tiempo de encendido entre el tiempo total de ciclo, expresado en formula seria lo siguiente:


Donde:
  • Vout   =  voltaje de salida de la terminal digital promediado en volts..
  • Ton = tiempo de encendido de un ciclo completo en segundos.
  • Toff = tiempo de apagado del ciclo completo en segundos.
  • VHigh = Voltaje de la terminal digital en estado alto.

Dando como resultado al cambiar el ciclo de trabajo una serie de voltajes diferentes proporcionales al tiempo de encendido de la señal digital!.

Viéndolo en modo de gráfica, donde el ciclo de trabajo en porcentaje es el eje horizontal y el eje vertical es el voltaje promedio, quedaría de la siguiente forma:



Esta forma de "codificar" o "enmascarar" una señal analogica o semicontinua  en una señal diferente se le denomina "modulación" y como estamos enmascarando una señal analogica en el tiempo de encendido de una señal digital, que a su vez representa al "ancho" de ese pulso digital, entonces decimos que se esta modulando una señal analogica en el ancho de pulso de un tren de pulsos digitales, o para los amigos, seria "Modulación de Ancho de Pulso", que en inglés es "Pulse Width Modulation", el famoso PWM, y si ya llegaste hasta aquí, ahora si podemos definir un poquito mejor la modulación de ancho de pulso, o tambien comúnmente mencionada "salida analogica":

Una salida analogica es aquella producida por un puerto digital mediante un tren de pulsos continuos oscilantes entre dos valores definidos de voltaje, que mantienen la frecuencia y la amplitud de la señal digital constantes y variando solamente la relación de tiempo de encendido respecto al tiempo total de ciclo, esta técnica de modulación también es conocida como "Modulación de Ancho de pulso" y permite tener voltajes intermedios a los valores lógicos permitidos al poder controlar el voltaje promedio del tren de pulsos mediante el "ancho del pulso digital".



Esta variable -el ciclo de trabajo- es la que modificamos mediante software (alias "la programación") en el PIC 16F877A usando el código fuente de la Hormiga 877 que viene con la preconfiguración de las salidas analogicas, en este post no vamos a profundizar como es que el módulo de PWM funciona, en cambio te vamos a mostrar cómo usando esta librería, serás capaz de generar voltajes analogicos mediante software.

El PIC16F877A posee por defecto dos salidas analogicas, las terminales 5 ( Terminal RC2/CCP2) y 6 (Terminal RC1/CCP1) las cuales operan a una frecuencia de 4.88 KiloHertz  - 4880 Ciclos por segundo -  y en estas podemos cambiar el tiempo de encendido del tren de pulsos  desde un valor mínimo entero de 0 (cero) para un valor mínimo de voltaje 0 Volt, y un valor máximo de 1023 (un mil veintitrés) para un valor máximo de 5 Volt, pudiéndose configurar cualquier valor entero entre ese dos límites.

Estos valores enteros de cero (0) y 1023, corresponden respectivamente a 0% y 100%, estos 1024 valores nos dan un total de 1024 valores distribuidos uniformemente entre 0 Volt y 5 Volt, de modo que el incremento de voltaje por cada punto de Modulación de ancho de pulso es de 4.8mV!, conocido también como resolución del PWM, margen más que decente para poder trabajar con el.

Para poder manejar estas dos salidas analogicas se sigue el siguiente procedimiento:
  1. Se configura la terminal en cuestión como una salida, ya sea la terminal 5 o la terminal 6; esto se logra con la función "pinMode(<terminal>, <direccion>)".
  2. Se modifica el valor de ciclo de trabajo a un valor deseado utilizando la función "analogWrite(<terminal>,<valor>)". este valor es el que puede estar entre 0 (0%) y 1023(100%).
Ejemplo:


Ahora bien, en las terminales analogicas solamente sale un tren de pulsos - con ciclo de trabajo variable programado mediante software- pero sigue siendo una señal de naturaleza digital; para poder obtener un Voltaje variable continuo y cambiar la señal de su naturaleza digital a una forma realmente analogica, podemos realizar un filtro que solo deje pasar el promedio de voltaje representado  por el ciclo de trabajo de la señal digital o tren de pulsos, y esto se logra colocando un resistor de 10 Kilo Ohm en serie con un capacitor o condensador de 10 MicroFaradios en serie y en el extremo del resistor conectar a la terminal analogica a utilizar y el extremo del capacitor conectado a "GND" o a tierra, y por ultimo entre la conexión existente del resistor y el capacitor  tendremos la señal analogica variable, programada por softwae, las conexiones se muestran en la figura.

Filtro para mostrar Voltaje Promedio
y asi se veria el circuito completo.

Circuito para probar la salida Analogica.

Esto seria todo por el dia de hoy, nos seguimos leyendo en otra ocasión... nos vemos, lean, sean curiosos y siempre están preguntando..... hasta la próxima.
:)

Comentarios

Entradas más populares de este blog

Abriendo Proyectos con MPLAB X para PIC16F877A y Hormiga 877.

Electronica Basica : Encender y apagar un LED con Hormiga 877

Instalación del Entorno de Desarrollo Integrado MPLAB X.