Skocz do zawartości

Pomiar napięcia i natężenia prądu - INA219 + Arduino Leonardo


pisiorek

Pomocna odpowiedź

(edytowany)

@marek1707 Ok, poprawiłem, miejmy nadzieję, że jest lepiej, chociaż nie wiem teraz, czy Power_Input  w przypadku izolatora wykorzystujemy do zasilania samego układu, czy jednak nie. Podpinamy go do zasilacza poprzez Power_Input ? Zakładam, że tak w związku z tym dużym poborem prądu do jego działania. Poszukałem w sieci, na szybko, czujnika prądu - hallotronowego - i znalazłem coś w zakresie -15 do +15A, na schemacie podałem jego dokładne oznaczenie, choć nie wiem czy się nada. Nie wiem też, czy w takim przypadku na jego wyjściu w kierunku Arduino pomiaru napięcia dokonujemy na zaciskach Vcc i GND - tak jak narysowałem na schemacie ? Co do samego zasilacza, to jak najbardziej zasilę to wszystko z jakiegoś porządnego źródła. 

EDIT: teraz doczytałem, że jednak muszę podpiąć pod zasilanie zacisk Vcc w czujniku prądu, więc chyba pomiaru dokonuje się na zacisku OUT tego czujnika przez jego połączenie z pinem ADC w Arduino. Czy mam rację ?

pomiar_schemat.jpg

Edytowano przez pisiorek
Link do komentarza
Share on other sites

15 godzin temu, marek1707 napisał:

Ok, jeśli poprawisz ten czujnik prądu tak jak dopisałeś, to masz szansę na odpalenie wszystkich pomiarów przed Świętami 🙂 

 

@marek1707 Super. W takim razie będę jeszcze potrzebował Twojej pomocy w sprawdzeniu doboru rezystorów na dzielniki. Więc tak, przy założeniu, że napięcie może na ogniwie PV skoczyć przy obwodzie otwartym i bardzo niskiej temperaturze do około 45 V, przyjąłem jak poniżej.

Rezystor R1 - 10K oraz  R2 - 1,2K. Dzięki temu na R2 max napięcie jakie wystąpi to około 4,82V. Z prawa Ohma wychodzi, że prąd który popłynie przez oba oporniki to 0,004 A, zatem na R1 wydzieli się moc P=40V x 0,004A = 0,16W a na R2 wydzieli się P=5V x 0,004A = 0,02W. Czyli mogę zastosować zwykłe rezystory 0,25W. Pytanie teraz, czy mogę zastosować te z tolerancją 5%, czy może szukać tych dokładniejszych do 1% ? Druga sprawa, to czy ten sensor hallotronowy ACS711EX -15A do +15A, który wyszukałem, będzie OK, czy może szukać czegoś lepszego, dokładniejszego  ? Jeszcze raz przesyłam poprawiony schemat do ostatecznego zatwierdzenia.

pomiar_schemat.jpg

Link do komentarza
Share on other sites

Schemat jest OK.

Rezystory w dzielniku mogą być sporo większe. Wejście izolatora jest wysokoomowe i praktycznie nie pobiera prędu więc impedancja dzielnika jako źródła sygnału może być sporo większa niż obecne 1k. Co prawda 0.2W pobierane przez dzilenik to nie jest to dużo, ale spokojnie może być nawet 10 razy mniej. Grzanie oporników też nie jest tym co tygrysy lubią a dodatkowe (i niepotrzebne) obciążenie panelu zawsze wprowadza jakiś błąd - szczególnie przy mniejszych mocach i słabszym oświetleniu a błędów i tak będziesz tu miał sporo po drodze. Po co sobie jeszcze życie utrudniać. Na precyzyjne rezystory 1% lub lepsze szkoda pieniędzy. Tak czy tak musisz układ kalibrować, bo nie znasz wielkości VREF procesora a jednorazowa kalibracja w jednostkowo wykonanym urządzeniu jest bardziej ciekawym (i edukacyjnym) procesem niż upierdliwością.

