Skocz do zawartości

Jaki czujnik koloru RGB ?


fun222

Pomocna odpowiedź

Cześć, potrzebuję kupić czujnik koloru który docelowo będzie pracował razem z arduino. Niestety nigdy z takiego czujnika nie korzystałem i tutaj mam problem jaki wybrać. Czujnik będzie miał za zadanie wykryć kolor przedmiotu w odległości 10-20 cm o jak najmniejszej powierzchni (w tym celu zastosowane będą soczewki). Bardzo proszę o podanie konkretnych modeli które się dobrze spisują.

Link do komentarza
Share on other sites

Ustalonym standardem w arduinopodobnych projektach określających kolor jest TCS3200:

https://www.dfrobot.com/product-540.html

https://botland.com.pl/czujniki-swiatla-i-koloru/961-czujnik-koloru-przetwornik-swiatlo-czestotliwosc-tcs3200d.html

Jak to zwykle w takich czujnikach, ten ma 4 detektory: biały+RGB. Dwoma pinami wybierasz którą składową mierzysz a on na wyjściu oddaje jej zawartość w postaci ciągu impulsów. Możesz mierzyć ich częstotliwość albo okres którymś timerem procesora.

Trochę wygodniejszymi są te wysposżone w interfejsy cyfrowe, bo w naturalny sposób pasują do małych mikrokontrolerów. Ten na przykład ma I2C przez które odczytujesz po prostu 4 składowe, wcześniej określając jak długo ma trwać pomiar (to definiuje czułość):

https://www.adafruit.com/product/1334

Pamiętaj, że z czujnika koloru nie dostaniesz informacji "to jest niebieski" tylko raczej: "czerwony 17, zielony 38, niebieski 53" i sam musisz wymyślić jaki to kolor. Do tego czułości poszczególnych sztuk poważnie się od siebie różnią. Barwa obiektu (tj. poszczególne składowe widziane przez czujnik) bardzo zależy od koloru oświetlenia i nie jest tak oczywista (na podstawie liczb) jak nasze wrażenia. Oko i mózg odwalają kawał roboty bo wprowadzają automatyczne poprawki trochę wiedząc a priori a trochę domyślając się co widzimy.

Najlepiej by obiekt był umieszczony w ciemności i został oświetlony białym światłem z diody umieszczonej przy czujniku albo żeby sam świecił. Wtedy można wykalibrować składowe na kilku wzorcowych pomiarach i na podstawie tych danych potem oceniać prawdziwe obiekty. Najlepiej gdyby zdanie polegało na odróżnianiu/klasyfikowaniu obiektów do kilku (2-4) odległych od siebie grup, np. wyraźnie zielone, czerwone i żółte klocki LEGO itp. Zabawa w niunase może być bardzo trudna, a w przypadkowym oświetleniu zewnętrznym praktycznie niemożliwa z uwagi na bardzo różne temperatury barwowe źródeł używanych w pomieszczeniach. Do tego dochodzi jeszcze migotanie świetlówek itd... Z resztą sam spróbujesz to się przekonasz.

Ponieważ sam czujnik jest przezroczysty, musisz go dokładnie obudować tak, by jedyne światło jakie do niego dociera pochodziło z obiektywu. Może użyj do tego obudowy od kamerki - te mają gotowe gwinty do wkręcania typowych obiektywów.

Opisz dokładniej co chcesz "widzieć", w jakich warunkach i jakie jest docelowe zadanie.

  • Pomogłeś! 1
Link do komentarza
Share on other sites

Przy użyciu toru optycznego taka odległość to żaden problem, przecież pierwsza lepsza kamerka robi to samo a widzi obiekty z metrów i kilometrów. Musisz po prostu policzyć sobie ten tor. Przypomnij sobie równanie soczewki i określ jaka soczewka (o jakiej ogniskowej) i gdzie umieszczona da obraz całego przedmiotu pokrywający czujnik. Pole robocze czujnika ma pewien niemały obszar (w TCS3200 dokładnie 1x1mm) więc jeśli a) obraz będzie zbyt duży - stracisz wiele światła, b) zbyt mały - czujnik będzie widział otoczenie wokół przedmiotu a tego nie chcesz. Najlepiej by rzecz na którą patrzysz (co to będzie?) miała jednolity kolor, była dobrze i równomiernie oświetlona a jej obraz (rzeczywisty, odwrócony, pomniejszony) był wielkości 1-2mm.

  • Lubię! 1
  • 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

