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
DATOSV
in=24vdc-23vdc Vmax=24 Vmin=23
V
out=7.5vdc
I
out_max=3A
F
sw= 100KHz <-- Estableci 100KHz puede ser mayor o menor .
P
out=Vout*Iout
P
out=7.5vdc*3A= 22.5W
P
in= P
out/Eficiencia
P
in=22.5W/0.8 =28W
Corriente Promedio
I
in_min =
Pin/V
in_minI
in_max =P
in/V
in_max = 28W/24vdc
Corriente Pico
I
peak = 1.4(Iout) = 1.4*3A = 4.2A ; el 1.4 es una constante por el tipo de fuente.
Frecuencia de Operacion deseada
F
sw=100KHz ; Si Fsw se aumenta ,inductor L disminuye .
Selección del Inductor
D=Duty_cycle
D= V
out/V
in_maxL = (V
in_max-Vout)(1-D) / (1.4*I
outmin*Fsw) ; ((24vdc-7.5vdc)(1-7.5vdc/24vdc)) / (1.4*0.5A*100KHz)
L=16.2uH
Capacitor de salida
C
out = (I
out_max)(1-V
out/V
in_min) / ( F
sw * Vripple p-p) ; (3A)(1-7.5vdc/24vdc) / (100KHz * 0.05v pico-pico)
C
out = 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
// Conversor tipo Buck DC-DC (step-down converter) ,
// controlador por voltaje.
//Version 1.1
//Regular voltaje usando comaparador y Vref interno --HECHO
//Version 1.0
//Regula voltaje correctamente haciendo uso de un comparador externo--HECHO
//++++++++++++++++++++++++++++++++++++++++++++++++++++++//
#include <12F683.h>
#FUSES INTRC_IO,NOWDT,PUT,MCLR,BROWNOUT,PROTECT,CPD
#use delay(clock=8M)
#use fast_io(A)
#zero_ram
//+++++++++++++++++++++++++++++++++++++++++
int16 duty_cycle;
//+++++++++++++++++++++++++++++++++++++++++
#Define LED1 pin_A5
//+++++++++++++++++++++++++++++++++++++++++
void main(){
output_A(0x00); //Latch
set_tris_A(0B001001); //MCLR=A3= RX input Int_RA3 on Change
//RA0 = --
//RA1 = Entrada Inversora del comparador Interno
// La configura el modulo como entrada.
//RA2 = Salida PWM
//RA3 = MCLR
//RA4 = --
//RA5 = Status de la operacion 1=PWM ON
//----- Configuracion comparador -------------------//
setup_comparator(A1_VR); // Entrada Inversora y uso de Vref
setup_vref(VREF_LOW|12); // Vref Low range = (Numero/24)*VCC
// 2.5v = (12/24)*5v
//Numero= (Vref/5v)*24
//----- Configuracion PWM --------------------- //
SETUP_CCP1(CCP_PWM); // Seleccionamos PWM
SETUP_TIMER_2(T2_DIV_BY_1, 19,1); // Frecuencia = 100KHz
SET_PWM1_DUTY(0); // Duty cycle = 0%
// Duty cycle maximo = 50% corresponde a 40 unidades
// Duty cycle max depende de los calculos a maxima carga.
//------------------------------------------------
//enable_interrupts(INT_COMP);
//enable_interrupts(GLOBAL); //Interrupciones Habilitadas
//--------- PROGRAMA PRINCIPAL -----------------------------\\\\
setup_comparator(A1_VR); // se rescribe en el registro para condicion mismatch
// Encendido suave //
while(C1OUT==1&&duty_cycle<30){ // Vin < Vref Vin > 2.5v
SETUP_CCP1(CCP_PWM); // Encendemos el modulo PWM
SET_PWM1_DUTY(duty_cycle++);
output_high(LED1); // Encendemos LED
delay_ms(25); // Se hace una demora de un ciclo PWM minimo antes de aumentar
}
// Encendido suave //
while(1){
while(C1OUT==0&&duty_cycle>0){ // Vin >= Vref Vin >= 2.5v
SET_PWM1_DUTY(duty_cycle--);
if(duty_cycle==0)SETUP_CCP1(CCP_OFF); // Apagamos modulo PWM porque sigue enviando duty aunque sea 0%
output_low(LED1); // Apagamos LED
delay_us(20);
}
while(C1OUT==1&&duty_cycle<40){ // Vin < Vref Vin > 2.5v
SETUP_CCP1(CCP_PWM); // Encendemos el modulo PWM
SET_PWM1_DUTY(duty_cycle++);
output_high(LED1); // Encendemos LED
delay_us(20); // Se hace una demora de un ciclo PWM minimo antes de aumentar
}
}//End while principal,loop infinito.
}//end main
DiagramaUse 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