- Szükséges alkatrészek
- Hogyan készítsük el az alvázat a Színválogató robotkarhoz
- TCS3200 színes érzékelő
- Arduino Color Sorter áramkör diagram
- Az Arduino Uno programozása színes golyók rendezéséhez
Ahogy a neve is sugallja, a szín szerinti rendezés csupán a dolgok színük szerinti rendezése. Megtekintésével könnyedén megtehető, de ha túl sok mindent kell rendezni, és ez ismétlődő feladat, akkor az automatikus színválogató gépek nagyon hasznosak. Ezek a gépek rendelkeznek színérzékelővel, hogy érzékeljék a tárgyak színét, és miután észlelték a színes szervomotort, fogd meg a dolgot, és tedd a megfelelő dobozba. Különböző alkalmazási területeken használhatók, ahol fontos a színazonosítás, a színmegkülönböztetés és a színválogatás. Néhány alkalmazási terület magában foglalja a mezőgazdaságot (gabonafélék válogatása szín alapján), az élelmiszeripart, a gyémánt- és bányaipart, az újrahasznosítást stb.
A színek érzékeléséhez a legnépszerűbb érzékelő a TCS3200 színérzékelő. Korábban a TCS3200 érzékelőt használtuk az Arduinóval, hogy bármilyen színű RGB komponenst (piros, zöld, kék) kapjunk, és összekötöttük a Raspberry Pi-vel bármely tárgy színének detektálásához.
Itt ebben az oktatóanyagban színválogató gépet készítünk a TCS3200 színérzékelő, néhány szervomotor és az Arduino kártya segítségével. Ez az oktatóanyag magában foglalja a színes gömbök rendezését és a megfelelő színmezőben tartását. A doboz rögzített helyzetben lesz, és a szervomotort használják a válogató kezének mozgatására, hogy a labda a megfelelő dobozban maradjon.
Szükséges alkatrészek
- Arduino UNO
- TCS3200 színes érzékelő
- Servo Motors
- Ugrók
- Kenyérlemez
Hogyan készítsük el az alvázat a Színválogató robotkarhoz
A teljes beállításhoz, beleértve az alvázat, a kart, a hengert, a betétet, a 2 mm vastag fehér Sunboardot használtuk. Könnyen elérhető a helyhez kötött üzletekben. Papírvágóval használtuk a Sunboard Sheet és a FlexKwik vagy a FeviKwik vágását a különböző részek összekapcsolásához.
Az alábbiakban bemutatjuk a színválogató kar felépítését:
1) Vegyük a Sunboard Sheet-et.
2) Vágja darabokra a napellenző lapot, miután minden oldalát mérettel és jelölővel megmérte, az ábra szerint.
3) Most fogja össze a két darab napilapot, és öntsön rá egy csepp FeviKwik-ot, hogy összeragadjon a darab. Csatlakoztassa a darabokat az ábra követésével.
4) Miután összekapcsolta az összes darabot, ez a színválogató gép így néz ki:
TCS3200 színes érzékelő
A TCS3200 egy olyan színérzékelő, amely tetszőleges számú színt képes felismerni megfelelő programozással. A TCS3200 RGB (piros zöld kék) tömböt tartalmaz. Miként az ábra mikroszkópos szinten látható, az érzékelőn a szem belsejében lévő négyzet alakú négyzetek láthatók. Ezek a négyzet alakú dobozok RGB mátrix tömbök. Mindegyik doboz három érzékelőt tartalmaz: az egyik a VÖRÖS fényerősség érzékelésére szolgál, az egyik a ZÖLD fényerősség érzékelésére, az utolsó pedig a KÉK fényerősség érzékelésére.
A három tömb mindegyik érzékelő tömbjét külön választják ki a követelményektől függően. Ezért programozható érzékelőként ismert. A modul megjeleníthető az adott szín érzékeléséhez és a többiek elhagyásához. Szűrőket tartalmaz a kiválasztás céljára. Van egy „ no filter mode” nevű negyedik mód, amelyben az érzékelő fehér fényt érzékel.
Arduino Color Sorter áramkör diagram
Ennek az Arduino Color Sorter kapcsolási rajzának elkészítése nagyon egyszerű, és nem igényel sok kapcsolatot. A vázlatot az alábbiakban adjuk meg.
Ez a színválogató gép beállításának áramköre:
Az Arduino Uno programozása színes golyók rendezéséhez
Az Arduino UNO programozása elég egyszerű, és egyszerű logikát igényel a színválogatással járó lépések egyszerűsítése érdekében. Teljes program bemutató videóval a végén.
Mivel a szervomotort használják, a szervo könyvtár elengedhetetlen része a programnak. Itt két szervomotort használunk. Az első szervo a színes golyókat a kezdeti helyzetből a TCS3200 detektor helyzetébe mozgatja, majd abba a rendezési helyzetbe kerül, ahol a golyó leesik. Válogatási helyzetbe lépés után a második szervo a karja segítségével a kívánt színű vödörbe dobja a labdát. Lásd a teljes leírást a videó végén.
Az első lépés az egész könyvtár beillesztése lesz, és meghatározza a szervo változókat.
#include
A TCS3200 színérzékelő könyvtár nélkül is működhet, mivel a szín eldöntéséhez csak az érzékelő csapjának olvasási frekvenciájára van szükség. Tehát csak adja meg a TCS3200 PIN-kódjait.
#define S0 4 #define S1 5 #define S2 7 #define S3 6 #define sensorOut 8 int frequency = 0; int szín = 0;
Készítse el a kiválasztott csapokat kimenetként, mivel ezzel a színes fotodióda magas vagy alacsony szintre kerül, és a TCS3200 Out tűjét veszi bemenetként. Az OUT tű biztosítja a frekvenciát. Válassza ki a frekvencia méretarányát kezdetben 20% -nak.
pinMode (S0, OUTPUT); pinMode (S1, OUTPUT); pinMode (S2, OUTPUT); pinMode (S3, OUTPUT); pinMode (sensorOut, INPUT); digitalWrite (S0, LOW); digitalWrite (S1, HIGH);
A szervomotorok az Arduino 9. és 10. érintkezőjénél vannak csatlakoztatva. A színes golyókat felszedő felszedő szervo a 9. tűnél van csatlakoztatva, és a dobó szervó, amely a szín szerinti golyókat eldobja, a 10. érintkezőhöz csatlakozik.
pickServo.attach (9); dropServo.attach (10);
Kezdetben a kiszolgáló szervomotort az eredeti helyzetbe állítják, amely ebben az esetben 115 fok. Ez eltérhet, és ennek megfelelően testreszabható. A motor némi késés után elmozdul az érzékelő területére, és várja az észlelést.
pickServo.write (115); késés (600); for (int i = 115; i> 65; i-- ) { pickServo.write (i); késés (2); } késés (500);
A TCS 3200 kiolvassa a színt és megadja a frekvenciát a kimeneti tűről.
color = detectColor (); késés (1000);
Az észlelt színtől függően a csepp szervo motor meghatározott szögben mozog, és a színgömböt a megfelelő dobozába dobja.
kapcsoló (szín) { eset 1: dropServo.write (50); szünet; 2. eset: dropServo.write (80); szünet; 3. eset: dropServo.write (110); szünet; 4. eset: dropServo.write (140); szünet; 5. eset: dropServo.write (170); szünet; 0. eset: törés; } késés (500);
A szervomotor visszatér a kiinduló helyzetbe, hogy a következő labdát felvegye.
for (int i = 65; i> 29; i-- ) { pickServo.write (i); késés (2); } késés (300); for (int i = 29; i <115; i ++) { pickServo.write (i); késés (2); }
A detektorColor () függvény a frekvencia mérésére szolgál, és összehasonlítja a színfrekvenciát a szín következtetésének levonásához. Az eredmény kinyomtatásra kerül a soros monitoron. Ezután visszaadja az esetek színértékét a szervo motor szögének elmozdításához.
int DetectColor () {
Az S2 és S3 írás (LOW, LOW) aktiválja a vörös fotodiódákat, hogy felvegyék a vörös színsűrűség értékeit.
digitalWrite (S2, LOW); digitalWrite (S3, LOW); frekvencia = pulseIn (sensorOut, LOW); int R = frekvencia; Soros.nyomtatás ("Piros ="); Serial.print (frekvencia); // RED színes frekvencia nyomtatása Serial.print (""); késés (50);
Az S2 és S3 (LOW, HIGH) írása aktiválja a kék fotodiódákat, hogy felvegye a kék színsűrűség értékeit.
digitalWrite (S2, LOW); digitalWrite (S3, HIGH); frekvencia = pulseIn (sensorOut, LOW); int B = frekvencia; Soros.nyomtatás ("Kék ="); Soros.nyomtatás (gyakoriság); Soros.println ("");
Az S2 és S3 írás (HIGH, HIGH) aktiválja a zöld fotodiódákat, hogy felvegye a zöld színsűrűség értékeit.
digitalWrite (S2, HIGH); digitalWrite (S3, HIGH); // A kimeneti frekvencia frekvencia kiolvasása = pulseIn (sensorOut, LOW); int G = frekvencia; Soros.nyomtatás ("Zöld ="); Soros nyomtatás (gyakoriság); Soros.nyomtatás (""); késés (50);
Ezután az értékeket összehasonlítjuk a színdöntés meghozatalához. A leolvasások különbözőek a különböző kísérleti beállításoknál, mivel az észlelési távolság mindenkinek változik a beállítás során.
ha (R <22 & R> 20 & G <29 & G> 27) { color = 1; // Red Serial.print ("Az észlelt szín ="); Serial.println ("RED"); } if (G <25 & G> 22 & B <22 & B> 19) { color = 2; // Orange Serial.println ("Narancs"); } if (R <21 & R> 20 & G <28 & G> 25) { szín = 3; // Green Serial.print ("Az észlelt szín ="); Soros.println ("ZÖLD"); } if (R <38 & R> 24 & G <44 & G> 30) { color = 4; // Yellow Serial.print ("Az észlelt szín ="); Soros.println ("SÁRGA"); } if (G <29 és G> 27 és B <22 és B> 19) { szín = 5; // Blue Serial.print ("Az észlelt szín ="); Serial.println ("KÉK"); } visszatérő szín; }
Ezzel befejezi a színválogató gépet a TCS3200 és az Arduino UNO segítségével. Szükség esetén programozhatja több szín észlelésére is. Ha bármilyen kétsége van vagy bármilyen javaslata van, írjon az alábbi fórumra vagy észrevételre. Ellenőrizze az alábbi videót is.