DIY 3kW Arduino MPPT Solar Charge Controller ESP32

Diskuze na téma solárních, větrných a ostatních regulátorů, datové komunikace mezi regulátory a PC, instalace software, zapojení regulátorů, chování a zkušenosti s různými typy regulátorů.
Charlie_XZ
Příspěvky: 55
Registrován: pon led 06, 2020 5:58 pm

Re: DIY 3kW Arduino MPPT Solar Charge Controller ESP32

Nový příspěvek od Charlie_XZ »

Nějaký postprocesing v software požíváš, nebo pracuješ rovnou s hodnotama vyčtenejma z AD ?

Alespoň nějaký moving average filter z 8 vzorků by to chtělo.
glottis
Příspěvky: 2675
Registrován: stř úno 02, 2022 10:30 am
Lokalita: okolí Mělníka
Systémové napětí: 48V
Výkon panelů [Wp]: 13000
Kapacita baterie [kWh]: 15

Re: DIY 3kW Arduino MPPT Solar Charge Controller ESP32

Nový příspěvek od glottis »

Charlie_XZ píše:
Nějaký postprocesing v software požíváš, nebo pracuješ rovnou s hodnotama vyčtenejma z AD ?

Alespoň nějaký moving average filter z 8 vzorků by to chtělo.
Přesně tak. Honit se za supr zdrojem do téhle čidel nemá podle mě cenu, protěže absolutní přednost, linearita a offset stojí za prd. Udělej radši digitální filtr. Moving avg aspoň nebo klidně i něco lepšího. Třeba iir. Okoukat i se zdrojakem to můžeš tu.

https://www.paulvdiyblogs.net/2016/09/b ... r.html?m=1
Uživatelský avatar
rottenkiwi
Příspěvky: 5451
Registrován: pát úno 13, 2015 2:24 pm
Lokalita: SO, SK
Bydliště: SO, SK

Re: DIY 3kW Arduino MPPT Solar Charge Controller ESP32

Nový příspěvek od rottenkiwi »

Praveze ma zaujima presne meranie s nejakou frekvenciou napr. 1 kHz, 10 kHz,
ze co tam presne je, nechcem robit SW veci ako roky robim u Arduina 10-bit ADC
alebo ESP32, 12-bit ADC, tam sa takto daju pridat cez SW 2 bity cez oversampling.

Len neviem presne spociat tau konstantu pre danu frekvenciu pre R a C.

Napr. 10 ohmov a 10 uF alebo 100 nF, ako rychlo sa to nabije pre tau x 4
ako rychlo vybije na tau x 0.5, a aku frekvenciu mi ten filter odfiltruje,
myslim nejaky 5 - 20 MHz ringing na FEToch a 15 cm od toho na meracom kabli
ktory este pojde cez nejake jadro SendDust, aby tam neslo to VF rusenie.

On tam v tom clanku pise, ze kvoli ruseniu pouziva ako zdroj baterie:
My design will also power the unit from a battery, to avoid grounding issues and provide a clean supply to begin with
DC-AC inverter REC Lion DC-AC ESP32 DIY inv. 15 GB za sekundu DIY MPPT Holder
Zjedz vsetko, co si kupil, v obchode a netreba ti tasku, auto ci chladnicku.
Charlie_XZ
Příspěvky: 55
Registrován: pon led 06, 2020 5:58 pm

Re: DIY 3kW Arduino MPPT Solar Charge Controller ESP32

Nový příspěvek od Charlie_XZ »

Rozumný zafiltrování v SW je prostě potřeba, můžeš samplovat rychleji, udělat nad tím MAV a dostaneš se na stejný BW. Obecně přesný měření v zapojení kde se spínají velké proudy je dost náročné na provedení HW a nemyslím si že je na to arduino zrovna vhodná platforma, protože nelze striktně oddělit digitální a analogovou část včetně správného oddělení zemí atd.

Ještě k potřebě vzorkovat 10kHz, to jako skutečně máš regulační smyčku co je schopná regulace cycle to cycle 10kHz ? Někdy je méně více, tohle je skutečně už vyšší dívčí, nesnažím se tě zrazovat prostě jen to ber jako doporučení že u takových projekt už je fakt potřeba aby to všechno dohromady fungovalo a to na nepájivém poli půjde těžko.

