От мобилни телефони до цифрови камери
martosound - специалист
:) :) :) :) :) :) :) :) :) :) :)

БРАВО,
ЯКАТА РАБОТА

Щом няма греене всичко е точно - К.П.Д. е високо. Сега само да има силно слънце!!! Електромера предполагам си го проверил със обратната енергия да нямаш проблем. Те повечето нови, да не кажа всичките имат отделен регистър за върнатата енергия и тя не се плаща. Ама може да следиш киловатите и да споделиш какво става на практика. Със шайбите хептен няма проблем.
:-D :-D :-D
a.spiridonov - напреднал
Благодаря :)
Електромера го проверявам в момента, като съм включил един, който мери и в двете посоки. Да се надявам, че до няколко дни ще мога да знам еднозначно, как "върти". Електромера е дейзи 3С2 - ако някой знае - да каже. Иначе с натрупания опит и забелязаните недостатъци и грешки, правя версия 2 на контролера :-D
това е сорса на контролера за сега :
//// Specifications :
//
// 1.Solar panel power = 250W
// 5. Input Voltage = Solar panel with Open circuit voltage from 32 to 39V
//
/////////////////////////////////////////////////////////////////////////////

#include <avr/io.h>
#include <avr/interrupt.h>

//////// Arduino pins Connections//////////////////////////////////////////////////////////////////////////////////

// A0 - Voltage divider (solar)
// A1 - ACS 712 Out
// A2 - Voltage divider (AC grid)
// D3, D11 - MOSFET Push-Pull
// D9, D10 - MOSFET H-bridge
// Full schematic is given at

///////// Definitions /////////////////////////////////////////////////////////////////////////////////////////////////

#define SOL_AMPS_CHAN 1 // Defining the adc channel to read solar amps
#define SOL_VOLTS_CHAN 0 // defining the adc channel to read solar volts
#define LINE_VOLTS_CHAN 2 // defining the adc channel to read line volts
#define AVG_NUM 127 // number of iterations of the adc routine to average the adc readings 1-255
#define PWM_MAX 180 // the value for pwm duty cyle 0-100%
#define PWM_MIN 5 // the value for pwm duty cyle 0-100% (below this value the current running in the system is = 0)
#define PWM_START 10 // the value for pwm duty cyle 0-100%
#define PWM_INC 3 //the value the increment to the pwm value for the ppt algorithm

//-----------------------------------------------------------------------------------------------------

// global variables
unsigned int sol_amps = 0; // solar amps
unsigned int sol_volts = 0; // solar volts
unsigned long sol_watts = 0; // solar watts
unsigned int old_sol_amps = 0;
unsigned int old_sol_volts = 0;
unsigned long old_sol_watts = 0; // solar watts from previous time through ppt routine
int delta = 0; // variable used to modify pwm duty cycle for the ppt algorithm
byte pwm = 0; // pwm duty cycle 0-100%
//------------------------------------------------------------------------------------------------------
// This routine is automatically called at powerup/reset
//------------------------------------------------------------------------------------------------------

