bclose

Las fuentes de alimentación ATX

Alimentando circuitos de potencia media

Objetivos

 

 
    • Conocer las fuentes ATX y sus características.
    • Comprender como gobernarlas desde Arduino.
    • Montar un ejemplo con una fuente y Arduino, para alimentarle a el y a circuitos externos de potencia media.
 
 

Material requerido.

 

  Tienda España Tienda Mexico
Imagen de Arduino UNO Arduino UNO o equivalente. Arduino UNO o equivalente.
Protoboardconexiones Una Protoboard más cables. Una Protoboard más cables.
componente  Un diodo LED  Un diodo LED
Img_5_1  Un pulsador  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.

 
  • En primer lugar se encuentran con facilidad de 200 a 1.000 Vatios sin elevar demasiado el precio.
  • Tiene salidas a 3.3V, 5V, 12V y -12V.
  • Se pueden conseguir muy baratas, sacándolas de algún PC viejo que tengas por ahí tirado, o si no pedírsela a algún amigo que va a retirar un PC.
  • Como se venden por millones, la competencia ha hecho que alcancen precios sorprendentemente bajos y además están más que probadas por lo que son fiables.
  • Al ser fuentes conmutadas son bastante eficientes energéticamente hablando.
  • Se controlan magníficamente desde tu Arduino o similar.
 

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.

Tipica fuente ATX

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:

 

Tipico conector de placa base
Tipicos conectores de discos duros

 

Para empezar hay que decir que además suelen seguir un código de colores normalizado también:

 
  • Negro GND
  • Naranja 3.3V
  • Rojo5V
  • Amarillo 12V
  • El resto son señales de control e informació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:

Conector ATX 20

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.

 
  • Dependiendo de un montón de cosas, Power good puede tardar entre 0,1 y 0,5 segundos en levantarse. Podemos usar un pin de Arduino para leerlo, o simplemente meter un delay de 500 ms antes de arrancar.
 

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:

Esquema electrico
 
  • No vamos a comprobar el pin Power Good. En su lugar usaremos un delay, para asegurarnos de que la tensión se ha normalizado.
 

Y aquí tenemos el esquema de protoboard:

DIagrama de protoboard

Nota de conexión 

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.

Usando un clip

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.

 
  • Conviene cortar el clip después de insertarlo. Si lo haces antes, empujar puede ser complicado.
 

 

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)

 
  • Siempre es buena idea usar un testigo LED para saber cómo está el patio
 

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í:

Contenido solo disponible para suscriptores. ¡Accede al contenido!

Aquí os dejo un mini video con el resultado:

 

Resumen de la sesión

 

 
    • Hemos presentado las fuentes de alimentación ATX.
    • Hemos incluido una descripción funcional de los pines de control precisos para gobernarlas.
    • Montamos un pequeño circuito con nuestro Arduino y un pulsador que gobierna el encendido y apagado de la fuente.
    • No será la ultima vez que usemos estas fuentes porque son de una potencia y estabilidad notable, y además con un precio muy ajustado

 
 
 

 

 

 

 

Para porder realizar consultas a nuestros expertos, tienes que ser suscriptor. Suscribiendote nos ayudas a mantener este proyecto en marcha.

¡ Quiero Suscribirme !

Si ya eres premium y no puedes comentar haz login. Hacer login