Mohu doporučit jeden velmi poučný YT kanál, je tam toho hodně a každý si tam může najít to své, pro tebe hlavně věci o teorii šíření signálů (return path atd.)

https://www.youtube.com/channel/UCJQkHV ... DmPlJlOJOA
Uživatelský avatar
rottenkiwi
Příspěvky: 5451
Registrován: pát úno 13, 2015 2:24 pm
Lokalita: SO, SK
Bydliště: SO, SK

Re: DIY 3kW Arduino MPPT Solar Charge Controller ESP32

Nový příspěvek od rottenkiwi »

Pridal som I2C zbernicu / SDA, SCL / len 20x4 displey a uz meranie nie je stabilne, ale skace,
oproti tomu, co to robilo vcera:

No ja to uvazujem tak, ze 50 A vstupy a vystupy budu cez tuto dosku merane nezavisle
na samotnom MPPT, kde je velke rusenie a potom uvidim co dalej, ze ako vyriesit komunikaciu
EPS32 I a ESP32 II / ktore riadi IR2104 v zavislosti na pocte faz v MPPT /

Vdaka za link, ja som zvyknuty na ludi, ktori maju napr. 70 - 80 r. a 50
rokov dizajnu za sebou, od tych sa zvyknem ucit, ale pozriem si cely jeho kanal.

Dal som tam na napajanie displeja polymerovy kond., uz to skace len +- 1 mV,
len neviem ako sa to bude spravat pri zapinani.

.
ads_1115_ACS758_big.jpg
DC-AC inverter REC Lion DC-AC ESP32 DIY inv. 15 GB za sekundu DIY MPPT Holder
Zjedz vsetko, co si kupil, v obchode a netreba ti tasku, auto ci chladnicku.
Uživatelský avatar
rottenkiwi
Příspěvky: 5451
Registrován: pát úno 13, 2015 2:24 pm
Lokalita: SO, SK
Bydliště: SO, SK

Re: DIY 3kW Arduino MPPT Solar Charge Controller ESP32

Nový příspěvek od rottenkiwi »

Horna cast, jedno meranie. dolna cast AVERAGE z dvoch sukcesivnych merani:

.
acs758_ads_1115_avg.jpg
DC-AC inverter REC Lion DC-AC ESP32 DIY inv. 15 GB za sekundu DIY MPPT Holder
Zjedz vsetko, co si kupil, v obchode a netreba ti tasku, auto ci chladnicku.
Charlie_XZ
Příspěvky: 55
Registrován: pon led 06, 2020 5:58 pm

Re: DIY 3kW Arduino MPPT Solar Charge Controller ESP32

Nový příspěvek od Charlie_XZ »

rottenkiwi píše:
Horna cast, jedno meranie. dolna cast AVERAGE z dvoch sukcesivnych merani:

.
acs758_ads_1115_avg.jpg
Tam se něco nepovedlo, můžeš prosím poslat kus kodu kterým to děláš ?

zkus třeba toto

https://www.arduino.cc/reference/en/lib ... movingavg/

nebo pokud jseš v C zdatnější

https://github.com/mhtb32/EfficientMovingAverage
Uživatelský avatar
rottenkiwi
Příspěvky: 5451
Registrován: pát úno 13, 2015 2:24 pm
Lokalita: SO, SK
Bydliště: SO, SK

Re: DIY 3kW Arduino MPPT Solar Charge Controller ESP32

Nový příspěvek od rottenkiwi »

Takto nejako to robim:

Ale pred 8 rokmi som to robil tak,
ze som do pola dal 20 - 40 hodnot,
usporiadal ich a zobral prostrednu.

Kód: Vybrat vše

#include <Adafruit_ADS1X15.h>
#include <LiquidCrystal_I2C.h>

Adafruit_ADS1115 ads;  /* Use this for the 16-bit version */
uint8_t address = 0x27;
uint8_t cols = 20;
uint8_t rows = 4;
LiquidCrystal_I2C lcd( address, cols, rows );