Z ciekawości poszukaj jeszcze jakichś innych czujników pracujących na tej samej zasadzie. Ja przynajmniej psychicznie czuję się lepiej gdy mogę wybrać z kilku opcji niż być skazanym na pierwsze znalezisko. Przede wszystkim w tej aplikacji najlepiej by pasował czujnik jednokierunkowy. W przypadku ACSa wykorzystasz tylko połowę zakresu jego napięcia wyjściowego co przy ledwo 10-bitowym przetworniku Arduino oznacza tylko ok. 500 różnych wartości wyjściowych. To z kolei definiuje "wagę" najmłodszego bitu z ADC a więc rozdzielczość pomiaru na 15A/500=30mA. Jeśli do tego doliczysz błędy wbudowane w przetwornik, lekko pływający z temperaturą błąd zera samego czujnika itp to maksymalną dokładnością toru pomiaru prądu będą okolice 80-100mA. To strasznie słabo. Można próbkować wielokrotnie, filtrować szum itp, ale i tak dużo lepiej niż 50mA nie będzie. Dlatego tak ważne jest by wykorzystać cały zakres wejściowy ADC, czyli 0-5V. Spróbuj jednak jeszcze poszukać, może czegoś na innej rodzinie układów? Akurat wersja 711 jest najtańszą i ofersuje jedynie 100V izolacji między obwodem prądowym a częścią wyjściową. Trudno powiedzieć jakie napięcie będzie między masą twojego Arduino a liniami paneli - wszystko zależy od konstrukcji zasilaczy. Moduły na ACS712 mają już zacne 2kV izolacji (ale też są dwukierunkowe). Nowsze pomysły tego producenta (np. ACS730) mają juz opcję pracy jednokierunkowej oraz wbudowane ekrany magnetyczne. To ostatnie jest ważne w przypadku bardzo kompaktowego montażu czujników prądu. Ważne, by przewody prądowe jednego panelu nie przechodziły blisko czujnika innego panelu - trzeba to jakoś dobrze zaprojektować by wzajemnie na siebie nie wpływały.

Jeszcze innym wyjściem, usuwającym problemy z polami magnetycznymi i słabą stabilnością czujników hallotronowych jest jednak powrót do wzmacniaczy pomiarowych zdejmujących prąd z opornika szeregowego, ale których sygnał przepuśiłbyś przez izolator. To wydaje się niestety droższe. Musisz wtedy znaleźć moduł wzmacniacza z wyjściem analogowym i dokupić kolejne cztery (drogie) izolatory. Sam nie wiem. To nawet nie musi być specjalny wzmacniacz pomiarowy (bo opornik będzie wpięty względem jego masy), ale ponieważ napięcie/straty na bocznku powinny być małe, to coś lepszego niż najgorsze badziewie by się przydało. Takich gotowców strasznie mało, bo albo są audio LM386 albo chłam LM358. Chodzi mi o coś takiego:

https://www.joom.com/en/products/1520327868433156826-43-1-26193-3407719098

Hm, mam jeszcze jeden pomysł: bierzesz popularną płyteczkę wzmacniacza do tensometrów na HX711. Ta kostka ma dwa wejścia różnicowe a w środku bardzo dobry wzmacniacz pomiarowy i przetwornik 24-bitowy. Ostatnio to jakoś zaskakująco staniało. Wydaje mi się, że przy odrobinie wysiłku umysłowego dałoby się zmierzyć i prąd i napięcie panelu jedną taką płytką. Do każdej wtedy potrzeba 3 transoptory (2 szt od Arduino i 1 "powrotna") oraz izolowaną przetwornicę DCDC +5V/+5V (albo wręcz mały zasilacz 230AC/5VDC). Dostawałbyś wyniki od razu w postaci cyfrowej, a transoptory cyfrowe są raczej tanie. Ale nie wiem czy warto w takie obszary wchodzić..

