# data[].attributes.body
Leer Wiki.

# data[].attributes.attachment_link.readable_text
En este artículo te voy a explicar cómo podemos hacer un medidor de carga de baterías y pilas. Lo haremos a través del montaje de un circuito con Arduino.

Suele ser muy típico que tengamos por casa diferentes aparatos eléctricos que utilizan pilas o baterías. En ocasiones, dudamos si el dispositivo está roto o las pilas se han gastado.

Gracias a este proyecto esto ya no será un problema. El medidor de carga de baterías y pilas te dará la solución.

Objetivo del medidor de carga de baterías y pilas con la placa de Arduino

Utilizaremos Arduino para leer a través de una entrada analógica el voltaje que suministra una pila. Dependiendo de este voltaje, encenderemos un LED de un color. Si la pila está nueva, se encenderá un LED verde. Si la pila no es nueva pero se ha consumido parte de su energía encenderemos un LED amarillo. Por último, si la pila está gastada o no suministra el suficiente voltaje, encenderemos un LED rojo.

Debemos de tener mucho cuidado con el tipo de pila y de batería que vamos a medir. Es muy peligroso suministrar más de 5V a los pines analógicos de Arduino. Si lo que queremos es medir pilas, lo más típico, solo podremos hacerlo con pilas AA, AAA, C y D. Son las que se utilizan en los mandos de la televisión, en juguetes e incluso para alimentar Arduino.

Mucho ojo con una pila de 9V, las cuadradas. Como bien he dicho antes, estas pilas superan con creces el límite de 5V. También debemos de llevar cuidado con las baterías ya que dependerá del voltaje que suministren. Comprueba antes de conectar que realmente es menor o igual que 5V.

Medir más de 5V por alguna entrada analógica puede dañar la placa.

Componentes de Arduino que vamos a utilizar

Vamos a ver que tipo de componentes necesitamos para este circuito.

Arduino UNO o cualquier placa de Arduino

Protoboard donde conectaremos los componentes

Cables para la conexión entre los componentes y la placa

3 resistencias de 220 Ω

1 resistencia de 10 kΩ

1 LED rojo de 5 mm

1 LED amarillo de 5 mm

1 LED verde de 5 mm

Como ves se trata de un circuito muy simple. Con 3 LEDs y 4 resistencias es suficiente para construir un medidor de carga de baterías o pilas con Arduino.

Montando el circuito con Arduino

Una vez recopilada toda la información, pasamos al montaje. En la siguiente imagen te muestro cómo debes conectar los diferentes componentes. Presta atención sobre todo en las resistencias.

Vamos a ver como se han conectado los componentes. Lo primero son los LEDs. Cada uno está conectado en serie con una resistencia de 220 Ω para alargar la vida útil de los mismos. El LED verde está conectado al pin 2, el LED amarillo está conectado al pin 3 y LED rojo está conectado al pin 4. Esto es importante recordarlo para cuando veamos la programación.

Para medir la batería he colocado una resistencia pull-down. Este tipo de resistencia lo que hace es mantener un estado lógico bajo es decir, a 0V. Es importante utilizar este tipo de resistencias ya que, cuando no tengamos la batería o pila conectada para medir, tenemos un estado indeterminado a la entrada del pin analógico, lo que hace que oscile y puede que hasta que se encienda algún LED. Puedes probar a quitar esta resistencia y verás el resultado.

El polo positivo de la batería lo conectamos a la resistencia de pull-down y a la entrada analógica A0. El otro extremo de la resistencia a tierra. Por último, el polo negativo de la batería debemos conectarlo a la tierra de Arduino.

Cuidado con invertir las polaridades es decir, el positivo con negativo o viceversa.

Es más que aconsejable que todos los componentes tengan la misma referencia a tierra. Todos deben estar conectados al mismo pin GND de Arduino.

Programando el medidor de carga de baterías y pilas con Arduino

Ahora toca la parte de la lógica y la programación. Lo primero que debemos hacer, es plantear el problema o el algoritmo que queremos conseguir. Una vez que lo tengamos claro ya podemos empezar a programar. Como siempre digo, un algoritmo es una secuencia de pasos ordenados que debemos seguir para conseguir un objetivo. En este caso nuestro objetivo es medir la carga de de una pila o batería con Arduino.

Algoritmo

En esta sección voy a detallar los pasos que debemos seguir sin escribir ni una línea de código, eso lo haremos luego cuando tengamos claro lo que tenemos que hacer.

1. Leer el pin analógico donde tenemos conectada la pila

2. Calculamos el voltaje para el valor que nos ha dado