unsigned long previous = 0;   // Stores last time temperature was published
const long interval = 999; 
long int num_of_intervals; 

char sS_A_IN [3] = {'I',':','\0'} ;
char sS_A_OUT [3] = {'O',':','\0'} ;
char sS_V_IN  [3] = {'I',':','\0'} ;
char sS_V_OUT [3] = {'O',':','\0'} ;

float x,y,z,n = 0.0;
char sx[20] = {' '} ;char sy[20] = {' '} ;char sz[20] = {' '} ;
char sa[20] = {' '} ;char sn[20] = {' '} ;char ss[10] = {' '} ;

int16_t adc0, adc1, adc2, adc3;
int32_t adc_avg;
float volts0, volts1, volts2, volts3;
float amps0, amps1, p_in, p_out, eta;

const float volts0_off = 2433.0;
const float volts1_off = 2430.0;
const float volts2_off = - 0.125;
const float volts3_off = - 0.125;
const float FACTOR = 39; // mV per AMPER
  
void setup(void)
{
  Serial.begin(115200);
  lcd.init();    
  lcd.backlight(); lcd.setCursor(1,0);  lcd.print("MPPT version 0.99 !");
  lcd.setCursor(1,1);  lcd.print("Amps  OUT: 00.00  A");   lcd.setCursor(1,2);
  lcd.print("Volts IN : 00.00  V");   lcd.setCursor(1,3);  lcd.print("VOLTS OUT: 00.00  V");
  delay (400);    lcd.init();   
  lcd.backlight();
  lcd.setCursor(1,0);  lcd.print("        A         W");
  lcd.setCursor(1,1);  lcd.print("        A         W");
  lcd.setCursor(1,2);  lcd.print("        V         %");
  lcd.setCursor(1,3);  lcd.print("        V");
  delay (400);
  sx[9] = {'\0'} ;     sy[9] = {'\0'} ;      sz[9] = {'\0'} ;     sa[9] = {'\0'} ;     
  lcd.setCursor(0,0);  lcd.print( sS_A_IN );
  lcd.setCursor(0,1);  lcd.print( sS_A_OUT );
  lcd.setCursor(0,2);  lcd.print( sS_V_IN  );
  lcd.setCursor(0,3);  lcd.print( sS_V_OUT );
  delay (400);                          //                          ADS1015  ADS1115
  //                                                                -------  -------
  // ads.setGain(GAIN_TWOTHIRDS);  // 2/3x gain +/- 6.144V  1 bit = 3mV      0.1875mV (default)
ads.setGain(GAIN_ONE);        // 1x gain   +/- 4.096V  1 bit = 2mV      0.125mV
  // ads.setGain(GAIN_TWO);        // 2x gain   +/- 2.048V  1 bit = 1mV      0.0625mV
  // ads.setGain(GAIN_FOUR);       // 4x gain   +/- 1.024V  1 bit = 0.5mV    0.03125mV
  // ads.setGain(GAIN_EIGHT);      // 8x gain   +/- 0.512V  1 bit = 0.25mV   0.015625mV
  // ads.setGain(GAIN_SIXTEEN);    // 16x gain  +/- 0.256V  1 bit = 0.125mV  0.0078125mV
  if (!ads.begin()) {
    Serial.println("Failed to initialize ADS.");
    while (1);
  }
}