void setup() // run once, when the sketch starts
{
pwm = PWM_START; //starting value for pwm

analogReference(DEFAULT); //use built in 1.1V reference voltage for analog reading
pinMode(3, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
TCCR1A = 0;
TCCR1B = 0;
TCCR2A = 0;
TCCR2B = 0;
OCR1A = 0;
OCR1B = 0;
OCR2A = 0;
OCR2B = 0;
TCCR1A = _BV(COM1A1) | _BV(COM1A0) | _BV(COM1B1) | _BV(COM1B0) | _BV(WGM11) | _BV(WGM10);
TCCR1B = _BV(WGM12) | _BV(CS10);
TCCR2A = _BV(COM2A1) | _BV(COM2A0) | _BV(COM2B1) | _BV(COM2B0) | _BV(WGM21) | _BV(WGM20);
TCCR2B = _BV(CS20);
Serial.begin(115200);
}

//------------------------------------------------------------------------------------------------------
// Main loop
//------------------------------------------------------------------------------------------------------

void loop()
{
byte i = 0;
unsigned int sol_amps_read = 0;
unsigned int sol_volts_read = 0;
int delta_amps = 0;
int delta_volts = 0;
unsigned int line_volts_read = 0; // measuring line volts for sinchronization
unsigned long sol_amps_summ = 0;
unsigned long sol_volts_summ = 0;
for(i = 0; i < AVG_NUM; i++) {
sol_amps_read = analogRead(SOL_AMPS_CHAN) - 500; //input of solar amps
sol_volts_read = analogRead(SOL_VOLTS_CHAN); //input of solar volts
line_volts_read = analogRead(LINE_VOLTS_CHAN);
OCR1A = 1023 - line_volts_read;
OCR1B = 1023 - line_volts_read;
sol_amps_summ += sol_amps_read;
sol_volts_summ += sol_volts_read;
}
sol_amps = sol_amps_summ / AVG_NUM;
sol_volts = sol_volts_summ / AVG_NUM;
delta_amps = old_sol_amps - sol_amps;
delta_volts = old_sol_volts - sol_volts;
if (abs(delta_volts) < 2) {
sol_volts = old_sol_volts;
}
if (abs(delta_amps) < 2) {
sol_amps = old_sol_amps;
}
sol_watts = sol_amps * sol_volts;

if (old_sol_watts > sol_watts) { // if previous watts are greater change the value of
delta = -PWM_INC; // delta to make pwm increase or decrease to maximize watts
}
else {
delta = PWM_INC;
}
pwm += delta; // add delta to change PWM duty cycle for PPT algorythm (compound addition)
old_sol_amps = sol_amps;
old_sol_volts = sol_volts;
old_sol_watts = sol_watts; // load old_watts with current watts value for next time

if (pwm >= PWM_MAX) { // check limits of PWM duty cyle and set to PWM_MAX
pwm = PWM_MAX;
}
else if (pwm <= PWM_MIN) { // if pwm is less than PWM_MIN then set it to PWM_MIN
pwm = PWM_MIN;
delta = PWM_INC;
}
OCR2A = 255 - pwm;
OCR2B = 255 - pwm;
}
martosound - специалист
С този модел ДЕЙЗИ нямаш проблеми. Има си отделен регистър, в който записва върнатата енергия. При случаите на връщане на енергия или обратно свързване показва на дисплея една стрелка като пътният знак за обратен завой(само,че завъртян на - 90 градуса). Най сигурно е да пробваш за да си абсолютно сигурен, защото особено на ДЕЙЗИ и на ЗПА има едни и същи модели със доста варианти на софтуера!!! Изключи всички консуматори у вас, остави инвертора да връща ток към мрежата и отгоре вдясно на дисплея трябва да ти се покаже стрелкичката. Запиши данните на тарифата, която е активна в момента(трябва да е тарифа 2 ако долу-горе му е верен часовника) - би трябвало в този случай да трупа в регистъра за върната енергия(този регистър не се изписва на дисплея, чете се през оптичния интерфейс), а тарифа 2 да остава непроменена. :)
На мен нещо не ми се връзва как точно правиш номера с двата изхода - D3 и D11 от Ардуино и Тригера. Аз бих направил нещата с два AND елемента (или с NAND и и със TC4426). Начертах една схема набързо на PROTEUS.

Изображение

Иначе за сорса за Ардуиното - трябва да разгледам подробно програмата, че със С почти нямам опит. Навремето като учех в УКТЦ Правец и после в ТУ София Ачо Кучето(Бог да го прости) на Асемблер ме научи и сега си правя доста неща със PIC процесори, ама аз бях от Хардуера и ние С го минавахме за обща култура. Иска ми се да си купя едно Ардуино, че ми е мерак да направя един уред със TCS34725 за измерване на цветна температура при светодиодите. :) Добре е ,че има коментари в програмата. Винаги може да се промени това или онова за да се изгладят и подобрят нещата. Нали и това е целта на занятието - да направим нещо по-добро от това което можем да си купим. :)
a.spiridonov - напреднал
martosound написа:
На мен нещо не ми се връзва как точно правиш номера с двата изхода - D3 и D11 от Ардуино и Тригера. Аз бих направил нещата с два AND елемента (или с NAND и и със TC4426). Начертах една схема набързо на PROTEUS.

Изображение
Същото го правят 2-та диода. На тригера единия изход е 0 другия 1. Когато е 0 диода отпушва към маса и не позволява импулса от изхода на ардуиното да задейства гейт драйвера :idea:
А това с електромера, ще го погледна като се разкарат облаците, че сега е доста слабо производството. 250 вата панел, сега дава 30 вата
martosound - специалист
ААААААААА сега виждам, че в новата схема си обърнал диодите, че както бяха в първата схема не ми се връзваше. Смяната на IRFZ44N със IRF3710 , които са 100 волтови транзистори е много добра!!! :) IRFZ44N докъм 20 волта захранване на трансвертера държат ама доколкото виждам от сорса ползваш един 250 ватов панел пък те вдигат над 30 волта и IRFZ44N има да гърмят серийно. Поне аз навремето съм имал такива ядове с тях и тогава ги заменях с IRF540N, които се държаха перфектно при малко-по големи захранващи напрежения. IRF540N е по високоомен, но за сметка на това е по-бърз, и входният му капацитет и заряда на гейта са малки и заради това се държи много стабилно и не грее. Не е капризен и към управляващата го схема.
Нещата си идват на мястото малко по малко. :-D
lecki - специалист
Трансформатора Т2 не внася ли фазово изместване (за синхронизацията)?
Някъкъв КПД успя ли да сметнеш?
vladilen - специалист
сега 2 години по късно има ли разумно ценово решение за обратната енергия? :?

Тема "mppt и grid-tie инвертор" | Включи се в дискусията:


Сподели форума:

Бъди информиран. Следвай "Направи сам" във Facebook:

Намери изпълнител и вдъхновения за дома. Следвай MaistorPlus във Facebook: