- Būtini komponentai
- Kaip pagaminti važiuoklę, skirtą spalvų rūšiavimo robotų rankai
- TCS3200 spalvų jutiklis
- „Arduino“ spalvų rūšiavimo schema
- „Arduino Uno“ programavimas spalvingiems kamuoliukams rūšiuoti
Kaip rodo pavadinimas, spalvų rūšiavimas yra tiesiog rūšiuoti daiktus pagal jų spalvą. Tai galima lengvai padaryti matant, bet kai yra per daug dalykų, kuriuos reikia rūšiuoti, ir tai yra pasikartojanti užduotis, automatinės spalvų rūšiavimo mašinos yra labai naudingos. Šios mašinos turi spalvų jutiklį, kad pajustų bet kokių daiktų spalvą, o aptikęs spalvų servo variklį, paimkite daiktą ir įdėkite jį į atitinkamą dėžę. Jie gali būti naudojami įvairiose taikymo srityse, kur svarbu identifikuoti spalvas, atskirti spalvas ir rūšiuoti. Kai kurios taikymo sritys apima žemės ūkio pramonę (grūdų rūšiavimas pagal spalvą), maisto pramonę, deimantų ir kasybos pramonę, perdirbimą ir kt. Taikymas neapsiriboja tuo ir gali būti toliau taikomas įvairiose pramonės šakose.
Populiariausias spalvų jutiklis jutiklis yra TCS3200 spalvų jutiklis. Anksčiau mes naudojome TCS3200 jutiklį su „Arduino“, kad gautume bet kokios spalvos RGB komponentą (raudoną, žalią, mėlyną), taip pat sujungėme jį su „Raspberry Pi“, kad aptiktume bet kokio objekto spalvą.
Čia, šioje pamokoje, pagaminsime spalvų rūšiavimo mašiną, naudodami spalvų jutiklį TCS3200, kai kuriuos servovariklius ir „Arduino“ plokštę. Šioje pamokoje bus rūšiuojami spalvoti rutuliai ir laikoma juos atitinkamame spalvų laukelyje. Dėžutė bus fiksuotoje padėtyje, o servo variklis bus naudojamas surūšiuoti ranką, kad kamuolys būtų laikomas atitinkamoje dėžėje.
Būtini komponentai
- „Arduino UNO“
- TCS3200 spalvų jutiklis
- „Servo Motors“
- Džemperiai
- Bandomoji Lenta
Kaip pagaminti važiuoklę, skirtą spalvų rūšiavimo robotų rankai
Norėdami atlikti visą sąranką, įskaitant važiuoklę, rankeną, ritinėlį, kaladėlę, naudojome baltą 2 mm storio „ Sunboard “. Jį lengvai galima įsigyti stacionariose parduotuvėse. Mes naudojome popieriaus pjaustytuvą, kad supjaustytume „Sunboard Sheet“ ir „FlexKwik“ arba „FeviKwik“ skirtingoms dalims sujungti.
Toliau pateikiami keli žingsniai, kaip sukurti spalvų rūšiavimo ranką:
1) Paimkite „Sunboard Sheet“.
2) Išmatavę skydelį su skydeliu supjaustykite skalę ir žymeklį, kaip parodyta paveiksle.
3) Dabar laikykite kartu dvi skydo dalis ir užpilkite lašą „FeviKwik“, kad sukibtų. Toliau jungkite gabalus, laikydamiesi paveikslo.
4) Sujungus visas dalis, ši spalvų rūšiavimo mašina atrodys maždaug taip:
TCS3200 spalvų jutiklis
TCS3200 yra spalvų jutiklis, kuris, tinkamai programuodamas, gali aptikti bet kokį spalvų skaičių. TCS3200 yra RGB (raudona žalia mėlyna) masyvai. Kaip parodyta paveiksle mikroskopiniu lygiu, ant jutiklio galima pamatyti kvadratines dėžutes akies viduje. Šios kvadratinės dėžutės yra RGB matricos masyvai. Kiekvienoje iš šių dėžučių yra trys jutikliai: vienas skirtas RED šviesos intensyvumui, vienas - ŽALIAI šviesos intensyvumui, o paskutinis - MĖLYNAJAM šviesos intensyvumui.
Kiekvienas šių trijų matricų jutiklių matricas parenkamas atskirai, atsižvelgiant į reikalavimus. Taigi jis yra žinomas kaip programuojamas jutiklis. Modulis gali būti naudojamas norint pajusti tam tikrą spalvą ir palikti kitus. Jame yra filtrai tam pasirinkimo tikslui. Yra ketvirtasis režimas, vadinamas „ be filtro režimu“, kuriame jutiklis aptinka baltą šviesą.
„Arduino“ spalvų rūšiavimo schema
Šio „ Arduino Color Sorter “ grandinės schemą yra gana lengva padaryti ir nereikia daug jungčių. Schema pateikta žemiau.
Tai yra spalvų rūšiavimo mašinos nustatymo schema:
„Arduino Uno“ programavimas spalvingiems kamuoliukams rūšiuoti
„Arduino UNO“ programavimas yra gana paprastas ir reikalauja paprastos logikos, kad supaprastintumėte spalvų rūšiavimo veiksmus. Pabaigoje pateikiama visa programa su demonstraciniu vaizdo įrašu.
Kadangi naudojamas servo variklis, servo biblioteka yra būtina programos dalis. Čia mes naudojame du servovariklius. Pirmasis servo bus perkelti spalvotus rutulius iš pradinės padėties į TCS3200 detektoriaus padėtyje ir tada pereiti į rūšiavimo padėtyje, kur kamuoliukas bus sumažėjo. Perėjęs į rūšiavimo padėtį, antrasis servo serveris nuleis kamuolį naudodamas ranką iki norimos spalvos kibiro. Visą darbą žiūrėkite vaizdo įraše, pateiktame pabaigoje.
Pirmasis žingsnis bus visas bibliotekos įtraukimas ir apibrėžti servo kintamuosius.
# įtraukti
TCS3200 spalvų jutiklis gali veikti be bibliotekos, nes norint nuspręsti spalvą reikia tik skaitymo dažnio iš jutiklio kaiščio. Taigi tiesiog nustatykite TCS3200 PIN numerius.
#define S0 4 #define S1 5 #define S2 7 #define S3 6 #define sensorOut 8 int frequency = 0; int spalva = 0;
Padarykite pasirinktus kaiščius kaip išvestį, nes tai padidins arba sumažins spalvotą fotodiodą, o įvestimi paimkite TCS3200 išvesties kaištį. OUT kaištis pateiks dažnį. Iš pradžių pasirinkite dažnio mastelį kaip 20%.
pinMode (S0, OUTPUT); pinMode (S1, OUTPUT); pinMode (S2, OUTPUT); pinMode (S3, OUTPUT); pinMode (sensorOut, INPUT); „digitalWrite“ (S0, LOW); „digitalWrite“ (S1, HIGH);
Servovarikliai yra sujungti „Arduino“ 9 ir 10 kaiščiuose. Griebimo servo, kuri bus paėmimas spalvų rutuliai yra prijungtas prie kontaktų 9 ir lašas servo, kuri bus lašas spalvų rutuliai pagal spalvą yra prijungtas bent Pin10.
pickServo.attach (9); dropServo.attach (10);
Iš pradžių pasirinkimo servovariklis nustatomas pradinėje padėtyje, kuri šiuo atveju yra 115 laipsnių. Jis gali skirtis ir gali būti atitinkamai pritaikytas. Variklis po tam tikro uždelsimo juda į detektoriaus sritį ir laukia aptikimo.
pickServo.write (115); vėlavimas (600); už (int i = 115; i> 65; i--) { pickServo.write (i); vėlavimas (2); } vėlavimas (500);
TKS 3200 skaito spalvą ir suteikia dažnį iš Išėjo Pin.
spalva = nustatyti spalvą (); vėlavimas (1000);
Priklausomai nuo aptiktos spalvos, variklio servo variklis juda tam tikru kampu ir numeta spalvų rutulį į atitinkamą dėžę.
jungiklis (spalva) { atvejis 1: dropServo.write (50); pertrauka; 2 atvejis: dropServo.write (80); pertrauka; 3 atvejis: dropServo.write (110); pertrauka; 4 atvejis: dropServo.write (140); pertrauka; 5 atvejis: dropServo.write (170); pertrauka; atvejis 0: pertrauka; } vėlavimas (500);
Servo variklis grįžta į pradinę padėtį kitam rutuliui pasirinkti.
už (int i = 65; i> 29; i--) { pickServo.write (i); vėlavimas (2); } vėlavimas (300); už (int i = 29; i <115; i ++) { pickServo.write (i); vėlavimas (2); }
Funkcija „ detektorius“ () naudojama dažniui matuoti ir palygina spalvų dažnį, kad būtų padaryta spalva. Rezultatas atspausdinamas serijiniame monitoriuje. Tada ji grąžina bylų spalvų vertę, kad būtų galima perkelti servo variklio kampą.
int nustatyti spalvą () {
Rašymas į S2 ir S3 (LOW, LOW) įjungia raudonus fotodiodus, kad būtų paimti raudonos spalvos tankio rodmenys.
„digitalWrite“ (S2, LOW); „digitalWrite“ (S3, LOW); dažnis = pulseIn (sensorOut, LOW); int R = dažnis; Serijinis spaudinys ("Raudona ="); Serial.print (dažnis); // RED spalvų dažnio spausdinimas Serial.print (""); vėlavimas (50);
Rašymas į S2 ir S3 (LOW, HIGH) suaktyvina mėlynus fotodiodus, kad būtų rodomi mėlynos spalvos tankio rodmenys.
„digitalWrite“ (S2, LOW); „digitalWrite“ (S3, HIGH); dažnis = pulseIn (sensorOut, LOW); int B = dažnis; Serijinis spaudinys ("mėlynas ="); Serijinis spaudinys (dažnis); Serial.println ("");
Rašymas į S2 ir S3 (HIGH, HIGH) suaktyvina žaliuosius fotodiodus, kad būtų imami žalios spalvos tankio rodmenys.
„digitalWrite“ (S2, HIGH); „digitalWrite“ (S3, HIGH); // Išvesties dažnio dažnio skaitymas = pulseIn (sensorOut, LOW); int G = dažnis; Serijinis spaudinys ("Žalia ="); Serijinis spaudinys (dažnis); Serial.print (""); vėlavimas (50);
Tada spalvos yra lyginamos, kad būtų priimtas sprendimas dėl spalvos. Skirtingos eksperimentinės sąrangos rodmenys skiriasi, nes nustatymo atstumas kiekvienam skiriasi nustatant.
jei (R <22 & R> 20 & G <29 & G> 27) { spalva = 1; // „Red Serial.print“ („Aptikta spalva yra =“); Serial.println („RED“); } if (G <25 & G> 22 & B <22 & B> 19) { spalva = 2; // „Orange Serial.println“ („Oranžinė“); } if (R <21 & R> 20 & G <28 & G> 25) { spalva = 3; // Green Serial.print ("Aptikta spalva yra ="); Serial.println („ŽALI“); } if (R <38 & R> 24 & G <44 & G> 30) { spalva = 4; // Yellow Serial.print ("Aptikta spalva yra ="); Serial.println („GELTONA“); } jei (G <29 ir G> 27 ir B <22 ir B> 19) { spalva = 5; // „Blue Serial.print“ („Aptikta spalva yra =“); Serial.println („MĖLYNA“); } grąžinimo spalva; }
Tai užbaigia spalvų rūšiavimo mašiną naudojant TCS3200 ir „Arduino UNO“. Taip pat galite užprogramuoti, kad prireikus aptiktų daugiau spalvų. Jei turite kokių nors abejonių ar turite kokių nors pasiūlymų, parašykite mūsų forumui arba komentuokite žemiau. Taip pat patikrinkite toliau pateiktą vaizdo įrašą.