3. Evaluamos el voltaje

1. Si es mayor o igual que el umbral máximo
Encendemos LED verde

2. Si es menor que el umbral máximo y mayor que el umbral medio
Encendemos LED amarillo

3. Si es menor que el umbral medio y mayor que el umbral mínimo
Encendemos LED rojo

4. El resto de los casos
No enciende ningún LED

4. Apagamos todos los LEDs

Analizando el algoritmo que vamos a implementar, sacamos como conclusión que vamos a utilizar 3 umbrales:

Umbral máximo: indicará que la pila está totalmente cargada.

Umbral medio: de este umbral al umbral máximo la pila se ha usado pero todavía tiene energía.

Umbral mínimo: de este umbral al umbral medio la pila no suministra suficiente energía. Por debajo de este umbral interpretamos que no hay una pila conectada.

Código nativo de Arduino

Vamos a ir viendo por partes el código del medidor de carga de baterías con Arduino.

Variables y constantes

Las constantes las vamos a utilizar para almacenar los pines donde conectaremos los LEDs y el pin analógico donde conectaremos la pila. Los umbrales serán variables aunque podríamos utilizar también constantes. Por último declararemos 3 variables para almacenar el valor que nos devuelve el pin analógico, el voltaje en ese pin y el tiempo de espera para el parpadeo de los LEDs.

Declaramos las constantes con los pines donde conectamos los LEDs y el pin analógico.

Lo siguiente es declarar las variables y los umbrales. Estos últimos dependerán del tipo de pila. En este caso yo voy a hacer las pruebas con una pila AA

Función setup

En la función setup inicializamos el monitor serie y ponemos los pines de los LEDs en modo salida.

Función loop

Comenzamos la función loop que se r epetirá continuamente. Lo primero es leer el pin analógico y almacenarlo en la variable analogValor.

Calculamos el voltaje. Es una simple regla de 3. Si 5V es 1024, con dividir 5 entre 1024 y multiplicarlo por el valor que nos da el pin analógico, ya tenemos el voltaje. Así de sencillo. Para comprobar que todo está bien lo mostramos por el monitor serie.

En la siguiente parte vamos a decidir que LEDs debemos de encender. Esto lo hacemos a través de las estructuras condicionales if.

Por último, apagamos todos los LEDs. Así comenzamos en la siguiente iteración con el estado inicial todos apagados. Como estamos hablando de muy poco tiempo, microsegundos, esto no afectará al funcionamiento.

Código completo

A continuación te dejo el código completo para que no tengas que ir copiando parte por parte. No es muy buena práctica copiar y pegar sin leer lo anterior. Si realmente quieres aprender, sigue todos los pasos e intenta tu mismo escribir el código. Solo así, aprenderás a programar con Arduino.

# data[].attributes.attachment_link.title
Medidor de carga de baterías y pilas con Arduino paso a paso

# data[].attributes.attachment_link.description
En este artículo te voy a explicar cómo podemos hacer un medidor de carga de baterías y pilas. Lo haremos a través del montaje de un circuito con Arduino. Suele ser muy típico que tengamos por casa diferentes aparatos eléctricos que utilizan pilas o baterías.

# data[].attributes.body
Leer instrucciones.

# data[].attributes.attachment_link.readable_text
Comentarios(130) Luis del Valle Hernández

En este artículo te voy a enseñar cómo utilizar un servomotor con Arduino. Antes de continuar es importante saber qué es un servomotor o servo. Es un motor eléctrico pero con dos características especiales.

Por un lado, nos permite mantener una posición que indiquemos, siempre que esté dentro del rango de operación del propio dispositivo. Por otro lado nos permite controlar la velocidad de giro, podemos hacer que antes de que se mueva a la siguiente posición espere un tiempo.

El ejemplo más típico es un coche teledirigido, esos que utilizan los niños y no tan niños. Estos juguetes suelen tener un mando a distancia donde podemos controlar la velocidad y el giro del coche. Precisamente el giro se suele hacer con un servomotor donde indicamos, en cada momento, la posición o el ángulo de giro que queremos que tenga en un preciso momento.

Características técnicas de un servomotor con Arduino

Hay varios modelos de servomotor con Arduino. En este caso vamos a utilizar un Micro Servo 9g SG90 de Tower Pro. Como siempre digo, hay que mirar la ficha técnica del producto. Todos tienen un funcionamiento muy parecido y la programación puede variar muy poco.

Cosas a tener en cuenta con este dispositivo. Lo primero, el ángulo de giro, en este caso nos permite hacer un barrido entre -90º y 90º. Lo que viene a ser un ángulo de giro de 180º.