(60) Comments

  • Avatar for Charly

    Admin, Jesus, gracias por sus respuestas, para aclarar las conexiones.
    Los modulos y reles a conectar son:
    Arduino Uno REV3 -> 1 unidad
    relay 2 canales 5V -> 2 Unidades
    relay 1 canal 5V -> 4 unidades
    modulo sensor infrarrojo emisor 1.5-1.9V -> 2 unidades
    modulo sensor infrarrojo receptor 2.7-5.5V -> 2 unidades
    modulo sensor foto-sensitivo 3.5V-5V -> 1 Unidad
    modulo temperatura y Humedad DHT11 3.3V-5V -> 1 Unidad
    modulo led FZ0455 RGB 5V ->1 Unidad
    modulo MQ-4 Gas Metano 5V -> 2 unidades
    modulo MQ-135 Calidad del aire 5V -> 2 unidades
    modulo sensor de movimiento HC-SR501 5V -> 1 Unidad

    esos serian los modulos y reles a utilizar con el arduino y lo que necesito conectar a la fuente de alimentacion mencionada de 12V y 3A y convertido a 5V con los modulos LM2596 o con dos modulos http://goo.gl/Sh9Dr5 MP2307.

    estoy muy perdido en las conexiones al voltaje requerido?

  • Avatar for Charly
    • Jesús Sánchez

    Hola Arturo. Algunos sensores puedes conectarlos directamente, como los de temperatura y los infrarrojos, pues su consumo es mínimo, dejando el resto directo a los módulos SMPS.

    Saludos.

  • Avatar for Charly
    • Admin

    Hola Ardturo, no es facil darte una respuesta consecuente sin saber con exactitud lo que quieres manejar, pero hay algunas cosas que podmeos comentar.

    A priori es buena idea usar multiples fuentes step down para separar la alimentacion a los distintos sensores, pero al final siempre tienes el problema de suministrar a todas esas lineas independientes y necesitas una fuente de una cierta potencia que te lo soporte.

    Es ahi cuando entra en juego una fuente ATX por tiene la potencia y las lineas independientes que necesitas. Si necesitas menor tamaño hay fuentes ATX de diferenetes potencias y tamaños y seria interesante que buscaras la que ams te encaje porque ciertamente una fuente ATX de 300 Wat parece exesivo

  • Avatar for Charly

    Lo que habia leido en la web es que no debo conectar todos estos sensores, modulos, relés, IRs etc. porque harian que la tension y el voltaje solicitados por estos acceorios electronicos, sobrecargarian el arduino haciendolo funcionar de forma inconsistente o recalentarlo o posiblemente quemarlo. Se dice que debo utilizar el arduino unicamente para recibir o emitir la señal desde y hacia los modulos y que con otra fuente de 5V realice la conexion de todas las demas partes electronicas que llevara mi proyecto.
    No he visto un modulo de voltaje sencillo que tenga una entrada de 12V de 2A o 3A (Para soportar las conexiones de lo anteriormente mencionado), que tenga multiples salidas de 5V para conectar arduino, modulos, sensores y relés etc, que facilite la descongestion de conexiones del arduino, utilizandolo unicamente para la emision y recepcion de señales de las partes electronicas añadidas para el proyecto.
    En ausencia de este modulo de voltaje como me lo imagino, tengo pensado utilizar un par de modulos LM2596 http://goo.gl/JwLA0M y una fuente de alimentacion como esta . los dos modulos lm2596 irian conectados a la fuente de alimentación del link mostrado y bajarian el voltaje de salida a 5V. Uno saldría para el arduino y el otro para conectar los 4 reles, los 3 sensores y los 2 modulos infrarrojos de control remoto.
    Puedo hacerlo de esta forma? He leido que se puede utilizar una fuente de alimentacion que tenga una corriente de 1 amperio, pero pensando en las partes mencionadas que voy a conectar, los 12V y 3A de la fuente serian suficiente para lo anterior? o existe una forma mas sencilla de hacer esta alimentación, con algo mas pequeño en tamaño, claro que no tenga que armar circuitos con resistencias, protoboards, transistores etc, ya que no soy ing. Electrónico y no tengo idea alguna del tema, por eso utilizo partes ya prearmadas y que hacen funciones especificas como el modulo LM2596 y el resto de modulos y sensores todos ya traen su placa con resistencias y leds indicativos. Soy solo alguien que se inicia en el mundo arduino y quiero desarrollar una idea que tengo para mi casa. Disculpa si he redundado un poco, solo quiero hacerme entender.

    Otra duda. Como la fuente a utilizar es la que se usa para encender tiras led, no se si los 12V son lo suficientemente estables para ser convertida por el LM2596 a los 5V requeridos por el arduino y los modulos o debo utilizar otro tipo de fuente?

  • Avatar for Charly
    • Admin

    Hola Arturo. La fuente ATX esta pensada mas como una fuente de sobremesa y potencia importante: entre 300 y 500 Watios, por lo que no es para proyectos portatiles claro. Para lo que planteas tienes fuentes tipo las de los antiguos telefonos moviles que conectan en tu arduino uno al lado del usb y que puedes encontrar entre 1 y 2 Amperios que seriand e sobra para lo que planteas. Puedes encontrarlas en cualquier chino o tienda de electronica

  • Avatar for Charly

    Buenas tardes.
    Pregunta. Si utilizo una fuente ATX quiere decir que puedo conectar 1 arduino y cuatro modulos ya sean reles o sensores unicamente?. No existe algun modulo especial de 5V para arduino que sea una fuente de alimentacion de menor tamaño y no tan grande como una ATX que permita conectar el arduino y multiples modulos a la corriente electrica?
    Ejemplo: tengo en mente un proyecto con arduino para manejar 4 reles, dos de un canal y dos de 2 canales, 3 sensores de temeperatura y humedad y dos MQ-4, dos infrarrojos para recibir señal de un control remoto y se que no puedo conectarlos todos al arduino, asi que busco un modulo que me permita conectar a la corriente electrica estas partes electronicas, que puedo utilizar?

  • Avatar for Charly
    • Admin

    Alfonso, yo haria algo asi en pseudocodigo:
    void setup()
    {
    Serial.begin(9600);
    pinMode(pin8,INPUT);
    pinMode(pin9,OUTPUT);

    while (! pin8) // Hasta que pin8 no levante indicando que la fuente está lista
    ; // El punto y coma simplemente no hace nada pero mantiene el while hasta cumplir la condicion

    digitalWrite(pin9, HIGH) ; // aqui enciende el LED ;
    }
    void loop()
    { Aqui ya puedes seguir con el programa normal, porque para cuando llegues aqui la fuente ya esta lista
    }

  • Avatar for Charly
    • Alfonso

    Hola, excelente explicación, solo una duda, si en el caso que se quisiera hacer la comprobacion del PIN8 de la ATX para comprobar que este lista, ¿como seria?.

    Segun yo, conecto el PIN8 del ATX a algun PIN del ARDUINO, y posteriormente mediante programacion determino si este ultimo esta en HIGH y si es asi pongo en HIGH un LED que tengo conectado al PROTOBOARD. Pero a pesar que el arduino prende en cuanto enciendo la ATX, el LED nunca enciende.

    NOTA,el arduino ya tiene el codigo cargado.

    este es el codigo:

    int pin8 = 8;
    int pin9 = 9;

    int statusPin8;

    void setup() {
    // put your setup code here, to run once:
    Serial.begin(9600);
    pinMode(pin8,INPUT);
    pinMode(pin9,OUTPUT);
    }

    void loop() {
    // put your main code here, to run repeatedly:
    statusPin8 = digitalRead(pin8);
    if (statusPin8 == HIGH){
    digitalWrite(pin9,HIGH);
    Serial.println(«HIGH»);
    }else{
    digitalWrite(pin9,LOW);
    Serial.println(«LOW»);
    }
    delay(1000);
    }

    Gracias!

  • Avatar for Charly
    • Jmcn

    Una vez mas, muchas gracias por vuestras explicaciones. Me ayudan mucho.

  • Avatar for Charly
    • Jesús Sánchez

    Hola jmcn. Algo así, como tu dices. Si quisieras hacerlo por hardware, coges una resistencia de 10K la conectas entre Vcc +5V y el pin 6 y luego el pulsador, por un lado y el otro extremo de éste a GND. Así estás diciendole a la entrada «…lee un HIGH…». Cuando pulsas el botón, la entrada «ve» GND y lee un LOW. Así defines claramente HIGH y LOW. Arduino pone esa resistencia internamente por ti, para ahorrar espacio. En un circuito con componentes analógicos, sin microcontroladores, irremediablemente debes usar una resistencia de pull up y ademas un circuito antirrebote, con más resistencias y condensador. Con el micro te ahorras todo esto por software.
    Te recomiendo que aparte de ahondar en el entorno Arduino y su programación, hagas experimentos y pequeños circuitos con componentes analógicos (resistencias, condensadores, bobinas, diodos, transistores, etc…) Te ayudan a comprender conceptos de electrónica básica que son muy útiles para otras ramas (y necesarios). Por lo menos a mí me ha servido, y me está sirviendo, pues también soy aficionado como tú.

    Saludos.

  • Avatar for Charly
    • Admin

    EL definir la entrada 6 como INPUT_PULLUP nos ahorra utilizar una resistencia de pull up, para leer el boton sin problemas. SI echas una ojeada a la sesion en que se muestra como leer los botones encontraras una explicacion un poco mas detallada que esta

  • Avatar for Charly
    • Jmcn

    Muchas gracias Jesús por tus explicaciones. Reconozco que este tema me resulta un poco confuso y no acabo de entenderlo bien.
    Verás: se trata de una entrada digital (PIN 6 del esquema que se representa en el tutorial) que, como todas las señales digitales, solo admite dos posiciones (HIGH y LOW), según le llegue mas o menos tensión. Eso está claro. Cuando el botón está pulsado y cerrado el circuito, la señal de entrada estará a 0V (GND), también está claro. Pero no entiendo de donde sale la tensión (5V) que energiza esa entrada digital cuando el interruptor está abierto y el PIN no está conectado con nada. Esta tensión la pone el propio arduino en un entrada, de manera interna?

  • Avatar for Charly
    • Jesús Sánchez

    Hola Jmcn. Es para darle un valor alto (5V) a esa entrada, a la cual está conectado el botón. Si no definimos bien su estado (HIGH=5V, LOW=0V) su valor queda indefinido para el microcontrolador podria ser alto o bajo y haría cosas «raras». De esa forma, activamos la resistencia interna del pin, que también se puede hacer por hardware poniendo una resistencia de 10K a 5V. Cuando pulsamos el botón, esté lleva la entrada a 0V facilmente. Aún así, te fijarás que en el sketch hay un condicional antirrebote, propio de los pulsadores, que tambien se puede hacer por hardware con resistencias y condensadores.
    Espero haberte ayudado.

    Saludos.

  • Avatar for Charly
    • Jmcn

    Por qué ponemos en la definicion de entrada del pin 6, como PULLUP?.
    Muchas gracias por estos turoriales.

  • Avatar for Charly
    • Admin

    Hola Daniel, Cuando alimentas tu Arduino con una fuente externa, normalmente la conecrtas al coector redondo de entrada. La tension que pones a la entrada, por ejemplo 12v, se refleja en el pin Vin porque estan unidos. Puedes conectar los 12V tambien al Vin

    Pero si quieres alimentar tu arduino con 5V, no puedes usar estos pines, porque pasan por el regulador y por ello perderias algunos voltios lo que no permitiria alimetar correctamente tu Arduino, y por eso paso los 5V directamente al pin de 5V que es la tension necesaria para mover la placa
    Un saludo

  • Avatar for Charly
    • Daniel Bielsa

    Felicidades por los manuales que son instructivos a la par que amenos; me están ayudando muchísimo con mis pequeñas lagunas (inmensos océanos debería decir) en electrónica y Arduino.
    Un cosilla: estoy seguro de que no es un error en tu diagrama pero no entiendo por qué alimentas la placa desde el +5VSB de la fuente al +5V del arduino. Pensaba que para alimentar una placa «desde fuera» (no por USB o Conector «negro») se usaba ViN.
    Disculpa mi ignoracia y gracias de antemano.

    Daniel

  • Avatar for Charly
    • Dr. Entropia

    Felicidades por los manuales que son instructivos a la par que amenos; me están ayudando muchísimo con mis pequeñas lagunas (inmensos océanos debería decir) en electrónica y Arduino.
    Un cosilla: estoy seguro de que no es un error en tu diagrama pero no entiendo por qué alimentas la placa desde el +5VSB de la fuente al +5V del arduino. Pensaba que para alimentar una placa «desde fuera» (no por USB o Conector «negro») se usaba ViN.
    Disculpa mi ignoracia y gracias de antemano.

  • Avatar for Charly
    • Admin

    Hola Jorge,
    Poner un pin de tu Arduino a LOW significa literalmente conectarlo GND directamente. De la misma manera que poner un High es puentarlo a 5V (o 3.3 dependiendo del modelo de Arduno que uses)
    Recuerda wu tu arduino y el circuito externo han de tener una referencia comun que suele ser el GND

  • Avatar for Charly
    • Jorge

    Hola, quería felicitarte por estos tutoriales, realmente son de lo mejor que he visto por el momento, y aprovecho la ocasión para preguntar una pequeña duda que me surge en este ejemplo en concreto:
    Para encender la fuente le devuelves al pin 16 de la propia fuente un GND, esto lo haces mediante un
    digitalWrite(7,LOW);
    la pregunta es, ¿Ese LOW equivale a mandar por ese pin de salida un GND o tierra?
    Yo hasta ahora tenía entendido que no era lo mismo.
    Agradezco tu atención, un saludo

  • Avatar for Charly

    Un post genial. Yo desmonté una de un viejo pc y tras cortar los cables y ponerles unas «bananas» conseguí una magnífica fuente de trabajo que utilizo a menudo en mis proyectos con Arduino. Algo parecido a la que aparece en este enlace https://sites.google.com/site/arduinoreciclar/fuente-de-energia.

Para porder realizar consultas a nuestros expertos, tienes que ser suscriptor. Suscribiendote nos ayudas a mantener este proyecto en marcha.

¡ Quiero Suscribirme !

Si ya eres premium y no puedes comentar haz login. Hacer login