sábado, 23 de junio de 2018

Lab 15. Convertidor ADC con Arduino.

               CIRCUITOS DIGITALES
                   PROYECTO N° 04

                      PROYECTO CON ARDUINO


                                  FASE 3:

            "Convertidor Analógico/Digital con                                          Arduino"


OBJETIVOS:


  • Programación del Convertidor A/D con Arduino
  • Estructuras de control en programación 
  • Escritura de datos por puerto serial

DESARROLLO DEL PROBLEMA:


El ADC (Conversor analógico-digital)
Un conversor analógico-digital es un dispositivo electrónico que permite convertir una señal analógica en una señal digital. Las señales analógicas se caracterizan por poder adoptar infinitos valores mientras que las señales digitales sólo pueden tomar ciertos valores determinados. Un ejemplo de señales analógicas son los valores de voltaje que se alcanzan en un punto de un circuito electrónico.
Así pues, en un conversor analógico-digital se transforma una señal de voltaje (analógica) en unos y ceros (digitales) que representan el voltaje medido. A la hora de utilizar este elemento hay que tener en cuenta las siguientes características:



  • Rango de entrada: valores máximo y mínimo de voltaje que se pueden medir. El conversor de nuestro Arduino tiene un rango de entrada de 0 a 5V.
  • Nº de bits: número de bits utilizados para indicar el valor de la medida. En nuestro caso el conversor es de 10 bits lo que significa que a la salida obtendremos valores comprendidos entre 0 y 1023 (de tal forma que 1023 corresponde a 5V y 0 corresponde a 0V).


El programa que vamos a realizar
El programa que vamos a realizar irá tomando medidas del conversor analógico-digital e irá enviando los resultados al ordenador a través de una comunicación serie. Haciendo uso de la herramienta llamada monitor que viene en el IDE podremos ver los resultados.
Una comunicación serie se caracteriza porque los bits se van enviando de uno en uno. Por el contrario, una comunicación paralela se caracteriza por enviar grupos de bits de forma simultánea. A día de hoy, las comunicaciones más extendidas son las comunicaciones serie. Un ejemplo de ello es el conocido USB. De hecho, los datos se envían desde el Arduino hasta el ordenador a través del cable USB.



Preparando la placa
Antes de comenzar a escribir el código debemos preparar la placa. Para ello haremos uso de un potenciómetro. El potenciómetro es un dispositivo de tres terminales que contiene una resistencia en su interior. De esta forma, dos de los terminales están unidos a ambos extremos de la resistencia mientras que el tercero se va desplazando a lo largo de ella. Esto provoca que el valor de la resistencia vista entre éste último terminal y uno de los otros dos sea variable.

Conectaremos los dos extremos del potenciómetro a la salida de 5V de la placa y a la salida de tierra (GND) de la placa. El tercer terminal se conectará a la entrada 0 del conversor analógico-digital.



Con esta configuración conseguimos que la tensión que entra en el conversor analógico-digital varíe entre 0 y 5V (aproximadamente) según vayamos girando el potenciómetro.
Una vez que hemos hecho la conexión sólo queda escribir el programa.
esquema conexion a placa

