- Wymagane składniki
- Jak wykonać podwozie do ramienia robota sortującego kolory
- Czujnik koloru TCS3200
- Schemat obwodu sortowania kolorów Arduino
- Programowanie Arduino Uno do sortowania kolorowych kulek
Jak sama nazwa wskazuje, sortowanie kolorów polega po prostu na sortowaniu rzeczy według ich koloru. Można to łatwo zrobić, widząc to, ale gdy jest zbyt wiele rzeczy do posortowania i jest to powtarzalne zadanie, automatyczne maszyny do sortowania kolorów są bardzo przydatne. Maszyny te mają czujnik koloru, który wyczuwa kolor dowolnych obiektów i po wykryciu koloru serwomotoru chwyta przedmiot i wkłada go do odpowiedniego pudełka. Mogą być używane w różnych obszarach zastosowań, w których ważna jest identyfikacja koloru, rozróżnienie kolorów i sortowanie kolorów. Niektóre obszary zastosowań obejmują przemysł rolniczy (sortowanie ziarna na podstawie koloru), przemysł spożywczy, przemysł diamentowy i wydobywczy, recykling itp. Zastosowania nie są ograniczone do tego i mogą być dalej stosowane w różnych gałęziach przemysłu.
Najpopularniejszym czujnikiem do wykrywania kolorów jest czujnik koloru TCS3200. Wcześniej używaliśmy czujnika TCS3200 z Arduino, aby uzyskać komponent RGB (czerwony, zielony, niebieski) dowolnego koloru, a także połączyliśmy go z Raspberry Pi w celu wykrycia koloru dowolnego obiektu.
Tutaj, w tym samouczku, wykonamy maszynę do sortowania kolorów za pomocą czujnika koloru TCS3200, niektórych serwomotorów i płyty Arduino. Ten samouczek obejmuje sortowanie kolorowych kulek i przechowywanie ich w odpowiednim polu koloru. Pudełko będzie w ustalonej pozycji, a serwomotor zostanie użyty do przesunięcia ręki sortownika, aby utrzymać piłkę w odpowiednim pudełku.
Wymagane składniki
- Arduino UNO
- Czujnik koloru TCS3200
- Serwomotory
- Zworki
- Płytka prototypowa
Jak wykonać podwozie do ramienia robota sortującego kolory
Do wykonania kompletnej konfiguracji, w tym podwozia, ramienia, rolki, podkładki, użyliśmy białej deski Sunboard o grubości 2 mm. Jest łatwo dostępny w sklepach stacjonarnych. Użyliśmy gilotyny do cięcia arkusza Sunboard i FlexKwik lub FeviKwik do łączenia różnych części.
Poniżej znajduje się kilka kroków, aby zbudować ramię sortowania kolorów:
1) Weź arkusz deski słonecznej.
2) Potnij arkusz deski słonecznej na kawałki po zmierzeniu wszystkich boków skalą i markerem, jak pokazano na rysunku.
3) Teraz trzymaj razem dwa kawałki deski do opalania i wlej na nie kroplę FeviKwik, aby skleić kawałki razem. Łącząc elementy, postępuj zgodnie z rysunkiem.
4) Po połączeniu wszystkich elementów razem ta maszyna do sortowania kolorów będzie wyglądać mniej więcej tak:
Czujnik koloru TCS3200
TCS3200 to czujnik koloru, który może wykryć dowolną liczbę kolorów przy odpowiednim zaprogramowaniu. TCS3200 zawiera macierze RGB (czerwony, zielony, niebieski). Jak pokazano na rysunku na poziomie mikroskopowym, można zobaczyć kwadratowe ramki wewnątrz oka na czujniku. Te kwadratowe pola to tablice macierzy RGB. Każde z tych pudełek zawiera trzy czujniki, jeden do wykrywania intensywności światła CZERWONEGO, jeden do wykrywania intensywności światła ZIELONEGO, a ostatni do wykrywania intensywności światła NIEBIESKIEGO.
Każda z tablic czujników w tych trzech tablicach jest wybierana oddzielnie w zależności od wymagań. Stąd jest znany jako programowalny czujnik. Moduł można opisać, aby wyczuwać określony kolor i pozostawić pozostałe. Zawiera filtry do tego celu wyboru. Istnieje czwarty tryb zwany „trybem bez filtra”, w którym czujnik wykrywa białe światło.
Schemat obwodu sortowania kolorów Arduino
Schemat obwodu tego Arduino Color Sorter jest dość łatwy do wykonania i nie wymaga wielu połączeń. Schemat przedstawiono poniżej.
Oto obwody za konfiguracją maszyny do sortowania kolorów:
Programowanie Arduino Uno do sortowania kolorowych kulek
Programowanie Arduino UNO jest dość proste i wymaga prostej logiki, aby uprościć kroki związane z sortowaniem kolorów. Kompletny program z demonstracyjnym filmem na końcu.
Ponieważ używany jest silnik serwo, biblioteka serwo jest istotną częścią programu. Tutaj używamy dwóch serwomotorów. Pierwszy serwo będzie przesunąć kolorowe kulki z położenia początkowego do położenia detektora TCS3200 a następnie przejść do pozycji sortowni, gdzie będą spadła piłka. Po przejściu do pozycji sortowania, drugie serwo upuści kulkę ramieniem do kubła o pożądanym kolorze. Zobacz całą pracę w wideo podanym na końcu.
Pierwszym krokiem będzie włączenie całej biblioteki i zdefiniowanie zmiennych serwomechanizmu.
#zawierać
Czujnik koloru TCS3200 może działać bez biblioteki, ponieważ do określenia koloru wystarczy odczytać częstotliwość z pinu czujnika. Po prostu zdefiniuj numery pinów TCS3200.
#define S0 4 #define S1 5 #define S2 7 #define S3 6 #define sensorOut 8 int frequency = 0; int color = 0;
Dokonaj wybierz szpilki jak wyjścia jak uczyni to wysoki lub niski kolor fotodiody i podjąć rozwałkować na TCS3200 jako wejście. Pin OUT zapewni częstotliwość. Wybierz początkowo skalowanie częstotliwości jako 20%.
pinMode (S0, WYJŚCIE); pinMode (S1, WYJŚCIE); pinMode (S2, WYJŚCIE); pinMode (S3, WYJŚCIE); pinMode (sensorOut, INPUT); digitalWrite (S0, LOW); digitalWrite (S1, HIGH);
Serwomotory są podłączone do pinów 9 i 10 Arduino. Serwo odebrania które Pickup kulki kolor jest połączony na zacisku 9, oraz siłownik kropli, które spadną na kul, w zależności od koloru jest połączone z Pin10.
pickServo.attach (9); dropServo.attach (10);
Początkowo serwomotor frezu jest ustawiony w położeniu początkowym, które w tym przypadku wynosi 115 stopni. Może się różnić i można go odpowiednio dostosować. Silnik przemieszcza się z pewnym opóźnieniem do obszaru detektora i czeka na wykrycie.
pickServo.write (115); opóźnienie (600); for (int i = 115; i> 65; i--) { pickServo.write (i); opóźnienie (2); } opóźnienie (500);
TCS 3200 odczytuje kolor i daje częstotliwość z Out Pin.
color = detectionColor (); opóźnienie (1000);
W zależności od wykrytego koloru, serwomotor przesuwa się pod określonym kątem i upuszcza kolorową kulkę do odpowiedniego pudełka.
przełącznik (kolor) { przypadek 1: dropServo.write (50); przerwa; przypadek 2: dropServo.write (80); przerwa; przypadek 3: dropServo.write (110); przerwa; przypadek 4: dropServo.write (140); przerwa; przypadek 5: dropServo.write (170); przerwa; przypadek 0: przerwa; } opóźnienie (500);
Silnik serwo powraca do pozycji początkowej, aby odebrać następną piłkę.
for (int i = 65; i> 29; i--) { pickServo.write (i); opóźnienie (2); } opóźnienie (300); for (int i = 29; i <115; i ++) { pickServo.write (i); opóźnienie (2); }
Funkcja DetectColor () służy do pomiaru częstotliwości i porównuje częstotliwość kolorów, aby wyciągnąć wnioski dotyczące koloru. Wynik jest drukowany na monitorze szeregowym. Następnie zwraca wartość koloru dla przypadków, aby zmienić kąt silnika serwomechanizmu.
int DetectColor () {
Zapis do S2 i S3 (NISKI, NISKI) aktywuje czerwone fotodiody do odczytów gęstości koloru czerwonego.
digitalWrite (S2, LOW); digitalWrite (S3, LOW); częstotliwość = PulseIn (sensorOut, LOW); int R = częstotliwość; Serial.print ("Czerwony ="); Serial.print (frequency); // drukowanie CZERWONYCH częstotliwości kolorów Serial.print (""); opóźnienie (50);
Zapis do S2 i S3 (NISKI, WYSOKI) aktywuje niebieskie fotodiody, aby odczytać gęstość koloru niebieskiego.
digitalWrite (S2, LOW); digitalWrite (S3, HIGH); częstotliwość = PulseIn (sensorOut, LOW); int B = częstotliwość; Serial.print ("Blue ="); Serial.print (częstotliwość); Serial.println ("");
Zapis do S2 i S3 (WYSOKI, WYSOKI) aktywuje zielone fotodiody do odczytów gęstości koloru zielonego.
digitalWrite (S2, WYSOKI); digitalWrite (S3, HIGH); // Odczyt częstotliwości wyjściowej częstotliwości = pulseIn (sensorOut, LOW); int G = częstotliwość; Serial.print ("Zielony ="); Serial.print (częstotliwość); Serial.print (""); opóźnienie (50);
Następnie wartości są porównywane, aby podjąć decyzję dotyczącą koloru. Odczyty są różne dla różnych konfiguracji eksperymentalnych, ponieważ odległość wykrywania jest różna dla każdego podczas konfiguracji.
if (R <22 & R> 20 & G <29 & G> 27) { color = 1; // Czerwony Serial.print ("Wykryty kolor to ="); Serial.println ("CZERWONY"); } if (G <25 i G> 22 i B <22 i B> 19) { color = 2; // Pomarańczowy Serial.println ("Pomarańczowy"); } if (R <21 & R> 20 & G <28 & G> 25) { color = 3; // Zielony Serial.print ("Wykryty kolor to ="); Serial.println ("ZIELONY"); } if (R <38 & R> 24 & G <44 & G> 30) { color = 4; // Żółty Serial.print ("Wykryty kolor to ="); Serial.println ("ŻÓŁTY"); } jeśli (G <29 i G> 27 i B <22 & B> 19) { color = 5; // Blue Serial.print ("Wykryty kolor to ="); Serial.println ("NIEBIESKI"); } kolor powrotu; }
To kończy maszynę do sortowania kolorów przy użyciu TCS3200 i Arduino UNO. Możesz również zaprogramować go tak, aby w razie potrzeby wykrywał więcej kolorów. Jeśli masz jakiekolwiek wątpliwości lub sugestie, napisz na nasze forum lub skomentuj poniżej. Sprawdź również wideo podane poniżej.