https://abc-rc.pl/product-pol-6860-Modul-miernik-nacisku-HX711-modul-wagi-tensometru-ARDUINO.html

https://www.tme.eu/pl/details/am1ss-0505sjz/przetworniki-dc-dc/aimtec/

https://abc-rc.pl/product-pol-7664-Przetwornica-AC-DC-230V-na-5V-700mA-separacja-napiec.html

https://abc-rc.pl/product-pol-16217-Modul-izolacji-galwanicznej-optoizolatora-PC817-2-kanalowy-transoptor.html

Co o tym myślisz?

  • Lubię! 1
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

(edytowany)

@marek1707 

23 godziny temu, marek1707 napisał:

Co o tym myślisz?

Wielkie dzięki Marku, jesteś kopalnią wiedzy. Na ten moment jestem za cienki w te klocki żeby szukać alternatywnych rozwiązań w stosunku do tego co do tej pory tutaj przedyskutowaliśmy. Wiele zagadnienień, o których piszesz w drugiej części ostatniego postu,poprostu mnie przerasta i nawet nie wiem jak miałbym się za to zabrać. Z tego też powodu spróbuję zbudować ten systemik tak, jak na tych schematach to narysowałem. Raz, że zdobędę trochę doświadczenia i wiedzy, dwa mogę w zasadzie zacząć od razu kompletować wszystko i tak jak piszesz, jest szansa żeby to uruchomić w miarę szybko. Poszukam jeszcze tych innych czujników hallotronowych i zamówię wszystkie elementy, na początek dla dwóch ogniw, zobaczymy czy to ogarnę. Jeśli się powiedzie, to zamówię resztę. Sam finalny efekt też będzie punktem wyjściowym do ewentualnej rozbudowy, której może się podejmę, gdy zyskam trochę więcej wiedzy. Póki co, ogromne dzięki za poświęcony czas, dzielenie się wiedzą i doświadczeniem. Zapewne będę Cię jeszcze o niejedno pytał, bo gdy tylko zacznę temat składać, to pojawią się jakieś wątpliwości. Pozdrawiam 

Edytowano przez pisiorek
Link do komentarza
Share on other sites

System zasilania można projektować gdy już wiadomo co chcesz do niego podłączyć. Może przypomnij nam i podsumuj co tam planujesz. Z jakich klocków Twoje urządzenie będzie się składało, jakie napięcia i jakie prądy one potrzebują. Jak widziałem, będzie jakieś Arduino, ale czy chcesz zasilać je z 5V czy z czegoś wyżej? Czy 5V do izolatorów i czujników chcesz wziąć z arduinowego Vcc czy zrobić osobno? A jakaś komunikacja? Moduł WiFi, ethernet a może zwykłe USB do stacjonarnego kompa, bo np. i tak stoi w pobliżu i mógłby być serwerem zebranych danych dla świata? A jeśli ethernet, to może zasilanie po tym samym kablu (PoE)? Jakieś podtrzymanie pracy w czasie zaniku sieci? Bo panelom raczej to nie przeszkadza więc fajnie byłoby zbierać z nich dane gdy zdechła sieć AC. Wyświetlacz, żeby przechodząc obok urządzenia wiszącego gdzieś na ścianie można było jednym rzutem oka ogarnąć stan? itd itp

Najwięcej zaufania mam do markowych zasilaczy "do wbudowania". Wszystkie wtyczkowe raczej odpadają. Nawet dobrych firm to jednak taniocha, robiona minimalnym kosztem (bo konkurencja duża a przecież trzeba coś sprzedać bo ilościowo to chyba największy rynek) więc siejąca zakłóceniami. Wybrałbym coś z tego. Zasilacze tego typu mają przynajmniej specyfikacje z tabelkami i liczbami i nawet jeśli dostajesz z nich 50 czy 100mV tętnień, to wiesz to z góry i możesz jakoś się na to przygotować.