void loop(void)
{
  char x0 [10] = {' '};  char x1 [10] = {' '};  char x2 [10] = {' '};
  char x3 [10] = {' '};  char x4 [10] = {' '};  char x5 [10] = {' '};
  char x6 [10] = {' '};
  adc_avg = (int32_t )ads.readADC_SingleEnded(0);
  adc_avg = adc_avg + (int32_t )ads.readADC_SingleEnded(0);
  adc_avg = adc_avg / 2;
  adc0 = (int16_t ) adc_avg;
  adc1 = ads.readADC_SingleEnded(1);
  adc2 = ads.readADC_SingleEnded(2);
  adc3 = ads.readADC_SingleEnded(3);
  volts0 = ads.computeVolts(adc0)*1000.0 -volts0_off;
  volts1 = ads.computeVolts(adc1)*1000.0 -volts1_off;
  volts2 = ads.computeVolts(adc2);
  volts3 = ads.computeVolts(adc3);
  volts2 = volts2 * 18.0 / 1.036;
  volts3 = volts3 * 29.0 / 1.098;
  amps0 = volts0 / FACTOR;
  amps1 = volts1 / FACTOR;
  Serial.println("-----------------------------------------------------------");
  sprintf (x0, "%3.2f", amps0 );   x0[7] = {'\0'} ;
  sprintf (x1, "%3.2f", amps1 );   x1[7] = {'\0'} ;
  sprintf (x2, "%3.2f", volts2 );   x2[7] = {'\0'} ;
  sprintf (x3, "%3.2f", volts3 );   x3[7] = {'\0'} ;
  p_in = amps0 *  volts2;
  p_out = amps0 *  volts3;
  eta = p_in / (p_out+0.0015 ) * 100.0;
  sprintf (x4, "%3.2f", p_in );   x4[6] = {'\0'} ;
  sprintf (x5, "%3.2f", p_out );   x5[6] = {'\0'} ;
  sprintf (x6, "%3.2f", eta );   x6[6] = {'\0'} ;
       lcd.setCursor(3,0);       lcd.print( x0 );
       lcd.setCursor(3,1);       lcd.print( x1 );
       lcd.setCursor(3,2);       lcd.print( x2 );
       lcd.setCursor(3,3);       lcd.print( x3 );
       lcd.setCursor(11,0);       lcd.print( x4 );
       lcd.setCursor(11,1);       lcd.print( x5 );
       lcd.setCursor(11,2);       lcd.print( x6 ); 
  Serial.print("AIN0: "); Serial.print(volts0); Serial.print("  "); Serial.print(x0); Serial.println("V");
  Serial.print("AIN1: "); Serial.print(volts1); Serial.print("  "); Serial.print(x1); Serial.println("V");
  Serial.print("AIN2: "); Serial.print(volts2); Serial.print("  "); Serial.print(x2); Serial.println("V");
  Serial.print("AIN3: "); Serial.print(volts3); Serial.print("  "); Serial.print(x3); Serial.println("V");
  delay(333);
}
DC-AC inverter REC Lion DC-AC ESP32 DIY inv. 15 GB za sekundu DIY MPPT Holder
Zjedz vsetko, co si kupil, v obchode a netreba ti tasku, auto ci chladnicku.
Charlie_XZ
Příspěvky: 55
Registrován: pon led 06, 2020 5:58 pm

Re: DIY 3kW Arduino MPPT Solar Charge Controller ESP32

Nový příspěvek od Charlie_XZ »

Tak ted už tomu rozumím, to co tam máš není MAV, zkus tohle, mělo by to dělat MAV z 8 vzorků.
Psal jsem to jen v notepadu a nezkoušel přeložit, tak to možná budeš muset dopilovat :)

BTW proč používáš u hodnot adc signed hodnotu ?

Kód: Vybrat vše

#include <Adafruit_ADS1X15.h>
#include <LiquidCrystal_I2C.h>

Adafruit_ADS1115 ads;  /* Use this for the 16-bit version */
uint8_t address = 0x27;
uint8_t cols = 20;
uint8_t rows = 4;
LiquidCrystal_I2C lcd( address, cols, rows );

unsigned long previous = 0;   // Stores last time temperature was published
const long interval = 999;
long int num_of_intervals;

char sS_A_IN [3] = {'I',':','\0'} ;
char sS_A_OUT [3] = {'O',':','\0'} ;
char sS_V_IN  [3] = {'I',':','\0'} ;
char sS_V_OUT [3] = {'O',':','\0'} ;

float x,y,z,n = 0.0;
char sx[20] = {' '} ;char sy[20] = {' '} ;char sz[20] = {' '} ;
char sa[20] = {' '} ;char sn[20] = {' '} ;char ss[10] = {' '} ;

