¿Cómo alimento mi Arduino?


Así que vamos a hacer un repaso de algunas de las opciones de alimentación más comunes de las placas Arduino. Para alimentar tu proyecto puedes repasar esta lista en orden y elegir la primera fuente que cumpla con las características que necesitas o deseas, porque voy a repasarlas de las más sencillas a las más especiales.

El puerto USB

Allá donde haya un puerto USB puedes alimentar tu Arduino. Sin más complicaciones. El puerto USB es la fuente de alimentación más fácil y segura de utilizar con Arduino. Si estás aprendiendo, utiliza una de las siguientes opciones USB siempre que puedas.

El puerto USB del ordenador

Cuando conectamos nuestro Arduino al ordenador por el puerto USB ya lo estamos alimentando:
  • Voltaje de 5V de forma continua. Estupendo para trabajar con él y alimentar todo tipo de accesorios.
  • Puede entregar hasta 500 mA.
  • Necesitamos el ordenador. ¡Qué fuente de alimentación más cara!
  • Por lo general el ordenador tiene que estar encendido para que los puertos USB tengan alimentación (aunque depende de las capacidades de tu ordenador).
  • Si le pedimos más de 500mA podemos dañarlos y dejarlos inservibles. Están protegidos de exceso de corriente, ¿pero quién quiere poner la protección a prueba? 

Cargador de móvil


Igual que podemos alimentar Arduino con el puerto USB del ordenador, podemos hacerlo con cualquier fuente de alimentación USB, como un cargador de móvil. Muchas placas Arduino no tienen conector MicroUSB como los móviles, pero puedes coger uno de esos cargadores que tienen un puerto USB y el cable se puede desconectar. ¡A esos cargadores puedes ponerle cualquier cable USB!
  • Voltaje de 5V de forma continua. Estupendo para trabajar con él y alimentar todo tipo de accesorios.
  • Pueden entregar al menos 1A de corriente (excepto los más antiguos). Los más modernos superan los 2A. La corriente máxima la encontramos en la etiqueta del cargador.
  • No pasa por el regulador de 5V de Arduino, que está limitado a 800mA. Pasa por un transistor P-MOSFET que soporta corrientes de 2,4A de forma continua.
  • Muy económico.
  • Fácilmente disponible.

Powerbank

¡Fuera cables! Los powerbanks tienen puertos USB, ¿verdad? Pues entonces podemos alimentar nuestro Arduino.

Voltaje de 5V de forma continua. Estupendo para trabajar con él y alimentar todo tipo de accesorios.
  • La corriente máxima depende del estado de carga de la batería interna. Cuando está llena fácilmente supera 1 y 2A.
  • No pasa por el regulador de 5V de Arduino, que está limitado a 800mA. Pasa por un transistor P-MOSFET que soporta corrientes de 2,4A de forma continua.
  • Muy económico.
  • Fácilmente disponible.
  • ¡Vivan los proyectos móviles!
  • Recargable por el conector de carga del powerbank, sin circuitería adicional.
El pin VIN

En los pines de Arduino puedes encontrar uno etiquetado como VIN. ¡Úsalo con cuidado! El pin VIN tiene dos funcionalidades:

Si estamos alimentando Arduino por cualquiera de sus conectores, en el pin VIN tendremos el voltaje bruto de alimentación. Es decir, si estamos alimentando Arduino por USB, en VIN tendremos 5V que podemos utilizar para alimentar otros accesorios. Si estamos alimentando Arduino a través del conector jack, en VIN tendremos el mismo voltaje que tenga la fuente de alimentación que estamos utilizando.

Si NO estamos alimentando Arduino por ninguno de sus conectores, podemos utilizar el pin VIN y un GND para alimentar la placa. Las características de la fuente son las mismas que las del conector jack, pues hace uso del mismo regulador de 5V para regular su voltaje.
  • Sin necesidad de conector. Solo necesitas 2 cables: el negativo a GND y el postivo a VIN. 
  • Perfecto para portapilas y otras fuentes de alimentación sin conector. 
  • Puedes utilizar reguladores de tensión externos.

Aplicación de la función map()

Controlar la posición del eje de un servomotor con un potenciómetro

En ocasiones, los valores que obtenemos de una lectura de un pin analógico, como un sensor, pueden estar fuera de una escala determinada, y tenemos que convertirlos a otro rango para poder usarlos.

El valor de salida que podemos darle al servomotor es de 0 a 180, que se traduce en la posición del eje, pero los datos que leemos del sensor pueden llegar a 1024. Por esto debemos mapear el resultado, es decir , dejarlo en unos valores de entre 0 y  180.

La función “map” del programa asigna un valor máximo y un valor mínimo a un rango dado.

El valor máximo suele estar en 1024, pero el mínimo en nuestro caso será 0. Por eso en el código se especifican las siguientes valores:

valorPotenciometro = analogRead(potenciometro);
posicion = map(valor, 0, 1023, 0, 180);

