28-07-2024, 09:40
(Ten post był ostatnio modyfikowany: 28-07-2024, 09:51 przez PierwszyWolnyLogin.)
Nie wiem czy to odpowiedni dział, w razie można przenieść
Robię sobie watomierz trójfazowy bazując na projekcie:
https://www.the-diy-life.com/simple-ardu...rgy-meter/
Kupiłem przekładniki DL-CT03C 2000-1, wyliczyłem że dla maks 25A powinienem zastosować rezystor 200Ohm (dałem 220).Przekładnik jest zasilony z dzielnika 100kOhm jak w projekcie.
Pomiar działa z jednym "ale" - jest nieliniowy błąd. Jeśli wyskaluję wyniki pomiaru tak, żeby prąd zgadzał się przy mocy około 1300W to się zgadza, za to przy mocy około 500W wynik pomiaru jest dwa razy za niski.
Nie wiem o co chodzi - czy przekładnik może tak nieliniowo działać?
Z góry dzięki za podpowiedzi...
Robię sobie watomierz trójfazowy bazując na projekcie:
https://www.the-diy-life.com/simple-ardu...rgy-meter/
Kupiłem przekładniki DL-CT03C 2000-1, wyliczyłem że dla maks 25A powinienem zastosować rezystor 200Ohm (dałem 220).Przekładnik jest zasilony z dzielnika 100kOhm jak w projekcie.
Pomiar działa z jednym "ale" - jest nieliniowy błąd. Jeśli wyskaluję wyniki pomiaru tak, żeby prąd zgadzał się przy mocy około 1300W to się zgadza, za to przy mocy około 500W wynik pomiaru jest dwa razy za niski.
Nie wiem o co chodzi - czy przekładnik może tak nieliniowo działać?
Z góry dzięki za podpowiedzi...
Kod:
int currentPin = 0;
double kilos = 0;
int peakPower = 0;
float prad = 0;
int p = 0;
float ms_POMIAR = 0;
void setup()
{
Serial.begin(115200);
}
void loop()
{
ms_POMIAR = millis();
for (p=1 ; p<=35 ; p++) // 35x = 1s // uśrednianie w celu wygładzenia szumów,
{
int current = 0;
int maxCurrent = 0;
int minCurrent = 1000;
for (int i=0 ; i<=250 ; i++) // szukanie Vmax
{
current = analogRead(currentPin);
if(current >= maxCurrent)
maxCurrent = current;
}
if (maxCurrent <= 512)
{
maxCurrent = 512;
}
prad = prad + (maxCurrent-512) ;
}
//Serial.println(prad/p); //Serial.print(" "); Serial.println(millis()-ms_POMIAR);
Serial.println(((prad / p)*0.7071)/32.91); //Serial.print(" ");
prad = 0;
}