ATNEL tech-forum
https://forum.atnel.pl/

Pomiar mocy przy regulacji fazowej - ASC712
https://forum.atnel.pl/topic20938.html
Strona 1 z 1

Autor:  Pixelxx [ 2 lip 2018, o 21:17 ]
Tytuł:  Pomiar mocy przy regulacji fazowej - ASC712

Witam.

Chciałbym mierzyć moc np: żarówki za pomocą czujnika z efektem Halla ASC712. Szukałem trochę po internecie i znalazłem przykładowe kody programów pod arduino i chciałbym to przełożyć na język C. Z prądem stałym nie było by problemu, ale z racji, że mam tu prąd przemienny to użyta została funkcja millis() i czy ktoś mógłbym powiedzieć jak zrealizować taką funkcję w języku C i przedstawić kod takiej funkcji?

Kod pod arduino jaki znalazłem na stronie: http://www.theorycircuit.com/hall-effec ... r-circuit/

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Autor:  jez2000 [ 2 lip 2018, o 22:16 ]
Tytuł:  Re: Pomiar mocy przy regulacji fazowej - ASC712

możesz zrobić inaczej np tak dla m32 ma 8 mhz

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


a w przerwaniu mozesz zmniejszac zmienna

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



a w pętli głównej napełniać zmienną milisekundy = 1000 a następnie czekać sekundę

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Autor:  Nefarious19 [ 3 lip 2018, o 07:00 ]
Tytuł:  Re: Pomiar mocy przy regulacji fazowej - ASC712

Z tym że jak masz regulacje fazową to Ci pomiar amplitudy nic nie da. Żeby wyliczyć rzeczywistą moc skuteczną musisz całkować iloczyn napięcia i prądu przez jakiś okres czasu a następnie tę wartść przez ów okres czasu podzielić.

całkowanie numeryczne w Twoim przypadku to będzie suma iloczynów kolejnych próbek sygnału napięcia, prądu i czasu odstępu pomiędzy próbkami podzielona finalnie przez okres zbierania próbek.

Autor:  Pixelxx [ 3 lip 2018, o 17:36 ]
Tytuł:  Re: Pomiar mocy przy regulacji fazowej - ASC712

No już trochę lepiej to rozumiem.

Mam pytanie odnoście warunku
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Czyli jeżeli warunek jest prawdziwy czyli zmienna milisekundy==1 to zmniejszaj milisekundy--?

Nie do końca bym chciał dawać jakieś dodatkowe while() w pętli głównej o ile dobrze rozumiem czyli wyglądało by to tak

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Chciałbym uzyskać taki efekt mieć funkcje jak w arduino millis() z tego co wiem to ona zlicza do 50dni i później się zeruje.
https://www.arduino.cc/reference/en/lan ... me/millis/


Jeżeli chodzi o pomiar mocy to bym musiał wykorzystać jakaś metodę całkowania numerycznego np: prostokątów?

Autor:  jez2000 [ 3 lip 2018, o 21:06 ]
Tytuł:  Re: Pomiar mocy przy regulacji fazowej - ASC712

Tutaj jest opisana funkcja millis(), możesz z tego skorzystać
https://ucexperiment.wordpress.com/2012/03/16/examination-of-the-arduino-millis-function/

Autor:  Nefarious19 [ 4 lip 2018, o 07:58 ]
Tytuł:  Re: Pomiar mocy przy regulacji fazowej - ASC712

Pixelxx napisał(a):
Jeżeli chodzi o pomiar mocy to bym musiał wykorzystać jakaś metodę całkowania numerycznego np: prostokątów?


1. Musisz mieć pomiar napięcia i prądu. Ewentualnie chociaż detektor przejścia przez zero żeby wiedzieć w którym punkcie sinusa jesteś. Zakładamy że amplituda napięcia sieciowego to 230V * sqrt(2)
2. Robisz próbki prądu dajmy na to co 500us a więc Twoje dt = 0.0005 będziesz miał 40 takich próbek na 1 okres sinusoidy.
3. Skoro wiesz w jakim momencie sinusa jesteś, bo masz synchronizacje, odczytujesz z tablicy wartość chwilową napięcia. Tak, nmusisz wcześniej stablicować sobie sinusa żeby nie liczyć go w locie bo to za wolne na AVR. nie będzie to dokładna wartość ale niestety nie masz pomiaru napięcia. Chyba że takowy dołożysz, wtedy jest bajeczka.
4. co te 500us mnożysz: u * i * dt i dodajesz do zmienej moc która pomieści takie wartości. Powiedzmy coś takiego:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

5. jak zrobisz to 40 razy, dzielisz:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


6. Nie używaj zmiennych zmiennoprzcinkowych.

Strona 1 z 1 Strefa czasowa: UTC + 1
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/