| |
En la figura 1 vemos el ADC armado junto con circuito de prueba en Protoboard. El módulo ADC propuesto para el presente circuito está orientado a utilizarse cuando se tenga que tomar la decisión de elegir de entre el diseño de los incisos b) ó c) de los anteriormente descritos. Por otra parte, en este texto se está exponiendo un circuito que tiene aplicación inmediata, ya que éste comienza a operar tomando en cuenta tanto los niveles eléctricos del microcontrolador, como a la mayoría de los sensores que pueden emplearse, y por último sólo se tiene que seleccionar el sensor adecuado dependiendo de la variable física a medir para que, de inmediato, el ADC entre en operación. El módulo ADC para microcontrolador tiene como base un circuito integrado identificado como IC1 (matrícula ADC0804) que internamente posee un convertidor analógico a digital, este convertidor trabaja mediante el empleo de la técnica de conversión conocida como de “aproximaciones sucesivas”. En la figura 2 vemos el ejemplo de aplicación del método de aproximaciones sucesivas. Vamos a describir brevemente, la forma de actuar de la técnica de conversión basada en aproximaciones sucesivas. En primera instancia, en el ADC0804 el rango total de operación que también recibe la denominación de voltaje de entrada analógico, es dividido por la mitad en 2 partes iguales, el ADC0804 se encarga de revisar si el valor analógico que está presente en la entrada se encuentra dentro de la mitad superior, si la respuesta es afirmativa se generara un “1” lógico y si la respuesta es negativa se generará un “0” lógico. Cuando se presenta el “1” lógico como respuesta, está indicando que el valor analógico se encuentra en la mitad superior del rango de operación, por lo tanto se tiene que desechar la mitad inferior del rango. Mientras se tenga una respuesta igual a “0” lógico, la interpretaremos como que el valor analógico que pretendemos convertir se encuentra dentro del rango inferior de operación, motivo que provocará que la parte superior del rango de operación sea desechada. El eliminar una parte del rango de operación, involucra de forma inherente el empleo del método de aproximaciones sucesivas, en el cual a manera de resumen podemos decir que se va encontrando el valor digitalizado de la señal analógica que se está convirtiendo por medio de la división por la mitad del rango total de operación. La mitad restante se vuelve a dividir en 2 partes iguales y nuevamente se tiene que determinar en cuál de las 2 partes (inferior o superior) se encuentra el valor analógico, lo que obligatoriamente nos arrojará como resultado un “0” lógico o un “1” lógico, por lo que el rango original en cada interacción se va haciendo más pequeño. El número de interacciones o veces en que se divide el rango original, depende del número de bits que posea el convertidor, y como en este caso se cuenta con un total de 8 bits, entonces el proceso de dividir el rango de operación por la mitad y preguntar si el valor analógico se encuentra en principio sobre la mitad superior, se repite un total de 8 veces una por cada bit, y como en cada proceso de dividir por la mitad se genera como respuesta un “1” o un “0” lógicos, estaremos encontrando el correspondiente valor digitalizado del valor analógico. Ya hemos visto que el ADC0804 (IC1) cuenta con una salida digital de 8 bits, que permite realizar diseños de instrumentos de medición para operar directamente con un microprocesador o con una forma de ejecución totalmente independiente. De acuerdo a la filosofía de trabajo que fue concebida para este proyecto, el módulo ADC para microcontroladores puede estar conectado al puerto de entrada de un microcontrolador o trabajar de forma solitaria, ya que el resultado de la conversión de cualquier variable física puede visualizarse a través de un conjunto de leds que tiene integrado el módulo ADC. | |
| |
El elemento principal del módulo convertidor ADC, como ya se había comentado en líneas anteriores, es el circuito integrado identificado como IC1 cuya matrícula es ADC0804, y se trata precisamente del circuito integrado que se encarga de convertir los valores analógicos de voltaje en sus correspondientes combinaciones binarias, en la figura 3 se muestra el diagrama esquemático completo del módulo ADC. El ADC0804 posee 3 líneas de control para realizar el proceso de conversión de un valor analógico, estas líneas son las terminales 1, 2 y 3, habilitación, lectura y escritura sucesivamente. Para comenzar el proceso de digitalización debemos habilitar al circuito IC1 a través de la línea 1, posteriormente indicarle que se va a leer un dato analógico a través de la línea 2 y por último, para que sea desplegado el valor digitalizado a través de las terminales correspondientes, necesitamos indicárselo al ADC0804 por medio de la terminal 3. Cuando el ADC0804 ha terminado con el proceso de conversión se origina una señal en la terminal 5. Para que se cumpla con el propósito de que el presente circuito funcione de forma automática, esto es, sin necesidad de controlar las líneas 1, 2 y 3, tenemos que “engañar” al ADC0804 conectando la terminal 1 y 2 a GND de manera permanente para que siempre esté activada la función del convertidor, y al mismo tiempo siempre esté leyendo valores analógicos, y por otra parte la línea 5 se retroalimenta a la línea 3, permitiendo con esto que cada vez que termine de realizar un proceso completo de conversión se avise a sí mismo que ya digitalizó un valor, por lo que procederá de forma automática a desplegarlo en las salidas correspondientes. Aunque el diseño contempla que el convertidor comience a operar tan sólo se le conecte el voltaje de alimentación, existe un botón con re-posicionamiento automático (push boton) identificado como S1, el cual se tiene que presionar si es que el convertidor no comienza a trabajar de forma automática. En la figura 4 vemos el circuito impreso del módulo convertidor analógico digital. Las terminales 4 y 19 del ADC0804 sirven para que por medio del resistor R11 (10kohm) y el capacitor C2 (150pF) se genere una señal de reloj, que es la que marca el ritmo de operación del convertidor. La terminal 9 del ADC0804 se emplea para fijarle un voltaje de referencia al convertidor, y es a través de este valor de voltaje como se establece el voltaje del rango de operación, el valor de voltaje que tiene que ser aplicado a esta terminal está determinado por la siguiente expresión: Vref = Vrango/2, por lo tanto el voltaje de referencia tiene que ser la mitad del valor total del rango de operación del convertidor, quedando la expresión como sigue Vrango = Vref/2. Para que quede claro vamos a realizar lo siguiente: si el rango de operación es de 0V a 4V, significa que el rango de operación es de 4V, entonces el valor de voltaje que se tiene que aplicar a la terminal 9 debe ser de 2V. Para este módulo se tiene contemplado la utilización de un rango de 0V a 5V, por lo que se está aplicando un valor de 2.5V a la terminal 9 del ADC0804, a través del divisor de voltaje formado por los resistores R9 y R10 ambos de 10kohm, en caso de que requiera de otro valor de rango de operación, se tendrían que modificar los valores de R9 y R10 para ajustar el valor del voltaje de referencia. Las salidas por donde se entrega el valor digitalizado están identificadas como BD0, BD1, BD2, BD3, BD4, BD5, BD6 y BD7, éstas se encuentran ubicadas en las terminales de forma correspondiente de la 18 a la 11, estas terminales de salida para nuestro módulo convertidor ADC cuentan con un led por cada terminal, para que de esta forma se visualice el estado lógico que guarda el bit correspondiente, los resistores identificador de R1 a R8 sirven para limitar el nivel de corriente que consumen los led. También sobre las terminales de salida del ADC0804 se encuentra un conector que es el encargado de transportar los estados lógicos generados durante el proceso de conversión hacia un puerto de entrada de un microcontrolador, e inclusive hacia el puerto paralelo de una PC. El conector identificado como JP2 sirve para hacer llegar el valor analógico que está entregando el sensor de cualquier variable física, que puede ser por ejemplo temperatura, humedad, luminosidad, presión etc. Lo importante del sensor es saber cuál es el valor de su rango de operación para, en función de este dato, ajustar o fijar el valor del voltaje de referencia de la terminal 9 del ADC0804, recordando en todo momento que el valor máximo del rango de operación no debe superar los 5V. En la figura 5 vemos los componentes colocados en el impreso del módulo ADC para Microcontrolador. Por último, en el conector JP1 se hace llegar el voltaje de alimentación que puede ser el mismo con el cual es alimentado el microcontrolador, o sea 5VCD, y para que las posibles fluctuaciones de voltaje no afecten el desempeño del convertidor, se le agrega un capacitor de 10µF (C4). Para finalizar, podemos mencionar que este módulo convertidor es muy útil, prácticamente universal y fácil de conectar, ya que en el borne de conexión se cuenta con un peine de terminales que fácilmente pueden insertarse en un protoboard para aplicaciones educativas o de desarrollo, o en su defecto realizar las perforaciones necesarias sobre el circuito impreso donde se vaya a instalar. |
miércoles, 3 de febrero de 2010
MODULO ADC PARA MICROCONTROLADOR
martes, 2 de febrero de 2010
Creando una Aplicacion Windows Paso a Paso usando Visual Basic y Visual CSharp - Parte 1
En pleno comienzo en la programación en .net, muchos hemos tropezado en la misma piedra, es decir, que no encontramos el material adecuado para aprender a desarrollar algo sencillo o por lo menos que nos indique por donde comenzar. Este tutoríal no pretende ser el mejor pero al menos les ayudara a orientarse y así entrar de lleno a este maravilloso mundo de la programación.
Para empezar creo que es conveniente hacer un repaso o mejor aun aprender ciertos términos:
Programación Orientada a Objeto: es un paradigma dentro de la programación ya que su base fundamental es el tratado de objetos y sus interacciones para el diseño y desarrollo de programas para computadores, eso en cuanto a lo técnico ahora viéndolo mas al natural podría ser llevado a la vida cotidiana, por ejemplo: un Carro es un objeto si a eso vamos. En la programación un objeto puede ser un simple Botón ya que la Programación orientada a Objeto incluye varias técnicas donde veremos herencias, polimorfismo y encapsulamiento.
Como este tema es extenso les invito a leer la publicación hecha en Wikipedia
y a su ves les invito a visitar el DCE2005.com que tambien puede nutrirles de mas información.
Teniendo un poco claro que es la Programación Orientada Objeto debemos seleccionar el entorno de trabajo ideal por lo general en Visual Studio.net 2003, Visual Studio 2005 o la reciente versión Visual Studio 2008 los lenguajes no han sido muy variantes es decir que con cualquiera que trabajes te sentirás cómodo así que para no entrar en conflicto jeje trabajare con la versión intermedia J que seria Visual Studio 2005 (Pueden descargar la Express desde el sitio de Microsoft http://www.microsoft.com/express/
y no preocuparse por licenciamientos J).
Ya seleccionamos el entorno de trabajo ahora el tipo de lenguaje a utilizar y así poder explotar al máximo nuestras habilidades, Visual Studio ofrece una diversidad de lenguajes como lo son:
Visual Basic (A partir de ahoria VB): Uno de los Lenguaje preferido por los programadores en el mundo este muestra sus raíces con la salida de Basic 1975 en los años 90 pasa a llamarse Visual Basic para el 98 sale la suite de Visual Studio 6 donde VB6 pasa a ocupar casi el 70% de la programación de aplicaciones y al pasar de los años aun hay muchas personas que siguen usando este gran lenguaje, uy que historia se me salieron las canas jejeje, bueno en fin para el 2002 sale con una cara mejorada permitiendo a los desarrolladores poder tocar la Web y hacer grandes cosas que año tras año van mejorando la gente de Microsoft.
Visual C++: El C++ (pronunciado "ce más más" o "ce plus plus") es un lenguaje de programación, diseñado a mediados de los años 1980, por Bjarne Stroustrup
, como extensión del lenguaje de programación C
. aquí si no me detengo a conversar ya que muy poco conocí este lenguaje, Se puede decir que C++ es un lenguaje que abarca tres paradigmas de la programación: laprogramación estructurada
, la programación genérica
y la programación orientada a objetos
. Pero esta demas decirles que es un potente lenguaje capaz de desarrollar drivers y por que no hasta Sistemas Operativos al igual que el lenguaje C.
Visual C# o CSharp (A partir de ahorita VC#): Este es uno de los lenguajes más jóvenes que hay en el mercado, se puede decir que su fácil forma de utilizar, dinamismo, velocidad de programación hace que tenga cierto parecido a Visual Basic y su robustes, potencia que sobresale de lenguajes como C y C++, esta combinación hacen de este lenguaje el preferido en la presente oleada del desarrollo de software. En resumidas cuentas C# es la Combinación de los lenguajes de bajo nivel como C/C++ con los lenguajes de Alto nivel como Visual Basic. Unas de las tantas ventajas que tiene este lenguaje es que puedes desarrollar Video Juegos con XNA para ambiente Windows y XBOX360 y Desarrollar aplicaciones de control para Robotics.
Visual J#: Es un lenguaje transicional para programadores del lenguaje de programación Java
y del lenguaje J++ de Microsoft, creado con la intención de que ambos puedan usar sus conocimientos actuales para crear aplicaciones en la plataforma .NET
deMicrosoft
. J# se supone compatible con Java, tanto a nivel código fuente, como binario. En teoría, J# puede ser usado para transicionar aplicaciones que usan bibliotecas de terceros, aún cuando el código de éstas no este disponible.
Luego de navegar por la historia de estos lenguajes ya podremos definirnos en que lenguajes empezar a trabajar… por lo general y para un mejor entendimiento trabajaremos con los dos lenguajes mas populares que son VB y VC#.
Uppss quizas se han preguntado como pueden integrase estos lenguajes dentro de una mismo entorno, la respuesta es muy sencilla dentro de la Plataforma .net a traves del .Net Framework o en sus siglas en español Marco de Trabajo de .net, quizas algunos de ustedes vienen de Visual Basic 6 y mas si les ha tocado instalar una aplicación o en sus universidades cuando el profesor les pide correr su aplicación y no esta aplicación no encuentra las Dlls o las OCX uy que dolor de cabezaJ. Bueno el .Net Framework permite a los desarrolladores tener a su disposición una serie de librerias que les permitira tener un mejor rendimiento a la hora de realizar sus aplicaciones y lo mejor de todo es que estas son gratuitas y hasta se instalan con el Windows Update pero en el peor de los casos que no lo tenga instalado se tendría que descargar.
Un mejor concepto El .NET Framework se basa en un nuevo entorno de ejecución de lenguaje común (CLR - Common Language Runtime). Este motor de ejecución proporciona un conjunto de servicios comunes para los proyectos generados en Visual Studio .NET, Visual Studio 2005 y Visual Studio 2008, con independencia del lenguaje. Estos servicios proporcionan bloques de desarrollo fundamentales para aplicaciones de cualquier tipo, para todas las capas y niveles de la arquitectura de aplicaciones. Gracias al CLR, todos los lenguajes .NET utilizarán los mismos archivos del entorno de ejecución. Esto significa que no es necesario distribuir librerías de entorno de ejecución específicas para Visual Basic ya que los archivos del entorno de ejecución de .NET se instalarán automáticamente en las futuras versiones de Microsoft Windows®.
Y ahora que es Plataforma .net: Es un conjunto de tecnologías diseñadas para transformar Internet en una plataforma informática distribuida a escala completa. Proporciona nuevas formas de desarrollar aplicaciones a partir de colecciones de Servicios Web. La plataforma .NET soporta totalmente la infraestructura existente de Internet, incluyendo HTTP, XML y SOAP.
La plataforma .NET proporciona:
- Un modelo de programación coherente e independiente del lenguaje para todas las capas o niveles de una aplicación.
- Una interoperabilidad transparente entre tecnologías.
- Una fácil migración desde tecnologías existentes.
- Un completo soporte de tecnologías de Internet independientes de la plataforma y basadas en estándares, incluyendo Hypertext Transfer Protocol (HTTP), Extensible Markup Language (XML) y Simple Object Access Protocol (SOAP).

