Objetivos
Material requerido.
Arduino UNO o equivalente. | |
Una Protoboard más cables. | |
Un diodo LED | |
Un pulsador |
Los voltajes estabilizados
En las últimas sesiones hablamos de las fuentes de alimentación que dan vida a nuestros Arduinos y a otras cosas. Hablamos de los reguladores de la serie 78xx y de cómo montar un pequeño circuito que regule y estabilice la tensión de alimentación de nuestra electrónica.
Montamos un Arduino en protoboard y lo alimentamos con uno de estos reguladores, el 7805. Ya dijimos que estos circuitos son de lo más interesantes porque nos permiten resolver el problema de la alimentación para circuito electrónico cuyo consumo no sea elevado, hasta 1 Amperio máximo.
Pero lamentablemente esta barrera saltará por los aires en cuanto queramos alimentar algo del tipo de unas luces medianas, LED incluidas y no digamos ya, si se trata de un pequeño motor. Pasaremos a más intensidad de lo que un regulador puede proporcionar.
Ha llegado el momento de pasar a fuentes de alimentación de mayor capacidad, y cuando lleguéis a este punto os encontrareis que las fuentes de alimentación ATX, típicas de los PCs, son una joyita que no conviene despreciar, porque son de lo más potentes y con grandes ventajas.
Por tanto vamos a dedicar una sesión a ver cómo usar y gobernar estas magnificas fuentes ATX de alimentación para que podamos usarlos en nuestros proyectos de modo fiable.
Conociendo las fuentes ATX
Intel desarrolló las fuentes de alimentación ATX allá por los años 90 con la idea de estandarizar la alimentación de los PCs compatibles y convertirlas en algo normalizado como el resto de los componentes para ordenadores personales.
La norma tuvo tanto éxito, que no creo que hoy haya otro tipo de fuentes para PCs, y como resuelven muy bien un problema concreto se han extendido además a muchos otros campos ajenos a los PCs, porque son fiables y baratas ya que hay una industria mundial dedicada a ello y muy polivalentes.
Si habéis desmontado un PC, seguro que os habéis fijado porque son ubicuas e inconfundibles. Normalizan tanto los conectores externos, como los internos y son relativamente fáciles de sustituir en un PC.
En el conector de conexión a la placa base van todas las tensiones y pines necesarios para controlar la fuente:
Para empezar hay que decir que además suelen seguir un código de colores normalizado también:<
Son fuentes muy pensadas y de las que nos vamos a aprovechar encantados. Aquí tenemos el diagrama de pines de una de estos conectores que van a la placa base es cortesía de Wikipedia:
Iremos viendo en detalle lo que representa cada pin, pero antes, tenéis que saber que cuando enciendes la fuente con el interruptor trasero, la fuente no arranca de modo inmediato, si no que se pone en espera, pero sí que da tensión de 5V a un par de pines, para que podamos montar un circuito de arranque por ejemplo.
Además, cuando detecta que las tensiones de alimentación se han estabilizado, (Han alcanzado los valores correctos) nos informa poniendo un 5V en el pin 8.
Estos pines que tienen tensión en Standby son los pines 7 y 9 del conector. Son los pines que usaremos para alimentar el arranque de nuestro Arduino, de modo que cuando la tensión sea estable (y el pin 8 Power Good haya subido a 5V) podemos arrancar la fuente y el suministro a cualquier circuito que necesite nuestros amperios.
Como con Arduino UNO siempre vamos escasos de pines disponibles, supondremos que la tensión se estabiliza tras unas décimas de segundo y no vamos a destinar uno de sus pines monitorizar el Power Good de la fuente. Pero en un circuito real nos pueda interesar hacerlo para tener claro que la fuente está OK.
Una vez que Power Good nos da el OK con una señal de 5V en el pin podemos arrancar la fuente y la alimentación de los conectores de carga (Los de los discos duros por ejemplo). En nuestro ejemplo incluiremos un delay de 1 segundo para permitir que se estabilice y arrancaremos la fuente sin más
Para arrancar la fuente, basta con poner a GND el pin 16 del conector y listo. Oiréis como el ventilador arranca.
El Circuito de prueba
Vamos a montar un circuito para probar la fuente ATX y gobernarla desde Arduino, para alimentar cualquiera de nuestros proyectos. Usaremos un pulsador para indicarle a nuestro Duino que queremos arrancar o parar la fuente y un LED para indicar su estado.
Aquí tenemos el diagrama:
Y aquí tenemos el esquema de protoboard:
Para conectar nuestro Arduino a la fuente ATX, podemos usar los cables normales de protoboard, pero veremos que no encajan en el conector de la fuente y la conexión es poco fiable.
Siempre podemos cortar los cables y empalmarlos, pero me sabe mal romper una fuente que podríamos reutilizar, por lo que prefiero usar lo que los electricistas llaman “el conector universal” con cierto cachondeo, pero que funciona genial.
Enderezad un trozo de clip para sujetar papeles, e introducidlo en el hueco del conector después del cable normal de protoboard de forma que impida que se salgan. Aunque suene mal es una solución limpia y bastante duradera, si no se le somete a esfuerzos.
El programa de control
EL programa para controlar la fuente es de lo más sencillo: Sesion_82_1
bool PowerON = false ; void setup() { Serial.begin(9600); pinMode(6, INPUT_PULLUP); // Para leer el boton pinMode(7, OUTPUT); // Para encender la fuente con un LOW pinMode(13,OUTPUT); // Para usar un LED de encendido digitalWrite(7, HIGH); // Fuente apagada delay(1000); Serial.println("Iniciando la fuente"); }
Una variable, PowerON, para almacenar la situación de la fuente y luego definimos los pines necesarios. EL 6 para leer el pulsador, el 7 para encender y apagar la fuente ATX y en el 13 ponemos un LED para saber el estado de la fuente (En caso de que no haga tanto ruido como hace la mía)<
Hacemos un delay de 1 segundo, para dar tiempo a la fuente a estabilizar los niveles de tensión, que es más que de sobra, en lugar de usar un pin de Arduino para comprobar el estatus del pin 8 de la fuente Power good.
Para encender y apagar basta con algo así:
Descargar el programa: Sesion_82_1
void loop() { bool boton = digitalRead(6) ; if (boton == LOW) { PowerON = ! PowerON ; // Ivertimos el estatus de la fuente delay(250); // Para evitar rebotes digitalWrite(13, PowerON); // Encender o apagar el LED } if ( PowerON) digitalWrite(7, LOW); // Enciende la fuente else digitalWrite(7, HIGH); // Apaga la fuente }
Leemos el botón y cuando se pulsa, invertimos el valor de PowerON, al salir levantamos o apagamos la fuente ATX mediante el pin 7.
digitalWrite( ! PowerON) ;
Aquí os dejo un mini video con el resultado:
Resumen de la sesión