int16_t adc0, adc1, adc2, adc3;
uint16_t adc_buff[8];
uint32_t adc_avg;

float volts0, volts1, volts2, volts3;
float amps0, amps1, p_in, p_out, eta;

const float volts0_off = 2433.0;
const float volts1_off = 2430.0;
const float volts2_off = - 0.125;
const float volts3_off = - 0.125;
const float FACTOR = 39; // mV per AMPER
 
void setup(void)
{
  Serial.begin(115200);
  lcd.init();   
  lcd.backlight(); lcd.setCursor(1,0);  lcd.print("MPPT version 0.99 !");
  lcd.setCursor(1,1);  lcd.print("Amps  OUT: 00.00  A");   lcd.setCursor(1,2);
  lcd.print("Volts IN : 00.00  V");   lcd.setCursor(1,3);  lcd.print("VOLTS OUT: 00.00  V");
  delay (400);    lcd.init();   
  lcd.backlight();
  lcd.setCursor(1,0);  lcd.print("        A         W");
  lcd.setCursor(1,1);  lcd.print("        A         W");
  lcd.setCursor(1,2);  lcd.print("        V         %");
  lcd.setCursor(1,3);  lcd.print("        V");
  delay (400);
  sx[9] = {'\0'} ;     sy[9] = {'\0'} ;      sz[9] = {'\0'} ;     sa[9] = {'\0'} ;     
  lcd.setCursor(0,0);  lcd.print( sS_A_IN );
  lcd.setCursor(0,1);  lcd.print( sS_A_OUT );
  lcd.setCursor(0,2);  lcd.print( sS_V_IN  );
  lcd.setCursor(0,3);  lcd.print( sS_V_OUT );
  delay (400);                          //                          ADS1015  ADS1115
  //                                                                -------  -------
  // ads.setGain(GAIN_TWOTHIRDS);  // 2/3x gain +/- 6.144V  1 bit = 3mV      0.1875mV (default)
ads.setGain(GAIN_ONE);        // 1x gain   +/- 4.096V  1 bit = 2mV      0.125mV
  // ads.setGain(GAIN_TWO);        // 2x gain   +/- 2.048V  1 bit = 1mV      0.0625mV
  // ads.setGain(GAIN_FOUR);       // 4x gain   +/- 1.024V  1 bit = 0.5mV    0.03125mV
  // ads.setGain(GAIN_EIGHT);      // 8x gain   +/- 0.512V  1 bit = 0.25mV   0.015625mV
  // ads.setGain(GAIN_SIXTEEN);    // 16x gain  +/- 0.256V  1 bit = 0.125mV  0.0078125mV
  if (!ads.begin()) {
    Serial.println("Failed to initialize ADS.");
    while (1);
  }
}