valor = map(valor que recibo, de Mínimo, de Máximo, a Mínimo, a Máximo)

Descripción

Re-asigna un número de una gama de valores a otra.

Parámetros


valor que recibo: el número a mapear   valorPotenciometro=(analogRead(potenciometro)
deMínimo: el límite inferior del rango actual del valor  (0)
deMáximo: el límite superior del rango actual del valor (1023)
aMínimo: el límite inferior del rango resultado del valor (0)
aMáximo: el límite superior del rango resultado del valor (180)

Valor retornado por la función

El valor mapeado. (posicion)

La función map () usa números enteros por lo que no va a generar decimales, cuando las operaciones matemáticas podrían indicar que debería hacerlo. Los decimales remanentes se truncan, y no son redondeados o promediados.

Nota: No restringe los valores dentro del rango, ya que los valores fuera de la gama a veces se entiende que son útiles. La función constrain () se puede usar antes o después de esta función, si se desean límites de los intervalos.

El código correspondiente al void loop(), se corresponderá con las siguientes acciones:
  1. Guardo en valor lo que marca el potenciómetro.
  2. Mapeo el valor que su rango original es de 0-1023 a 0-180 que es lo que me interesa para controlar la posición del eje del sermovotor (0-180º).
  3. Posicionar el servomotor.

// sketch para controlar la posición del eje de un servomotor

#include

// Incluimos la librería para poder controlar el servo

int valorPotenciometro=0;
int posicion=0;
// Declaramos la variable para controlar el servo
Servo servoMotor;

void setup() {
  // Iniciamos el monitor serie para mostrar el resultado
  Serial.begin(9600);

  // Iniciamos el servo para que empiece a trabajar con el pin 9
  servoMotor.attach(9);
}

void loop() {
 valorPotenciometro=analogRead(0); //Leemos el valor del potenciometro
    posicion = map(valorPotenciometro, 0, 1023, 0, 180);
    servoMotor.write(posicion);
   
}
 






Ejemplo 2 Control del brillo de un diodo led

#define pinLed 5
int valorPotenciometro=0;
int brillo=0;

void setup() {
 pinMode(pinLed, OUTPUT);

}

void loop() {
valorPotenciometro=analogRead(0); //Leemos el valor del potenciometro
    brillo = map(valorPotenciometro, 0, 1023, 0, 255);
 
  analogWrite(pinLed,brillo);
}
 






¿Qué son los potenciómetros?

Un potenciómetro es un resistor eléctrico con un valor de resistencia variable y generalmente ajustable manualmente. Los potenciómetros utilizan tres terminales. En muchos dispositivos eléctricos los potenciómetros son los que establecen el nivel de salida. Por ejemplo, en un altavoz el potenciómetro ajusta el volumen; en un televisor o un monitor de ordenador se puede utilizar para controlar el brillo.


El valor de un potenciómetro viene expresado en ohmios (símbolo Ω) como las resistencias, y el valor del potenciómetro siempre es la resistencia máxima que puede llegar a tener. La mínimo lógicamente es cero. Por ejemplo un potenciómetro de 10KΩ puede tener una resistencia variable con valores entre 0Ω y 10.000Ω.

Los potenciómetros que encontramos en el mercado vienen con un valor de resistencia determinado. Estos valores han sido estandarizados y solamente encontraremos valores de resistencia específicos, por ejemplo 1K, 5K, 10k, 50k, 100k, etc. Este valor de resistencia lo podemos medir entre las terminales 1 y 3 del potenciómetro.

Su símbolo es básicamente, el símbolo de una resistencia con una flecha que nos indica que podemos variar su valor.



La capacidad de variar la resistencia entre 2 terminales y mantenerla entre sus extremos permite que los potenciómetros se utilicen como variadores de tensión. En ciertas aplicaciones se necesita establecer un nivel de tensión de referencia. Para esto se emplea un potenciómetro conectando la patas 1 y 3 a una fuente de voltaje y a tierra, respectivamente. Veamos el diagrama:

En Arduino vamos a utilizar los potenciómetros para variar por ejemplo la intensidad de luz de un diodo led, variar la velocidad de giro de un motor, variar la posición del eje de un servomotor, etc..

El potenciómetro tiene tres patillas, la 1 la vamos a conectar a 5 v, la 3 a GND y la central a una entrada analógica (en esta patilla obtendremos un valor variable comprendido entre 0 y 5 v).


Los valores medidos por el pin analógico pueden ser utilizados como valores de una variable de nuestro programa para hacer algo o tomar decisiones, como, por ejemplo, variar la intensidad de luz. Para ello, usaremos la función analogRead.

Esta función devolverá un valor comprendido entre 0 y 1023, que generalmente se guardará en una variable.

analogRead(pin)

En el siguiente ejemplo utiliza un potenciómetro para encender cinco diodos LEDs, en función de la posición en la que se encuentre el cursor.



 Acceder al sketch: Encendido de 5 diodos leds