viernes, 19 de abril de 2013

POST#4: Fuente Digital de dos Salidas variables y una fija a 5v con LCD 40x2, PIC y comunicación mediante el protocolo serial RS232


Objetivo: 

Al realizar los distintos proyectos con el tiempo llego la necesidad de tener una fuente confiable que llene las necesidades básicas de todo laboratorio electrónico así que me encamine en el diseño y construcción de una Fuente de laboratorio digital de tres salidas, dos salidas variables de voltaje de 1.2V a 25V y medidor de corriente y una salida fija de 5V. La fuente es controlada mediante el uso de un microcontrolador PIC ejecutando algoritmos en lenguaje C de control comunicación con la PC mediante serial por el puerto RS232, la etapa de potencia de las salidas se basa en el regulador de voltaje Step-Down LM2576 en su versión de voltaje ajustable como en la de voltaje fijo, con esto se logra una alta eficiencia en la regulación de voltaje, un mínimo de desperdicio en perdidas de disipación de calor así como una potencia de salidas de 3 Amp en una de las salidas y en las otras dos de solo 2 Amp en cada una de ellas.

El equipo cuenta con salidas que ademas de ser dos de ellas variables y una fija, estas se pueden habilitar o inhabilitar para así poder usar solo la que se necesite o en caso de cortocircuito inhabilitarla rápidamente para evitar daños también para controlarla se usan los pulsadores del frontal del equipo activando o desactivando las salidas así como también es posible por medio de una aplicación desarrollada a la medida para el dispositivo en lenguaje C# de .NET, tener un monitoreo en tiempo real del voltaje y corriente en cada una de las salidas así como también la temperatura en su interior.


Materiales principales utilizados:
  • 1 x PIC16F917. (Microchip)
  • 1 x MAX232 - (Muestra gratis obtenida gracias a Maxim)
  • 1 x LM2576T-5.0P+ (Step-Down Regulador de Voltaje 5v).
  • 1 x LM2576T-ADJ (Step-Down Regulador de Voltaje Variable).
  • 6 x Pulsadores - Para control manual desde el frontal.
  • 1 x Baquelita para el montaje.
  • 1 x LCD 40x2 - Para visualización del menú, estado del dispositivo y configuraciones. 
  • 2 x Conector banana de chasis dorados dobles polarizados - Para las salidas de voltaje.
  • 2 x Conector banana normal dos colores - Para la salida de voltaje de 5V.
  • 3 x Puente rectificador - Para la salida de los transformadores.
  • 2 x Transformador 12v-0-12v a 4A. (Usado en las 3 salidas de voltaje).
  • 1 x Transformador 12v a 1A. (Lógica y backlight).
  • 1 x LM7805 regulador de voltaje para la lógica de control.
  • 4 x Potenciómetro - 2 de 1 KΩ y 2 de 10 KΩ.
  • Switch grande doble con led para el frontal.
  • Switch grande simple transero para cortar el cable vivo de la red 110v.
  • Fusible y porta fusible de chasis europeo.
  • Caja para prototipos de calidad tamaño grande.
  • 4 x Patas de goma.
  • 1 x Conector DB9 (RS232)
  • Manecillas para los potenciometros con detalle metálico.
  • Modulo ACS712 sensor de corriente.
  • Ventilador pequeño para extracción de calor.
  • Disipadores de aluminio de fuente de poder de PC antigua.
  • LM35 - Sensor de temperatura para controlar el ventilador según se necesite.
PIC16F917Regulador de Voltaje LM2576-05
Modulo ACS712 sensor de corriente.Regulador de voltaje LM7805
Regulador de Voltaje LM2576-ADJ.Sensor de Temperatura LM35.
MAX232 Maxim

Esquemas de Conexión de algunas partes del proyecto:

PIC16F917.Esquema según datasheet  del regulador
de Voltaje Variable LM2576-ADJ.
Esquema según datasheet  del regulador
de Voltaje LM2576-05 voltaje fijo a 5V.
RS232 Transistorizado.

Librerías y algunas rutinas del código fuente desarrolladas para el proyecto:
  • Función que lee todos las entradas analógicas y aplica sus respectivos cálculos.

