logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Rozwiązano] Arduino i przekładnik prądowy - zaniżone wyniki przy suszarce do włosów

StandardUserName 03 Sie 2024 17:46 1287 47
Najlepsze odpowiedzi LABEL_AI_GENERATED

Dlaczego mój watomierz/przetwornik prądu na Arduino z przekładnikiem prądowym zaniża wyniki dla suszarki do włosów i czy problem leży w układzie, czy w kodzie?

Problem nie leży wyłącznie w kodzie: suszarka na niższych biegach nie jest czystym obciążeniem sinusoidalnym, bo grzałka może być zasilana przez diodę/sterowanie fazowe, a wtedy przekładnik i prosty algorytm uśredniania próbek dają zaniżone albo „od czapy” wyniki [#21179119][#21180391] Dodatkowo rezystor obciążenia przekładnika był dobrany zbyt duży — dla tego modelu podawano 100 Ω przy 5 A, więc 220 Ω tylko pogarsza sytuację; trzeba iść w stronę mniejszego burdena, nie większego [#21178732] Jeśli chcesz mierzyć takie odbiorniki poprawnie, próbkuj synchronicznie, licz wartość skuteczną z pełnych okresów i wykrywaj przejście przez zero zamiast losowo sumować i uśredniać próbki [#21180391] Przy mocno odkształconych przebiegach zwykły przekładnik może po prostu nie być najlepszym wyborem, więc rozważ czujnik Hall/LEM [#21179157]
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA
  • #1 21178655
    StandardUserName
    Poziom 5  
    Posty: 25
    Dzień dobry

    Usiłuję właśnie zrobić (w zasadzie napisać) watomierz na bazie Arduino i przekładnika prądowego.

    Poczytałem różne przykłady, zdecydowałem się na szybkie sumowanie odczytanych wartości napięcia na przekładniku.
    Przekładnik (2000x) jest obciążony rezystorem 220 Ohm (z braku 200), co powinno dać interesujący mnie zakres pomiarowy.

    Kod niby działa, mierząc prąd pobierany przez lutownicę transformatorową czy halogen 150 W.
    Natomiast kompletnie wykłada się na suszarce do włosów :) Wiem, że suszarka w niższych trybach pobiera zasilanie, prostując napięcie etc., czym wprowadza zamieszanie...

    Pomiary weryfikuję dwoma licznikami - jeden to popularny "watomierz" wkładany w gniazdo, drugi to chiński watomierz WiFi z przekładnikiem prądowym.
    Oba pokazują prawie identyczne wyniki, można przyjąć, że poprawne...

    Natomiast mój układ / kod kompletnie wykłada się na suszarce - pokazuje zdecydowanie zaniżone wyniki.

    Układ wygląda banalnie - dzielnik napięcia, żeby otrzymać 2.5 V, do niego podłączony przekładnik zbocznikowany rezystorem. Drugi przewód od przekładnika do wejścia analogowego Arduino. Kod wygląda jak poniżej.

    W czym leży problem? Czy to kwestia przekładnika i trzeba do niego jakiś układ kondycjonujący, czy błąd w moim kodzie???

    Będę wdzięczny za podpowiedź...

    #define FASTADC 1
    
    // defines for setting and clearing register bits
    #ifndef cbi
    #define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
    #endif
    #ifndef sbi
    #define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
    #endif
    
    int licznik = 0;
    float msSTOPER_1 = 0; float msSTOPER_2 = 0;
    
    
    int czas_pomiaru = 10000; 
    // int czas_zliczania = 100000;
    
    float korekta = 0.42 / 85;
    float offset = 505.03;
    float usrednien = 6;
    float pomiarow = 15000;
    
    void setup() 
    { 
      Serial.begin(115200);            //Start serial communication
      //Serial.println("START");
    
      #if FASTADC
      // set prescale to 16
      sbi(ADCSRA,ADPS2) ;
      cbi(ADCSRA,ADPS1) ;
      cbi(ADCSRA,ADPS0) ;
      #endif
    
    }
    
    void loop()
    
      {
          int pinPRZEKL = 0;
          float pomPRZEKL = mierzPRAD(pinPRZEKL, offset, korekta, usrednien, pomiarow);
          Serial.print("A: "); Serial.print(pomPRZEKL); Serial.println(); 
    
          // delay(1000);
    
      }
    
    float mierzPRAD(int pin, float offset, float korekta, int usrednien, int pomiarow)
          {
            float prad = 0;
            float pobor = 0;
            float licznikUSR = 0;
            float licznikPOM = 0;
            for (float p = 0 ; p < pomiarow ; p  )    // seria pomiarów
              {
                licznikPOM  ;
              for (float pom = 0 ; pom < usrednien ; pom  )              // pomiar do uśrednienia
                {
                  licznikUSR  ;
                  float pomPOJ = analogRead(pin);
                  prad  = pomPOJ - offset;                      // offset wyniku
                }
                prad = prad / licznikUSR;                        // uśrednianie wyników
                pobor  = sqrt(prad * prad) * korekta;
              }
              
              return pobor;
          }
  • REKLAMA
  • #2 21178670
    drunek
    Poziom 25  
    Posty: 729
    Pomógł: 86
    Ocena: 219
    Wstaw schemat
  • #3 21178672
    Konto nie istnieje
    Poziom 1  
  • #4 21178711
    StandardUserName
    Poziom 5  
    Posty: 25
    Naprawdę nie wiem, co tu za schemat rysować :) Układ jest dokładnie taki jak tu, tylko procesor to Mega 2560"
    http://www.the-diy-life.com/simple-arduino-home-energy-meter/

    Przekładnik to DL-CT03C 2000-1, ale to chyba ślepy trop - próbowałem z przekładnikiem z tego chińskiego miernika, który poprawnie mierzy, i efekt jest taki sam - lutownica i halogen ok, suszarka - wyniki od czapy...
  • #5 21178732
    Konto nie istnieje
    Poziom 1  
  • #6 21178793
    StandardUserName
    Poziom 5  
    Posty: 25
    >>21178732

    Dałem rezystor 14 Ohm, to najbliższe co mogłem ulepić ;) Niestety nie poprawiło się.

    Zastanawia mnie to, że przy pomiarze 0.5A sygnał odczytywany zmienia się śladowo - normalnie mam wartość 505, a po obciążeniu zmienia się może -2.
    Sprawdziłem aż czy wejście działa - po podaniu 5 zwraca śliczne 1023, po połączeniu z masą równe zero, czyli działa.
    Na dzielniku jest około 2.5V, czyli ok.

    Może jeszcze sporo niższy powinien być bocznik???
  • REKLAMA
  • #7 21178796
    Konto nie istnieje
    Poziom 1  
  • #8 21178821
    StandardUserName
    Poziom 5  
    Posty: 25
    >>21178796


    No ale ja na razie mam problem z pomiarem prądów < 5A :(

    Poniżej "oscyloskopy" z pomiarów:

    lutownica:
    Wykres oscyloskopu z pomiarem prądu dla lutownicy.


    suszarka silnik na 1 biegu plus grzałka na 1 biegu:
    Wykres oscyloskopowy pokazujący przebieg prądu dla lutownicy.


    suszarka silnik na 1 biegu plus grzałka na 2 biegu:
    Wykres oscyloskopowy przedstawiający pomiar prądu dla halogenu i lutownicy.


    suszarka silnik na 1 biegu plus grzałka na 3 biegu:
    Wykres oscyloskopowy prądu dla ustawienia lutownicy na halogenie.


    halogen lutownica:
    Wykres oscyloskopowy przedstawiający przebieg prądu używany przy halogenie i lutownicy.
  • #9 21178854
    Konto nie istnieje
    Poziom 1  
  • #10 21178861
    TvWidget
    Poziom 39  
    Posty: 4420
    Pomógł: 472
    Ocena: 697
    Z przekładnika uzyskujesz prąd zmienny. W jaki sposób go mierzysz ?
  • #11 21178863
    StandardUserName
    Poziom 5  
    Posty: 25
    >>21178861

    Nie mierzę prądu zmiennego, tylko napięcie na rezystorze bocznikowym.
    Przynajmniej próbuję ;)
  • #12 21178868
    TvWidget
    Poziom 39  
    Posty: 4420
    Pomógł: 472
    Ocena: 697
    To w jaki sposób mierzysz zmienne napięcie ?
  • #13 21178871
    StandardUserName
    Poziom 5  
    Posty: 25
    Wejściem analogowym procesora Atmega 2560, czyli przetwornikiem...
  • #14 21178874
    Konto nie istnieje
    Poziom 1  
  • #15 21178881
    TvWidget
    Poziom 39  
    Posty: 4420
    Pomógł: 472
    Ocena: 697
    Co jest na osi pionowej w przedstawionych wykresach ? Są tam np. wartości +8 i -8.
  • #16 21178885
    StandardUserName
    Poziom 5  
    Posty: 25
    Wartości, jakie zwraca Arduino. Zakres to +-512, czyli tu, jak widać, mało co zwraca ;)
  • #17 21178889
    TvWidget
    Poziom 39  
    Posty: 4420
    Pomógł: 472
    Ocena: 697
    To w jaki sposób uzyskałeś taki złożony wykres, jeśli masz tylko kilka poziomów napięcia?
  • #18 21178896
    StandardUserName
    Poziom 5  
    Posty: 25
    Kodem, który pokazałem na początku. Odczytałem DAC 10x i uśredniłem, żeby trochę wygładzić i wysłałem do portu szeregowego.
  • REKLAMA
  • #19 21178903
    TvWidget
    Poziom 39  
    Posty: 4420
    Pomógł: 472
    Ocena: 697
    Nie rozumiem nadal co jest na osi pionowej wykresu i jak ten wykres uzyskałeś.
    Zastanawiają mnie też obliczenia jakie przeprowadzasz. Od wartości zmierzonej próbki odejmujesz 505 co chyba jest poziomem zera. Następnie uśredniasz wyniki co teoretycznie powinno dać wartość zbliżoną do zera.
  • #20 21178914
    StandardUserName
    Poziom 5  
    Posty: 25
    Nie wiem, czy sobie ze mnie żartujesz, czy coś innego ;)

    Odczyt wejścia analogowego w Arduino zwraca wartości 0-1023.
    Ponieważ tu mamy napięcie zmienne, to wartość 1023 podzielona jest na dwa i możemy uzyskać wynik od -512 do 512.
    Napięcie prostowane jest programowo i jego wartości są na osi pionowej, oczywiście to nie są V - te trzeba dopiero obliczyć.
    A wykres narysowała "kreślarka" z Arduino...
  • #21 21178919
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #22 21178929
    TvWidget
    Poziom 39  
    Posty: 4420
    Pomógł: 472
    Ocena: 697
    Moim zdaniem nie "prostujesz napięcia programowo" tylko je uśredniasz.
  • #23 21178930
    StandardUserName
    Poziom 5  
    Posty: 25
    505 bo tyle wychodzi z pomiaru dla zerowego prądu - pewnie dzielnik napięcia nie jest idealnie równy? Jakbym odjął 512 to po prostu wykres miałby "zero" na wartości -7 (byłby przesunięty w dół. Te wykresy są zrobione bez prostowania, żeby było widać oba zakresy - dodatni i ujemny. Bez uśredniania wychodzi to samo tylko rozciągnięte 10x w poziomie...

    Dodano po 59 [sekundy]:

    TvWidget napisał:
    Moim zdaniem nie "prostujesz napięcia programowo" tylko je uśredniasz.


    "pobór = sqrt(prąd*prąd)*korekta;"
  • #24 21178938
    TvWidget
    Poziom 39  
    Posty: 4420
    Pomógł: 472
    Ocena: 697
    Najpierw pomiary uśredniasz. Co ile czasu ta pętla się wykonuje ?
  • #25 21178940
    StandardUserName
    Poziom 5  
    Posty: 25
    >>21178938

    Przetwornik daje radę odczytać około 30000 x/s.
    Do tych wykresów uśredniałem 10x.

    Do normalnych pomiarów uśredniam 6x i powtarzam to 5000x, sumując co trwa około 1s w sumie (jakiś narzut programowy jest).
  • #26 21178970
    TvWidget
    Poziom 39  
    Posty: 4420
    Pomógł: 472
    Ocena: 697
    Proponuję sprawdzić jakie rzeczywiście wartości próbek uzyskujesz z ADC. Znajdź np. wartości minimalne i maksymalne w ciągu jednej sekundy.
  • #27 21179083
    StandardUserName
    Poziom 5  
    Posty: 25
    Widać na wykresie :)

    Wrócę do jaja, czyli spróbuję dobrać bocznik taki, żeby napięcie na nim było jak najwyższe, żeby było co mierzyć ;)
  • #28 21179086
    TvWidget
    Poziom 39  
    Posty: 4420
    Pomógł: 472
    Ocena: 697
    StandardUserName napisał:
    Widać na wykresie :)

    Wartości z przetwornika ADC mają wartości dyskretne i są liczbami całkowitymi. Na jednym z wykresów na osi pionowej masz jednostki od +3 do -3. Zgodnie z tym co piszesz powinno być na nim 6 poziomych linii.
  • #29 21179088
    StandardUserName
    Poziom 5  
    Posty: 25
    Zmierzyłem napięcie, jakie pojawia się na boczniku 14-100 Ohm i są to mikre ułamki V.

    Przeliczyłem więc wartość bocznika dla nominalnych 5A, czyli niby max zakresu przekładnika - wyszło, że ma mieć równe 1kOhm.
    I to obciążenie lutownicą (około 100W) generuje 73mV, a suszarką już około 1V - no to można mierzyć :)

    Z bocznikiem 1kOhm wykresy wyglądają tak jak poniżej:

    Lutownica:
    Wykres napięcia suszarki na biegu maksymalnym

    Suszarka - silnik bieg 1, grzałka bieg 1:
    Wykres napięcia zarejestrowanego na boczniku 1kOhm

    Suszarka - silnik bieg 1, grzałka bieg 2:
    Wykres napięcia w funkcji czasu z pomiarów suszarki

    Suszarka - silnik bieg 1, grzałka bieg 3:
    Wykres przedstawiający zmiany napięcia w funkcji czasu dla suszarki.

    Suszarka - silnik bieg max, grzałka bieg max:
    Wykres napięcia w czasie dla urządzeń elektrycznych, przedstawiający oscylacje napięcia.

    Proszę zwrócić uwagę, jak zmieniły się wartości na osi pionowej :) Zaraz sprawdzę, czy zmienia to coś w temacie pomiarów...

    Dodano po 34 [minuty]:

    Wygląda na to, że prądu suszarki nie da się wprost przekładnikiem zmierzyć. Nawet gdy prąd mieści się sporo poniżej 5A, zliczane wyniki są od czapy. Jeśli ktoś z Was ma pomysł, jak to programowo rozwiązać, to będę wdzięczny. Może inny algorytm zliczający niż sumowanie próbek?
  • #30 21179119
    TvWidget
    Poziom 39  
    Posty: 4420
    Pomógł: 472
    Ocena: 697
    Myślę, że masz problem z określeniem co tak naprawdę chcesz mierzyć. Zapewne w przypadku suszarki na I biegu grzałka jest włączona przez diodę. Tak więc przebieg będzie odkształcony.

Podsumowanie tematu

LABEL_AI_GENERATED
Użytkownik pracuje nad watomierzem opartym na Arduino i przekładniku prądowym DL-CT03C 2000-1, jednak napotyka problemy z pomiarami prądu przy użyciu suszarki do włosów, które wykazują zaniżone wyniki. Po weryfikacji pomiarów z innymi licznikami, użytkownik stwierdza, że jego układ nie działa poprawnie w przypadku urządzeń z elektroniką, takich jak suszarka. Użytkownicy forum sugerują zmiany w rezystancji bocznika oraz testowanie czysto rezystancyjnych obciążeń. Wskazano również na konieczność dostosowania przekładnika do wyższych prądów oraz na problemy związane z pomiarem prądu zmiennego. Użytkownik rozważa zastosowanie przekładników Hall'a jako alternatywy.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA