[LinuxFocus-icon]
<--  | Hogar  | Mapa  | Indice  | Busqueda

Noticias | Arca | Enlaces | Sobre LF
Este documento está disponible en los siguientes idiomas: English  Castellano  ChineseGB  Deutsch  Francais  Italiano  Russian  Turkce  

[Photo of the Author]
por Guido Socher (homepage)

Sobre el autor:

Guido ama linux no solo porque es divertido descubrir las grandes posibilidades de estos sistemas sino por toda la gente que está envuelta en su diseño.



Traducido al español por:
Miguel Magán C." <miguelmmc/at/terra.es>

Contenidos:

 

Fuente de alimentación de corriente contínua basada en microcontrolador

[Illustration]

Resumen:

Este es el cuarto artículo en LinuxFocus de la serie del microcontrolador AT90S4433. Te sugiero que leas los artículos anteriores sobre la programación de microcontroladores Atmel, en especial:

  1. Como instalar y usar el entorno de desarrollo Linux AVR y como construir el hardware de programación:
    March 2002, Programming the AVR Microcontroller with GCC
  2. Como hacer tu propia placa de circuito impreso:
    Mayo 2002,Un panel de control LCD para tu servidor Linux
  3. Como construir una caja para tu fuente de alimentación:
    Septiembre 2002, Contador de Frecuencia de 1Hz-100Mhz con visor LCD e interfaz RS232
Uno de los dispositivos más importantes para tu laboratorio casero es una buena y fiable fuente de alimentación de contínua. En este artículo nos construiremos una. Será controlada por un microcontrolador. Tiene un display LCD y se la pueden enviar comandos desde tu ordenador en Linux por el puerto serie RS232. Tiene un diseño muy robusto.

Este artículo muestra también como son de versátiles los microcontroladores. Aunque no es un diseño sencillo.
Así que si sólo estas buscando una fuente de alimentación sencilla echa un vistazo a "simple DC power". Esta fuente tan simple es buena si sólo necesitas una fuente de alimentación de contínua pequeña para tus otros experimentos electrónicos en LinuxFocus. Aunque no tiene nada que ver con Linux ni software en general.
Incluso si finalmente sólo te construyes esta fuente sencilla en este artículo puedes leer y aprender un montón de aspectos interesantes sobre los microcontroladores.
_________________ _________________ _________________

 

Introducción

El microcontrolador en el que se basa la fuente de alimentación no es el circuito más sencillo pero te puedo asegurar que no te importará el tiempo necesario para construirlo. Es muy robusto y fiable. También técnicamente muy interesante, porque puedes aprender como generar un voltaje de contínua analógico con un microcontrolador sin usar un conversor digital-analógico.

Necesitarás bastantes componentes para este artículo pero son baratos y estándar. Esta fuente de alimentación no es cara.
 

Qué necesitas

Mira esta lista de componentes para ver todos los que necesitas. También puedes ver estos componentes con sus valores en el esquemático de debajo.
Nuestra fuente de alimentación viene con 3 variantes. Excepto por el transformador y una resistencia sólo hay una modificación en el software requerido. Todos los demás componentes son idénticos en las 3 opciones:
  1. 0-16V Imax=2.2A
    compra un transformador de 15V 2.5A
  2. 0-24V Imax=2.2A
    compra un transformador de 24V 2.5A
  3. 0-30V Imax=3A
    compra un transformador de 30V 3A
Nota: En los tres casos necesitas el transformador de 9V, 100mA para la alimentación de la placa principal.  

Esquemático y placa

Yo usé eagle para Linux para diseñar el esquemático y la placa. Los archivos de eagle son también incluídos en el paquete tar.gz junto con el software. Puedes bajarlos al final de el artículo.

El circuito está dividido en 2 partes. Una parte principal y otra para los transistores de potencia. Debajo tienes dos esquematicos independientes para las dos partes que son luego conectadas por cables.

El esquemático principal (pincha en la imagen para agrandarla):
[main schematic]

El esquemático para la parte de potencia (pincha en la imagen para agrandarla):
[power part schematic]
Como conectar los pulsadores en una matriz (pincha en la imagen para agrandarla):
[push buttons schematic]

La placa principal, vista desde arriba (pincha en la imagen para agrandarla):
[board]


La placa está especificamente diseñada para aficionados a la electrónica. Sólo la capa azul tiene que ser grabada en una placa de circuito impreso. Las líneas rojas son cables. Es mucho más sencillo, y requiere menos precisión, construir una placa de circuito impreso de sólo una cara. Puedes soldar los cables (en rojo) de forma que tengan la menor longitud. No podía hacer eso en eagle.

Los pocos componentes de la parte de alto voltaje de la fuente pueden ser montados en una placa de prototipado estándar (son esas placas con muchos agujeritos). La placa principal y la parte de potencia se conectan con cables (JP2 y JP3). Notarás que el cable de masa de la parte principal se conecta a la salida positiva de contínua (DC). Esto es correto y es la razón por la que necesitamos dos transformadores separados (uno para la parte de potencia y la otra para la parte lógica con el microcontrolador y los amplificadores operacionales).  

Como funciona

Mirando en el esquemático principal puedes ver que consiste de 2 partes. Una es marcada en el esquemático como "current control" (control de corriente) y la otra como "voltage control" (control de voltaje). Son dos bucles de control independientes. Uno controla la salida de voltaje y el otro la caída de voltaje(diferencia de potencial) sobre la resistencia de 0.275 ohmios en la parte de alimentación. La caída de voltaje es equivalente a la corriente. Las dos partes de control son "combinadas" con los diodos D2 y D3. Estos diodos forman una puerta OR analógica. Esto es, si la corriente es demasiado alta entonces la parte del control de corriente baja el voltaje hasta que la corriente vuelva dentro de los límites, por otro lado, si la corriente no es demasiado alta, la parte de control del voltaje se encarga de regular la salida de voltaje.

Esta puerta OR trabaja porque el transistor T3 está conectado vía la resistencia R19 a +5V. Si no hubiera amplificadores operacionales conectados tras D2 y D3 conseguirías la máxima potencia de salida. El amplificador operacional en el bucle de control controla la salida quitando los +5V de T3 (cogiendo de masa tanto como se necesite).

El bucle de control de voltaje controla la salida de voltaje acorde al nivel de voltaje que consigue del pin 5 de IC6B. En otras palabras, el voltaje en el pin 5 es equivalente a la salida multiplicada por el factor de amplificación que es determinado por las resistencias R15,R10 y R16. Igual para la corriente, excepto que es el voltaje en la resistencia R30 el equivalente para la máxima corriente de salida.

Para seleccionar la máxima corriente o regular la salida de la fuente de alimentación sólo necesitaremos suministrar los voltajes apropiados en los dos puntos (pin 5 de IC6B y en la resistencia R30). Esto es lo que hace el microcontrolador.... pero, ¿cómo puede un microcontrolador generar y regular un voltaje de referencia de contínua?. Echa un vistazo a la siguiente imagen:
[pwm]

Lo que ves en esta imagen es como una señal pulsante(tren de pulsos) puede ser transformada en una señal contínua. Todo lo que nececesitas es pasarla a través de un filtro paso bajo con una frecuencia de corte unas 100 (o más) veces por debajo de la frecuencia de la señal. Como nuestro microcontrolador funciona a 4MHz no es demasiado difícil diseñar ese filtro. Incluso si generásemos la señal con software conseguiríamos unos pocos kHz y el filtro todavía sería muy pequeño.

La diferencia en la imagen ente el diagrama superior y el inferior se llama modulación por ancho de pulso. Cambiando la longitud de los pulsos podemos cambiar el voltaje en contínua despues del filtrado.

!Genial, podremos generar un voltaje de corriente contínua exacto con una señal digital!

