Compare commits
1 Commits
Author | SHA1 | Date | |
---|---|---|---|
28838d6cc2 |
4
Makefile
4
Makefile
@ -47,5 +47,5 @@ bin: $(PRG).bin
|
||||
$(OBJCOPY) -j .text -j .data -O binary $< $@
|
||||
|
||||
install: text
|
||||
# uisp -dprog=avr910 -dserial=/dev/ttyS0 -dspeed=115200 -dpart=M8 --erase --upload if=$(PRG).hex
|
||||
avrdude -p m8 -c butterfly -b 115200 -P /dev/ttyUSB0 -u -e -U flash:w:$(PRG).hex
|
||||
uisp -dprog=avr910 -dserial=/dev/ttyS0 -dspeed=115200 -dpart=M8 --erase --upload if=$(PRG).hex
|
||||
# avrdude -p m8 -c butterfly -b 19200 -P /dev/ttyUSB0 -u -e -U flash:w:$(PRG).hex
|
||||
|
15
eagle/README
15
eagle/README
@ -1,21 +1,16 @@
|
||||
Der IRF9540 und die BD139/140 sollten auf einer (kleinen) Kühlfläche montiert werden.
|
||||
Der IRF9540 und die BD139/140 müssen auf einer Kühlfläche montiert werden!
|
||||
|
||||
Die Hochlastwiderstände im Equalizer (R10/R11) begrenzen die Ausgleichströme
|
||||
und sollten 9-11W abkönnen.
|
||||
|
||||
Beim Shunt (R21) reichen 2W (für max. 2A Ladestrom).
|
||||
Die Hochlastwiderstände im Equalizer (R10/R11) und der Shunt (R21/R26)
|
||||
sollten >= 5W abkönnen
|
||||
|
||||
LiPos reagieren *extrem* allegisch auf zu hohe Spannungen, daher die
|
||||
Spannungsteiler für Ubat (R23/R24) und für den Equalizer (R5, R6, R7)
|
||||
mit möglichst geringen Toleranzen (0.1%) aufbauen!
|
||||
|
||||
Wert für die Induktivität habe ich nicht berechnet. Ich habe "L-PISR 100u" (SMD)
|
||||
von Reichelt verwendet. (keine Entstördrosseln nehmen!)
|
||||
Wert für die Induktivität habe ich nicht berechnet.
|
||||
"RS Bestellnummer 308-8823" sollte passen (100µH / 5A)
|
||||
|
||||
Die Referenzdiode LM336-2.5 wird mit dem Spindeltrimmer (kein Poti!)
|
||||
auf 2.56V abgeglichen.
|
||||
|
||||
Als Versorgungsspannung 16-18V verwenden (z.B. Laptop Netzteil/KFZ-Adapter).
|
||||
|
||||
Das LCD und der MAX232 können eigentlich entfallen und durch LEDs ersetzt werden.
|
||||
Hierzu natürlich die Software anpassen. (ggf. kleineren AVR -> Tiny24)
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 42 KiB |
Binary file not shown.
@ -44,13 +44,12 @@
|
||||
|
||||
/*
|
||||
* power supply:
|
||||
* - CH0 - voltage with prescaler (12V -> 2V; 15mV -> 2.5mV/bit)
|
||||
* - CH1 - current with (1A -> 1000mV; 2.5mA -> 2.5mV/bit)
|
||||
* - CH0 - voltage with prescaler (12V -> 2000mV; 15mV -> 2.5mV/bit)
|
||||
* - CH1 - current with (5A -> 2500mV; 5mA -> 2.5mV/bit)
|
||||
* - PWM - high-active output to buckconverter
|
||||
*/
|
||||
#define CH0 PORTC0
|
||||
#define CH1 PORTC1
|
||||
#define SUMMER PORTB0
|
||||
#define PWM PORTB1
|
||||
|
||||
#define NOP asm volatile ("nop")
|
||||
@ -61,7 +60,7 @@
|
||||
|
||||
#define VOLTAGE_CONNECT 9000
|
||||
#define VOLTAGE_CHARGE 12450
|
||||
#define CURRENT_CHARGE 17500
|
||||
#define CURRENT_CHARGE 49000
|
||||
#define CURRENT_READY 2000
|
||||
#define VOLTAGE_REMOVE 1000
|
||||
|
||||
@ -194,7 +193,7 @@ static uint16_t current;
|
||||
ISR(ADC_vect)
|
||||
{
|
||||
if (ADMUX & 0x01) {
|
||||
current = ADCW * 25;
|
||||
current = ADCW * 50;
|
||||
ADMUX = CH0;
|
||||
|
||||
} else {
|
||||
@ -224,12 +223,9 @@ ISR(TIMER0_OVF_vect)
|
||||
lcd_update = 1;
|
||||
}
|
||||
|
||||
static uint16_t beep_timer;
|
||||
beep_timer = (beep_timer +1) & 0x3FF;
|
||||
|
||||
/*
|
||||
* charge with constant voltage of 12.45V
|
||||
* and a current limit of 1.6A
|
||||
* and a current limit of 4.9A
|
||||
*/
|
||||
if (mode == MOD_CHARGING) {
|
||||
if (voltage < (VOLTAGE_CHARGE -25) && current < (CURRENT_CHARGE -500))
|
||||
@ -247,11 +243,6 @@ ISR(TIMER0_OVF_vect)
|
||||
TCCR1A &= ~(1<<COM1A1);
|
||||
}
|
||||
|
||||
if (mode == MOD_READY && beep_timer < 0x03)
|
||||
PORTB &= ~(1<<SUMMER);
|
||||
else
|
||||
PORTB |= (1<<SUMMER);
|
||||
|
||||
switch (mode) {
|
||||
case MOD_WAITING:
|
||||
/* start charging when a voltage > 9V is detected (lipo connected) */
|
||||
@ -275,7 +266,7 @@ ISR(TIMER0_OVF_vect)
|
||||
|
||||
int main(void)
|
||||
{
|
||||
DDRB = (1<<CS) | (1<<RS) | (1<<PWM) | (1<<SUMMER);
|
||||
DDRB = (1<<CS) | (1<<RS) | (1<<PWM);
|
||||
DDRD = (LCD_DATA_MASK) | (1<<RW);
|
||||
|
||||
/* Set baud rate 19200 */
|
||||
|
Loading…
Reference in New Issue
Block a user