Solární nabíječka

Z MAM wiki

Přejít na: navigace, hledání

Obsah

[editovat] Zvolené téma

Nabíjení 4 NiCd článků pomocí solární nabíječky s indikací nabíjení pomocí dvojice LED.


Použitý mikroprocesor ATtiny 44A [1]

[editovat] Návrh řešení

Tento procesor je nízkým odběrem ideální pro použití v bateriových aplikacích. Odběr při plném zatížení je nižší než udávané samovybíjení NiCd baterií. Procesor je napájen z baterií nebo solárního článku podle aktuální situace. Hlídání nabití baterií je řízeno mikrokontrolerem. Napětí na bateriích porovnáváme s vnitřní napěťovou referencí 1,1V. Pokud dojde k poklesu napětí na článku při nabíjení odpojí procesor solární panel.

Soubor:nabijeci charakteristika.jpg
Nabíjecí charakteristika NiCd a NiMH článků


Vstupní napětí a napětí na bateriích měříme pomocí AD převodníku, který je součástí mikroprocesoru. Před vstupem do AD převodníku jsou napětí zmenšena deliči napětí na maximální hodnotu 1,1V. Na jednom z výstupů je umístěna dvoubarevná signalizační LED, která indikuje proces nabíjení. Výstup Charge řídí tranzistorový spínač, který při nabití baterií odpojí solární panel.

Soubor:schema nabijecka.jpg
Schéma zapojení


Soubor:vyvojovy diagram.jpg
Vývojový diagram práce mikroprocesoru


[editovat] Vlastní program


INICIALIZACE
 
//prirazeni promenych na vystupy procesoru, s definovanim DDR(smer), PORT (vystupni data)
// a PIN (vstup registru log uroven vyvodu) a definovani daneho fyzickoho vyvodu
#define LED_DIR DDRA
#define LED_PORT PORTA
#define LED1 PA4
#define LED2 PA7


#define CHRG_DIR DDRB
#define CHRG_PORT PORTB
#define CHRG_PIN PINB
#define CHRG PB0


//definovani pinu pro ADprevodnik

#define VIN_DIR DDRA
#define VIN_PORT PORTA
#define VIN PA0

#define VBAT_DIR DDRA
#define VBAT_PORT PORTA
#define VBAT PA1


#define ADC_VREF_TYPE 0b10000000;
////VNI 90D
#define VIN_MIN 73//6V
#define VBAT_MIN 120 //cca 3.7V

PROGRAM

#include <avr/io.h>
#include <util/delay.h>
#include "board.h"
#include <avr/interrupt.h>

unsigned char stav_LED;
//připojení souboru pomocí include 
unsigned char pocet;
unsigned char indikace;

void LED(unsigned char BARVA){
//0 znamena zhasnuto, 1 zelena, 2 cervena
	if (BARVA==0x00){
		LED_PORT &= ~_BV (LED1);
		LED_PORT &= ~_BV (LED2);
		}
	if (BARVA==0x01){
		LED_PORT |= _BV (LED1);
		LED_PORT &= ~_BV (LED2);
		}
	if (BARVA==0x02){
		LED_PORT &= ~_BV (LED1);
		LED_PORT |= _BV (LED2);
		}

}

	
}
void charge_on(void){
	CHRG_PORT |= _BV (PON);
	
}
void charge_off(void){
	CHRG_PORT &= ~_BV (PON);
	return;
	
}

unsigned char cteni_vin(void)  {
	
	ADMUX = 0b10000000;
	ADCSRA |= 0x40;     //registr pro ovladaní AD prevodniku

	while ((ADCSRA & 0x10)==0);
	ADCSRA|=0x10;
	return ADCH;      //ulozeni digitalni hodnoty do registru
 }


unsigned char cteni_vbat(void)  {
	
	ADMUX = 0b10000001;
	ADCSRA |= 0x40;

	while ((ADCSRA & 0x10)==0);
	ADCSRA|=0x10;
	return ADCH;   
 }


int main(void){
//inicializace
// LED 
	LED_DIR |= _BV (LED1);
	LED_DIR |= _BV (LED2);

///
//// POVOLENI GLOBALNIHO PRERUSENI	
	sei();
	while(1){
		switch(indikace){
			case 0 : {
					LED(0x00);	
					break;
				}
			case 1 : {
					LED(0x01);	
					break;
				}
			case 2 : {
					LED(0x02);
					break;	
				}
			case 3 : {
					char i = 0;
					for(i;i<3;i++){
						LED(0x02);
						_delay_ms(500);	
						LED(0x00);
						_delay_ms(500);
						
						}
						indikace = 0;
						break;
				}
			case 4 : {
					char i = 0;
					for(i;i<3;i++){
						LED(0x01);
						_delay_ms(500);	
						LED(0x00);
						_delay_ms(500);
						
						}
						indikace = 0;
						break;	
				}



		}
			
	
	
	

	}
}



[editovat] Odkazy

Solární LED lampička: Tomáš Vaňáč, Adam Žák možné rozšíření úlohy na LED lampičku se solárním dobíjením

Solární lampička: Tomáš Daněk, Lukáš Vystrčil jiné řešení LED lampičky

Osobní nástroje