Czujnik będzie używany do rozróżnienia 3 kolorów przedmiotu (prostopadłościan). Wiec kolorów do wykrycia nie jest zbyt dużo. Mam jeszcze pytanie co do zmiennych warunków oświetlenia czy próbował ktoś stworzyć algorytm kompensujący wpływ zmiany natężenia światła oraz jego temperatury barwowej ? Czy może nie warto się tym bawić a jedynie zapewnić w miarę jednolite oświetlenie ?

Link do komentarza
Share on other sites

Możesz to zrobić, ale algorytm musiałby bazować albo na niezależnym (drugim) czujniku koloru oświetlenia - wtedy najlepiej gdyby był umieszczony obok badanego przedmiotu i patrzył na światło która pada aktualnie na przedmiot, albo na wstępnej kalibracji czujnika głównego np. za pomocą białej kartki pokazywanej mu przed zabawą z przedmiotami.

Wersja z białą kartką jest często stosowana w aparatach fotograficznych. One mają ten sam problem i też nie wiedzą jakie jest oświetlenie sceny. Albo próbują "zgadnąć" (tryb Automatic White Balance) co często wychodzi żałośnie, albo ustawiasz jeden z kilku predefiniowanych setupów albo właśnie wybierasz opcję "User White Balance" i klikasz fotkę ścianie o której wiesz, że jest "biała".

Jeżeli jednak warunki nie będą jakoś strasznie zmienne (krwisty zachód słońca, dyskoteka a innym razem plaża lub pokój wieczorem) to selekcja różnych kolorów do 3 grup powinna zadziałać i bez takich sztuczek. Podłącz ten czujnik i po prostu sprawdź jak to działa w warunkach jakie przewidujesz. Najwyżej pokombinujesz oświetleniem (np. załączana biała dioda doświetlająca) w przypadku zbyt ciemnej sceny - bo wtedy pomiary czujnika spadają i masz mniejsze liczby do porównywania a to zabija precyzję albo wydłuża pomiar, lub w przypadku wyników trudnych do interpretacji - właśnie gdy zachodzi podejrzenie dziwnego oświetlenia ambient. To prostsze niż drugi czujnik, choć sposób z kartką też jest dość prosty pod warunkiem akceptowalności jego użycia w danym urządzeniu.

------------------------

EDIT: W zasadzie natężenie światła jako takie Cię nie boli, bo do określenia finalnego koloru i tak korzystasz ze stosunków trzech składowych do siebie i ew. do czwartego kanału - białej sumy. Gorzej, że czujnik z wyjściem impulsowym oddaje coraz rzadsze impulsy. Po wstępnych przymiarkach musisz się zdecydować czy mierzysz ich okres - wtedy te wolne mierzysz dokładnie (i wystarczy jeden okres), ale przy szybkich zaczyna brakować czasu na precyzję (bo dysponujesz co najwyżej zegarem procesora, np. 16MHz ), czy mierzysz częstotliwość - wtedy czas pomiaru jest stały, ale przy wolnych sygnałach tracisz dokładność. Możliwe są też wersje hybrydowe - w zależności od tego co dostajesz stosujesz jedną lub drugą metodę. O ile pamiętam, czujnik ten ma 2 wejścia zmieniające wewn. podzielnik więc tym możesz na bieżąco dopasowywać częstotliwość impulsów do Twojej (stałej) metody pomiarowej. Wszystko zależy od warunków oświetleniowych i ich zakresu zmienności. Podłącz i daj znać jakie wyniki otrzymujesz.

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.