Aunque el servo puede moverse con una resolución de más de 1 grado, este es el máximo de resolución que vamos a conseguir debido a la limitación de la señal PWM que es capaz de generar Arduino UNO.
¿Quieres montar tu primer proyecto con Arduino?
Con este curso gratuito crearás un Sistema de Riego Automático con Arduino, paso a paso y en sólo una semana.

Estos motores funcionan con una señal PWM, con un pulso de trabajo entre 1 ms y 2 ms y con un periodo de 20 ms (50 Hz). ¿Qué quiere decir todo esto? Este dato nos indica la velocidad máxima a la que podemos mover el servomotor con Arduino. Solo podremos cambiar de posición cada 20 ms. Esto dependerá del tipo y marca de nuestro servo.

El elegir una salida PWM u otra da lo mismo, todas las salidas de este tipo funcionan igual.

Conexionado con Arduino

Las conexiones dependerán del tipo de servomotor con Arduino que estemos utilizando.

Todos deben tener 3 cables. Uno irá a tierra, otro a la alimentación de 5 Voltios y el tercero a un pin PWM. También puedes utilizar un shield para controlar servomotores, como el de Adafruit.

¿Cómo programar un servo desde el entorno de Arduino?

Ahora vamos a ir a lo interesante, la programación. Para ello tenemos que hacer uso de una librería externa para poder controlar el servo desde Arduino. Para incorporar la librería tenemos que ir a Programa/Include Library/Servo.

El código para girar el motor de 0º a 180º

Esta acción ya nos ha hecho un include en nuestro código que nos permite controlar el servo. Os dejo a continuación un código básico para posicionar el servo en los ángulos 0º, 90º y 180º.

De la librería Servo.h hemos declarado un objeto o variable servoMotor y hacemos uso de dos métodos. Por un lado el attach, que nos permite indicar en que pin tenemos conectado nuestro servo, y por otro lado el write, donde indicamos en qué ángulo queremos posicionar nuestro servomotor.

Girando grado a grado el servomotor

Vamos a realizar otro ejemplo un poco más complicado, en este caso queremos que el servo haga un barrido desde el 0 al 180º y luego en sentido contrario. Vamos a utilizar los mismos métodos pero incorporamos dos bucles for, uno para cada sentido.
¿Quieres montar tu primer proyecto con Arduino?
Con este curso gratuito crearás un Sistema de Riego Automático con Arduino, paso a paso y en sólo una semana.

Conclusión

Controlar un servo desde Ardunino es una tarea muy sencilla gracias al uso de la librería Servo.h. Te recomiendo que sigas practicando con esta librería. Si te ha gustado el artículo, compártelo. Si tienes alguna duda, deja un comentario abajo de este artículo.

Solo programando se aprende a programar.

Gracias a Shutterstock por ceder los derechos de la imagen

# data[].attributes.attachment_link.title
Servomotor con Arduino tutorial de programación paso a paso

# data[].attributes.attachment_link.description
Comentarios(130) Luis del Valle Hernández En este artículo te voy a enseñar cómo utilizar un servomotor con Arduino. Antes de continuar es importante saber qué es un servomotor o servo. Es un motor eléctrico pero con dos características especiales. Por un lado, nos permite mantener una posición que indiquemos, siempre que esté dentro del rango de operación del propio dispositivo.

# data[].attributes.attachment_link.title
Lámpara LED controlada por WIFI desde el móvil (WEMOS D1 MINI + BLYNK)

# data[].attributes.body
Hemos conectado el pin D4 (equivale al 2 de Arduino) a la señal de control del servo.
El "Slider" esta conectado al pin virtual

# data[].attributes.body
Librería DHT Adafruit
Librería Adafruit Unified Sensor

# data[].attributes.attachment_link.readable_text
Ya has pasado por la fase previa de aprendizaje con Arduino y ahora quieres construir algo chulo, algo que te de información del mundo real. Una estación meteorológica puede ser un buen proyecto. En este artículo te voy a explicar el sensor DHT11 que nos permite medir la temperatura y humedad con Arduino.

Una de las ventajas que nos ofrece el DHT11, además de medir la temperatura y la humedad, es que es digital. A diferencia de sensores como el LM35, este sensor utiliza un pin digital para enviarnos la información y por lo tanto, estaremos más protegidos frente al ruido.

Si el ejemplo más común es la estación meteorológica, también puede ser útil en proyectos donde otros sensores y componentes dependan de la temperatura o la humedad para tomar las medidas.