void loop(void)
{
  uint16_t buff_ptr = 0;
  uint16_t i = 0;
  
  char x0 [10] = {' '};  char x1 [10] = {' '};  char x2 [10] = {' '};
  char x3 [10] = {' '};  char x4 [10] = {' '};  char x5 [10] = {' '};
  char x6 [10] = {' '};
  
  adc_buff[buff_ptr++ & 0x07] = ads.readADC_SingleEnded(0);

  for(i = 0, adc_avg = 0; i < 8; i++)
  {
    adc_avg += adc_buff[i];
  }
  
  adc0 = (int16_t ) adc_avg / i;

  adc1 = ads.readADC_SingleEnded(1);
  adc2 = ads.readADC_SingleEnded(2);
  adc3 = ads.readADC_SingleEnded(3);
  volts0 = ads.computeVolts(adc0)*1000.0 -volts0_off;
  volts1 = ads.computeVolts(adc1)*1000.0 -volts1_off;
  volts2 = ads.computeVolts(adc2);
  volts3 = ads.computeVolts(adc3);
  volts2 = volts2 * 18.0 / 1.036;
  volts3 = volts3 * 29.0 / 1.098;
  amps0 = volts0 / FACTOR;
  amps1 = volts1 / FACTOR;
  Serial.println("-----------------------------------------------------------");
  sprintf (x0, "%3.2f", amps0 );   x0[7] = {'\0'} ;
  sprintf (x1, "%3.2f", amps1 );   x1[7] = {'\0'} ;
  sprintf (x2, "%3.2f", volts2 );   x2[7] = {'\0'} ;
  sprintf (x3, "%3.2f", volts3 );   x3[7] = {'\0'} ;
  p_in = amps0 *  volts2;
  p_out = amps0 *  volts3;
  eta = p_in / (p_out+0.0015 ) * 100.0;
  sprintf (x4, "%3.2f", p_in );   x4[6] = {'\0'} ;
  sprintf (x5, "%3.2f", p_out );   x5[6] = {'\0'} ;
  sprintf (x6, "%3.2f", eta );   x6[6] = {'\0'} ;
       lcd.setCursor(3,0);       lcd.print( x0 );
       lcd.setCursor(3,1);       lcd.print( x1 );
       lcd.setCursor(3,2);       lcd.print( x2 );
       lcd.setCursor(3,3);       lcd.print( x3 );
       lcd.setCursor(11,0);       lcd.print( x4 );
       lcd.setCursor(11,1);       lcd.print( x5 );
       lcd.setCursor(11,2);       lcd.print( x6 );
  Serial.print("AIN0: "); Serial.print(volts0); Serial.print("  "); Serial.print(x0); Serial.println("V");
  Serial.print("AIN1: "); Serial.print(volts1); Serial.print("  "); Serial.print(x1); Serial.println("V");
  Serial.print("AIN2: "); Serial.print(volts2); Serial.print("  "); Serial.print(x2); Serial.println("V");
  Serial.print("AIN3: "); Serial.print(volts3); Serial.print("  "); Serial.print(x3); Serial.println("V");
  delay(333);
}
Uživatelský avatar
rottenkiwi
Příspěvky: 5451
Registrován: pát úno 13, 2015 2:24 pm
Lokalita: SO, SK
Bydliště: SO, SK

Re: DIY 3kW Arduino MPPT Solar Charge Controller ESP32

Nový příspěvek od rottenkiwi »

Ak to mam k PC cez kabel, tak napatie neskace, je stabilne na 1 mV
ale tu mam napajanie LM2596 a tu napatie skace:

Nechcem robit AVG, lebo zober:

1 + 2 + 1 + 2 + 8 + 1 + 1+ 2 + 1+ 10 = 29, 29 / 10 = 2.9
ale ak to usporiadam:
1 1 1 1 1 2 2 2 8 10, tak stred bude 2, ale skutocnost bude 5 * 1 + 2 * 3 = 1.375

A 2.9 je ovela dalej ako 2 od 1.375

https://youtu.be/B87lUenB60s

A este som vypol Axperta 3000 PF 1.0 a naraz vsetky merania su uplne stabilne.

Tak teraz je to parada, prudy aj napatia stabilne, ako na displeji tak na meraku +- 5 mV / 5 mA.
Neviem co to urobi, ked zapnem MPPT a ci to bude nelinearne
a ci to bude driftovat s prudom, napr. 5 10 15 20 25 30 35 40 45 50 A
ako aj ake velke bude rusenie v zavislosti od prudu.

.
ACS758_Axpert_off.jpg
DC-AC inverter REC Lion DC-AC ESP32 DIY inv. 15 GB za sekundu DIY MPPT Holder
Zjedz vsetko, co si kupil, v obchode a netreba ti tasku, auto ci chladnicku.
Uživatelský avatar
rottenkiwi
Příspěvky: 5451
Registrován: pát úno 13, 2015 2:24 pm
Lokalita: SO, SK
Bydliště: SO, SK

Re: DIY 3kW Arduino MPPT Solar Charge Controller ESP32

Nový příspěvek od rottenkiwi »

Zlepseny SW a HW filtering pre 2 x ACS758 + 2 x delice napatia na ADS1115.

.
https://youtu.be/Tm2YGD2o140