///////////////////////////////////////////////////////////////
// adc
///////////////////////////////////////////////////////////////
void adc(void)
{
      set_adc_channel(1);     //medir tension
      delay_us(TIEMPO_DELAY); //Temporiza 20uS
      value=READ_ADC();    // read analog value from channel 1
      vol1 = (float) (((value*500)/1024)/10);//Escalar Variable
                                             //de 0 a 500
      delay_us(TIEMPO_DELAY); //Temporiza 20uS
      sprintf(voltage1, "%f", vol1);
      voltage1[5] = '\0';
      /////////////////////////////////////////////////////////
      set_adc_channel(4);     //medir corriente
      delay_us(TIEMPO_DELAY); //Temporiza 20uS
      value=READ_ADC();    // read analog value from channel 4
      AN1 = (float) (value*5.0/1024); //AN1=value*(Vref(+) - 
                                      //Vref(-)/2^n +Vref(-),
                                      //multiplica el numero de
                                      //bits por su equivalente
                                      //en analogico
      delay_us(TIEMPO_DELAY); //Temporiza 20uS
      sprintf(amperaje1, "%f", AN1);
      amperaje1[5] = '\0';
      /////////////////////////////////////////////////////////
      set_adc_channel(0);
      delay_us(TIEMPO_DELAY); //Temporiza 20uS
      value = READ_ADC(); // read analog value from channel 0
      vol2 = (float) ((value*500)/1024)/10 ;//Escalar Variable
                                            //de 0 a 500
      delay_us(TIEMPO_DELAY); //Temporiza 20uS
      sprintf(voltage2, "%f", vol2);
      voltage2[5] = '\0';
      /////////////////////////////////////////////////////////
      set_adc_channel(5);     //medir corriente
      delay_us(TIEMPO_DELAY); //Temporiza 20uS
      value = READ_ADC(); // read analog value from channel 5
      AN2 = Filtro_Analog_AN2((float) ((value*5.0)/1024));
      delay_us(TIEMPO_DELAY); //Temporiza 20uS
      sprintf(amperaje2, "%f", AN2);
      amperaje2[5] = '\0';
      /////////////////////////////////////////////////////////
      set_adc_channel(2);
      delay_us(TIEMPO_DELAY); //Temporiza 20uS
      value=READ_ADC();   // read analog value from channel 2
      vol3 = (float) ((value*500)/1024)/10 ;//Escalar Variable
                                            //de 0 a 500
      delay_us(TIEMPO_DELAY); //Temporiza 20uS
      sprintf(voltage3, "%f", vol3);
      voltage3[4] = '\0';
      /////////////////////////////////////////////////////////
      set_adc_channel(3);
      delay_us(TIEMPO_DELAY); //Temporiza 10uS
      value=READ_ADC();  // read analog value from channel 3
      delay_us(TIEMPO_DELAY);
      temperatura= (float) ((5.00*value*100.00/1024.0)/10);
      sprintf(temperatura1, "%f", temperatura);
      temperatura1[5] = '\0';
      /////////////////////////////////////////////////////////
}

Interior de la fuente digital:

Vista superior en fase de pruebas
donde se uso el LM350, LM317 y un
LM7805 para regular el voltaje.
Frontal en fase de pruebas.
Vista de atrás en fase de pruebas. Vista de transformadores, ventilador
para control de temperatura y demás
partes que conforman la fuente. 
Reguladores LM2576 que se usaron
para sustituir los anteriores mencionados
y ahora estos con disipador de fuente de
poder de PC antigua.
Módulo interno RS232 y módulos
de censar corriente.
Modulo USB a Serial. Modulo USB a Serial Finalizado.
Frontal en fase definitiva.
Imágenes de la Aplicación de PC:

Aplicación desactivada y sin 
conexión serial presente.
Aplicación activa pero con las salidas
desactivas solo varia la temperatura
de la fuente en el momento.
Ventana para salvar la imagen JPG de la
gráfica de comportamiento de la fuente en el
tiempo tanto su voltaje como su corriente.
Aplicación con la gráfica de
temperatura activa.
Aplicación con todas las salidas activas
y graficando en el tiempo la salida de 3A.
Imágenes de la fuente digital en funcionamiento:

Vista Frontal Fuente Digital definitiva
con luz de fondo azul y led de estado
en cortocircuito de alguna salida.
Otra vista frontal.
Vista de la fuente entre otros equipos
de electrónica.

Vista Frontal Fuente Digital definitiva
sin luz de fondo y led de estado
en cortocircuito de alguna salida.
Vista de la fuente en su estado actual
en el banco de trabajo.
Aplicación de supervición de la fuente
donde se visualiza el estado de la salidas.

Imágenes de la fuente digital finalizada:

Foto Frontal inclinada.Foto de atrás inclinado.
Foto de atrás.Foto Frontal.
Foto de atrás con modulo de USB a Serial.
Bibliografia, Web, Datasheet y Driver:

3 comentarios:

  1. Hola Jartur, muy lograda tu fuente de Lab.
    Me ha gustado el desarrollo, soy ingeniero en España
    mi e.mail josep_astrud@yahoo.es.
    Felicitaciones.
    Un cordial saludo.

    ResponderEliminar
    Respuestas
    1. Gracias amigo cada vez que puedo la mejoro, actualmente tengo en proceso su actualización, Step-Down controlada por DAC de 12bit para cada salida y encoder digital como perillas de configuración de los menus, usando los mismo sensores para medir la corriente y conexión USB con el PIC18f4550.

      Eliminar
    2. Felicidades..Quisiera poder duplicarlA soy aficionado a la electrónica

      Eliminar

POST#20: UPS AC-DC 5V a 4 Amp con cargador de batería de ácido plomo sellada

Objetivo:  Debido a los constantes bajones y cortos programados de la energía eléctrica en mi país Venezuela, he determinado hac...