Na tę chwilę wydaje mi się optymalne rozwiązanie w którym używasz zasilacza 230/9V i tym napędzasz wprost Arduino. Z jego Vcc (5VDC) zasilasz "spokojne" czujniki prądu natomiast dla izolatorów analogowych robisz osobny stabilizator, niechby i 7805 w postaci gołego scalaka z przykręconą blaszką DIY albo gotowego modułu na jakiejś mikropłytce. Moduły izolatorów mają wbudowane przetwornice DCDC zasilające stronę wejściową, a te bloczki - szczególnie te najtańsze - nie grzeszą ani sprawnością ani kulturą pracy. Ja bym zaliczył je wręcz do grona takich śmieciarzy jak serwomechanizmy czy silniki i  z tego powodu zrobił im osobną linię zasilania. Wtedy mógłbyś użyć np. tego plus tego.

Ale poniewaz nie wiemy co tam jeszcze chcesz wsadzić, to wszystko się może zmienić. Także jakąś kompletną listę wrzucaj.

  • Lubię! 2
Link do komentarza
Share on other sites

(edytowany)

@marek1707 OK, a więc tak, zdecydowałem na razie o czujnikach prądu ACS712, bo ACS730 to, z tego co wyczaiłem, to jest tylko sam układ scalony, którego na dziś nie potrafię obsłużyć/wykorzystać. Tak więc będzie potrzebne 4 szt. ACS712 (-15+15A). Izolatory analogowe DFRobot Gravity - 4 szt. do tego Arduino Leonardo lub Mega2560 - obie mam na podorędziu więc o ile Leonardo łyknie taki program, który napiszę, to będzie Leonardo, jeśli nie to Mega2560. Czujniki DS18B20 - 4 szt. Docelowo chciałbym, żeby pomierzone dane były wysyłane docelowo na serwer żeby móc je prezentować np. na stronie www na żywo, w tej chwili nie mam jeszcze pomysłu na to, ale skłaniałbym się do dodatkowej płytki/shielda ethernetowego. Zasilać chciałem wszystko z właśnie z zasilacza lub - o ile to lepsze rozwiązanie to - z Vcc Arduino (tutaj zdaję się na Twoją radę). 

Co do zasilania awaryjnego układu, to w przypadku systemów PV (On Grid )- sieciowych (a taki jest ten mój) - to nie jest ono potrzebne, ponieważ falownik ma zabezpieczenie tzw. antywyspowe i nie może pracować w przypadku zaniku napięcia z sieci OSD a więc i tak nie ma co mierzyć.

Wiem, że można byłoby cały ten systemik zrobić na lepszych podzespołach i bardziej zaawansowany, tak jak radziłeś choćby w przedostatnim swoim poście, ale doszedłem do wniosku, że lepiej na początku ogarnąć coś co jest w moim zasięgu, cieszyć się, że działa i powoli rozbudowywać w miarę zdobywania doświadczenia, niż porwać się na coś czego się nie przeskoczy i w pewnym momencie wycofać się w pół drogi.

Edytowano przez pisiorek
Link do komentarza
Share on other sites

OK, jeśli zwyczajnie chcesz ten projekt ogarnąć i doprowadzić do jakiejś działającej postaci, to nie ma co szaleć. Zakładając około:

  • 100mA na Arduino z czujnikami temperatury, jakimiś LEDami itp
  • 4x150mA na każdy izolator
  • 4x20mA na każdy czujnik prądu
  • 200mA na shield ethernetowy

potrzebujesz ok. 1A prądu. Podtrzymuję, że optymalnym (w kilku aspektach) schematem zasilania będzie jeden główny zasilacz 7.5-9V, najlepiej "analogowy", stabilizowany. Twój system na przede wszystkim mierzyć, a jeśli nie robisz własnego zasilacza, to lepiej nie ryzykować z impulsowymi gotowcami. Takie transformatorowe "muzeum" już na starcie daje przewagę 10-krotnie mniejszych szumów na linii zasilania. Słaba sprawność zasilacza liniowego chyba tutaj, w jednostkowym wykonaniu nie ma wielkiego znaczenia. Tak więc szukałbym czegoś w tym rodzaju, ew. tańszego:

