Download - Presentacion diciembre
ALIMENTACIÓN POR ULTRACONDENSADORES
ÍNDICE
1. Nuestro Proyecto.
1. Alcance Actual.
1. Explicación Técnica (Circuito).o Circuito (Proteus).1. Explicación por bloques.
2. Explicación Técnica (Programa)o Programa (Prueba).o Programa (Final).
• Demostración.
NUESTRO PROYECTO
• Alimentado por una placa solar.
• Carga y descarga de ultra-condensadores, a traves de 2 circuitos “buck-boost”.
• Para alimentar pequeñas cargas.
ALCANCE ACTUAL (DICIEMBRE)
• Es teórico: Programa en “C” y Proteus.
• El circuito y programa para el control de una tensión fija (12V).
EXPLICACIÓN TÉCNICA (Circuito)
• Alimentación externa por fuente de alimentación con un condensador de prueba.
• Control por circuito “Buck-Boost”.
• Control de impulsos PWM con “µC”.
• Salida fija (12V).
CIRCUITO (Proteus)
EXPLICACIÓN POR BLOQUES
Pruebas de investigación:
• Variando el % y frecuencia del impulso y R2, hasta llegar a un valor de tensión válido
1.- 60% | 100KHz | 100Ω Vp = 40V
2.- 50% | 50 KHz | 1KΩ Vp = 27V
3.- 40 % | 100KHz | 1KΩ Vp = 23´75V
4.- 30 % | 50KHz | 100 Ω Vp = 20 V
VARIACIÓN MANUAL DEL PWM
VARIACIÓN AUTOMATICA DEL PWM
EXPLICACIÓN TÉCNICA (Programa)
• Usamos un PIC 16f876a.
• Control por una entrada analógica.
• Control por una señal PWM.
• Monitorización de datos.
PROGRAMA (Pruebas)
• while(1)• • restart_wdt();• a=getc();• switch(a)• case '8': c=c+10;• break;• case '2': c=c-10;• break;• case '6': c=c+25;• break;• case '4': c=c-25;• break;• case '5': c=c+5;•
• if(c)• • set_pwm1_duty(c);• b=read_adc();• printf("configuracion duty %d \r",c);• printf("lectura V = %1.2f \r",b/51);• restart_wdt();• • •
PROGRAMA (Final)• #include <16f876a.h>• #byte port_a=5• #byte port_b=6• #byte port_c=7• #use delay(clock=4000000)• #use
rs232(baud=9600,xmit=pin_c6,rcv=pin_c7,bits=8)• float b;• int c;• main()• • set_tris_a(0b00000001);• set_tris_c(0b10000000);• setup_timer_2(t2_div_by_1,127,1);• setup_ccp1(ccp_pwm);• setup_adc(ADC_CLOCK_INTERNAL);• setup_adc_ports(all_analog);• set_adc_channel(0);• c=20;
• while(1)• • delay_ms(20);• b=read_adc();• b=b/51;• if(b>2.52) set_pwm1_duty(c=c-5);• if(b<2.49) set_pwm1_duty(c=c+5);• if(b>2.49 && b<2.52) delay_ms(20);• if(c)• • printf("configuracion duty %d \r",c);• printf("lectura V = %1.2f \r",b);• restart_wdt();• • •
• Transformar el valor en binario, en valores de tensión.
• Control para la estabilización de salida de tensión (12V) por PWM.
• delay_ms(20);
• b=read_adc();
• b=b/51;
• if(b>2.52) set_pwm1_duty(c=c-5);• if(b<2.49) set_pwm1_duty(c=c+5);• if(b>2.49 && b<2.52) delay_ms(20);
DEMOSTRACIÓN
GRACIAS POR SU ATENCIÓN