Giter Site home page Giter Site logo

mppt-2420-lc's Introduction

MPPT Charger 20A

Development Stage Outdated design, development of new revision ongoing.

Important: As we are currently developing a new revision of this charge controller with several improvements, it is not recommended to rebuild this device anymore. Please see this forum thread and feel free to contribute your ideas.

Charge controller PCB

Features:

  • 20A MPPT charger (buck converter)
  • 55V max PV input
  • 12V or 24V battery output
  • 32bit ARM MCU (STM32F072)
  • CAN communication interface with CANopen standard RJ45 jacks (including 10V power supply)
  • Expandable via Olimex Universal Extension Connector (UEXT) featuring I2C, Serial and SPI interface (e.g. used for display, WIFI communication, etc.)
  • Compatible to Hammond Mfg 1591XXCFL housing
  • 5V switchable signal output
  • USB connector for programming etc.
  • Can be used as boost converter with software change
  • Suitable for Li-Ion batteries with BMS (even recharge after low voltage disconnect possible, as the charge controller increases the voltage automatically when enoug sunlight is available)

Built-in protection:

  • Overvoltage
  • Undervoltage
  • Overcurrent
  • PV short circuit
  • PV reverse polarity (for max. module open circuit voltage of around 40V)
  • Battery reverse polarity (destructive, fuse is blown)

mppt-2420-lc's People

Contributors

martinjaeger avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mppt-2420-lc's Issues

[Question] adding charge circuitry, when does it become economically viable?

first off;
@martinjaeger If this is not the place for these types of questions, feel free discard them.

I had read the other messages and got the idea that were people present here with a lot of experience in the field of solar systems.

I have a question about the point where it becomes economically viable to add (more advanced) charge circuity to a solar system?

For example, considering the following (hypothetical) situation;
PV panel:
Maximum power (Wp) :3.2W
Maximum power voltage (V): 18V
Maximum power current (A): 0.177A
Open circuit voltage (V): 21.6V
Short circuit current (A): 0.210A

Charging a lead-acid 12V, 5.2Ah battery.

Considering the idea, that adding charge circuitry the system the total costs will be larger than the increase in performance? In other words why not add just a couple of diodes between the PV panel and the lead-acid battery? (So the speak)

Pattern for U2

I focused on main (critical) components,
I propose you to match to the datasheet that will be better for production purpose

Edit : removal of wrong input

Inductor Alternative

Hello,
I am trying to rebuild your project but I can not find a suitable diode. The diode you have used in the schematic is not available to me in Germany.

Can you give me an alternative or a place to buy it?
Can I use one with slightly different inductance without changing the software?

Thank you very much,
Julian.

reverse polarity circuit

Hi
Nice work mate
Just Wondering, why didn't you use the basic reverse battery protection circuit similar to the schematic below?
https://i.stack.imgur.com/a4mNC.png

image

Are you switching Q2 with the same PWM signal that's regulating the output voltage/current!? That will probably add ripple on the DCDC_in node and require you to add more capacitors to lower the ripple there.

Pull Down Schottky Diodes

Hi,

Just wondering if you have considered adding Schottky diodes in parallel with R1 & R3 3.3 ohm gate resistors?

At a guess you currently have somewhere around 100ns-150ns gate switching times for both on and off?
Adding schottky diodes should improve the switching off time and boost the efficiency of the regulator slightly without any drawbacks, no added switch node peaks/ringing or other detrimental effects, though possibly switching deadtime might need be adjusted in software slightly (less deadtime) to gain the efficiency advantages.

You could still add these diodes without making a change to your board by stacking these on top of your existing resistors, albeit I realise that's not perfectly neat.

Other than that, I see you already have a lightweight snubber in place and have almost perfect layout of the input bypass caps to mosfet arrangement so switch node peak and ringing is minimised as much as possible, and your inductor core is already sendust (not sure of the permeability rating though, 60ish is probably optimal) Those mosfets you are running about the best you can get in this voltage range for this application. I can't see why you couldn't hit 99% peak efficiency when using a 24 volt battery bank and panels are operating at a MPP of around 30-32 volt at around the 10 amp output mark, which is more or less as good as it gets. Have you done efficiency testing yet?