https://nowyelektronik.pl/index.php?id_product=25168&controller=product

Opis jest zerowy, ale na zdjęciu widać konfigurację wtyczki wyjściowej. Zawsze możesz zadzwonić do sklepu.. Moc jest wystarczająca, choć jeśli sprawdzą się przewidywania prądu 1A, to klocek będzie mocno ciepły. Nie zamykaj go na głucho w jakimś pudełku, musi stać w przewiewnym miejscu.

Z 9V doprowadzonych do VIN Arduino samo zrobi sobie 5V. Nawet jeśli z tego napięcia będzie chodzić ethernet shield (bo chyba nie korzysta z VIN a na pokładzie ma własny stabilizator 5V->3.3V) i czujniki prądu, to pokładowy stabilizator 5V (max. 800mA?) przeżyje. Właśnie z powodu ograniczenia mocy strat proponuję zasilacz 9V a nie typowy (i łatwiej dostępny) 12V. No, ale dla izolatorów - jak już wspomniałem - zarówno z powodu zakłóceń jak i sporego prądu musisz zrobić 5V osobno. Na szczęście 7805, nawet w gotowym module, to jakieś grosze. To tyle. Narysuj schemat zasilania, przyklepiemy i kupuj części 🙂 

BTW: Szczególnie w przypadku jakiegoś "małego" Ardunio (nie, w zasadzie w każdym przypadku) wypisz wszystkie potrzebne sygnały w pełnej, przyszłościowej konfiguracji, żebyś nie przejechał się na braku pinów. Dopisz kilka LEDów i zostaw wolny UART do komunikacji, chyba ze płyteczka ma USB do wpisywania kodu i robienia Serial.printf(). Ethernet możesz wtedy kupić w postaci "wolnowiszącego" modułu na SPI (ENC28J60), ale to także kilka pinów. Właściwie najlepiej gdybyś wrzucił już pełny schemat ze wszystkimi sygnałami.

  • Lubię! 1
Link do komentarza
Share on other sites

@marek1707 Ok, zanim jednak narysuję ten schemat muszę coś uściślić, bo nie jestem do końca pewien. Rozumiem, że ten zasilacz będę musiał rozebrać i zasilić z niego bezpośrednio Arduino tymi 9-cioma woltami i wejść tym zasilaniem również na moduł stabilizatora LM7805, a z jego wyjścia zasilić izolatory, no i najważniejsze, to wszystkie masy - Arduino jak i zasilacza muszą być wspólne. Czy dobrze to rozumiem ?

Link do komentarza
Share on other sites

Dlaczego miałbyś rozbierać zasilacz? Czy nie może być osobną częścią urządzenia, stojącą gdzieś obok skrzynki? A jeśli nie i plan jest taki by wszystko było jednym, kompaktowym pudełkiem, to już lepiej zrobić zasilanie z klocków niż przepłacać za obudowę, kable, montaż i certyfikaty. Kupujesz wtedy coś takiego:

https://allegro.pl/oferta/modul-zasilacz-stabilizator-napiecia-9v-lm-7809-9735222890

Tu masz już i prostownik i filtr i stabilizator 9V, więc brakuje tylko transformatora:

https://www.piekarz.pl/transformatory/?f=523,7718&a=523,7718

Wybierasz jakiś śliczny, zalany, dający 9V (to już się chyba odfiltrowało) z obciążalnością wyjścia rzędu 1.2-1.5A, łączysz jedno z drugim i dostajesz spokojne 9V do zasilania całej reszty. Z tego pobierasz bezpośrednio 9V dla Arduino i robisz osobne 5V dla izolatorów. Tak wszystkie masy razem, najlepiej połączone przy minusie stabilizatora 9V. Rysuj, na poczatek może być tylko tylko schemat zasilania. Piny policzysz jutro 🙂 

