Skocz do zawartości

Luksometr - realizacja układu


Armor

Pomocna odpowiedź

OK, w sytuacji, gdy do Arduino podepniesz mały wyświetlacz którego podświetlanie (bo to jest główny konsument mocy) będzie brało <100mA i nic więcej, wszystkie rozwiązania zasilaczy są równoważne, tj,. tak samo dobrze spełniają kryterium inżynierskiej poprawności. Zarówno kupiona kostka 5V/1A z gniazdkiem USB, jak i zasilacz wtyczkowy 9V z okrągłym wtykiem, także samodzielnie zrobiony stabilizowany 5V jaki stabilizowany lub nie 9V. To twoja decyzja. Zrób jak uważasz. Najtaniej będzie wziąć gotowy, ale jeśli z założenia musisz zasilacz zrobić, zrób najprostszy: transformator sieciowy np. TS5/14 (5W/7.3V/0.7A) plus 4 diody i elektrolit 1000uF/16V. To wyprodukuje jakieś 8-10V w zależności od obciążenia i spokojnie napędzi Arduino i cała resztę. Po to na płytce masz stabilizator, by nie robić osobnego na zewnątrz.

http://radio.elektroda.net/pdf/transformatory.pdf

Jeśli ktoś to będzie oceniał a potem ktoś inny naprawdę używał, przy projektowaniu zasilacza HV musisz wziąć pod uwagę względy bezpieczeństwa: separacje, izolacje, materiał obudowy, wymianę ciepła itd. W kupowanym ktoś to już zrobił za Ciebie.

Link do komentarza
Share on other sites

Armor, Wnosi próbę wyjaśnienia że korzystanie z gotowych rozwiązań jest integralną częścią realizowania projektów, a zasilacz jest jedną z mniej skomplikowanych a trudniejszych do dobrego zrealizowania części.

Dużo prościej byłoby (jak już chcesz mieć mniej gotowych rozwiązań) zastąpić Ardino własną konstrukcją.

No i wniosło świetny filmik z jednego z najlepszych kanałów technologicznych na YT.

Link do komentarza
Share on other sites

Czy ktoś orientuje się jak zrealizować funkcję w której kolejno będzie można wykonać:

1. dokonanie dowolnej liczby pomiarów (z czujnika) i zapamiętanie wyników (każdy pomiar wyzwalany przyciskiem),
2. naciśnięcie innego przycisku spowoduje zakończenie serii pomiarowej i wyświetlenie wyników zebranych wcześniej z odpowiednimi odstępami czasu ( a już najlepiej to z wyświetleniem tylko pierwszego wyniku i za pomocą przycisku przewijaniem do kolejnego).

Niestety wszystkie moje próby kończą się niepowodzeniem. Jeśli ktoś ma jakiś inny pomysł jak zrealizować dowolną liczbę pomiarów (ale nie więcej niż 25), gdzie każdy pomiar to naciśnięcie klawisza, i po zakończeniu serii wyświetlić wyniki to jestem otwarty na propozycje.

Link do komentarza
Share on other sites

ehh... to się nazywa tablica.

coś w stylu

unsigned short wyniki[25];
unsigned char liczbaWynikow = 0;
unsigned char pokazWynik = 0;
unsigned char klawiszDwa = false;

....

while ( klawiszDwa == false )
{
if ( klawiszJedenZostalWcisniety )
{
  wyniki[liczbaWynikow++] = pobierzWynik();
  if ( liczbaWynikow >=25 ) klawiszDwa = true; // pobralismy maksymalna liczbe wynikow
}
if ( klawiszDwaZostalWcisniety ) klawiszDwa = true;
}

i podobnie robisz przechodzenie po wynikach, tylko ze jak pokazWynik >= liczbaWynikow to pokazWynik = 0; zamiast klawiszDwa = true.

Oczywiście potrzebne są jeszcze dodatkowe warunki typu ze nie da sie skonczyc trybu pomiarowego jak nie zrobilismy nawet jednego pomiaru itp. - tak jak potrzebujesz...

  • Pomogłeś! 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

Witam ponownie.

Wykonując badania stanowiskowe ujawnił się jeden problem. Badając natężenie świetlówki bądź lampy rtęciowej badana wartość nie jest stała (tzn. nie jest w granicach błędu). Problem uwidacznia się szczególnie przy dużych natężeniach. Wiem, że wiąże się to z naturą działania tych źródeł światła (ludzkie oko nie zauważa, że migają, ale fotodioda już tak) lecz nie za bardzo wiem, czy jest jakieś rozwiązanie tego problemu.