.
acs758_ads_1115_SW.jpg
DC-AC inverter REC Lion DC-AC ESP32 DIY inv. 15 GB za sekundu DIY MPPT Holder
Zjedz vsetko, co si kupil, v obchode a netreba ti tasku, auto ci chladnicku.
Uživatelský avatar
rottenkiwi
Příspěvky: 5451
Registrován: pát úno 13, 2015 2:24 pm
Lokalita: SO, SK
Bydliště: SO, SK

Re: DIY 3kW Arduino MPPT Solar Charge Controller ESP32

Nový příspěvek od rottenkiwi »

Prvy realny test MPPT s panelmi:

INPUT: 2 x 285 Wp === 570 Wp.
OUT: 4 x 100 Ah Winston.

Zial bolo zamracene a potom Slnko je uz pod zlym uhlom, tak musim pokracovat rano.

https://youtu.be/shIp3812bKs

ALGO je takyto:

.
PandO.jpg
DC-AC inverter REC Lion DC-AC ESP32 DIY inv. 15 GB za sekundu DIY MPPT Holder
Zjedz vsetko, co si kupil, v obchode a netreba ti tasku, auto ci chladnicku.
unicast
Příspěvky: 1524
Registrován: sob bře 30, 2019 10:27 am
Lokalita: JV od pekla :)
Systémové napětí: 48V
Výkon panelů [Wp]: 5100
Kapacita baterie [kWh]: 13
Chci/Mám dotaci: NE

Re: DIY 3kW Arduino MPPT Solar Charge Controller ESP32

Nový příspěvek od unicast »

k je nějaké pořadové číslo měření a k - 1 předchozí měření?
Uživatelský avatar
rottenkiwi
Příspěvky: 5451
Registrován: pát úno 13, 2015 2:24 pm
Lokalita: SO, SK
Bydliště: SO, SK

Re: DIY 3kW Arduino MPPT Solar Charge Controller ESP32

Nový příspěvek od rottenkiwi »

Tam staci POWER a POWER_LAST, VOLTAGE a VOLTAGE_LAST,

problem je, ze ako na 2P paneloch otestujem tienenie a lokalne a globalne maximum ?
Dalej ako to porovnat napr. s Victronom 100 / 30, ked on je pripojeny na 27 V LFP ?

A este ak PERTURBACIA nebude dostatocna, tak to zamrzne na nejakom vykone.

Proste perturbacia musi byt vacsia ako sucin max. chyby merania u napati a prudov.

A este ake vybrat kondy, aby mali dostatocny ripple current, napr.
u 50 + 50 + 50 3 phase MPPT a ripple 1.5 % max. prudu na vstupe aj vystupe.

.
caps_ripple_current.jpg
DC-AC inverter REC Lion DC-AC ESP32 DIY inv. 15 GB za sekundu DIY MPPT Holder
Zjedz vsetko, co si kupil, v obchode a netreba ti tasku, auto ci chladnicku.
Uživatelský avatar
rottenkiwi
Příspěvky: 5451
Registrován: pát úno 13, 2015 2:24 pm
Lokalita: SO, SK
Bydliště: SO, SK

Re: DIY 3kW Arduino MPPT Solar Charge Controller ESP32

Nový příspěvek od rottenkiwi »

DC-AC inverter REC Lion DC-AC ESP32 DIY inv. 15 GB za sekundu DIY MPPT Holder
Zjedz vsetko, co si kupil, v obchode a netreba ti tasku, auto ci chladnicku.
Uživatelský avatar
rottenkiwi
Příspěvky: 5451
Registrován: pát úno 13, 2015 2:24 pm
Lokalita: SO, SK
Bydliště: SO, SK

Re: DIY 3kW Arduino MPPT Solar Charge Controller ESP32

Nový příspěvek od rottenkiwi »

Funkcna verzia na 570 Wp,
z 35 V na 13.7 V OUT, max. prud nastaveny na 22 A.
Mierne zamracene, niekolkohodinovy test:

Skace to pri 27 A max. nastavenom limite prudu na 390 - 410 W.
Victron s tymi panelmi dava s kratsimi kablami 412 W.

https://youtu.be/XomPDZnfweo

Perturb and observe:

Kód: Vybrat vše

 V_panels  = V2;
   power = A1 * V3;
   if ( power  > power_last  ) 
   {
     if ( V_panels  > V_panels_last  )  {     duty_index--; duty_index--;  
     //duty_index++; duty_index++; duty_index++; duty_index++;  
     }
     else
     {    duty_index++; duty_index++;
     //duty_index--; duty_index--; duty_index--; duty_index--;  
     }    
   }
   else  
   {
     if ( V_panels  > V_panels_last  )  {     duty_index++;duty_index++;
     //duty_index--; duty_index--; duty_index--; duty_index--;   
     }
     else
     {    duty_index--; duty_index--;
     //duty_index++; duty_index++; duty_index++; duty_index++;
     }    
   }
   V_panels_last = V_panels;
   power_last =  power;
DC-AC inverter REC Lion DC-AC ESP32 DIY inv. 15 GB za sekundu DIY MPPT Holder
Zjedz vsetko, co si kupil, v obchode a netreba ti tasku, auto ci chladnicku.
Uživatelský avatar
rottenkiwi
Příspěvky: 5451
Registrován: pát úno 13, 2015 2:24 pm
Lokalita: SO, SK
Bydliště: SO, SK

Re: DIY 3kW Arduino MPPT Solar Charge Controller ESP32

Nový příspěvek od rottenkiwi »

Porovnanie 75 V / 50 A MPPT a Victronu Smart 100 / 30.
Rovnake panely, len ku mojmu idu o 5 m dlhsie kable.

.
https://youtu.be/T_BVj2GaH8o
DC-AC inverter REC Lion DC-AC ESP32 DIY inv. 15 GB za sekundu DIY MPPT Holder
Zjedz vsetko, co si kupil, v obchode a netreba ti tasku, auto ci chladnicku.
Uživatelský avatar
rottenkiwi
Příspěvky: 5451
Registrován: pát úno 13, 2015 2:24 pm
Lokalita: SO, SK
Bydliště: SO, SK

Re: DIY 3kW Arduino MPPT Solar Charge Controller ESP32

Nový příspěvek od rottenkiwi »

Prisli mi suciastky na 2-phase 50 + 50 amps, 200 V verziu MPPT.

Len stale mi nie je jasne, ako oddelit analogovu a digitalnu zem.

https://youtu.be/H2eQc4DxK30?t=87

https://www.youtube.com/watch?v=vALt6Sd9vlY&t=328s

https://www.youtube.com/watch?v=OMtdirj2ltE

.
parts_200V_version_2phase.jpg
DC-AC inverter REC Lion DC-AC ESP32 DIY inv. 15 GB za sekundu DIY MPPT Holder
Zjedz vsetko, co si kupil, v obchode a netreba ti tasku, auto ci chladnicku.
glottis
Příspěvky: 2675
Registrován: stř úno 02, 2022 10:30 am
Lokalita: okolí Mělníka
Systémové napětí: 48V
Výkon panelů [Wp]: 13000
Kapacita baterie [kWh]: 15

Re: DIY 3kW Arduino MPPT Solar Charge Controller ESP32

Nový příspěvek od glottis »

udelej to na 4 vrstve pcb a zeme bych neoddeloval. Citlive veci bych oddelil polohou. Tak jak rikaj v tech videich. Poustel jsem si to tak pul roku zpatky a odnesl jsem si z toho tenhle zaver. Min je nekdy vic. Sam jsem se uz oddelenim zemi spalil a jen to prinasi boleni hlavy.
Uživatelský avatar
rottenkiwi
Příspěvky: 5451
Registrován: pát úno 13, 2015 2:24 pm
Lokalita: SO, SK
Bydliště: SO, SK

Re: DIY 3kW Arduino MPPT Solar Charge Controller ESP32

Nový příspěvek od rottenkiwi »

DC-AC inverter REC Lion DC-AC ESP32 DIY inv. 15 GB za sekundu DIY MPPT Holder
Zjedz vsetko, co si kupil, v obchode a netreba ti tasku, auto ci chladnicku.

  • Podobná témata
    Odpovědi
    Zobrazení
    Poslední příspěvek