Este tutorial paso a paso te va a enseñar cómo utilizar el sensor de temperatura y humedad DHT11 con Arduino.

DHT11 un único sensor para la temperatura y humedad

El DHT11 presume de ser un sensor con una alta fiabilidad y estabilidad debido a su señal digital calibrada. Lo podemos comprar de dos maneras, de forma individual donde solo tenemos el sensor DHT11, o insertado en una PCB.

La diferencia en precio no es excesiva y la versión con PCB aporta una resistencia pull-up de 5 kΩ y un LED que nos avisa de su funcionamiento. Otra diferencia entre estas dos versiones del DHT11 son los pines.

En la versión sin PCB tenemos 4 pines y en la versión con PCB tenemos 3 pines.

Los pines de la versión sin PCB del DHT11 son:

VCC: alimentación

I/O: transmisión de datos

NC: no conecta, pin al aire

GND: conexión a tierra

Los pines de la versión con PCB del DHT11 son:

GND: conexión con tierra

DATA: transmisión de datos

VCC: alimentación

Características técnicas del DHT11

Como siempre recomiendo, es aconsejable dirigirse a la hoja de características técnicas para ver cómo funciona el sensor DHT11. Puedes ver toda la información en esta hoja, o en esta otra hoja de características técncias.

En las dos encontrarás prácticamente la misma información. A continuación te hago un resumen de lo más importante.

¿Cómo transmite los datos el DHT11?

No tenemos que confundirnos entre analógico y digital. Aunque lo conectemos a un pin digital, se trata de un dispositivo analógico. Dentro del propio dispositivo se hace la conversión entre analógico y digital.

Por lo tanto, partimos de una señal analógica que luego es convertida en formato digital y se enviará al microcontrolador. La trama de datos es de 40 bits correspondiente a la información de humedad y temperatura del DHT11.

El primer grupo de 8-bit es la parte entera de la humedad y el segundo grupo la parte decimal. Lo mismo ocurre con el tercer y cuarto grupo, la parte entera de la temperatura y la parte decimal. Por último los bits de paridad para confirmar que no hay datos corruptos.

Estos bits de paridad lo único que hacen es asegurarnos de que la información es correcta, sumando los 4 primero grupos de 8-bit. Esta suma debe ser igual a los bit de paridad. Si nos centramos en la imagen anterior y sumamos los bits, comprobamos que todo está correcto.
0011 0101 + 0000 0000 + 0001 1000 + 0000 0000 = 0100 1101
Conectando el DHT11 a Arduino

Como tenemos dos versiones del sensor de temperatura y humedad DHT11, vamos a ver cómo tendríamos que conectarlo a Arduino en los dos casos. Te recuerdo que vamos a trabajar con un pin digital.

En los dos casos , la alimentación puede ser de 3,5 V a 5 V. Si vas a utilizar un Arduino MKR1000 o un ESP8266, tendrás que tenerlo en cuenta ya que estos dos dispositivos pueden dar problemas si se alimentan con una batería o con una pila ya que no suministran más de 3,3 V.

Antes de conectar el sensor es conveniente ver estas consideraciones:

La resistencia pull-up de 5 kΩ es la recomendada para un cable de longitud de hasta 20 metros. Si conectas un cable mayor al DHT11, la resistencia pull-up deberá ser proporcional.

Ojo si alimentas el DHT11 con 3,5 V. En este caso, el cable de alimentación no debe ser mayor de 20 cm debido a que las caídas de tensión pueden provocar mal funcionamiento.

Se recomienda tomar medidas cada 5 segundos. Si se utiliza un periodo menor puede ocasionar que los datos no sean precisos.

Una vez hayas leído y entendido las consideraciones, vamos a ver los circuitos eléctricos para los dos modelos.

Conexionado DHT11 sin PCB

Para conectar el circuito de una aplicación típica con un DHT11, necesitaremos tener una resistencia pull-up conectada a la salida digital. La recomendación es utilizar una resistencia de 5 kΩ. Disponemos de 4 pines el VCC (de 3,5V a 5V), la salida digital I/O, el pin no conectado NC y la toma de tierra GND.

El esquema eléctrico del DHT11 sería el siguiente:

Conexionado DHT11 con PCB

Al contrario que el otro modelo, el DHT11 integrado dentro de un PCB ya viene con la resistencia pull-up integrada. Puede resultar muy útil en ocasiones, pero si añadimos un cable de más de 20 metros, deberemos tener en cuenta este factor.

Este modelo de DHT11 dispone de 3 pines, la toma de tierra GND, para los datos DATA y para la alimentación VCC (de 3,5V a 5V). En la siguiente imagen puedes ver el esquema de conexión con Arduino.

