Friday, August 24, 2012

USB Charger

Here is my USB charger that I made about 1.5 years ago. It has a bit of wear and tear on it but is still holding up. It can output over an amp of current to any USB chargeable device. The display shows voltage and current draw. It shuts off after 60 seconds automatically if no current is drawn. The screen is a .96" OLED and that is a 6V solar cell on top so it charges itself just by laying around, preferably in the sun. It has 6000 mAh of Li-poly onboard and can be charged by either solar, mini-usb or DC 6V input. It uses an LV-
BOOST, Allegro ACS713 current monitor, FET and a Picaxe 20X2. The charger board is by Sparkfun.





#no_table
#picaxe 20x2
HIGH C.5
LET adcsetup = 00000000011111
POKESFR $22,4
SYMBOL R = B0
SYMBOL G = B1
SYMBOL COLOR = W1
SYMBOL COLOR2 = W2
SYMBOL V =W3
SYMBOL VOLTS =W4
SYMBOL MA = W5
SYMBOL MAMPS =W6
SYMBOL VPOINTER = B14
SYMBOL MPOINTER = B15
SYMBOL POS = B16
SYMBOL POS2 = B17
SYMBOL POS3 = B18
SYMBOL VOLD = W13
SYMBOL VPOLD =B19
SYMBOL MOLD = W14
SYMBOL MPOLD = B20
SYMBOL U = B21
SYMBOL W = B22
SYMBOL X = B23
SYMBOL Y = B24
SYMBOL Z = B25


HIGH C.0

PAUSE 1000
HSERSETUP B38400_8, 0
HSEROUT 0, ($55)
HSERIN 0,1

HSEROUT 0, ($45)
HSERIN 0,1


R = 31
G = 0
HSEROUT 0, ($4F, $01)
HSERIN 0,1
POS = 30
HSEROUT 0, ($53, 8,0,2,0,31,1,1,"V",$00)
HSERIN 0,1
HSEROUT 0, ($53, 4,36,2,0,31,1,1,"mA",$00)
HSERIN 0,1
BARS:
W1 = B0*2048
W2 = B1*32
W1 = W1 + W2

HSEROUT 0, ($4C, POS, 0, POS, 11, B3,B2)
HSERIN 0,1
HSEROUT 0, ($4C, POS, 36, POS, 47, B3,B2)
HSERIN 0,1
INC POS
HSEROUT 0, ($4C, POS, 0, POS, 11, B3,B2)
HSERIN 0,1
HSEROUT 0, ($4C, POS, 36, POS, 47, B3,B2)
HSERIN 0,1

IF R > 0 THEN
R = R - 1
G = G + 2
POS = POS + 1
GOTO BARS
ENDIF
VOLD = 320
VPOLD =30
X = 3
Y = 2
Z = 0
MOLD = 1
MPOLD = 30
TMR3SETUP %10110001

POINTERS:
READADC10 4,V
VOLTS = V *4/10
V=V-800*100/223
V = V * 63/100 +30
VPOINTER = V
IF VOLTS < 320 THEN
VPOINTER = 29
ENDIF

IF VOLTS <> VOLD THEN
POS2 = VPOLD - 4
POS3 = VPOLD + 4
R = VPOLD - 12
IF R > 70 THEN
R =70
ENDIF
BINTOASCII VOLD,U,W,X,Y,Z
HSEROUT 0, ($47, VPOLD,13,POS2,17,POS3,17,0,0)
HSERIN 0,1
HSEROUT 0, ($53, R,19,16,0,0,1,1,X,".",Y,Z,$00)
HSERIN 0,1
ENDIF

IF VOLTS <> VOLD THEN
POS2 = VPOINTER - 4
POS3 = VPOINTER + 4
R = VPOINTER - 12
IF R > 70 THEN
R =70
ENDIF
BINTOASCII VOLTS,U,W,X,Y,Z
HSEROUT 0, ($47, VPOINTER,13,POS2,17,POS3,17,123,224)
HSERIN 0,1
HSEROUT 0, ($53, R,19,16,0,31,1,1,X,".",Y,Z,$00)
HSERIN 0,1
PAUSE 50
ENDIF

VOLD = VOLTS
VPOLD = VPOINTER

READADC10 2,MA
IF MA < 121 THEN
MA = 119
ENDIF
IF MA > 145 THEN
MA = MA*105/100
ENDIF
MAMPS = MA -119*216/10
MA=MA-119*100/46
MA = MA * 63/100 +30
MPOINTER = MA

IF MAMPS < 1 THEN
MPOINTER = 29
ENDIF

IF MAMPS <> MOLD THEN
POS2 = MPOLD - 4
POS3 = MPOLD + 4
R = MPOLD - 12
IF R > 70 THEN
R =70
ENDIF
HSEROUT 0, ($47, MPOLD,49,POS2,53,POS3,53,0,0)
HSERIN 0,1
HSEROUT 0, ($53, R,55,16,0,0,1,1,#MOLD,$00)
HSERIN 0,1
ENDIF

IF MAMPS <> MOLD THEN
POS2 = MPOINTER - 4
POS3 = MPOINTER + 4
R = MPOINTER - 12
IF R > 70 THEN
R =70
ENDIF

HSEROUT 0, ($47, MPOINTER,49,POS2,53,POS3,53,123,224)
HSERIN 0,1
HSEROUT 0, ($53, R,55,16,0,31,1,1,#MAMPS,$00)
HSERIN 0,1
ENDIF
PAUSE 5000

MOLD = MAMPS
MPOLD = MPOINTER

IF MAMPS >0 THEN
TIMER3 =0
ELSE
IF TIMER3 >240 THEN
LOW C.5
ENDIF
ENDIF

GOTO POINTERS


No comments:

Post a Comment