void setup(){
Serial.begin(9600);
}
A continuación escribiremos el contenido de la función loop (la función que se ejecuta continuamente).
void loop() {
En primer lugar necesitamos un lugar en el que almacenar los datos obtenidos del conversor. Éste lugar se denomina variable. Para declarar una variable (es decir, para solicitar este lugar de almacenamiento) debemos indicar qué tipo de dato vamos a almacenar. Sabemos que el conversor devuelve valores enteros comprendidos entre 0 y 1023 (ya que es de 10 bits). El tipo de variable que permite almacenar un dato entero es el tipo int. A la variable debemos darle un nombre para poder identificarla así que elegiremos el nombre valorADC. Así pues, el código quedará de la forma:
int valorADC;
No obstante, un valor de 0 a 1023 no es intuitivo por lo que necesitamos convertirlo a un valor de voltaje. Dado que este valor tendrá números decimales, el valor obtenido no lo podemos almacenar en esta variable así que creamos otra que sea de tipo float:
float voltaje;
Una vez creadas las variables que necesitamos procedemos a tomar la medida utilizando la función analogRead() y pasándole como argumento el pin desde el cual debe leer el conversor (en este caso el pin 0 del puerto A). Almacenamos el resultado en la variable valorADC:
valorADC = analogRead(A0);
A continuación convertimos este valor a un valor de voltaje sabiendo que un valor de 1023 corresponde a 5V. Por lo tanto, el valor de voltaje será el valor medido multiplicado por 5 y dividido entre 1023:
voltaje = valorADC * 5.0 / 1023.0;
Finalmente enviamos el valor obtenido a través del puerto serie y esperamos 2ms antes de realizar la siguiente medida (ya que el conversor necesita que transcurra un tiempo entre una medida y la siguiente para que los resultados sean correctos):
Serial.println(voltaje);
delay(2);

Por último sólo queda compilar el código y descargarlo en la placa. Una vez que esté funcionando sólo tenemos que abrir el monitor serie (“serial monitor”) del IDE de Arduino y ver el valor de tensión. Si vamos girando el potenciómetro comprobamos cómo va cambiando el valor medido.
El código completo es el siguiente:
void setup() {
Serial.begin(9600);
}
void loop() {
int valorADC;
float voltaje;
valorADC = analogRead(A0);
voltaje = valorADC * (5.0 / 1023.0);
Serial.println(voltaje);
delay(2);

VIDEO DEMOSTRATIVO:







OBSERVACIONES Y CONCLUSIONES:



OBSERVACIONES:


  • Se observó que los dos ejercicios  se dieron con éxito  en el ámbito de la experimentación y que el proyecto que se dejo al ultimo salio del todo correcto con la programación dada.  


  • Se observó problemas con un cable  pensando que era un problema con el potenciómetro   y se midió  con un multimetro y se llego a la conclusión que era el cable lo que tenia de daño.

  • Observó que los LED varían su brillo según se haya realizado en la programación en arduino.

  • El potenciómetro implementado en el circuito tiene una función casi parecida ala de la programación motivo por cual que al variar el potenciómetro aumentara o disminuirá el potenciómetro.

  • El potenciómetro conectado tiene entradas específicas con las cuales ala conectarse  de manera adecuada ara que este funcione correctamente


* CONCLUSIONES:


  • Con la implementación del potenciómetro en el circuito realizado, este según se regule hará que el foco LED varía su brillo.

  • La programación implementada con el programa arduino, tiene la función que de manera automática, varíe la intensidad en el prendido del foco LED.

  • Una vez que se compila y sube el programa de programación tiene la función, que cuando ya se subió al arduino, este ya se ejecutaba en el arduino dando este las funciones y condiciones al circuito que se armo.

  • El programa arduino es muy importante para realizar esta programación que lo podemos compilar en el arduino.

  • Para el funcionamiento cabe recalcar que necesita una resistencia para que esta no se queme pues del arduino sale un voltaje de 5v el cual cuando no se pone una resistencia quemará a nuestro LED.

BIBLIOGRAFIA Y WEBGRAFIA RECOMENDADA:


  • Floyd, Thomas (2006) Fundamentos de sistemas digitales.  Madrid.: Pearson Educación (621.381/F59/2006) Disponible Base de Datos Pearson.
  • Mandado, Enrique (1996) Sistemas electrónicos digitales.  México D.F.: Alfaomega. (621.381D/M22/1996).
  • Morris Mano, M. (1986) Lógica digital y diseño de computadoras.  México D.F.:  Prentice Hall (621.381D/M86L).
  • Tocci, Ronald (2007) Sistemas digitales: Principios y aplicaciones.  México D.F.: Pearson Educación. (621.381D/T65/2007) Disponible Base de Datos Pearson.



Integrantes:


- Manuel Atahualpa Lázaro.

- Arturo Mamani Bernal.

No hay comentarios:

Publicar un comentario