Cuando se desarrolla un programa para el Arduino, tenemos que plantear la tarea con funciones booleanas y para ello sólo se pueden manejar valores binarios, esto significa que lo que manejamos solo puede tener dos valores, existir o no, tener o no determinada condición.
En este trabajo explicaremos como realizar un circuito de control simple con un Arduino. Si usted no tiene los conocimientos básicos de electricidad, debe buscar la supervisión de alguien con experiencia pues una equivocación puede tener consecuencias destructivas o fatales.
Como ejemplo tomemos el control de la bomba para un tanque de agua. El nivel del agua en el tanque puede tener infinitos valores. Un circuito digital para el control del llenado necesita señales en la forma de unos y ceros. El problema tenemos que plantearlo basándonos en si el tanque está lleno o no. Independientemente de la capacidad del tanque y del nivel de agua en este, la variable para representar el llenado del tanque sólo expresa si el tanque está lleno o no; si no está lleno, que este totalmente vacío o por la mitad representan el mismo caso.
En los timbiriches habaneros se vende bajo el nombre de automático de tanque un dispositivo flotante sostenido con un lastre a una altura dentro del agua lo que provoca cambios de su inclinación cuando el nivel sube o baja. En la imagen vemos el interior de uno de estos. Un conmutador (microswitch gris ) con tres cables, uno al contacto móvil y sendos cables a los fijos nos da la señal de control. Cuando la inclinación es suficiente para sacar la bola de su descanso ella se desplaza y mueve la palanca que acciona el conmutador.
Se puede elegir como señal activa la originada por los contactos normalmente cerrados o los abiertos, lo que a los efectos del programa seria tomar el uno o el cero voltaje como indicador de lleno – no lleno.
Una manera muy simple de control de la bomba se realiza dando el arranque de forma manual y dejar que la desconexión ocurra con la señal de tanque lleno.
El circuito a continuación permite conectar manualmente el motor de la bomba si el nivel en el tanque no es el máximo y el sensor indica no lleno. El sensor de nivel desconecta el circuito al alcanzar el nivel máximo. Los componentes son un relé de doble contacto y dos posiciones (doble polo – doble tiro), un interruptor tipo botón de timbre y el sensor de llenado (automático de tanque). Hay una fuente de voltaje adicional para la bobina de 12v del relé.

