Autor Tema: Regulador de voltaje step-down "Buck converter" para cargador de baterias  (Leído 8268 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3227
Hola amigos!

Por ahora esto lo pongo en foro técnico  porque lo estoy diseñando y todavía tengo ciertas dudas respecto a los cálculos.

Cuándo lo tenga listo lo posteo nuevamente en limpio en proyectos.



Quiero cargar una batería de ácido-plomo de 6v@7AHr , iba a utilizar un circuito dedicado pero se hace más caro y puede dificultarse su compra,también iba a utilizar un regulador lineal pero este no es muy eficiente.

Entonces leí acerca de los convertidores de voltaje y su eficiencia,me decidi por el convertidor buck,ya que solo necesite el inductor,el mosfet correcto,diodo,capacitor,siento el inductor lo más crítico del diseño por así decirlo.




Lo primero es realizar el regulador.

El voltaje de entrada que dispongo es de 24v, a la salida requiero 7.5v@3A

DATOS

Vin=24vdc-23vdc               Vmax=24   Vmin=23
Vout=7.5vdc
Iout_max=3A
Fsw= 100KHz        <-- Estableci 100KHz puede ser mayor o menor .

Pout=Vout*Iout
Pout=7.5vdc*3A= 22.5W

Pin= Pout/Eficiencia
Pin=22.5W/0.8 =28W

Corriente Promedio

Iin_min = Pin/Vin_min
Iin_max =Pin/Vin_max = 28W/24vdc

Corriente Pico

Ipeak = 1.4(Iout) = 1.4*3A = 4.2A  ; el 1.4 es una constante por el tipo de fuente.

Frecuencia de Operacion deseada
Fsw=100KHz             ; Si Fsw se aumenta ,inductor L disminuye .

Selección del Inductor

D=Duty_cycle
D= Vout/Vin_max

L = (Vin_max-Vout)(1-D) / (1.4*Ioutmin*Fsw)  ; ((24vdc-7.5vdc)(1-7.5vdc/24vdc)) / (1.4*0.5A*100KHz)
L=16.2uH

Capacitor de salida

Cout = (Iout_max)(1-Vout/Vin_min)  /  ( Fsw * Vripple p-p) ;     (3A)(1-7.5vdc/24vdc)  /  (100KHz * 0.05v pico-pico)
Cout = 412uF minimo a carga máxima ,
  * se recomienda capacitor de baja ESR , se podrían utilizar 2 en paralelo de 220uF cada uno.
Revisar la corriente de ripple que generalmente es 1/3 de I  ;  Iripple= 0.3 * I

Capacitor de entrada

Cin =


En un rato más temrino de subir los datos.

Programa de prueba , control realizado por voltaje.
CCS C compiler , pic12F683@8MHz
-Comparador interno
-Voltaje de Referencia interno
-Módulo PWM
Código: C
  1. // Conversor tipo Buck DC-DC (step-down converter) ,
  2. // controlador por voltaje.
  3.  
  4. //Version 1.1
  5. //Regular voltaje usando comaparador y Vref interno --HECHO
  6.  
  7. //Version 1.0
  8. //Regula voltaje correctamente haciendo uso de un comparador externo--HECHO
  9. //++++++++++++++++++++++++++++++++++++++++++++++++++++++//
  10. #include <12F683.h>
  11.  
  12.  
  13. #FUSES   INTRC_IO,NOWDT,PUT,MCLR,BROWNOUT,PROTECT,CPD
  14. #use     delay(clock=8M)
  15. #use     fast_io(A)
  16. #zero_ram
  17. //+++++++++++++++++++++++++++++++++++++++++
  18. int16 duty_cycle;                                      
  19. //+++++++++++++++++++++++++++++++++++++++++
  20. #Define LED1    pin_A5
  21. //+++++++++++++++++++++++++++++++++++++++++
  22. void main(){
  23.  
  24.    output_A(0x00);                     //Latch
  25.    set_tris_A(0B001001);               //MCLR=A3= RX input Int_RA3 on Change
  26.                                         //RA0 = --
  27.                                                                         //RA1 = Entrada Inversora del comparador Interno
  28.                                                                         //              La configura el modulo como entrada.
  29.                                                                         //RA2 = Salida PWM
  30.                                                                         //RA3 = MCLR
  31.                                                                         //RA4 = --
  32.                                                                         //RA5 = Status de la operacion 1=PWM ON
  33.  
  34. //----- Configuracion comparador -------------------//
  35.  
  36.         setup_comparator(A1_VR);          // Entrada Inversora y uso de Vref   
  37.     setup_vref(VREF_LOW|12);      // Vref Low range = (Numero/24)*VCC
  38.                                                                   // 2.5v = (12/24)*5v
  39.                                                                   //Numero= (Vref/5v)*24
  40.  
  41. //----- Configuracion PWM    ---------------------  //
  42.  
  43.          SETUP_CCP1(CCP_PWM);                // Seleccionamos PWM
  44.          SETUP_TIMER_2(T2_DIV_BY_1, 19,1);   // Frecuencia = 100KHz
  45.          SET_PWM1_DUTY(0);                       // Duty cycle = 0%
  46.                                                                                          // Duty cycle maximo = 50% corresponde a 40 unidades
  47.                                                                                          // Duty cycle max depende de los calculos a maxima carga.
  48. //------------------------------------------------
  49.  
  50. //enable_interrupts(INT_COMP);
  51. //enable_interrupts(GLOBAL);          //Interrupciones Habilitadas
  52.  
  53. //---------  PROGRAMA PRINCIPAL   -----------------------------\\\\
  54.                 setup_comparator(A1_VR);                        // se rescribe en el registro para condicion mismatch
  55.                
  56. // Encendido suave      //             
  57. while(C1OUT==1&&duty_cycle<30){                                                 // Vin < Vref    Vin > 2.5v
  58.                         SETUP_CCP1(CCP_PWM);                                    // Encendemos el modulo PWM
  59.                         SET_PWM1_DUTY(duty_cycle++);
  60.                         output_high(LED1);                                                      // Encendemos LED
  61.                         delay_ms(25);                                                           // Se hace una demora de un ciclo PWM minimo antes de aumentar
  62.                         }      
  63.  
  64. // Encendido suave //
  65.  
  66.  while(1){
  67.      
  68.         while(C1OUT==0&&duty_cycle>0){                                          // Vin >= Vref  Vin >= 2.5v
  69.                         SET_PWM1_DUTY(duty_cycle--);
  70.                         if(duty_cycle==0)SETUP_CCP1(CCP_OFF);       // Apagamos modulo PWM porque sigue enviando duty aunque sea 0%
  71.                         output_low(LED1);                                                       // Apagamos LED
  72.                         delay_us(20);
  73.                         }      
  74.        
  75.         while(C1OUT==1&&duty_cycle<40){                                         // Vin < Vref    Vin > 2.5v
  76.                         SETUP_CCP1(CCP_PWM);                                    // Encendemos el modulo PWM
  77.                         SET_PWM1_DUTY(duty_cycle++);
  78.                         output_high(LED1);                                                      // Encendemos LED
  79.                         delay_us(20);                                                           // Se hace una demora de un ciclo PWM minimo antes de aumentar
  80.                         }      
  81.      
  82.    }//End while principal,loop infinito.
  83.  
  84.  
  85.  
  86. }//end main


Diagrama




Use una configuración totem pole para disparar el mosfet canal P .Podría hacerse más simple con solo un transistor pero no conmutaría suficientemente rápido.Por ahora la frecuencia de Operación la tengo ajustada a 100KHz.

LA regulación se hace incrementando-decrementando el ancho de pulso de acuerdo a la lectura de Vout,esta pasa por un divisor de tension.Este voltaje es comparado con Vref , que a su vez esta seteado a 2.5v.

Si Vref > Vout se aumenta el ancho de pulso , esto indica que el voltaje de salida esta bajando.
Si Vout > Vref se decrementa el ancho de pulso , esto indica que el voltaje de salida es el esperado.

Si se aumenta la carga a la salida  se notara como el ancho de pulso incrementa rapidamente para mantener el voltaje y luego disminuye al estabilizarse.

Si se desconecta la carga apenas se veran unos cuantos pulsos para mantener el voltaje.

El PWM lo configure para trabajar de 0% a 50% .



step-down
buck converter
sealed lead-acid
ácido-plomo
_____

Agrego una calculadora en xcel .
La baje de Texas Instruments
« Última modificación: 14 de Septiembre de 2011, 16:54:05 por AKENAFAB »

Desconectado cristian_elect

  • PIC18
  • ****
  • Mensajes: 453
Re: Regulador de voltaje step-down "Buck converter" para cargador de baterias
« Respuesta #1 en: 08 de Septiembre de 2011, 00:14:58 »
Yo hice uno parecido con un Attiny85.
Para una frecuencia de 100KHz use una bobina de 100uH y un capacitor de 420uF para 1Amp.
La bobina de 100uH era chica tipo cilindro de 0.8cm radio por 1.2cm de alto.
Para mas corriente hay una mas grande en forma de toroide de radio 5cm igual de 100uH
su cable era No14 si soporta 5A o mas no lo probé.
Los attiny25/45/85 tienen 2 PWM hasta 250KHz en 8bits.
Para un cargador de bateria no necesita un control muy fino suficiente con uno proporcional que controle el voltaje y la corriente.

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3227
Re: Regulador de voltaje step-down "Buck converter" para cargador de baterias
« Respuesta #2 en: 12 de Septiembre de 2011, 18:05:07 »
Yo hice uno parecido con un Attiny85.
Para una frecuencia de 100KHz use una bobina de 100uH y un capacitor de 420uF para 1Amp.
La bobina de 100uH era chica tipo cilindro de 0.8cm radio por 1.2cm de alto.
Para mas corriente hay una mas grande en forma de toroide de radio 5cm igual de 100uH
su cable era No14 si soporta 5A o mas no lo probé.
Los attiny25/45/85 tienen 2 PWM hasta 250KHz en 8bits.
Para un cargador de bateria no necesita un control muy fino suficiente con uno proporcional que controle el voltaje y la corriente.

Gracias por el dato!

-------------------------------------------

Les dejo el programa 100% funcional y el diagrama también , lo tengo trabajando en protoboard  :mrgreen: .
Pueden ajustar el voltaje de salida modificando Vref interno o cambiando el divisor de tension.

Por ahora no tengo ninguna protección para la corriente.

Cualquier duda por aquí estaremos!

Saludos .


Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Regulador de voltaje step-down "Buck converter" para cargador de baterias
« Respuesta #3 en: 12 de Septiembre de 2011, 18:21:44 »
Y la salida va directo a la batería? Muy recomendable controlar la corriente, fijate que la misma batería indica que la corriente no puede superar cierto valor.


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3227
Re: Regulador de voltaje step-down "Buck converter" para cargador de baterias
« Respuesta #4 en: 12 de Septiembre de 2011, 18:31:59 »
Y la salida va directo a la batería? Muy recomendable controlar la corriente, fijate que la misma batería indica que la corriente no puede superar cierto valor.


Saludos!

Así es , va directo a la batería.

Por ahora este solo es un regulador de voltaje .

Ahorita estoy trabajando en el control de corriente y revisando como se debe cargar la batería cuando esta en uso ,en stand-by  o completamente carga(flotante).

Desconectado cristian_elect

  • PIC18
  • ****
  • Mensajes: 453
Re: Regulador de voltaje step-down "Buck converter" para cargador de baterias
« Respuesta #5 en: 12 de Septiembre de 2011, 18:34:15 »
Yo use ese chip por su PWM que llega a 250KHz y tiene 8bits de resolucion gracias a su PLL para el timer que llega hasta 84MHz pero recomendable a 64Mhz. Aqui con el PIC solo tiene 19 valores de control del PWM y al 50% solo 9 no se si estare mal pero faltaria mas precicion para su control.
Un ATtiny25 es pequeño y de costo bajo justo para el circuito y es rapido 1MHZ por MIPS.

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3227
Re: Regulador de voltaje step-down "Buck converter" para cargador de baterias
« Respuesta #6 en: 12 de Septiembre de 2011, 18:43:56 »
Yo use ese chip por su PWM que llega a 250KHz y tiene 8bits de resolucion gracias a su PLL para el timer que llega hasta 84MHz pero recomendable a 64Mhz. Aqui con el PIC solo tiene 19 valores de control del PWM y al 50% solo 9 no se si estare mal pero faltaria mas precicion para su control.
Un ATtiny25 es pequeño y de costo bajo justo para el circuito y es rapido 1MHZ por MIPS.


El pic12F683 @8MHz oscilador interno. Con una frecuencia de 100KHz tiene una resolución de 26.5bits ,osea 100 valores aproximadamente para el control del PWM ,con el 50% del PWM pues tengo 50 , yo uso 40 en el programa.

Saludos!

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Regulador de voltaje step-down "Buck converter" para cargador de baterias
« Respuesta #7 en: 12 de Septiembre de 2011, 19:01:31 »
En realidad a 100kHz la resolución es 6.3, entonces tienes C.T entre 0 y 77... El oscilador es fijo o tiene otros valores? sino se puede bajar a 4MHz o menos, no se requiere mucha velocidad en este caso.


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3227
Re: Regulador de voltaje step-down "Buck converter" para cargador de baterias
« Respuesta #8 en: 12 de Septiembre de 2011, 19:11:55 »
En realidad a 100kHz la resolución es 6.3, entonces tienes C.T entre 0 y 77... El oscilador es fijo o tiene otros valores? sino se puede bajar a 4MHz o menos, no se requiere mucha velocidad en este caso.


Saludos!

Cierto , los valores los saque de memoria , la resolución es 6.3bits; el oscilador tiene otros valores de 125KHz-8MHz.


--------------------------------------

Este es el circuito que voy a utilizar para medir la corriente.

Tiene una ganancia de 6 veces.
La resistencia shunt de 0.1 ohm.

Asi que si hay un consumo de 3A , 3A*0.1shunt = V , V= 0.3v ; amplificado 6 veces , 1.8v a ser medidos por el microcontrolador para una corriente de 3A.

« Última modificación: 12 de Septiembre de 2011, 19:28:08 por AKENAFAB »

Desconectado cristian_elect

  • PIC18
  • ****
  • Mensajes: 453
Re: Regulador de voltaje step-down "Buck converter" para cargador de baterias
« Respuesta #9 en: 12 de Septiembre de 2011, 21:47:35 »
Lo bueno que puedes cargar batería de 1.2,... 4.5, 6, 9 12V sin hacer cambios el programa del micro siempre mantiene la corriente constante y uno agregados mas como tiempo tipo de bateria.
La disipación es baja yo ya lo probé el circuito para conmutar el mosfet esta bien yo antes hice  uno con un transistor y una resistencia pero el mosfet se calentaba al llegar a los 0.8Amp era por que no conmutaba bien el gate se pone mas dificil con mas alta frecuencia su capacitancía hace que se use un drive para controlar a frecuencias mucho mayores de 100Khz.