Páginas

miércoles, 12 de febrero de 2014

Controlando un relé con una salida del conector GPIO del Raspberry Pi

En entradas anteriores he ido ampliando progresivamente las posibilidades de utilización de la Raspberry Pi, empezando, como no podía ser de otra manera, por la instalación del sistema operativo Raspbian, y he continuado con la implementación de una tarjeta de expansión del GPIO, de 2x13 pines. He sido capaz de utilizar el bus i2c para acceder a un Reloj en Tiempo Real, y de controlar las salidas digitales de un mcp23008 y mcp23017. La he integrado plenamente en mi red local, pudiendo comunicarme desde otro ordenador mediante el uso del comando ssh desde un terminal remoto. He instalado LAMP y phpmyAdmin, con lo que he potenciado mi RaspPi haciendo que pase a ser un servidor dinámico de páginas Web.
¿Qué más puedo hacer? Multitud de cosas. Pero en esta entrada voy a centrarme en el control de una salida digital que actuará un relé, activándolo o desactivándolo, a nuestra conveniencia. Oiremos un leve chasquido cada vez que actuemos sobre el relé, cambiándolo de estado. Pero para que dicho cambio de estado sea más visible (aparte de audible) conectaremos un LED tricolor (utilizaremos sólo dos colores) que cambiará entre dos colores (verde y azul) dependiendo del estado del relé (excitado o desexcitado).

Material necesario

El material que he utilizado para este montaje es el siguiente:

  • 1 relé Finder : Serie 30 - Relé subminiatura D.I.L. 2 A (30.22.7.005.0010), u otro de similares características.
  • 3 resistencias de 330 ohmios.
  • 1 LED tricolor  con cátodo común, o también nos valdría leds sencillos.
  • 1 diodo 1N4001.
  • 1 transistor NPN 2N2222A.
  • 1 protoboard.
  • conector de expansión (desarrollado por mi) para conexión de la protoboard al RaspPi. Ver entrada anterior en este blog (Conectando la Raspberry Pi a una protoboard).
Si he utilizado un LED tricolor ha sido porque no disponía de LEDs sencillos ¿?. Con un par de LEDs podríamos realizar el mismo montaje de prueba.
He probado el montaje con dos relés de distintas marcas pero con características similares, y el montaje ha funcionado perfectamente. 

Diseño del circuito

Para el diseño del circuito hemos utilizado el programa Fritzing. La mayoría de los componentes forman parte de la librería estándar del programa, exceptuando el relé, que he tenido de modificar/adaptar a las características del relé utilizado, y que incluyo el enlace para poder utilizarlo. También incluyo el enlace del componente correspondiente al conector de expansión.
Las partes críticas del diseño corresponden a los valores de las resistencias. Debemos tener en cuenta, por un lado, que los 5Vdc que proporciona la RaspPi a través del conector GPIO P1 de 2x13 pines, están muy limitados ( a menos de 300mA). Además, la corriente que puede proporcionar cada uno de los pines del conector GPIO (en este caso estamos utilizando la salida GPIO25) en teoría se limita a 3mA. Pero parece ser que este límite es en teoría (ver Understanding Outputs), ya que en la práctica se han hecho cálculos de que una salida puede llegar a dar 16mA pero con el límite de 51mA para el conjunto de todas las salidas.
El relé requiere una corriente de excitación de su bobina de al menos 30 mA. Por lo que pondremos un transistor que amplifique suficientemente la corriente del pin GPIO25, para despreocuparnos del asunto, transistor NPN que atacaremos su base con la salida GPIO25. Limitaremos la corriente de salida del GPIO25 con una resistencia de 330 ohmios (3,3V - 0,6V = 2,7V => 2,7/330 = 8,2mA). Con una ganancia del transistor (hFE) de al menos 35, tendría la posibilidad de proporcionar, si fuera preciso, una corriente de 287 mA, corriente que estará de todos modos limitada por la resistencia de la bobina del relé (125Ω) a 32mA (5V - 1Vce = 4Vdc => 4/287=32mA).

Montaje del diseño en la protoboard

Una vez realizadas las comprobaciones pertinentes, pasaremos a montar todos los componentes en la protoboard, con la RaspPi sin tensión. Comprobaremos concienzudamente la polaridad de los diodos y transistores y una vez que estemos seguro de ello, conectaremos el cable plano entre la RaspPi y el conector de expansión y alimentaremos a la RaspPi.

Prueba del montaje

Para comprobar que el montaje funciona bien utilizaré una utilidad que viene con la librería WiringPi, de acceso al conector GPIO. Podemos comprobar que se ha instalado previamente tecleando en la consola remota, abierta con ssh, la instrucción gpio -v. Si nos da un error, deberemos instalarla. Por si no la hubiéramos instalado previamente, indico a continuación las instrucciones a seguir para su instalación:
sudo apt-get install git-core
sudo apt-get update
sudo apt-get upgrade
git clone git://git.drogon.net/wiringPi
cd wiringPi
git pull origin
cd wiringPi
./build
La primera instrucción será precisa si no tuviéramos instalado el software de control de versiones Git.
Una vez instalada, podemos comprobar que se ha instalado perfectamente tecleando de nuevo:
gpio -v
gpio -h
gpio readall
pudiendo ver en las siguientes imágenes lo que nos muestran estas instrucciones.
Ha funcionado a la perfección. La última sentencia nos ha mostrado el estado de los 20 pines del conector GPIO, y la relación biunívoca entre el pin físico y lógico. Se descartan los pines de alimentación y de puesta a tierra.
Procedamos a cambiar de estado el relé, ejecutando las siguientes instrucciones:
La primera instrucción pone el pin lógico 25 como salida. La siguiente instrucción activa la salida y por tanto el relé, con lo que cambia el color del LED tricolor, y con la última instrucción desactiva la salida y conescuentemente el relé, por lo que el led tricolor recupera el color original. En las instrucciones hemos incluido el parámetro -g para indicarle que estamos utilizando los pines lógicos.
Bien, eso es todo. Como siempre, confío en que esta entrada sea de interés y, también, de nuevo reiterar que agradecería todos los comentarios de los lectores, comentarios que sean para ampliar, mejorar, rectificar, etc. o proponer nuevas entradas que sirvan para resolver y aclarar dudas y aprender nuevos usos de la tarjeta Raspberry Pi, o de otros temas técnicos.

Enlaces

- Finder : Serie 30 - Relé subminiatura D.I.L. 2 A.
Full-Spectrum Multicolor Discrete RGB LEDs with Leads.
- Hoja de características diodo 1N4001.
- Hoja de características transistor NPN 2N2222A.
- Raspberry Pi Wiki Hub.
- GPIO current specifications.
- Understanding Outputs
- How to use GPIOs on raspberry pi (Simple I/O, PWM and UART)
- Raspberry Pi – Driving a Relay using GPIO.
- Raspberry Pi, interactuando con GPIO desde la línea de comandos.
- Git (software de control de versiones).
- Wiring Pi.
- The GPIO utility.
- Fritzing.
RelayControlledByRaspPi.

No hay comentarios:

Publicar un comentario