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 $< $@
|
$(OBJCOPY) -j .text -j .data -O binary $< $@
|
||||||
|
|
||||||
install: text
|
install: text
|
||||||
# uisp -dprog=avr910 -dserial=/dev/ttyS0 -dspeed=115200 -dpart=M8 --erase --upload if=$(PRG).hex
|
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
|
# 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
|
Die Hochlastwiderstände im Equalizer (R10/R11) und der Shunt (R21/R26)
|
||||||
und sollten 9-11W abkönnen.
|
sollten >= 5W abkönnen
|
||||||
|
|
||||||
Beim Shunt (R21) reichen 2W (für max. 2A Ladestrom).
|
|
||||||
|
|
||||||
LiPos reagieren *extrem* allegisch auf zu hohe Spannungen, daher die
|
LiPos reagieren *extrem* allegisch auf zu hohe Spannungen, daher die
|
||||||
Spannungsteiler für Ubat (R23/R24) und für den Equalizer (R5, R6, R7)
|
Spannungsteiler für Ubat (R23/R24) und für den Equalizer (R5, R6, R7)
|
||||||
mit möglichst geringen Toleranzen (0.1%) aufbauen!
|
mit möglichst geringen Toleranzen (0.1%) aufbauen!
|
||||||
|
|
||||||
Wert für die Induktivität habe ich nicht berechnet. Ich habe "L-PISR 100u" (SMD)
|
Wert für die Induktivität habe ich nicht berechnet.
|
||||||
von Reichelt verwendet. (keine Entstördrosseln nehmen!)
|
"RS Bestellnummer 308-8823" sollte passen (100µH / 5A)
|
||||||
|
|
||||||
Die Referenzdiode LM336-2.5 wird mit dem Spindeltrimmer (kein Poti!)
|
Die Referenzdiode LM336-2.5 wird mit dem Spindeltrimmer (kein Poti!)
|
||||||
auf 2.56V abgeglichen.
|
auf 2.56V abgeglichen.
|
||||||
|
|
||||||
Als Versorgungsspannung 16-18V verwenden (z.B. Laptop Netzteil/KFZ-Adapter).
|
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:
|
* power supply:
|
||||||
* - CH0 - voltage with prescaler (12V -> 2V; 15mV -> 2.5mV/bit)
|
* - CH0 - voltage with prescaler (12V -> 2000mV; 15mV -> 2.5mV/bit)
|
||||||
* - CH1 - current with (1A -> 1000mV; 2.5mA -> 2.5mV/bit)
|
* - CH1 - current with (5A -> 2500mV; 5mA -> 2.5mV/bit)
|
||||||
* - PWM - high-active output to buckconverter
|
* - PWM - high-active output to buckconverter
|
||||||
*/
|
*/
|
||||||
#define CH0 PORTC0
|
#define CH0 PORTC0
|
||||||
#define CH1 PORTC1
|
#define CH1 PORTC1
|
||||||
#define SUMMER PORTB0
|
|
||||||
#define PWM PORTB1
|
#define PWM PORTB1
|
||||||
|
|
||||||
#define NOP asm volatile ("nop")
|
#define NOP asm volatile ("nop")
|
||||||
@ -61,7 +60,7 @@
|
|||||||
|
|
||||||
#define VOLTAGE_CONNECT 9000
|
#define VOLTAGE_CONNECT 9000
|
||||||
#define VOLTAGE_CHARGE 12450
|
#define VOLTAGE_CHARGE 12450
|
||||||
#define CURRENT_CHARGE 17500
|
#define CURRENT_CHARGE 49000
|
||||||
#define CURRENT_READY 2000
|
#define CURRENT_READY 2000
|
||||||
#define VOLTAGE_REMOVE 1000
|
#define VOLTAGE_REMOVE 1000
|
||||||
|
|
||||||
@ -194,7 +193,7 @@ static uint16_t current;
|
|||||||
ISR(ADC_vect)
|
ISR(ADC_vect)
|
||||||
{
|
{
|
||||||
if (ADMUX & 0x01) {
|
if (ADMUX & 0x01) {
|
||||||
current = ADCW * 25;
|
current = ADCW * 50;
|
||||||
ADMUX = CH0;
|
ADMUX = CH0;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
@ -224,12 +223,9 @@ ISR(TIMER0_OVF_vect)
|
|||||||
lcd_update = 1;
|
lcd_update = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint16_t beep_timer;
|
|
||||||
beep_timer = (beep_timer +1) & 0x3FF;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* charge with constant voltage of 12.45V
|
* 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 (mode == MOD_CHARGING) {
|
||||||
if (voltage < (VOLTAGE_CHARGE -25) && current < (CURRENT_CHARGE -500))
|
if (voltage < (VOLTAGE_CHARGE -25) && current < (CURRENT_CHARGE -500))
|
||||||
@ -247,11 +243,6 @@ ISR(TIMER0_OVF_vect)
|
|||||||
TCCR1A &= ~(1<<COM1A1);
|
TCCR1A &= ~(1<<COM1A1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mode == MOD_READY && beep_timer < 0x03)
|
|
||||||
PORTB &= ~(1<<SUMMER);
|
|
||||||
else
|
|
||||||
PORTB |= (1<<SUMMER);
|
|
||||||
|
|
||||||
switch (mode) {
|
switch (mode) {
|
||||||
case MOD_WAITING:
|
case MOD_WAITING:
|
||||||
/* start charging when a voltage > 9V is detected (lipo connected) */
|
/* start charging when a voltage > 9V is detected (lipo connected) */
|
||||||
@ -275,7 +266,7 @@ ISR(TIMER0_OVF_vect)
|
|||||||
|
|
||||||
int main(void)
|
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);
|
DDRD = (LCD_DATA_MASK) | (1<<RW);
|
||||||
|
|
||||||
/* Set baud rate 19200 */
|
/* Set baud rate 19200 */
|
||||||
|
Loading…
Reference in New Issue
Block a user