El microcontrolador AT90S4433 tiene dos contadores internos, uno de 16 bits y el otro de 8. El contador de 16 bits tiene la posibilidad de usar modulación por ancho de pulso (PWM - Pulse Width Modulation - en inglés), implementada en hardware en el micro con una resolución de 10 bits. El contador de 8 bits no tiene esta capacidad, pero nosotros la podemos implementar por software.Todavía es suficientemente rápido. Usaremos el contador de 16 bits para la regulación del voltaje, lo que nos da 10 bits=1023 escalones de resolución para el control del voltaje. La salida de corriente está controlada con el contador de 8 bits que nos da 255 escalones para controlar el rango de 1-3000mA. Esto significa que tendremos una precisión de 12 mA (o menos). Es suficiente para el control de corriente.

Todos los demás componentes en el circuito son para la fuente de alimentación y la referencia de voltaje (el 7805 es nuestro punto de referencia) y para asegurar que la fuente de alimentación no se comporta de manera inestable cuando se conecta o se desconecta.  

El software

El software para el microcontrolador usa muchos aspectos que ya conoces de los artículos anteriores (uart para el rs232, display LCD, contadores en modo interrupción). Puedes echar un vistazo en:
linuxdcp.c.

Lo más interesante es quizás el software PWM (Modulación por Ancho de Pulso). La variable ipwm_phase implementa junto con ipwm_h el PWM para la corriente. Nosotros correremos el contador de 8 bits en modo interrupción y cada vez que se genere una interrupción por overflow será llamada la función "SIGNAL(SIG_OVERFLOW0)". Aquí comprobaremos ipwm_phase para ver si tenemos que generar un '1' o un '0' en la salida y reiniciaremos el contador. Fácil!.

Aunque el software no es demasiado complicado, para entenderlo del todo te recomiendo que leas las hojas de características de el 4433 (ver las referencias).

El 4433 es un microcontrolador de 8 bits y sus capacidades matemáticas son limitadas. Las funciones divXbyY y multiXbyY implementan matemática de 24 bits que necesitaremos para calcular el ancho de pulso desde un voltaje dado por el usuario.

Nuestra fuente de alimentación tiene 7 botones. Seis de ellos son para seleccionar los niveles de voltaje y corriente, y el otro es para el modo "reposo" (standby). Usando este modo puedes temporalmente desconectar la salida y todavía podrás cambiar los límites de voltaje y corriente. El estado de los botones es sondeado en el bucle principal del programa. La variable ignorebutton es usada para el rebote de los botones. Cuando presionas un botón con tus dedos lo mueves arriba y abajo un poco. Como humano no notarás esto pero el microcontrolador es tan rápido que verá on,off,on,off... El contador ignorebutton espera un poco después que se haya presionado el botón para evitar estos rebotes.  

Haciendo la placa de circuito impreso

La placa principal:
[main board]
La caja para la fuente. Madera a los lados y metal para la parte de abajo, arriba y frontal:
[box]
El panel frontal:
[front]
El paquete software contiene un archivo postscript (linuxDCpower.ps) para la placa de circuito impreso. Personalmente encuentro que los pads son siempre un poco pequeños. Por tanto os recomiendo agrandarlos un poco con un rotulador antes de insolar la placa. El proceso para hacer la placa de forma casera es descrito en: Mayo 2002, Un panel de control LCD para tu servidor Linux".
Cómo construir una barata pero bonita caja para tu fuente de alimentación es descrito en el artículo "Septiembre 2002, Contador de Frecuencia de 1Hz-100Mhz con visor LCD e interfaz RS232". Puedes ver la caja y el panel frontal que yo hice a la derecha. Pincha en las imagenes para agrandarlas.  

Comprobaciones