high power dissipation in 25A fuse

Hi
I was just doing some tests on ATO fuses (from little fuse). 20A going through 20A fuse gave me an 80 degree temperature rise with 85mV drop (1.7W of heat). 20A going through 30A fuse gave me 44mV drop. I'm just saying that this fuse will get real hot (and any components near that fuse will get hot too) so take note.

Replace INA199 with normal op amp (e.g. LM358)

Current measurement at ground level can also be performed directly using a differential op amp. --> currently under investigation.

Current plan:

  • Use LM358 (really cheap)
  • Power supply from 10.4 V to avoid saturation at + rail
  • Clamp output to ca. 3V3+1 with diode for protection of ADC input pins

DRC Errors?

I recently created an issue with part of the BMS-5 with regard to Kicad DRC errors on the board. I'm having a similar issue with this MPPT board, just not as many but it does create a warning when I go to order the board on jlcpcb:

screenshot from 2018-10-17 10-18-08

It's possibly just a warning but thought I'd better raise it?

High ADC noise

I recently finished building the 20A MPPT Charger with the V0.10 PCB. It works quite well so far, but I am experiencing some problems with the voltage and current measurements. The battery voltage for example is varying by almost ±0.5V, which leads to problems with the charge mode selection.

Does anyone else experience this kind of behavior? Maybe it is just a problem with the soldering, but I checked everything thoroughly under the microscope.

To investigate the source of the noise I wrote a simple program which transfers the raw samples directly via the USB interface at a sample rate of about 100ksps. The measurements were made with only a 12V lead acid battery connected as power source.

This is the result of a 1 second measurement with 100k samples:

Measured battery voltage over time

This is the FFT spectrum of the previous measurement. It most likely includes many aliasing effects due to the low sample rate:
ADC FFT

This is the distribution of 1 million measurements over the time of 10 seconds:
Measured Battery Voltage Histogram

I also took some measurements with a spectrum analyzer and the MPPT charger running the firmware LibreSolar/charge-controller-firmware@978cfd3. Again only a 12V lead acid battery was connected as power source. The lower trace (yellow) is the base level without the battery connected.

The voltage reference and the battery voltage at the voltage divider are very clean compared to the power supply of the microcontroller. The ferrite bead L4 seems to be relatively ineffective.

Measurement of VDDA across C34

ssa_181019151506 vdda

Measurement of VDD across C32

ssa_181019155523 vdd

Measurement of VREF across D6

ssa_181019153223 vref

Measurement of VBAT across C18

ssa_181019154527 vbat

Use higher power LDO

Current LDO not sufficient for UEXT peripherals --> use LDO with higher power, e.g. MCP1703A

Input reverse polarity protection not working

First tests showed that battery gets shorted (fuse is blown) a few seconds after -5V is put to the solar panel input terminals. Behavior has to be investigated. Maybe Q7 not working?

Plans for future?

Neat project. Thanks for enlightening me about KiCad, it's awesome.
Will you be posting assembled pictures and scope traces of performance?

Interchanged HS and LS PWM output

TIM1_CH1 should be connected to HI at the MOSFET driver and not LI. Can be fixed by software, but should also be fixed in hardware for next revision.

low side mosfet

hi, i made my own MPPT using ir2104 driver. I kept burning my lowside mosfet. before the current flow backward through the mosfet, the lowside mosfet must be off. how did you manage that to prevent that from burning?

Questions about hardware