Link do komentarza
Share on other sites

Popatrz wyżej. Przecież do zasilania izolatorów miałes kupić osobny stabilizator/moduł 5V. To się nie zmieniło.

43 minuty temu, marek1707 napisał:

Wybierasz jakiś śliczny, zalany, dający 9V (to już się chyba odfiltrowało) z obciążalnością wyjścia rzędu 1.2-1.5A, łączysz jedno z drugim i dostajesz spokojne 9V do zasilania całej reszty. Z tego pobierasz bezpośrednio 9V dla Arduino i robisz osobne 5V dla izolatorów. Tak wszystkie masy razem, najlepiej połączone przy minusie stabilizatora 9V

https://allegro.pl/oferta/zasilacz-stabilizator-napiecia-7805-bte-177-6273852690

 

Transformator 230V/9V -> moduł prostownik+stab.9V -> Arduino -> czujniki prądu, LEDy, itp.
                                                \--> moduł stab.5V -> izolatory

 

Edytowano przez marek1707
Link do komentarza
Share on other sites

(edytowany)

@marek1707 OK, teraz kumam. Wcześniej myślałem, że bezpośrednio, bez stabilizatora po drodze, mam zasilacz wpiąć w Arduino a tylko zasilanie dla izolatorów puścić przez stabilizator, a tutaj trzeba i arduino, i izolatory zasilać stabilizowanym napięciem tylko o różnych wartościach. Schemat w załączeniu.

 

 

pomiar_schemat.jpg

Edytowano przez pisiorek
Link do komentarza
Share on other sites

Naprawdę jest już nieźle. Jeszcze tylko kilka uwag:

  • To coś co zasila izolatory to jest sam stabilizator, bez prostownika. To są różne moduły nie tylko ze względu na napięcie wyjściowe. W tym miejscu nie możesz użyć wersji z prostownikiem, bo takie coś nie ma masy wejściowej tylko dwa piny "AC". Natomiast przy transformatorze prostownik obowiązkowy. Oczywiście jeśli Ci będzie łatwiej, możesz kupić dwa moduły "gołych" stabilizatorów: 5V i 9V a prostownik zrobić/kupić osobno. To przecież element za 1zł.
  • DS18B20 ma łącze cyfrowe. To nie jest czujnik oddający napięcie analogowe proporcjonalne do temperatury. Jeśli nie chcesz mnożyć bytów i mieć coś podłączalnego do ADC tak jak pozostałe czujniki, powinieneś użyć czegoś innego, np. https://botland.com.pl/pl/czujniki-temperatury/376-czujnik-temperatury-lm35dz-ns-analogowy-tht.html Także ma 3 druty, ale jest prostszy w obsłudze - nie potrzebujesz biblioteki 1-wire i całego protokołu komunikacyjnego. Zasilasz go z Vcc, mierzysz jego napięcie wyjściowe i przeliczasz tak jak wszystko inne w tym systemie. Za to każda sztuka wymaga osobnego wejścia ADC. Przy Arduino Mega to nie problem, ale jakieś mniejsze nie obsłuży (wprost) 4+4+4=12 kanałów analogowych.
  • Rysuj tak, by masa bloczków była niżej a zasilania wyżej. To samo jeśli kable idą poziomo przez schemat. To bardziej naturalne, bo GND jest poziomem odniesienia i to względem niej mierzysz dodatnie zasilania. Budynki też raczej rysujemy fundamentami w dół.
  • Transformator nie ma wyróżnionego pinu 9V. Oba są równoprawne i na każdym z nich (względem drugiego) jest 9VAC. Pytanie edukacyjne: jak wyglądają sygnały z transformatora odniesione do (mierzone względem) masy GND "powstającej" za prostownikiem dwupołówkowym i będącej "zerem" dla całego systemu?
  • Na Arduino wchodzisz zasilaniem przez GND i VIN.

 

  • Lubię! 1
Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.