Como cualquier otro circuito que hayas soldado es buena idea no conectar directamente al completo la fuente de alimentación, sino probarlo paso a paso. Así detectarás fallos que puedas haber tenido mientras hacías el circuito.
  1. Monta la placa principal con todos los componentes pero no pongas todavía los circuitos integrados en sus zócalos.
  2. Coge una batería de 9V y conecta el positivo al pin 2 y el negativo al pin 1 del conector marcado en el esquemático con AC_POWER. Usa un voltímetro y comprueba que tienes +5V en el max232 entre los pines 8 y 16 y en los pines 7 y 8 del micro. En los amplificadores operacionales deberías tener casi 9V en el pin positivo.
  3. Ahora da la vuelta a la pila de 9V (el pin 1 al positivo y el pin 2 al negativo) y comprueba que tienes alrededor de -9V en los pines negativos de los operacionales.
  4. Si todas las pruebas hasta aquí se han superado, entonces la fuente de alimentación de la placa principal funciona y puedes insertar el max 232 y el microcontrolador en sus zócalos.
  5. Usa de nuevo la batería de 9V y conéctala para tener los +5V (ver arriba). Conecta el cable del programador al puerto paralelo y el conector para programación a la placa.
    Desempaqueta el software (para bajártelo vé al capítulo de referencias), "cd" al directorio que se ha creado y teclea:
    make avr_led_lcd_test.hex
    make testload
    make ttydevinit

    Ahora el software de prueba debería ser cargado a la placa. En el display LCD tendrías que ver "hello", el LED rojo parpadeando y si conectas el ordenador al rs232 deberías ver "ok" impreso (inicializa la línea rs232 con ttydevinit, entonces teclea cat /dev/ttyS0, o cat /dev/ttyS1 para el COM2).
  6. Ahora monta la parte de potencia pero no conectes el transformador principal todavía. En su lugar conecta la batería de 9V a los cables donde el transformador tendría que ser conectado. No te preocupes en cuál dirección debería ser la pila conectada, el condensador de 4700uF debería siempre cargarse alrededor de los 9V. Comprueba esto con un voltímetro.
  7. Cuando este último paso de prueba haya sido superado haz algunas comprobaciones finales de los cables,conecta todos los transformadores y enciende la fuente. Sin amplificadores operacionales en sus zócalos deberías tener el voltaje máximo de salida de la fuente. Mide esto pero cun cuidado de no causar ningún cortocircuito porque quemarás los transistores de potencia porque no no hay limitación de corriente todavía.
  8. Apaga,inserta todos los amplificadores operacionales y vuelve a conectar el cable de programación, enciende y teclea:
    make
    make load
  9. Ahora la fuente de alimentación debería ser completamente funcional. Nota que mientras el cable de programación esté conectado la salida es ligeramente distinta. Desconectalo para conseguir el voltaje y la corriente de salida exactos.
 

Aquí está: Nuestra propia fuente de alimentación

Has visto arriba que hay 3 opciones disponibles dependiendo del transformador que uses. El software por defecto es para 16V, 2.2A de salida. Para cambiar ésto edita el archivo linuxdcp.c y busca:
MAX_U, IMINSTEP, MAX_I, además tendrás que cambiar la calibración en la función set_i si tienes la salida máxima de 3A. El código está bien comentado y verás que es lo que necesitas cambiar.

Finalmente aquí tienes unas pocas imáenes de la fuente de alimentación que me he construido. Es un poco de trabajo pero realmente es muy buena y robusta. El tiempo fué bien invertido porque una fuente de alimentación de laboratorio es realmente una de las cosas más usadas.

[front view]

[top view]
 

Usando la fuente de alimentación

Probablemente es casi obvio como usarla. Tienes 4 botones para seleccionar el voltaje de salida. 2 de ellos para subir/bajar en pasos de 1V y otros 2 para pasos de 0.1V. La limitación de corriente puede ser seleccionada también con 2 botones. Aquí los pasos no son lineares. Para valores pequeños puedes incrementar o decrementar pasos de 50mA. Para valores por encima de 200mA los pasos son de 100mA y superiores a 1A en 200mA. De ésta forma es fácil seleccionar el rango completo con sólo 2 botones.
El botón de standby puede ser usado para desconectar temporalmente la potencia sin la necesidad de seleccionar los valores de nuevo cuando sea conectada.
El led rojo se encenderá cuando se alcance el límite de corriente, y parpadeará en el modo standby.
La fuente de alimentación puede ser controlada completamente via comandos ascii por el puerto serie. Los siguientes comandos están disponibles:

u=X selecciona el voltaje (p.ej u=105 selecciona el voltaje a 10.5V)
i=Xmax selecciona la corriente máxima (p.ej i=500 selecciona el límite de corriente a 500mA)
s=1 o s=0 selecciona el modo standby
u=? o i=? o s=? imprime los parámetros seleccionados actualmente. Esto producirá una salida en la pantalla como esta, p.ej:
u: 50 s:0 i: 100 l:0
u: significa voltaje=50 =5V, s:0 significa standby off, i: 100 es 100mA, y l:0 que el límite de corriente no se ha alcanzado.

Usando este lenguaje de comandos ascii podrías también escribirte una interfaz gráfica de usuario para la fuente de alimentación. Para usar la línea rs232 necesitas inicializarla primero con el comando ttydevinit. ttydevinit está incluído en el paquete software. Esto está descrito también en el artículo: Septiembre 2002, Contador de frecuencias.

Como has visto en el esquemático usamos 2 transformadores y el plano de masa de la lógica de control está conectada a la salida positiva de corriente contínua (DC). Los dos transformadores separan los voltajes y no hay problema con esta configuración. Necesitamos conectar cosas como estas para tener la polaridad correcta para los bucles de realimentación de los amplificadores operacionales. Unas palabras de atención: Esta configuración significa también que el cable de masa de la línea RS232 está conectada a la salida positiva de corriente contínua! En otras palabras, no puedes usar la línea rs232 si quieres usar la fuente de alimentación con otros componentes que estén conectados a la línea de masa del ordenador. Pues ser una buena idea poner una etiqueta en la fuente de alimentación que diga "la línea de masa de la conexión rs232 está conectada a la línea de salida positiva de corriente contínua". Si quieres asegurarte que no hay forma de causar un cortocircuito a través de la cable de masa de la línea RS232 o usas un portátil alimentado por la batería o haces seguro que el circuito alimentado por la fuente de alimentación no tiene cualquier otra conexión o no usa el interfaz de comandos RS232. Tampoco te preocupes demasiado por este aviso. Si no sobrepasas los 250mA de limitación de corriente de la fuente entonces el led rojo te dirá cuando has cometido un error y no hay peligro para tu ordenador incluso si haces alguna estupidez.

 

Seguridad

Este circuito contiene un transformador que está conectado la toma de corriente principal (230V o 110V dependiendo del país). Por favor asegurate de un aislamiento apropiado. Si nunca has trabajado con fuentes de alimentación pide a una persona experta que compruebe el circuito mirando por el aislamiento y la seguridad antes de conectarla por primera vez.  

Ajustes

El software para la fuente de alimentación está ya calibrado. Seguramente no tendrás que cambiar nada ahí. La calibración en el lado hardware depende sólo del 7805, R15, R10, R16 y R38, R30, R26. Sólo estos componentes influyen en los niveles de voltaje y corriente. Si quieres hacer un ajuste fino puedes o cambiar estas resistencias o modificar el software. Nota que el cable de programación conectado influye en la salida. Antes de medir deberías desconectarlo. En el software puedes hacer cambios en las funciones set_u y set_i. Esto está comentado en el código de linuxdcp.c  

Referencias

 

Formulario de "talkback" para este artículo

Cada artículo tiene su propia página de "talkback". A través de esa página puedes enviar un comentario o consultar los comentarios de otros lectores
 Ir a la página de "talkback" 

<--, regresar al índice de este número

Contactar con el equipo de LinuFocus
© Guido Socher, FDL
LinuxFocus.org
Información sobre la traducción:
en --> -- : Guido Socher (homepage)
en --> es: Miguel Magán C." <miguelmmc/at/terra.es>

2004-02-20, generated by lfparser version 2.43