Programando el DHT11 desde el IDE de Arduino

Si tuvieras que programar desde cero el sensor de temperatura y humedad DHT11, sería francamente complicado. Sin embargo, las librerías que hay entorno a Arduino nos facilitan mucho la vida. Este es un claro ejemplo.

Hay varias librerías que podemos utilizar para obtener la información de temperatura y humedad. En este caso vamos a utilizar la que nos proporciona Adafruit. Esta librería es muy sencilla de utilizar y funciona para los dos modelos, DHT11 con PCB y sin PCB.

Recuerda, si no sabes instalar una librería te recomiendo que leas este tutorial donde te explico cómo instalar una librería de Arduino.

En el siguiente vídeo puedes ver el proceso.

Si cuando has instalado la librería DHT en tu IDE sale el siguiente error:

Debes añadir la librería Adafruit_Sensor.h. Sólo tienes que abrir el gestor de librerías y buscar adafruit unified sensor.

Instala la librería que pone Adafruit Unified Sensor.

Código nativo de Arduino para el DHT11

Ahora ya si que tenemos todo preparado para obtener la temperatura y la humedad. Hemos montado el circuito (con el módulo con PCB o sin PCB) e instalado la librería de Adafruit. Solo nos falta crear un nuevo programa o sketch y a programar.

En este ejemplo, vamos a obtener 3 valores del DHT11:

Humedad relativa: describe la cantidad de agua que se transporta por el aire, es importante para determinar el desarrollo de las nubes y el factor precipitación.

Temperatura ambiente: temperatura en un determinado lugar.

Índice de calor: indica cuánto calor hace teniendo en cuenta la humedad relativa y la temperatura. Nos da una idea de la sensación de calor.

Ya verás como es muy sencillo, vamos a ver el código que nos hará falta.

Librería DHT11 y variables

Lo primero es importar la librería DHT.h. Luego definimos dos constantes una para indicar el pin donde hemos conectado el DHT11 (pin digital) y otra para indicar el tipo de sensor, DHT11. Esta librería también se utiliza para controlar el DHT22, el hermano mayor del DHT11.

Por último declaramos el objeto DHT con los parámetros pin y tipo de DHT.

Función setup

En la función setup() vamos iniciar el monitor serie y el objeto dht con la sentencia begin().

Función loop

Lo primero que hacemos es utilizar un delay para esperar los 5 segundos recomendados. La librería de Adafruit para el DHT11 nos proporciona datos en grados centígrados y grados Fahrenheit. Para obtener los dos datos utilizamos la misma función, readTemperature().

Si no pasamos ningún parámetro nos devuelve la temperatura en grados centígrados. Si pasamos el valor true nos devuelve la temperatura en grados Fahrenheit. La humedad se obtiene llamando a la función readHumidity().

Es conveniente comprobar que la información no está corrupta y que realmente nos está devolviendo un número. Eso lo hacemos con la sentencia isnan(...). Esto nos dará verdadero si no es un número (isnan, Is Not a Number) y falso en caso contrario.

Por último obtenemos el índice de calor con la función computeHeatIndex. Nos puede devolver grados centígrados o grados Fahrenheit. Al final del todo mostramos la información en el monitor serie.

Código completo del sensor de temperatura y humedad DHT11

Este sería el código completo que tienes que utilizar para medir la temperatura y la humedad con el sensor DHT11.

Conclusiones sobre el sensor DHT11

Una de las partes más importantes a la hora de hacer nuestros proyectos Maker es la investigación. Cuando queremos hacer una estación de temperatura, por ejemplo, debemos conocer los diferentes sensores que tenemos a nuestra disposición.

Uno de ellos es el sensor DHT11 que, además de medir la temperatura, nos proporciona la humedad y el índice de calor. Es un sensor muy utilizado cuyas dos características más importantes son la fiabilidad y estabilidad.

¿Has utilizado el sensor de temperatura y humedad en algún proyecto?

Comporte con todos nosotros tus experiencias con el sensor DHT11 en los comentarios de este artículo.

# data[].attributes.attachment_link.title
Cómo utilizar el DHT11 para medir la temperatura y humedad con Arduino

# data[].attributes.attachment_link.description
Ya has pasado por la fase previa de aprendizaje con Arduino y ahora quieres construir algo chulo, algo que te de información del mundo real. Una estación meteorológica puede ser un buen proyecto. En este artículo te voy a explicar el sensor DHT11 que nos permite medir la temperatura y humedad con Arduino.