Проблема Arduino "Отслеживание максимальной мощности" (MPPT)

Мне нужна кривая капельницы для солнечной панели. Насколько я знаю, кривая солнечной панели и диода IV практически одинакова. Здесь я использую диоды (6A10-1) в качестве солнечной панели. Где напряжение на каждом диоде падает на 0,6 вольта. Я подаю 4,8 В на диоды от источника питания и ограничиваю ток в 1 ампер источника питания, чтобы он работал как солнечная панель. Количество диодов равно 8 для перепада напряжения 4,8 В. Резистор на 1 Ом для измерения тока. Я использую Arduino для измерения значения тока и напряжения путем изменения напряжения затвора MOSFET (IRF540). Фильтр нижних частот подключен между D2 и затвором Mosfet. A0 для измерения солнечного напряжения и тока, Id = A0-A1. Но Arduino выдает неправильные значения A1 и тока, Id, а иногда и отрицательные значения по отношению к мультиметру.

[circuit

const int V1 = A0;
const int V2 = A1;
float SolarVolt = 0.0;
float V1_VOLT = 0.0;
float V2_VOLT = 0.0;
float Id  = 0.0;
int V1_value = 0;
int V2_value = 0;
double gateVoltage=150; // Для напряжения затвора
double mstep=5.1;
int GatePin=2;

void setup() {
  pinMode(GatePin,OUTPUT);
  Serial.begin(9600);
  pinMode(V1,INPUT);
  pinMode(V2,INPUT);
}

void loop() {
  analogWrite(GatePin,gateVoltage);
  gateVoltage=gateVoltage+mstep;
  Serial.print("GateVolt = ");
  Serial.print(gateVoltage);
  Serial.print("    ");
  if (gateVoltage <= 0) {
    mstep = 1;
  } else if (gateVoltage>=255){
    gateVoltage = 255;
    mstep = -1;
    delay(50);
  }

  V1_value = analogRead(V1);
  V1_VOLT = (V1_value * 5.0) / 1024.0;

  Serial.print("V1_VOLT= ");
  Serial.print(V1_VOLT);
  Serial.print("    ");

  V2_value = analogRead(V2); // для Id1
  V2_VOLT= (V2_value * 5.0) / 1024.0;

  Serial.print("V2_VOLT= ");
  Serial.print(V2_VOLT);
  Serial.print("    ");

  Id=V1_VOLT-V2_VOLT;

  Serial.print("ID= ");
  Serial.print(Id);
  Serial.println();

  delay(1000);
}

, 👍2

Обсуждение

Значения мусора, такие как -0,5 В, -0,02, -1,2 В, +4 В. Я измерил с помощью мультиметра, и мультиметр показывает правильные значения. ШИМ-сигнал проходит через фильтр нижних частот, который подает на затвор треугольное напряжение постоянного тока. Нет, я не использовал никакого внешнего ЦАП., @Faizur Rahman

Какие ценности вы видите? Вы измеряли напряжение с помощью мультиметра? Вы понимаете, что пытаетесь отправить ШИМ-сигнал на вентиль полевого транзистора, или у вас каким-то образом есть ЦАП на выводе 2?, @ocrdu

Какие необработанные значения Vx_value-s вы получаете из analogRead (Vx)? Кстати, идентификатор = (V1-V2)/R., @ocrdu

Здесь R - один ом. Вот почему Id = (V1-V2). Значения Vx иногда положительные, иногда отрицательные. Но я не получил правильных значений относительно мультиметра., @Faizur Rahman

Вы получаете отрицательные значения для V1_value и V2_value?, @ocrdu


1 ответ


2

Ваш текущий сигнал также будет показывать ШИМ, поэтому вам нужно будет отфильтровать его перед измерением. Было бы намного проще, если бы вы могли перестроить свою схему, чтобы поместить чувствительный резистор на сторону заземления MOSFET, поскольку тогда вы можете использовать простой RC-фильтр и одно измерение A0. Кроме того, вам не придется беспокоиться о том, что напряжение холостого хода от солнечной панели (когда МОП-транзистор выключен) превысит ограничение 5 В на выводе A0.

,

Фильтр нижних частот подключен между D2 и затвором Mosfet. Да, я также сказал своим преподавателям установить чувствительный резистор на стороне заземления МОП-транзистора. Но он сказал мне, чтобы я не подключал его туда. Но я забываю причину. Спасибо., @Faizur Rahman