Not an issue per se, but I had a few questions about your hardware design, just for curiosity's sake.

  • Most similar MPPT designs I've seen use a mosfet to prevent power going into the panels at night. However in most of the other designs I've looked at, the mosfet would be on the positive solar side with the gate tied to the high-side buck mosfet. On your design the mosfet is on the negative solar side and tied to the low side mosfet. I can see how both would work, but I was just wondering if it made a difference and if there was a specific reason you did it this way.
  • I see that your current shunt resistors and opamps are on the negatives of the circuits (for the battery current and DC loads, for example). I can see one advantage would be not be having to deal with common-mode voltages on the current shunts; is that why you did it this way, or are there other reasons?

Both of these questions just come from my personal preference of always having things grounded (like the negatives for the solar leads or the DC loads/battery always being grounded) and having controls and current shunts on the high lines, but I'm curious about what I might be missing.

Nice work!

MOSFET Alternative / evolutions

STL135N8F7AG Could maybe match with this HW application or on new one

Pros : 80 V, 3.15 mΩ typ., 120 A.
Automobile grade = range of T°-55 to +175°C

Cons : Gate-source voltage +/-20V with Gate threshold voltage 4.5V
Package little bit bigger

Noise radiating copper planes

Studying about SMPS in various books but especially 'Switching Power Supplies A-Z', Sanjaya Matiktala, they suggest that circuit traces with high start and stop currents should not be spread out on planes. While short and fat as possible, there are diminishing returns in inductance when width is even close to length. So in spots like below the 'Libre Solar MPPT' text that copper is not helping inductance but is making a big antenna for radiating noise. Also signals like this should be on one layer with ground on the opposite side for a two sided design.

Looks like your effectively using top and bottom planes for thermal as well. I don't know how to have GND on the bottom in that location and still have the thermal vias. However, as long as your using thermal vias they will make a huge difference thermally if they are directly under the part as shown in the data sheet. Even better if they are pre-filled with solder.

Just my 2 cents and I'm still learning so be interested in your thoughts.

mbed die runtime error

We tried to flash an new firmware on the nucleo f072rb.
during the upload process we stuck in the mbed_die function. Even if we use the latest version on github we have the same error.
If we clean and reset the board it stays in the flashing LEDs.

Do you have any idea how to solve this problem?

Below is our setup and the errorcode.

our setup:

[platformio]
env_default = nucleo

[env:nucleo]
#platform = https://github.com/platformio/platform-ststm32.git
platform = ststm32
framework = mbed
board = nucleo_f072rb
upload_protocol = stlink

# Settings:
# - enable float formatting for printf, adding approx. 7 kB of bin file size
# - C++11 to be able to define default values for struct members
# - Use low speed internal clock (LSI) for RTC (no LSE crystal on PCB)
build_flags =
    -Wl,-u_printf_float
    -std=c++11
    -DMBED_CONF_TARGET_LSE_AVAILABLE=0
#    -DMBED_CONF_TARGET_STDIO_UART_TX=PA_9
#    -DMBED_CONF_TARGET_STDIO_UART_RX=PA_10
#    -DPIO_FRAMEWORK_MBED_RTOS_PRESENT
#    -DPIO_FRAMEWORK_MBED_EVENTS_PRESENT
    
# Custom Serial Monitor port
#monitor_port = /dev/ttyUSB1

; Custom Serial Monitor baud rate
monitor_baud = 115200

error code:

