# solarmonk energy powered by the sun ☀️ safely store energy in a battery 🔋 safely use excess load energy to power 5v devices ⚡ have fun! 🎉 ## TODO - [x] get solar panel - [x] get battery - [ ] 12v -> 5v converter - [ ] read battery charge - [ ] display battery charge - [ ] control discharge ## components ### solar panel (with built-in charge controller) [120w maxray folding solar panel](http://maxray.com.au/folding-solar-panel/) - Max Power: 120W - Maximum Power Tolerance: ±3% - Open-Circuit Voltage/Voc(V): 17.5V - Short-Circuit Current/lsc(A): 9.42 - Max Power Voltage/Vmp(V): 14.0 - Max Power Current/lmp(A): 8.57 - Power Spectications at STC: 1000w/㎡,AM1.5,CELL25℃ - Max System Voltage(V) 1000 - Max Over Current Protecting Rating(A): 15 - Weight: 12.6kg ### battery [12v - 85Ah deep cycle flooded lead acid battery](https://www.trademe.co.nz/Browse/Listing.aspx?id=1506593644) > _voltage must not drop below 11v_ [guide to lead-acid batteries](http://www.itacanet.org/eng/elec/battery/battery.pdf) > fully charged is 12.6v to 12.8v --- | State of Charge (approx.) | 12 Volt Battery | Volts per Cell | --- | 100% | 12.70 | 2.12 | | 90% | 12.50 | 2.08 | | 80% | 12.42 | 2.07 | | 70% | 12.32 | 2.05 | | 60% | 12.20 | 2.03 | | 50% | 12.06 | 2.01 | | 40% | 11.90 | 1.98 | | 30% | 11.75 | 1.96 | | 20% | 11.58 | 1.93 | | 10% | 11.31 | 1.89 | | 0 | 10.50 | 1.75 | --- ### load (discharge) controller - BTE14-04 betamcu.cn Arduino Uno R3 Compatible - "DF Robot" LCD Keypad Shield - R1 resistor = 10k ohms - R2 resistor = 820 ohms - ceramic capacitor = 100nF - schottkey diode ``` 12v 5v 5v | | | R1 diode |-------| | | | | +-----+----|Ain | | | | | R2 cap |arduino| | | |-------| GND GND ``` TODO ### 12v to 5v step-down (buck) converter [step down dc-dc 9A converter (constant volts or constant amps), 5~40v input & 1.5~35v out](https://www.trademe.co.nz/Browse/Listing.aspx?id=1521227419) ## calculations ### [resistive divider](https://en.wikipedia.org/wiki/Voltage_divider#Resistive_divider) to measure the battery voltage on the microcontroller, we divide the voltage using resistors: given - adc input impedence = 10k ohms - https://electronics.stackexchange.com/a/67172 - adc reference voltage = 1.1V - https://www.arduino.cc/reference/en/language/functions/analog-io/analogreference/ - max battery voltage = 14V + wiggle room = ~15V so R1 = adc input impedence = 10k ohms (want to be as high as possible to reduce current) calculate ``` R2 = R1 * (1 / ((Vin / Vout) - 1)) = Rinput_impedence * (1 / ((Vmax_bat / Vref) - 1)) = 10e3 * (1 / ((15 / 1.1) - 1)) = 791.37 ~= 820 ohms ``` ### smoothing capacitor TODO to stabilize the measurements, we use a capacitor to smooth the values: ``` (1 / (PI * R1 * C)) = ~100 hz or ~10hz (?) ``` C = 100nF