El funcionamiento del sistema se puede expresar mediante el álgebra booleana. Si no le interesa esta parte teórica puede continuar sin problemas a la siguiente sección donde se muestra la aplicación con Arduino.
Llamemos M a la condición motor encendido y !M a su negación, motor apagado. N es la condición del sensor de nivel en el máximo o nivel por debajo del máximo !N .
B es la correspondiente al botón de arranque oprimido o no !B.
Las acciones del circuito:
!N && B = M
Esto representa que el motor arranca si se oprime el botón cuando el nivel no es el máximo, && representa la función lógica AND (y), esa “formula” dice que el motor arranca si ocurre simultáneamente que el botón esté oprimido y (AND) el nivel no sea el máximo.
N = !M El motor se apaga si el sensor indica nivel máximo, no importa el estado del botón, por eso no aparece en la ecuación que nos dice que el motor no arranca si el nivel es máximo.
Hagámoslo con el Arduino
Las dos expresiones anteriores se traducen en las instrucciones correspondientes del lenguaje C. El motor solo tiene dos estados posibles, encendido o apagado y esto se hace con el pin 8 (u otro que se seleccione como salida) en HIGH o LOW. La realización mediante un programa da mas flexibilidad para conseguir el funcionamiento deseado con distintos circuitos.
Tomemos como plantilla el programa usado anteriormente para encender el LED. Ahora la instrucción dentro de if() no activa el LED sino el motor.
Dentro del if es necesaria otra instrucción para que se mantenga conectado el motor hasta que el sensor indique que el tanque está lleno, esta es while(). Dentro del paréntesis de while va la condición para que se ejecute esta instrucción. Al terminar, dada la señal de tanque lleno, se pasa a la siguiente.
En el circuito con relé esta tarea la realizan los contactos C2 que mantienen 12v en la bobina mientras el sensor de nivel no llegue al máximo y corte los 12v.
( Nota : while = mientras)
int nivelPin corresponde a N
int conDicion corresponde a B
int outPin es M
//* El pin 8 da la señal de control al
transistor y este activa un relé
*/
int outPin = 8; // la base del transistor al Pin 8
int buttonPin = 2; // botón conectado al Pin 2
int nivelPin = 3; // interruptor de nivel al Pin 3
//Variables para estados
int conDicion = 0; // 0 == boton no oprimido
int niVel = 1; // variable para el nivel del agua
// 1 == nivel bajo, 0 == nivel al tope
void setup() {
pinMode(outPin, OUTPUT);
pinMode(buttonPin, INPUT);
pinMode(nivelPin, INPUT);
}
void loop() {
conDicion = digitalRead(buttonPin); //lee botón
niVel = digitalRead(nivelPin); //lee
//Si conDicion y niVel son 1 pone 5v en el pin8
if ((conDicion == 1) && (niVel == 1) ){
digitalWrite(outPin, 1);// relé se conecta
while(digitalRead(nivelPin)); //se mantiene digitalWrite(outPin, 0);// relé se desconecta
}
//Si conDicion y niVel no son 1 pone 0v en el pin8
else { digitalWrite(outPin, 0); }
}//Fin del lazo, regreso al inicio El circuito eléctrico requiere mas atención ya que el Arduino puede dar energía a un motor, mucho menos uno de corriente alterna, . Para esto hay que poner dispositivos intermediarios que según el estado del pin manejen la puesta del voltaje al motor. Usaremos también un relé para manejar el motor bajo el comando del Arduino.
Existen módulos de relé listos para conectarlos al Arduino.
Estos circuitos toman alimentación directamente del regulador de Arduino (pin marcado 5v) y tienen todos los elementos necesarios para la activación del relé.
Podemos construir el circuito con relés recuperados de los protectores de voltaje para refrigeradores, fuentes de respaldo (backup) de computadoras y otros similares. La bobina de estos puede ser de 5v, 12v o 24v. Estos relés tienen la capacidad suficiente para manejar cargas de 10Ampere o mas y conectar110v o 220v de corriente alterna, estos datos se ven escritos casi siempre en su parte superior como vemos en la figura. La selección del relé depende de los datos del motor que se quiere manejar.

Si usamos un relé con voltaje de bobina de mas de 5v tendremos que usar otra fuente de voltaje aparte como vimos en el circuito sin Arduino.
En el esquema que se muestra al final hay dos elementos que debemos explicar. Una resistencia entre la salida 8 del Arduino y la pata central (base) del transistor ajusta la corriente de entrada en el transistor mientras este conecta la bobina del relé. El diodo que va desde la unión del transistor con el relé al terminal común o tierra, evita la destrucción del transistor desviando los picos de alto voltaje que se producen por a la inductancia de la bobina al desconectar la corriente.
En los siguientes artículos veremos mas de la lógica booleana y circuitos lógicos.
Algunas precauciones a tomar con el Arduino
Cada vez que nos propongamos realizar un proyecto con Arduino tenemos que tomar precauciones adicionales. Esta lista contiene algunas de las mas importantes.
- – No se puede trabajar con el Arduino sobre superficies metálicas o húmedas. Esto vale para cualquier placa electrónica que no esté protegida por una base o bastidor (chasis).
- – No conectar directamente motores al Arduino. (Salvo algún pequeño servomotor hecho para ese efecto). En general no se puede conectar ningún elemento que consuma mas de 40 miliamperes en un pin. Además hay que recordar que todo sale del socket USB de la computadora que da 500 ma máximo.
- – No se pueden conectar elementos que den corriente alterna como entrada en los pines ni voltajes de directa superiores al de alimentación del Arduino; este es generalmente 5v y algunos modelos usan 3v.
- – Se debe realizar el trabajo de montaje o de cambios en el circuito con toda la alimentación de voltaje desconectada.
- – Hay que tener mucho cuidado cuando se use una herramienta para apalancar extrayendo un Arduino de la placa de desarrollo porque en la parte inferior tiene componentes que se pueden dañar; igual, su soldadura no está diseñada para soportar grandes esfuerzos.

El circuito activa el pin de salida 8 cuando se oprime el botón (pin de entrada 2)si el “automático” (pin de entrada 3) no indica lleno. El resto es como el del LED. La resistencia de 10k mantiene el pin2 en 0v, al oprimir el botón sube a 5v que corresponde a HIGH cuando es leído por el programa. El nivel del tanque está conectado para poner 0v, LOW, cuando esté lleno.