{"id":31997,"date":"2022-02-04T08:00:13","date_gmt":"2022-02-04T07:00:13","guid":{"rendered":"https:\/\/botland.com.pl\/blog\/?p=31997"},"modified":"2023-05-24T10:06:16","modified_gmt":"2023-05-24T08:06:16","slug":"kontroler-ladowania-mppt-na-arduino","status":"publish","type":"post","link":"https:\/\/botland.com.pl\/blog\/kontroler-ladowania-mppt-na-arduino\/","title":{"rendered":"Kontroler \u0142adowania MPPT na Arduino"},"content":{"rendered":"<span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Czas czytania:<\/span> <span class=\"rt-time\"> 8<\/span> <span class=\"rt-label rt-postfix\">min.<\/span><\/span>\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"31997\" class=\"elementor elementor-31997\" data-elementor-post-type=\"post\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-89304dc elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"89304dc\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-7ba78cf\" data-id=\"7ba78cf\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-c76f6dd elementor-widget elementor-widget-text-editor\" data-id=\"c76f6dd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Podczas \u0142adowania akumulator\u00f3w konieczno\u015bci\u0105 jest zapewnienie odpowiedniej charakterystyki pr\u0105du, co pozwala zapobiec ich prze\u0142adowaniu. Dzi\u0119ki temu zwi\u0119kszana jest \u017cywotno\u015b\u0107 baterii w uk\u0142adzie <b>panel solarny &#8211; akumulator<\/b>. Po przekroczeniu krytycznego napi\u0119cia regulator od\u0142\u0105cza \u017ar\u00f3d\u0142o poboru energii, analogicznie jest przy pe\u0142nym na\u0142adowaniu akumulatora. Niniejszy artyku\u0142 przedstawia przyk\u0142adowy prototyp solarnej \u0142adowarki baterii opartej na <a href=\"https:\/\/botland.com.pl\/234-arduino\" data-wpel-link=\"internal\">Arduino<\/a>, kt\u00f3ra dzia\u0142a na zasadzie \u015bledzenia punktu mocy maksymalnej (MPPT).<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-1ba04d1 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"1ba04d1\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-a1da30f\" data-id=\"a1da30f\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-8c0b978 elementor-widget elementor-widget-heading\" data-id=\"8c0b978\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Funkcje i cel stosowania kontrolera MPPT<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-7ab77d0 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"7ab77d0\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-6fee833\" data-id=\"6fee833\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b619b8a elementor-widget elementor-widget-text-editor\" data-id=\"b619b8a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><b> Kontroler MPPT odpowiada za \u0142adowanie baterii w r\u00f3\u017cnych trybach<\/b>, chroni bateri\u0119 przed uszkodzeniem wskutek prze\u0142adowania, a tak\u017ce chroni panel s\u0142oneczny przed przet\u0119\u017ceniem. Inne funkcje kontrolera MPPT to zabezpieczenie baterii przed przeci\u0105\u017ceniem (blokada podnapi\u0119ciowa) oraz \u015bledzenie stopnia na\u0142adowania.\u00a0<span style=\"font-size: 1rem;\">Wsp\u00f3\u0142czesne, nowoczesne baterie, np. o\u0142owiowo-\u017celowe, <\/span><b style=\"font-size: 1rem;\">wymagaj\u0105 \u0142adowania 3-etapowego<\/b><span style=\"font-size: 1rem;\">.\u00a0<\/span><\/p><p><span style=\"font-size: 1rem;\">Gdy bateria jest g\u0142\u0119boko roz\u0142adowana, uruchamiane jest \u0142adowanie w trybie bulk, tj. odpowiednio du\u017cym pr\u0105dem do pojemno\u015bci baterii. W takim trybie, bateria jest \u0142adowana pr\u0105dem sta\u0142ym w czasie do oko\u0142o 80% swojej ca\u0142kowitej pojemno\u015bci. Po osi\u0105gni\u0119ciu okre\u015blonego progu napi\u0119cia, kontroler prze\u0142\u0105cza proces \u0142adowania w tryb absorpcji. W tym trybie, bateria jest \u0142adowana sta\u0142ym napi\u0119ciem, ale coraz ni\u017cszym pr\u0105dem.\u00a0<\/span><span style=\"font-size: 1rem;\">Kiedy faza absorpcji zostanie zako\u0144czona, kontroler \u0142adowania przechodzi w tryb podtrzymania napi\u0119cia i \u0142aduje akumulator pr\u0105dem, kt\u00f3rego warto\u015b\u0107 stanowi 1% pojemno\u015bci baterii podzielonej przez godzin\u0119, np. dla baterii o pojemno\u015bci 2Ah by\u0142by to pr\u0105d wynosz\u0105cy 2mA.\u00a0<\/span><\/p><p><span style=\"font-size: 1rem;\">W naszym prototypie, zastosujemy akumulator o napi\u0119ciu znamionowym 12V i pojemno\u015bci 2Ah, kt\u00f3ry mo\u017ce by\u0107 maksymalnie \u0142adowany napi\u0119ciem 14,4V i pr\u0105dem 2A.<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-b08386b elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"b08386b\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-b8bfd57\" data-id=\"b8bfd57\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-326c8fb elementor-widget elementor-widget-heading\" data-id=\"326c8fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Budowa prototypowego kontrolera \u0142adowania MPPT w oparciu o Arduino i jego zasada dzia\u0142ania<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-b74dc25 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"b74dc25\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-86d6ae7\" data-id=\"86d6ae7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b9c2e7c elementor-widget elementor-widget-text-editor\" data-id=\"b9c2e7c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>\u00a0<\/p><p>Nasz kontroler \u0142adowania MPPT <b>musi by\u0107 zdolny do odczytywania napi\u0119\u0107 i pr\u0105d\u00f3w wyj\u015bciowych i wej\u015bciowych<\/b>, a tak\u017ce <b>wykonywania niezb\u0119dnych oblicze\u0144<\/b>, umo\u017cliwiaj\u0105cych niezb\u0119dn\u0105 optymalizacj\u0119 procesu \u0142adowania. W tym celu, jako czujnik pr\u0105du u\u017cyjemy <a href=\"https:\/\/botland.com.pl\/czujniki-pradu\/14275-czujnik-pradu-acs712-20a-5903351242103.html\" data-wpel-link=\"internal\">dedykowanego modu\u0142u ACS712<\/a>. Natomiast przetwornic\u0119 impulsow\u0105 napi\u0119cia zasilaj\u0105cego b\u0119dziemy sterowa\u0107 wykorzystuj\u0105c \u017ar\u00f3d\u0142o sygna\u0142u PWM z <a href=\"https:\/\/botland.com.pl\/234-arduino\" data-wpel-link=\"internal\">Arduino<\/a> oraz tranzystor MOSFET lub przeka\u017anik elektromagnetyczny, kt\u00f3ry b\u0119dzie za\u0142\u0105cza\u0142 i wy\u0142\u0105cza\u0142 obci\u0105\u017cenie. Do odczytu parametr\u00f3w \u0142adowania, u\u017cyjemy wy\u015bwietlacza LCD w uk\u0142adzie 4&#215;20 (cztery linijki po dwadzie\u015bcia znak\u00f3w ka\u017cda). Konieczna b\u0119dzie tak\u017ce przetwornica obni\u017caj\u0105ca napi\u0119cie do 5V do zasilania p\u0142ytki Arduino.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-0790be6\" data-id=\"0790be6\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-6bdc41d elementor-widget elementor-widget-image\" data-id=\"6bdc41d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"540\" height=\"540\" src=\"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2021\/10\/Arduino-Uno-rev-3.jpg\" class=\"attachment-large size-large wp-image-30384\" alt=\"Minikomputer Arduino\" srcset=\"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2021\/10\/Arduino-Uno-rev-3.jpg 540w, https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2021\/10\/Arduino-Uno-rev-3-300x300.jpg 300w, https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2021\/10\/Arduino-Uno-rev-3-150x150.jpg 150w\" sizes=\"(max-width: 540px) 100vw, 540px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-84b5d8d elementor-align-center elementor-widget elementor-widget-button\" data-id=\"84b5d8d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/botland.com.pl\/234-arduino\" data-wpel-link=\"internal\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">SPRAWD\u0179<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-ae76e87 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"ae76e87\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-b4e3d74\" data-id=\"b4e3d74\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-91a8a10 elementor-widget elementor-widget-heading\" data-id=\"91a8a10\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Kontroler \u0142adowania MPPT - kod programu do pomiaru i stabilizacji pr\u0105du \u0142adowania na sta\u0142ym poziomie\n<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-a906b31 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"a906b31\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-4af4fcf\" data-id=\"4af4fcf\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-43bed9e elementor-widget elementor-widget-text-editor\" data-id=\"43bed9e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Poni\u017cszy kod programu ma za zadanie sterowa\u0107 ograniczaniem pr\u0105du \u0142adowania do 1A. Z tego wzgl\u0119du, w przypadku pod\u0142\u0105czenia zbyt wysokiego napi\u0119cia \u0142adowania, kontroler MPPT ma za zadanie ograniczy\u0107 pr\u0105d \u0142adowania do programowo ustawionej warto\u015bci. Jest to realizowane poprzez odpowiednie zmniejszanie i zwi\u0119kszanie wsp\u00f3\u0142czynnika wype\u0142nienia przebiegu PWM steruj\u0105cego bramk\u0105 tranzystora MOSFET, aby wzgl\u0119dnie ustabilizowa\u0107 pr\u0105d \u0142adowania na warto\u015b\u0107 1A.<\/p><p>Kod programu:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-19833d7 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"19833d7\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-cf5fa92\" data-id=\"cf5fa92\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-e2a3be1 elementor-widget elementor-widget-code-highlight\" data-id=\"e2a3be1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-javascript line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-javascript\">\n\t\t\t\t\t<xmp>\/\/Program steruje stabilizacja pradu ladowania baterii przez kontroler ladowania MPPT\r\n#include <Wire.h> \/\/Inicjalizacja biblioteki Wire.h\r\n#include <LiquidCrystal_I2C.h> \/\/Inicjacja biblioteki do obslugi wyswietlacza LCD\r\n\r\nLiquidCrystal_I2C lcd(0x27,20,4);  \/\/Adresowanie wyswietlacza LCD do magistrali I2C\r\n\r\n\/\/Deklaracja stalych\r\n#define LCD_refresh_rate 1000 \/\/odswiezanie wyswietlacza LCD co 1s\r\n\r\n\/\/Deklaracja wejsc\r\n#define solar_current_in A0 \/\/pomiar pradu - wejscie analogowe A0\r\n\/\/Deklaracja wyjsc\r\n#define PWM_out 10\r\n#define load_enable 2\r\n\r\n\/\/Deklaracja zmiennych\r\nint pwm_value = 0; \/\/poczatkowy wspolczynnik wypelnienia sygnalu sterujacego MOSFETem\r\nfloat solar_current = 0; \/\/poczatkowy prad ladowania\r\nfloat current_factor = 0.185; \/\/Wartosc domyslna deklarowana przez producenta czujnika ACS712\r\nunsigned int before_millis = 0;\r\nunsigned int now_millis = 0;\r\n\r\nvoid setup(){\r\n  pinMode(solar_current_in,INPUT); \/\/pin pomiaru pradu ladowania jako wejscie\r\n  pinMode(PWM_out,OUTPUT); \/\/pin sterujacy PWM ladowania jako wyjscie\r\n  digitalWrite(PWM_out,LOW); \/\/pin PWM ustawiony w stan niski - MOSFET nie przewodzi\r\n  TCCR1B = TCCR1B & B11111000 | B00000001; \/\/timer 1 ustawiony na czestotliwosc 31372.55Hz\r\n  Serial.begin(9600); \/\/wlaczenie transmisji szeregowej\r\n  lcd.init(); \/\/wlaczenie wyswietlacza LCD\r\n  lcd.backlight(); \/\/wlaczenie podswietlenia wyswietlacza LCD\r\n  before_millis = millis; \/\/rozdzielczosc czasu odswiezania wyswietlacza LCD\r\n}\r\n\r\nvoid loop(){\r\n  solar_current = get_solar_current(10);\r\n  now_millis = millis();\r\n  if(now_millis - before_millis > LCD_refresh_rate)\r\n    {\r\n    before_millis = now_millis;\r\n    \/\/lcd.clear(); \/\/wyczyszczenie zawartosci wyswietlacza LCD\r\n    lcd.setCursor(0,0); \/\/ustawienie kursora\r\n    lcd.print(solar_current,2); \/\/wyswietlanie pradu na wyjsciu panelu solarnego\r\n    lcd.print(\"A\"); \/\/prad w Amperach\r\n    }\r\n\/\/Stabilizacja stalego pradu ladowania\r\n    if(solar_current > 1.0) \/\/dla pradu ladowania wiekszego od 1.0A\r\n    {\r\n    pwm_value--;\r\n    pwm_value = constrain(pwm_value,0,254); \/\/zakres modulacji PWM od 0% do 99%\r\n    } else {\r\n    pwm_value++;\r\n    pwm_value = constrain(pwm_value,0,254);\r\n    }\r\n    analogWrite(PWM_out,pwm_value); \/\/wartosc wspolczynnika wypelnienia\r\n\/\/pomiar liczby probek\r\n    float get_solar_current(int n_samples)\r\n    {\r\n        float Sensor_voltage; \/\/napiecie z czujnika\r\n        float current =0;\r\n        for(int i=0; i < n_samples; i++)\r\n        {\r\n        Sensor_voltage = analogRead(solar_current_in) * (5.0 \/ 1023.0);\r\n        current = current + (Sensor_voltage-2.5)\/current_factor;\r\n        } \/\/odczyt napiecia z czujnika\r\n    }\r\ncurrent = current\/n_samples; \/\/obliczenie liczby probek pradu\r\nreturn(current);\r\n}\r\n\r\n<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-ca070bd elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"ca070bd\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-c0536ab\" data-id=\"c0536ab\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-12b498e elementor-widget elementor-widget-heading\" data-id=\"12b498e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Kontroler \u0142adowania MPPT - kod programu do pomiaru i stabilizacji napi\u0119cia \u0142adowania na sta\u0142ym poziomie<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-c856c18 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"c856c18\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-18320b7\" data-id=\"18320b7\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-9d97fb1 elementor-widget elementor-widget-text-editor\" data-id=\"9d97fb1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Nast\u0119pna cz\u0119\u015b\u0107 kodu programu odpowiada za utrzymywanie napi\u0119cia o sta\u0142ej warto\u015bci \u0142adowania. W przypadku naszego projektu, b\u0119dzie to warto\u015b\u0107 na poziomie 12V. Kod uwzgl\u0119dnia wszystkie trzy fazy procesu \u0142adowania baterii.<\/p><p>Kod programu:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-b22c8ec elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"b22c8ec\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-9c564a6\" data-id=\"9c564a6\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2025b9e elementor-widget elementor-widget-code-highlight\" data-id=\"2025b9e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-javascript line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-javascript\">\n\t\t\t\t\t<xmp>\/\/Program steruje stabilizacja napiecia ladowania baterii przez kontroler ladowania MPPT\r\n#include <Wire.h> \/\/Inicjalizacja biblioteki Wire.h\r\n#include <LiquidCrystal_I2C.h> \/\/Inicjacja biblioteki do obslugi wyswietlacza LCD\r\nLiquidCrystal_I2C lcd(0x27,20,4);  \/\/Adresowanie wyswietlacza LCD do magistrali I2C\r\n\r\n\/\/Deklaracja wejsc\r\n#define battery_voltage_in A2\r\n\/\/Deklaracja wyjsc\r\n#define PWM_out 10\r\n#define load_enable 2\r\n\r\n\/\/Deklaracja zmiennych\r\nfloat bat_voltage = 0; \/\/poczatkowe napiecie ladowania baterii\r\nint pwm_value = 0; \/\/poczatkowy wspolczynnik wypelnienia sygnalu sterujacego MOSFETem\r\nunsigned int before_millis = 0;\r\nunsigned int now_millis = 0;\r\n#define LCD_refresh_rate 1000 \/\/odswiezanie wyswietlacza LCD co 1s\r\n\r\nvoid setup(){\r\n  pinMode(battery_voltage_in,INPUT); \/\/pin pomiaru napiecia ladowania baterii jako wejscie\r\n  pinMode(PWM_out,OUTPUT); \/\/pin PWM jako wyjscie\r\n  digitalWrite(PWM_out,LOW); \/\/pin PWM przerzucowny w stan niski\r\n  TCCR1B = TCCR1B & B11111000 | B00000001; \/\/timer 1 ustawiony na czestotliwosc 31372.55 Hz\r\n  Serial.begin(9600); \/\/wlaczenie transmisji szeregowej\r\n  lcd.init(); \/\/Wlaczenie wyswietlacza LCD\r\n  lcd.backlight(); \/\/Wlaczenie podswietlenia wyswietlacza LCD\r\n  before_millis = millis;\r\n}\r\n\r\nvoid loop(){\r\n  bat_voltage = get_battery_voltage(10); \/\/napiecie baterii na podstawie wspolczynnika wypelnienia sygnalu PWM z pinu 10\r\n  now_millis = millis();\r\n  if(now_millis - before_millis > LCD_refresh_rate)\r\n  {\r\n    before_millis = now_millis;\r\n    \/\/lcd.clear(); \/\/wyczyszczenie zawartosci wyswietlacza LCD\r\n    lcd.setCursor(0,0); \/\/zerowanie pozycji kursora\r\n    lcd.print(bat_voltage,2); \/\/napiecie baterii\r\n    lcd.print(\"V\"); \/\/wyswietlanie wyniku w Woltach\r\n  }\r\n\r\n\/\/Sterowanie stabilizacja napiecia ladowania\r\n  if(bat_voltage > 12.0){ \/\/Sprawdzenie warunku przekroczenia napiecia baterii\r\n    pwm_value++;\r\n    pwm_value = constrain(pwm_value,0,254);\r\n  }\r\n  else {\r\n    pwm_value--;\r\n    pwm_value = constrain(pwm_value,0,254);\r\n  }\r\n  analogWrite(PWM_out,pwm_value); \/\/wysterowanie wyjscia PWM\r\n}\r\n\r\n\/\/Pomiar i probkowanie wartosci napiecia baterii\r\nfloat get_battery_voltage(int n_samples)\r\n{\r\n  float voltage = 0;\r\n  for(int i=0; i < n_samples; i++)\r\n  {\r\n    voltage += (analogRead(battery_voltage_in) * (5.0 \/ 1023.0) * 7.85); \/\/Pomiar napiecia\r\n  }\r\n  voltage = voltage\/n_samples; \/\/obliczenie liczby probek napiecia\r\n  return(voltage);\r\n}<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-c4df5a3 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"c4df5a3\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-3bbb965\" data-id=\"3bbb965\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-9e69386 elementor-widget elementor-widget-heading\" data-id=\"9e69386\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Kontroler \u0142adowania MPPT - kod programu do pomiaru i stabilizacji punktu mocy maksymalnej<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-33023e1 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"33023e1\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-cf6b1d8\" data-id=\"cf6b1d8\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-be7db51 elementor-widget elementor-widget-text-editor\" data-id=\"be7db51\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Ostatnia cz\u0119\u015b\u0107 kodu programu dla kontrolera MPPT, jest odpowiedzialna za obliczanie i stabilizacj\u0119 punktu mocy maksymalnej, przy kt\u00f3rym wyst\u0119puj\u0105 najbardziej optymalne warunki do \u0142adowania baterii. Program wykonuje pomiary por\u00f3wnawcze pr\u0105d\u00f3w i napi\u0119\u0107 i przy spe\u0142nieniu okre\u015blonych warunk\u00f3w dokonuje prze\u0142\u0105czenia pomi\u0119dzy trybami \u0142adowania.<\/p><p>Kod programu:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-f58d2c5 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"f58d2c5\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-09eb8c8\" data-id=\"09eb8c8\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-7bed502 elementor-widget elementor-widget-code-highlight\" data-id=\"7bed502\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-javascript line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-javascript\">\n\t\t\t\t\t<xmp>\/\/Program steruje stabilizacja punktu mocy maksymalnej kontrolera ladowania MPPT i przelacza pomiedzy trybami ladowania\r\n#include <Wire.h> \/\/Inicjalizacja biblioteki Wire.h\r\n#include <LiquidCrystal_I2C.h> \/\/Inicjalizacja biblioteki do obslugi wyswietlacza LCD\r\nLiquidCrystal_I2C lcd(0x27,20,4); \/\/Adresowanie wyswietlacza LCD do magistrali I2C\r\n\r\n\/\/Inicjacja zmiennych\r\nuint8_t Battery[8]  = {0x0E, 0x1B, 0x11, 0x11, 0x1F, 0x1F, 0x1F, 0x1F};\r\nuint8_t Panel[8]  = {0x1F, 0x15, 0x1F, 0x15, 0x1F, 0x15, 0x1F, 0x00};\r\nuint8_t Pwm[8]  = {0x1D, 0x15, 0x15, 0x15, 0x15,0x15, 0x15, 0x17};\r\nuint8_t Flash[8]  = {0x01, 0x02, 0x04, 0x1F, 0x1F, 0x02, 0x04, 0x08};\r\n\r\n\/\/Inicjacja stalych\r\n#define bulk_voltage_max 14.5 \/\/maks. napiecie w trybie bulk\r\n#define bulk_voltage_min 13 \/\/min. napiecie w trybie bulk\r\n#define absorption_voltage 14.7 \/\/napiecie w trybie absorpcji\r\n#define float_voltage_max 13 \/\/maks. napiecie w trybie podtrzymania\r\n#define battery_min_voltage 10 \/\/min. napiecie baterii\r\n#define solar_min_voltage 19 \/\/min. napiecie panelu solarnego\r\n#define charging_current 2.0 \/\/min. prad ladowania\r\n#define absorption_max_current 2.0 \/\/maks. prad absorpcji\r\n#define absorption_min_current 0.1 \/\/min. prad absorpcji\r\n#define float_voltage_min 13.2 \/\/min. napiecie w trybie podtrzymania\r\n#define float_voltage 13.4 \/\/ustalone napiecie w trybie podtrzymania\r\n#define float_max_current 0.12 \/\/maks. prad w trybie podtrzymania\r\n#define LCD_refresh_rate 1000 \/\/odswiezanie wyswietlacza LCD co 1s\r\nbyte BULK = 0; \/\/przypisanie liczb do poszczegolnym trybom ladowania\r\nbyte ABSORPTION = 1;\r\nbyte FLOAT = 2;\r\nbyte mode = 0; \/\/domyslnie ladowanie rozpoczynamy od trybu bulk\r\n\r\n\/\/konfiguracja wejsc analogowych do pomiarow\r\n#define solar_voltage_in A1 \/\/napiecie panelu solar - pin A1\r\n#define solar_current_in A0 \/\/prad na wyjsciu panelu solar - pin A0\r\n#define battery_voltage_in A2 \/\/napiecie baterii - pin A2\r\n\r\n\/\/konfiguracja wyjsc\r\n#define PWM_out 10 \/\/wyjscie sygnalu PWM - pin D10\r\n#define load_enable 2 \/\/zalaczanie ladowania - pin D2\r\n\r\n\/\/inicjacja zmiennych\r\nfloat bat_voltage = 0; \/\/napiecie baterii\r\nint pwm_value = 0; \/\/wspolczynnik wypelnienia\r\nfloat solar_current = 0; \/\/prad ladowania\r\nfloat current_factor = 0.185; \/\/stala pradowa dla czujnika ACS712 5A\r\nfloat solar_voltage = 0; \/\/napiecie panelu solarnego\r\nfloat solar_power = 0; \/\/moc panelu solarnego\r\nString load_status = \"OFF\"; \/\/status ladowania - wylaczone\r\nint pwm_percentage = 0; \/\/procentowa wartosc wsp. wypelnienia\r\nunsigned int before_millis = 0;\r\nunsigned int now_millis = 0;\r\nString mode_str = \"BULK\";\r\n\r\nvoid setup(){\r\n  pinMode(solar_voltage_in,INPUT); \/\/konfiguracja pinow jako wejscia\r\n  pinMode(solar_current_in,INPUT);\r\n  pinMode(battery_voltage_in,INPUT);\r\n  pinMode(PWM_out,OUTPUT); \/\/konfiguracja pin PWM jako wyjscie\r\n  digitalWrite(PWM_out,LOW); \/\/pin PWM ustawiony w stan niski - MOSFET nie przewodzi\r\n  pinMode(load_enable,OUTPUT); \/\/wyjscie zalaczajace ladowanie\r\n  digitalWrite(load_enable,LOW); \/\/wylaczenie ladowania (przekaznik)\r\n  TCCR1B = TCCR1B & B11111000 | B00000001; \/\/timer 1 ustawiony na czestotliwosc 31372.55Hz\r\n  Serial.begin(9600); \/\/wlaczenie transmisji szeregowej\r\n  lcd.init(); \/\/wlaczenie wyswietlacza LCD\r\n  lcd.backlight(); \/\/wlaczenie podswietlenia wyswietlacza LCD\r\n  lcd.createChar(0, Battery);\r\n  lcd.createChar(1, Panel);\r\n  lcd.createChar(2, Pwm);\r\n  lcd.createChar(3, Flash);\r\n  before_millis = millis; \/\/rozdzielczosc czasu odswiezania wyswietlacza LCD\r\n}\r\n\r\nvoid loop(){\r\n  solar_voltage = get_solar_voltage(15); \/\/napiecie panelu solarnego\r\n  bat_voltage =   get_battery_voltage(15); \/\/napiecie baterii\r\n  solar_current = get_solar_current(15); \/\/prad panelu solarnego\r\n  solar_power = bat_voltage * solar_current; \/\/moc panelu solarnego\r\n  pwm_percentage = map(pwm_value,0,255,0,100);\r\n  \r\n\/\/wyswietlanie pomiarow na wyswietlaczu LCD\r\n  now_millis = millis();\r\n  if(now_millis - before_millis > LCD_refresh_rate)\r\n  {\r\n    before_millis = now_millis;\r\n    lcd.clear();\r\n    lcd.setCursor(0,0); \/\/kursor ustawiony na kolumne 0 rzad 0\r\n    lcd.write(1); \/\/wpisanie \"1\" na LCD - pomiar dla panelu solar.\r\n    lcd.print(\" \"); \/\/spacja\r\n    lcd.print(solar_voltage,2); \/\/napiecie panelu solarnego\r\n    lcd.print(\"V\"); \/\/napiecie w Woltach\r\n    lcd.print(\"    \"); \/\/cztery spacje\r\n    lcd.write(0); \/\/wpisanie \"0\" na LCD - pomiar dla baterii\r\n    lcd.print(\" \");  \/\/spacja\r\n    lcd.print(bat_voltage,2); \/\/napiecie baterii\r\n    lcd.print(\"V\"); \/\/napiecie w Woltach\r\n    lcd.setCursor(0,1); \/\/kursor ustawiony na kolumne 0 rzad 1\r\n    lcd.print(\"  \"); \/\/cztery spacje\r\n    lcd.print(solar_current,2); \/\/pomiar pradu dla panelu solar.\r\n    lcd.print(\"A\"); \/\/prad w Amperach\r\n    lcd.print(\"     LOAD \"); \/\/obciazenie\r\n    lcd.print(load_status); \/\/status obciazenia\r\n    lcd.setCursor(0,2); \/\/kursor ustawiony na kolumne 0 rzad 2\r\n    lcd.print(\"  \"); \/\/Dwie spacje\r\n    lcd.print(solar_power,2); \/\/moc z panelu solarnego\r\n    lcd.print(\"W\"); \/\/moc w Watach\r\n    lcd.print(\"     PWM \"); \/\/wyswietlanie \"PWM\"\r\n    lcd.print(pwm_percentage); \/\/wartosc procent. wsp. wypelnienia\r\n    lcd.print(\"%\"); \/\/wyswietlanie znaku procentow\r\n    lcd.setCursor(0,3); \/\/kursor ustawiony na kolumne 0 rzad 3\r\n    lcd.print(mode_str);\r\n  }\r\n  if(bat_voltage < battery_min_voltage){\r\n    digitalWrite(load_enable,LOW); \/\/ponizej minimalnego napiecia obciazenie jest wylaczane\r\n    load_status  = \"OFF\"; \/\/status obciazenia - wylaczone\r\n  }\r\n  else{\r\n    digitalWrite(load_enable,HIGH); \/\/gdy bateria jest naladowana wlaczamy obciazenie\r\n    load_status  = \"ON\"; \/\/status obciazenia - wlaczone\r\n  }\r\n\r\n\/\/Tryb podtrzymania napiecia baterii po zakonczeniu ladowania\r\n\/\/Dla napiecia baterii ponizej napiecia podtrzymania, wlaczyc ladowanie napieciem stalym w trybie BULK\r\n  if(mode == FLOAT){\r\n    if(bat_voltage < float_voltage_min){\r\n      mode = BULK; \/\/wlaczenie trybu bulk\r\n      mode_str = \"BULK\";\r\n    }\r\n    else{\r\n      if(solar_current > float_max_current){ \/\/po przekroczeniu pradu panelu solarnego powyzej pradu podtrzymania, wlaczyc ladowanie pradem stalym w trybie BULK\r\n        mode = BULK; \/\/wlaczenie trybu bulk\r\n        mode_str = \"BULK\";\r\n      }\/\/End if > \r\n      else{\r\n        if(bat_voltage > float_voltage){\r\n          pwm_value--;\r\n          pwm_value = constrain(pwm_value,0,254); \/\/dla napiecia baterii wiekszego od napiecia podtrzymania, zmniejszyc wsp. wypelnienia o 1\r\n        }\r\n        else {\r\n          pwm_value++;\r\n          pwm_value = constrain(pwm_value,0,254); \/\/dla napiecia baterii mniejszego od napiecia podtrzymania, zwiekszyc wsp. wypelnienia o 1\r\n        }\r\n      }\/\/End else > float_max_current \/\/w innym przypadku zwiekszyc prad ladowania w stanie podtrzymania napiecia\r\n      analogWrite(PWM_out,pwm_value);\r\n    }\r\n  }\/\/END of mode == FLOAT \/\/wylaczenie trybu podtrzymania napiecia\r\n\r\n  \/\/Zmiana trybu z bulk na absorpcje\r\n  else{\r\n    if(bat_voltage < bulk_voltage_min){\r\n      mode = BULK;\r\n      mode_str = \"BULK\"; \/\/wlaczenie trybu ladowania bulk\r\n    }\r\n    else if(bat_voltage > bulk_voltage_max){\r\n      mode_str = \"ABSORPTION\";\r\n      mode = ABSORPTION; \/\/wlaczenie trybu ladowania absorpcyjego\r\n    }\r\n\r\n\/\/Wlaczenie trybu bulk\r\n    if(mode == BULK){\r\n      if(solar_current > charging_current){ \/\/jesli prad panelu solar. wiekszy od pradu ladowania, zmniejszyc wsp wypelnienia o 1\r\n        pwm_value--;\r\n        pwm_value = constrain(pwm_value,0,254);\r\n      }\r\n      else { \/\/\/\/jesli prad panelu solar. mniejszy od pradu ladowania, zwiekszyc wsp wypelnienia o 1\r\n        pwm_value++;\r\n        pwm_value = constrain(pwm_value,0,254);\r\n      }\r\n      analogWrite(PWM_out,pwm_value);\r\n    }\/\/End of mode == BULK \/\/wylaczenie trybu bulk\r\n\r\n   \/\/Tryb absorpcji\r\n    if(mode == ABSORPTION){\r\n      if(solar_current > absorption_max_current){\r\n        pwm_value--;\r\n        pwm_value = constrain(pwm_value,0,254); \/\/jesli prad panelu solar. przekracza maksymalny prad absorpcji, zmniejszyc wsp. wypelnienia o 1\r\n      }\/\/End if > absorption_max_current \/\/\/\/jesli prad panelu solar. przekracza maksymalny prad absorpcji, zmniejszyc wsp. wypelnienia o 1\r\n      else{\r\n        if(bat_voltage > absorption_voltage){\r\n          pwm_value--;\r\n          pwm_value = constrain(pwm_value,0,254); \/\/jesli napiecie baterii przekracza napiecie absorpcji, zmniejszyc wsp. wypelnienia o 1 w gore\r\n        }\r\n        else {\r\n          pwm_value++;\r\n          pwm_value = constrain(pwm_value,0,254); \/\/ \/\/jesli napiecie baterii mniejsze od napiecia absorpcji, zwiekszyc wsp. wypelnienia o 1 w gore\r\n        }\r\n        if(solar_current < absorption_min_current){ \/\/jesli prad panelu solarnego mniejszy od minimalnego pradu ladowania absorpcyjnego\r\n          mode = FLOAT; \/\/uruchomienie tryby podtrzymania napiecia\r\n          mode_str = \"FLOAT\";\r\n        }\r\n      }\/\/End else > absorption_max_current \/\/jesli prad panelu solarnego wiekszy od maksymalnego pradu ladowania absorpcyjnego\r\n      analogWrite(PWM_out,pwm_value);\r\n    }\/\/ End of mode == absorption_max_current \/\/wylaczenie trybu podtrzymania napiecia\r\n  }\/\/END of else mode == FLOAT \r\n  \/\/Serial.println(bat_voltage); \/\/napiecie baterii\r\n}\/\/End void loop\r\n\r\n\/\/Pomiar napiecia panelu solarnego poprzez probkowanie napiecia\r\nfloat get_solar_voltage(int n_samples)\r\n{\r\n  float voltage = 0;\r\n  for(int i=0; i < n_samples; i++)\r\n  {\r\n    voltage += (analogRead(solar_voltage_in) * (5.0 \/ 1023.0) * 8.0); \/\/obliczanie napiecia panelu solarnego dla przetwornika ADC\r\n  }\r\n  voltage = voltage\/n_samples;\r\n  if(voltage < 0){voltage = 0;}\r\n  return(voltage);\r\n}\r\n\r\n\/\/Pomiar napiecia baterii poprzez probkowanie napiecia\r\nfloat get_battery_voltage(int n_samples)\r\n{\r\n  float voltage = 0;\r\n  for(int i=0; i < n_samples; i++)\r\n  {\r\n    voltage += (analogRead(battery_voltage_in) * (5.0 \/ 1023.0) * 7.85); \/\/obliczanie napiecia dla przetwornika ADC\r\n  }\r\n  voltage = voltage\/n_samples;\r\n  if(voltage < 0){voltage = 0;}\r\n  return(voltage);\r\n}\r\n\r\n\/\/Pomiar pradu z panelu poprzez probkowanie napiecia\r\nfloat get_solar_current(int n_samples)\r\n{\r\n  float Sensor_voltage;\r\n  float current =0;\r\n  for(int i=0; i < n_samples; i++)\r\n  {\r\n    Sensor_voltage = analogRead(solar_current_in) * (5.0 \/ 1023.0); \/\/obliczanie spadku napiecia dla przetwornika ADC\r\n    current = current + (Sensor_voltage-2.5)\/current_factor; \/\/obliczanie pradu na podstawie spadku napiecia\r\n  }\r\n  current = current\/n_samples;\r\n  if(current < 0){current = 0;}\r\n  return(current);\r\n}<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-73cd99c elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"73cd99c\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-14ee419\" data-id=\"14ee419\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-ae4d47e elementor-widget elementor-widget-heading\" data-id=\"ae4d47e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Arduino jako kontroler MPPT - podsumowanie<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-e6060d8 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"e6060d8\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-4e63aa0\" data-id=\"4e63aa0\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-c9d4023 elementor-widget elementor-widget-image\" data-id=\"c9d4023\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"800\" height=\"526\" src=\"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2022\/02\/piqsels.com-id-jfnvo-1024x673.jpg\" class=\"attachment-large size-large wp-image-32133\" alt=\"\" srcset=\"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2022\/02\/piqsels.com-id-jfnvo-1024x673.jpg 1024w, https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2022\/02\/piqsels.com-id-jfnvo-300x197.jpg 300w, https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2022\/02\/piqsels.com-id-jfnvo-768x505.jpg 768w, https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2022\/02\/piqsels.com-id-jfnvo-1536x1010.jpg 1536w, https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2022\/02\/piqsels.com-id-jfnvo-2048x1347.jpg 2048w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-363225a elementor-widget elementor-widget-text-editor\" data-id=\"363225a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>\nPrzedstawiona koncepcja kontrolera \u0142adowania MPPT obrazuje prosty prototyp, kt\u00f3ry cho\u0107 spe\u0142nia swoj\u0105 rol\u0119 dostatecznie, to w dalszym ci\u0105gu ma pewne ograniczenia wynikaj\u0105ce m.in. z niskiej sprawno\u015bci paneli fotowoltaicznych. Niemniej jednak, w miar\u0119 ulepszania technologii paneli solarnych, wzro\u015bnie ich sprawno\u015b\u0107 i w po\u0142\u0105czeniu z wykorzystaniem algorytmu MPPT, fotowoltaika stanie si\u0119 jeszcze bardziej korzystna ekonomicznie. Z czasem taka technologia sprawdzi si\u0119 jeszcze lepiej w zasilaniu odbiornik\u00f3w o wzmo\u017conym poborze energii elektrycznej.\n<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Z pozoru, \u0142adowanie baterii polega na jej pod\u0142\u0105czeniu do \u017ar\u00f3d\u0142a napi\u0119cia sta\u0142ego o odpowiedniej wydajno\u015bci pr\u0105dowej. Okazuje si\u0119, \u017ce sam proces \u0142adowania mo\u017cna odpowiednio zoptymalizowa\u0107 pod k\u0105tem ca\u0142okszta\u0142tu jego efektywno\u015bci &#8211; wystarczy skorzysta\u0107 z Arduino!<\/p>\n","protected":false},"author":20,"featured_media":62691,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[133,21],"tags":[],"class_list":["post-31997","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arduino","category-programowanie"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Kontroler \u0142adowania MPPT na Arduino - Botland<\/title>\n<meta name=\"description\" content=\"Arduino to platforma, kt\u00f3r\u0105 mo\u017cesz wykorzysta\u0107 do zbudowania prostej \u0142adowarki fotowoltaicznej MPPT - odwied\u017a blog Botland i poznaj szczeg\u00f3\u0142y nt. przyk\u0142adowego projektu!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/botland.com.pl\/blog\/kontroler-ladowania-mppt-na-arduino\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Kontroler \u0142adowania MPPT na Arduino - Botland\" \/>\n<meta property=\"og:description\" content=\"Arduino to platforma, kt\u00f3r\u0105 mo\u017cesz wykorzysta\u0107 do zbudowania prostej \u0142adowarki fotowoltaicznej MPPT - odwied\u017a blog Botland i poznaj szczeg\u00f3\u0142y nt. przyk\u0142adowego projektu!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/botland.com.pl\/blog\/kontroler-ladowania-mppt-na-arduino\/\" \/>\n<meta property=\"og:site_name\" content=\"Botland\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/facebook.com\/Botland\/\" \/>\n<meta property=\"article:published_time\" content=\"2022-02-04T07:00:13+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-05-24T08:06:16+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2023\/05\/new2023-mppt.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1510\" \/>\n\t<meta property=\"og:image:height\" content=\"755\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Maciej Figiel\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Napisane przez\" \/>\n\t<meta name=\"twitter:data1\" content=\"Maciej Figiel\" \/>\n\t<meta name=\"twitter:label2\" content=\"Szacowany czas czytania\" \/>\n\t<meta name=\"twitter:data2\" content=\"16 minut\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/botland.com.pl\\\/blog\\\/kontroler-ladowania-mppt-na-arduino\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/botland.com.pl\\\/blog\\\/kontroler-ladowania-mppt-na-arduino\\\/\"},\"author\":{\"name\":\"Maciej Figiel\",\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/#\\\/schema\\\/person\\\/a8e66118d1f27ebf9f540831e5a3283b\"},\"headline\":\"Kontroler \u0142adowania MPPT na Arduino\",\"datePublished\":\"2022-02-04T07:00:13+00:00\",\"dateModified\":\"2023-05-24T08:06:16+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/botland.com.pl\\\/blog\\\/kontroler-ladowania-mppt-na-arduino\\\/\"},\"wordCount\":730,\"publisher\":{\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/botland.com.pl\\\/blog\\\/kontroler-ladowania-mppt-na-arduino\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/botland.com.pl\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/05\\\/new2023-mppt.jpg\",\"articleSection\":[\"Arduino\",\"Programowanie\"],\"inLanguage\":\"pl-PL\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/botland.com.pl\\\/blog\\\/kontroler-ladowania-mppt-na-arduino\\\/\",\"url\":\"https:\\\/\\\/botland.com.pl\\\/blog\\\/kontroler-ladowania-mppt-na-arduino\\\/\",\"name\":\"Kontroler \u0142adowania MPPT na Arduino - Botland\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/botland.com.pl\\\/blog\\\/kontroler-ladowania-mppt-na-arduino\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/botland.com.pl\\\/blog\\\/kontroler-ladowania-mppt-na-arduino\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/botland.com.pl\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/05\\\/new2023-mppt.jpg\",\"datePublished\":\"2022-02-04T07:00:13+00:00\",\"dateModified\":\"2023-05-24T08:06:16+00:00\",\"description\":\"Arduino to platforma, kt\u00f3r\u0105 mo\u017cesz wykorzysta\u0107 do zbudowania prostej \u0142adowarki fotowoltaicznej MPPT - odwied\u017a blog Botland i poznaj szczeg\u00f3\u0142y nt. przyk\u0142adowego projektu!\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/botland.com.pl\\\/blog\\\/kontroler-ladowania-mppt-na-arduino\\\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/botland.com.pl\\\/blog\\\/kontroler-ladowania-mppt-na-arduino\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\\\/\\\/botland.com.pl\\\/blog\\\/kontroler-ladowania-mppt-na-arduino\\\/#primaryimage\",\"url\":\"https:\\\/\\\/botland.com.pl\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/05\\\/new2023-mppt.jpg\",\"contentUrl\":\"https:\\\/\\\/botland.com.pl\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/05\\\/new2023-mppt.jpg\",\"width\":1510,\"height\":755},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/botland.com.pl\\\/blog\\\/kontroler-ladowania-mppt-na-arduino\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\\\/\\\/botland.com.pl\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Kontroler \u0142adowania MPPT na&nbsp;Arduino\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/botland.de\\\/blog\\\/\",\"name\":\"Botland\",\"description\":\"Blog Raspberry Pi, Arduino, elektronika i robotyka - Botland\",\"publisher\":{\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/botland.de\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pl-PL\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/#organization\",\"name\":\"Botland\",\"url\":\"https:\\\/\\\/botland.de\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/botland.store\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/04\\\/logo_kolor_WP_2-1.png\",\"contentUrl\":\"https:\\\/\\\/botland.store\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/04\\\/logo_kolor_WP_2-1.png\",\"width\":250,\"height\":57,\"caption\":\"Botland\"},\"image\":{\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/facebook.com\\\/Botland\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/botland.de\\\/blog\\\/#\\\/schema\\\/person\\\/a8e66118d1f27ebf9f540831e5a3283b\",\"name\":\"Maciej Figiel\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\\\/\\\/botland.com.pl\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/12\\\/Image-from-iOS-150x150.jpg\",\"url\":\"https:\\\/\\\/botland.com.pl\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/12\\\/Image-from-iOS-150x150.jpg\",\"contentUrl\":\"https:\\\/\\\/botland.com.pl\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/12\\\/Image-from-iOS-150x150.jpg\",\"caption\":\"Maciej Figiel\"},\"description\":\"Wszechstronny, ch\u0119tnie podejmuje si\u0119 wyzwa\u0144, bo uwa\u017ca, \u017ce jest to najszybsza droga ku rozwojowi. Ceni sobie kontakt z natur\u0105 i aktywny wypoczynek. Pasjonat motoryzacji i nowych technologii.\",\"url\":\"https:\\\/\\\/botland.com.pl\\\/blog\\\/author\\\/maciej-figiel\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Kontroler \u0142adowania MPPT na Arduino - Botland","description":"Arduino to platforma, kt\u00f3r\u0105 mo\u017cesz wykorzysta\u0107 do zbudowania prostej \u0142adowarki fotowoltaicznej MPPT - odwied\u017a blog Botland i poznaj szczeg\u00f3\u0142y nt. przyk\u0142adowego projektu!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/botland.com.pl\/blog\/kontroler-ladowania-mppt-na-arduino\/","og_locale":"pl_PL","og_type":"article","og_title":"Kontroler \u0142adowania MPPT na Arduino - Botland","og_description":"Arduino to platforma, kt\u00f3r\u0105 mo\u017cesz wykorzysta\u0107 do zbudowania prostej \u0142adowarki fotowoltaicznej MPPT - odwied\u017a blog Botland i poznaj szczeg\u00f3\u0142y nt. przyk\u0142adowego projektu!","og_url":"https:\/\/botland.com.pl\/blog\/kontroler-ladowania-mppt-na-arduino\/","og_site_name":"Botland","article_publisher":"https:\/\/facebook.com\/Botland\/","article_published_time":"2022-02-04T07:00:13+00:00","article_modified_time":"2023-05-24T08:06:16+00:00","og_image":[{"width":1510,"height":755,"url":"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2023\/05\/new2023-mppt.jpg","type":"image\/jpeg"}],"author":"Maciej Figiel","twitter_card":"summary_large_image","twitter_misc":{"Napisane przez":"Maciej Figiel","Szacowany czas czytania":"16 minut"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/botland.com.pl\/blog\/kontroler-ladowania-mppt-na-arduino\/#article","isPartOf":{"@id":"https:\/\/botland.com.pl\/blog\/kontroler-ladowania-mppt-na-arduino\/"},"author":{"name":"Maciej Figiel","@id":"https:\/\/botland.de\/blog\/#\/schema\/person\/a8e66118d1f27ebf9f540831e5a3283b"},"headline":"Kontroler \u0142adowania MPPT na Arduino","datePublished":"2022-02-04T07:00:13+00:00","dateModified":"2023-05-24T08:06:16+00:00","mainEntityOfPage":{"@id":"https:\/\/botland.com.pl\/blog\/kontroler-ladowania-mppt-na-arduino\/"},"wordCount":730,"publisher":{"@id":"https:\/\/botland.de\/blog\/#organization"},"image":{"@id":"https:\/\/botland.com.pl\/blog\/kontroler-ladowania-mppt-na-arduino\/#primaryimage"},"thumbnailUrl":"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2023\/05\/new2023-mppt.jpg","articleSection":["Arduino","Programowanie"],"inLanguage":"pl-PL"},{"@type":"WebPage","@id":"https:\/\/botland.com.pl\/blog\/kontroler-ladowania-mppt-na-arduino\/","url":"https:\/\/botland.com.pl\/blog\/kontroler-ladowania-mppt-na-arduino\/","name":"Kontroler \u0142adowania MPPT na Arduino - Botland","isPartOf":{"@id":"https:\/\/botland.de\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/botland.com.pl\/blog\/kontroler-ladowania-mppt-na-arduino\/#primaryimage"},"image":{"@id":"https:\/\/botland.com.pl\/blog\/kontroler-ladowania-mppt-na-arduino\/#primaryimage"},"thumbnailUrl":"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2023\/05\/new2023-mppt.jpg","datePublished":"2022-02-04T07:00:13+00:00","dateModified":"2023-05-24T08:06:16+00:00","description":"Arduino to platforma, kt\u00f3r\u0105 mo\u017cesz wykorzysta\u0107 do zbudowania prostej \u0142adowarki fotowoltaicznej MPPT - odwied\u017a blog Botland i poznaj szczeg\u00f3\u0142y nt. przyk\u0142adowego projektu!","breadcrumb":{"@id":"https:\/\/botland.com.pl\/blog\/kontroler-ladowania-mppt-na-arduino\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/botland.com.pl\/blog\/kontroler-ladowania-mppt-na-arduino\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/botland.com.pl\/blog\/kontroler-ladowania-mppt-na-arduino\/#primaryimage","url":"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2023\/05\/new2023-mppt.jpg","contentUrl":"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2023\/05\/new2023-mppt.jpg","width":1510,"height":755},{"@type":"BreadcrumbList","@id":"https:\/\/botland.com.pl\/blog\/kontroler-ladowania-mppt-na-arduino\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/botland.com.pl\/blog\/"},{"@type":"ListItem","position":2,"name":"Kontroler \u0142adowania MPPT na&nbsp;Arduino"}]},{"@type":"WebSite","@id":"https:\/\/botland.de\/blog\/#website","url":"https:\/\/botland.de\/blog\/","name":"Botland","description":"Blog Raspberry Pi, Arduino, elektronika i robotyka - Botland","publisher":{"@id":"https:\/\/botland.de\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/botland.de\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pl-PL"},{"@type":"Organization","@id":"https:\/\/botland.de\/blog\/#organization","name":"Botland","url":"https:\/\/botland.de\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/botland.de\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/botland.store\/blog\/wp-content\/uploads\/2018\/04\/logo_kolor_WP_2-1.png","contentUrl":"https:\/\/botland.store\/blog\/wp-content\/uploads\/2018\/04\/logo_kolor_WP_2-1.png","width":250,"height":57,"caption":"Botland"},"image":{"@id":"https:\/\/botland.de\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/facebook.com\/Botland\/"]},{"@type":"Person","@id":"https:\/\/botland.de\/blog\/#\/schema\/person\/a8e66118d1f27ebf9f540831e5a3283b","name":"Maciej Figiel","image":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2021\/12\/Image-from-iOS-150x150.jpg","url":"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2021\/12\/Image-from-iOS-150x150.jpg","contentUrl":"https:\/\/botland.com.pl\/blog\/wp-content\/uploads\/2021\/12\/Image-from-iOS-150x150.jpg","caption":"Maciej Figiel"},"description":"Wszechstronny, ch\u0119tnie podejmuje si\u0119 wyzwa\u0144, bo uwa\u017ca, \u017ce jest to najszybsza droga ku rozwojowi. Ceni sobie kontakt z natur\u0105 i aktywny wypoczynek. Pasjonat motoryzacji i nowych technologii.","url":"https:\/\/botland.com.pl\/blog\/author\/maciej-figiel\/"}]}},"_links":{"self":[{"href":"https:\/\/botland.com.pl\/blog\/wp-json\/wp\/v2\/posts\/31997","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/botland.com.pl\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/botland.com.pl\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/botland.com.pl\/blog\/wp-json\/wp\/v2\/users\/20"}],"replies":[{"embeddable":true,"href":"https:\/\/botland.com.pl\/blog\/wp-json\/wp\/v2\/comments?post=31997"}],"version-history":[{"count":0,"href":"https:\/\/botland.com.pl\/blog\/wp-json\/wp\/v2\/posts\/31997\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/botland.com.pl\/blog\/wp-json\/wp\/v2\/media\/62691"}],"wp:attachment":[{"href":"https:\/\/botland.com.pl\/blog\/wp-json\/wp\/v2\/media?parent=31997"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/botland.com.pl\/blog\/wp-json\/wp\/v2\/categories?post=31997"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/botland.com.pl\/blog\/wp-json\/wp\/v2\/tags?post=31997"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}