Może ktoś ma jakieś pomysły?

Link do komentarza
Share on other sites

Rozwiązaniem jest odpowiedź na pytanie: a co chcesz mierzyć? Wartość maksymalną, średnią, RMS czy jeszcze jakąś inną? W zależności od tego tak obrabiasz wyniki pomiarów, które w przypadku przetwornika typu SAR oddają rzecz (nomen-omen) jasna wartości chwilowe. Zamiast jednego strzału ADC robisz ich tyle, by np. równomiernie pokryły czas 20ms czyli okres sieci 230VAC a potem prostą statystyką liczysz wartość którą uznajesz za wynik i którą wyświetlasz. W czym problem?

Link do komentarza
Share on other sites

A co jest mierzone w standardowym luksomierzu analogowym? Szczerze mówiąc nie wiem czy jest to wartość średnia czy maksymalna... Ale tam wartości nie "skaczą" niezależnie od źródła światła. Inną sprawą jest to, że jego reakcja jest dość wolna.

Oczywiście wyciągam średnią z 20 wyników ale dalej dokładność nie jest wystarczająca....

Link do komentarza
Share on other sites

A to już chyba Ty powinieneś wiedzieć.

A teraz zastanów się jak wygląda to co mierzysz. Jeżeli jest to żarówka lub lampa wyładowcza zasilana z sieci 50Hz to okres jej mrugania wynosi 10ms, bo spokojnie można założyć, że w każdej połówce sieci świeci tak samo. Wyjście ze wzmacniacza fotodiody możesz zobaczyć na oscyloskopie. Warto też porównać różne źródła. Na pewno szybkie lampy gazowe mają dużo mniejsze bezwładności od żarówki, ale też mają indukcyjne lub elektroniczne stabilizatory prądu wyładowania. Inaczej oczy by nam powypadały. Żeby odkłócić pomiary tak mrugającego źródła i zebrać poprawny zestaw danych do analizy, musisz zbierać pomiary w równych odstępach czasu przez czas będący wielokrotnością okresu zakłóceń. W Twoim przypadku musisz zebrać ciąg próbek z 10, 20 lub 30 itd ms. Najbezpieczniej z 20ms, bo mogą jednak jakieś niesymetrie w pełnym okresie sieci być, nawet przebiegu samego napięcia. Nie wiesz jak często robisz pomiary? Niestety Arduino tego nie definiuje. Najbardziej elegancko byłoby wyzwalać przetwornik którymś timerem, ale jeśli nie chcesz przebudowywać kodu, zrób dla testu pętlę np. 10 czy 100 tys. wywołań funkcji analogRead() i zmierz to - nawet stoperem. Oczywiście samych wywołań, żadnego wyświetlania, obliczeń itp. Wtedy policz sobie ile ich musisz wykonać dla 20ms i taką pętlę zrób docelowo. Tym razem w pętli możesz sumować wyniki do jakiegoś dużego inta czy co tam masz. Potem tylko policzenie średniej ze znanej liczby pomiarów i powinno być dużo lepiej. Napisz jak poszło.

Link do komentarza
Share on other sites

To wynika wprost z zastosowanego podzielnika zegara dla przetwornika. Przy 16MHz i podzielniku 1/64 mamy 250kHz. Ponieważ analogRead na pewno pracuje w trybie singleshot, to każda konwersja zajmuje 25 okresów zegara czyli dokładnie 100us. Tak więc, nie uwzględniając narzutów programowych i obsługi przerwań, dostajemy 10 tys wyników na sekundę. Chciałem, żeby Armor sam to sprawdził u siebie, bo może akurat w jego programie obsługa przerwania systemowego od timera 0 jest jakaś wyjątkowo długa.

W każdym razie jeżeli zrobisz pętlę sumującą ok. 200 pomiarów, powinieneś być w okolicach 20ms. Możesz spróbować porobić lepszą statystykę, np. do jakiejś tablicy zebrać 100 wyników pochodzących z pętli sumującej 200 a potem skrócić lub wydłużyć czas próbkowania o 5, 10, 15 konwersji i sprawdzić jaki to wpływa na wyniki. Tę liczbę obrotów przy której np. wariancja będzie najmniejsza można przyjąć za najlepszą.

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.