domingo, 1 de enero de 2017

Ejemplos - Basics - AnalogReadSerial






Con esta entrada comenzaremos a repasar la serie de ejemplos que el IDE Arduino trae instalado para permitirnos aprender a usar las funciones más básicas de nuestro placa.

En este caso vamos a revisar el primer ejemplo de los considerados básicos, relacionados con la lectura de una señal de tensión analógica.


Para esta práctica vamos a necesitar repasar unas cuantas ideas que vimos anteriormente:

  1. ¿Qué es un voltaje?
  2. ¿Qué es la ley de Ohm?
  3. ¿Qué es un divisor de tensión?
  4. ¿Qué es un potenciómetro?
  5. ¿Qué es una señal analógica?
  6. ¿Qué es un convertidor analógico digital?
  7. ¿Cuántos pines tiene nuestro Arduino capaz de leer señales analógicas?

Adicionalmente vamos a necesitar introducir una señal analógica variable por uno de los pines analógicos de nuestra placa.  Para ellos usaremos vamos necesitaremos aplicar lo que hemos aprendido sobre los divisores de tensión.

Sabemos que si colocamos nuestro voltímetro entre dos resistencias conectadas a una diferencia de potencial concreto, el voltaje que mediríamos vendría dado por la formula


Y cómo aplicando la Ley de Ohm al circuito completo sabemos que V= I*(R1+R2), si despejamos I de esta ecuación no quedaría que I= V/(R1+R2), y sustituyéndolo en la ecuación anterior donde V2=I*R2, obtendremos que


Esto que estamos haciendo de forma manual con un polímetro conectado entre los extremos de la resistencia R2, también lo podríamos hacer gracias a los pines analógicos de nuestra placa Arduino.


Por ejemplo, imaginemos que no tenemos un polímetro a mano y queremos conseguir una tensión de 2.5 voltios en nuestra placa, aunque sabemos que los únicas tensiones que suministra son de 5V y de 3.3V. Para ello con lo que hemos aprendido más arriba, podría ser suficiente poner dos resistencias de igual valor (por ejemplo 10K) y coger la tensión en el punto donde se unen ambas. Con ello teóricamente obtendríamos los 2.5voltios, pero para estar seguros de que no nos hemos equivocado, como tenemos una placa Arduino con 6 pines analógicos, conectaremos esa señal a un pin analógico e intentaremos medir el valor con un programita sencillo.

Esto lo podríamos esquematizar de la siguiente manera




Ahora solo nos queda ver cómo podemos ver el valor de voltaje que está midiendo nuestro Arduino. Para ello tendremos que usar una función que se llaman analogRead(), que solo requiere que le pasemos un parámetro (el pin que estemos usando) y te devolverá un valor entero comprendido entre 0  y 1023. El 0 representará a 0 voltios y el 1023 a 5 voltios.



Para entender el porqué de esta traducción de números, es mejor que repaseis el capítulo dedicado a al convertidor analógico digital.

De forma resumida podemos decir que en los pines analógicos de nuestro Arduino UNO, tenemos unos convertidores Analógicos Digitales (ADC) de 10 bits, esto es, que son capaces de trocear los 5 voltios máximos de tensión que son capaces de medir en 2 elevado a 10, o lo que es lo mismo 1024 trocitos.

Ahora solo nos queda escribir un pequeño código para que podamos ver en pantalla, el valor que estamos registrando por el PIN analógico seleccionado (en nuestro ejemplo el A0). Que debería ser algo parecido a 511 (el valor entero más proximo a dividir 1023 entre 2).

Pues bien esto mismo que hemos aprendido aplicándolo a un divisor de tensión, lo podríamos aplicar para medir la tensión de cualquier sensor analógico que tengamos a mano. Solo necesitaríamos que nos suministrara una tensión comprendida entre 0 y 5 voltios, y conectarlo al PIN analógico donde querramos registrar los valores. Algo similar lo podemos simular reemplazando el sensor con un potenciómetro.


Por lo que si ahora conectamos un cable a un pin analógico de nuestra placa Arduino, como pudiera ser cualquiera de los marcados como "Analog In"



podremos leer la señal analógica  a través de un PIN analógico seleccionado.


Y ya sabéis, si tenéis alguna sugerencia o duda, no tenéis más que mandarnos un correo a



e intentaremos responder a vuestra pregunta lo antes que podamos.


No hay comentarios:

Publicar un comentario