Archiving .pioenvs\nucleo\libabd\libAdafruit_GFX.a
Linking .pioenvs\nucleo\firmware.elf
Checking size .pioenvs\nucleo\firmware.elf
Memory Usage -> http://bit.ly/pio-memory-usage
DATA:    [====      ]  43.7% (used 7160 bytes from 16384 bytes)
PROGRAM: [========  ]  76.5% (used 100228 bytes from 131072 bytes)
Configuring upload protocol...
AVAILABLE: blackmagic, jlink, mbed, stlink
CURRENT: upload_protocol = stlink
Uploading .pioenvs\nucleo\firmware.elf
GNU MCU Eclipse 64-bits Open On-Chip Debugger 0.10.0+dev-00392-gbe9ef0b0 (2018-01-12-15:03)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
adapter speed: 1000 kHz
adapter_nsrst_delay: 100
none separate
srst_only separate srst_nogate srst_open_drain connect_deassert_srst
Info : Unable to match requested speed 1000 kHz, using 950 kHz
Info : Unable to match requested speed 1000 kHz, using 950 kHz
Info : clock speed 950 kHz
Error: libusb_open() failed with LIBUSB_ERROR_NOT_SUPPORTED
Info : STLINK v2 JTAG v29 API v2 SWIM v18 VID 0x0483 PID 0x374B
Info : using stlink api v2
Info : Target voltage: 0.011031
Error: target voltage may be too low for reliable debugging
Info : stm32f0x.cpu: hardware has 4 breakpoints, 2 watchpoints
Info : Listening on port 3333 for gdb connections
Info : Unable to match requested speed 1000 kHz, using 950 kHz
Info : Unable to match requested speed 1000 kHz, using 950 kHz
adapter speed: 950 kHz
target halted due to debug-request, current mode: Thread
xPSR: 0xc1000000 pc: 0x08002540 msp: 0x200011d8
Info : Unable to match requested speed 8000 kHz, using 4000 kHz
Info : Unable to match requested speed 8000 kHz, using 4000 kHz
adapter speed: 4000 kHz
** Programming Started **
auto erase enabled
Info : device id = 0x20016448
Info : flash size = 128kbytes
target halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x2000003a msp: 0x200011d8
wrote 102400 bytes from file .pioenvs\nucleo\firmware.elf in 4.053876s (24.668 KiB/s)
** Programming Finished **
** Verify Started **
target halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x2000002e msp: 0x200011d8
target halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x2000002e msp: 0x200011d8
verified 100500 bytes in 0.432645s (226.848 KiB/s)
** Verified OK **
** Resetting Target **
Info : Unable to match requested speed 1000 kHz, using 950 kHz
Info : Unable to match requested speed 1000 kHz, using 950 kHz
adapter speed: 950 kHz
shutdown command invoked

3d images missing

mppt_charger_20a my3d
Sorry, new to Kicad, can't figure out where the missing files are. I get this message on view 3d:
[3D File Resolver] No such path; ensure the environment var is defined
/Library/Application Support/kicad/modules/packages3d//LibreSolar.3dshapes/DTMSS-27-H.STEP

Compensation of current measurement OpAmp input offset

If the offset is negative for a GND-referenced differential amplifier, the output will not get positive values at low currents. This problem was also detected during testing.

Solution: Use DAC to generate higher reference voltage for differential amps (also for load current measurement)

Pattern for D2

Update recommendation for Front Mask & past (source : datasheet)
pattern for d2

Development Timeline And Commercial Availailability

Hello,

I know the project is in active development, but was wondering if you had a schedule for when it would be production ready? Also, are you planning to manufacture and sell this? I am interested in using it for my solar setup. I do have experience assembling PCBs, just don't have any of my gear with me now, could probably hit up a hackerspace though.

Thanks

Short circuit protection

Hi
Just asking,
Since the microcontroller is monitoring the output current (current charging battery ), can't you program the microcontroller's ADC interrupt to trigger when the current reach a certain (over-current) value? That way you can implement a robust short circuit protection without relying on a fuse.

Remove CAN cable power supply

Power supply in the RJ45 jack was originally planned to power small devices like displays on the bus. However, an external short circuit would pull down the 10.4V voltage for driving the MOSFETs and could cause problems (or even destruction) in the charge controller.

Risk is too high --> remove the power supply. If the bus should still be powered, it can be done by an external device.

Stencil Pattern & Mask for the MOSFET

  1. The Solder past stencil recommandation is 4 row 2 columns
    *According to Chapter 7.3 of Texas Instrument (SLPS488B –JUNE 2014–REVISED APRIL 2017)
  2. The Mask should be updated to allow good positioning of the component during reflow
    *According to chapert 7.2

Sorry I am not able to install the KiCad to support _ that need a
patern for mosfet
roung 5Gb :-(

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.