- Komponenter, der kræves
- Hvordan man laver kabinettet til farvesorteringsrobot
- TCS3200 farvesensor
- Arduino farvesorteringsdiagram
- Programmering Arduino Uno til sortering af farverige bolde
Som navnet antyder, er farvesortering simpelthen at sortere tingene efter deres farve. Det kan let gøres ved at se det, men når der er for mange ting, der skal sorteres, og det er en gentagen opgave, er automatiske farvesorteringsmaskiner meget nyttige. Disse maskiner har farvesensor til at mærke farven på objekter, og efter at have registreret farveservomotoren, tag fat i sagen og læg den i den respektive kasse. De kan bruges i forskellige anvendelsesområder, hvor farveidentifikation, farveskelning og farvesortering er vigtig. Nogle af anvendelsesområderne omfatter landbrugsindustri (kornsortering på baggrund af farve), fødevareindustri, diamant- og minedrift, genbrug osv. Anvendelserne er ikke begrænset til dette og kan anvendes yderligere i forskellige industrier.
TCS3200 farvesensor er den mest populære sensor til at detektere farverne. Vi har tidligere brugt TCS3200-sensor med Arduino til at få RGB-komponenten (rød, grøn, blå) af enhver farve og har også grænseflade til Raspberry Pi for at detektere farven på ethvert objekt.
Her i denne vejledning laver vi en farvesorteringsmaskine ved hjælp af en farvesensor TCS3200, nogle servomotorer og Arduino-kort. Denne tutorial inkluderer sortering af farvede bolde og opbevaring i den relevante farveboks. Kassen vil være i den faste position, og servomotoren vil blive brugt til at bevæge sorteringshånden for at holde bolden i den relevante kasse.
Komponenter, der kræves
- Arduino UNO
- TCS3200 farvesensor
- Servomotorer
- Jumpere
- Brødbræt
Hvordan man laver kabinettet til farvesorteringsrobot
Til at foretage den komplette opsætning inklusive chassis, arm, rulle, pad, har vi brugt den hvide Sunboard med en tykkelse på 2 mm. Det er let tilgængeligt i de stationære butikker. Vi har brugt papirskærer til at skære Sunboard Sheet og FlexKwik eller FeviKwik til sammenføjning af de forskellige dele.
Nedenfor er nogle trin, der bygger farvesorteringsarmen:
1) Tag solbrættet.
2) Skær solbrætpladen i stykker efter måling af alle sider med skala og markør som vist på figuren.
3) Hold nu de to stykker solbræt sammen og hæld en dråbe FeviKwik på den for at holde stykkerne sammen. Bliv ved med at forbinde brikkerne ved at følge figuren.
4) Efter at have samlet alle brikkerne, vil denne farvesorteringsmaskine se sådan ud:
TCS3200 farvesensor
TCS3200 er en farvesensor, der kan registrere et vilkårligt antal farver med korrekt programmering. TCS3200 indeholder RGB (rødgrønblå) arrays. Som vist i figur på mikroskopisk niveau kan man se de firkantede kasser inde i øjet på sensoren. Disse firkantede kasser er arrays af RGB-matrix. Hver af disse kasser indeholder tre sensorer, den ene er til registrering af RØD lysintensitet, den ene er til registrering af GRØN lysintensitet og den sidste til registrering af BLÅ lysintensitet.
Hver sensorarray i disse tre arrays vælges separat afhængigt af kravet. Derfor er det kendt som programmerbar sensor. Modulet kan præsenteres for at mærke den særlige farve og for at forlade de andre. Den indeholder filtre til det valgte formål. Der er en fjerde tilstand kaldet ' intet filtertilstand', hvor sensoren registrerer hvidt lys.
Arduino farvesorteringsdiagram
Kredsløbsdiagrammet til denne Arduino Color Sorter er ret let at lave og kræver ikke meget forbindelser. Skematisk er vist nedenfor.
Dette er kredsløbet bag opsætningen af farvesorteringsmaskine:
Programmering Arduino Uno til sortering af farverige bolde
Programmering af Arduino UNO er ret simpelt og kræver en simpel logik for at forenkle de trin, der er involveret i farvesortering. Komplet program med en demonstration Video gives i slutningen.
Da servomotoren bruges, er servobiblioteket en vigtig del af programmet. Her bruger vi to servomotorer. Den første servo vil flytte de farvede kugler fra startposition til TCS3200 detektorposition og derefter flytte til sorteringsposition, hvor kuglen vil blive droppet. Efter at have flyttet til sorteringsposition, vil den anden servo slippe bolden ved hjælp af armen til den ønskede farvespand. Se det komplette arbejde i videoen, der er givet i slutningen.
Det første trin er al inkludering af biblioteket og definerer servovariabler.
#omfatte
TCS3200-farvesensoren kan fungere uden bibliotek, da der kun er brug for læsefrekvens fra sensorstiften for at bestemme farven. Så definer bare pinkoderne på TCS3200.
#definer S0 4 #definer S1 5 #definer S2 7 #definer S3 6 #definer sensorOut 8 int frekvens = 0; int farve = 0;
Lav vælgstifterne som output, da dette vil gøre farvefotodioden høj eller lav og tage udstiften på TCS3200 som input. OUT-stiften giver frekvens. Vælg skalering af frekvens som 20% i første omgang.
pinMode (S0, OUTPUT); pinMode (S1, OUTPUT); pinMode (S2, OUTPUT); pinMode (S3, OUTPUT); pinMode (sensorOut, INPUT); digitalWrite (S0, LOW); digitalWrite (S1, HIGH);
Servomotorer er tilsluttet ved pin 9 og 10 i Arduino. Den pickup servo som vil afhentning af farvede kugler er forbundet ved Pin 9 og drop servo som vil slippe de farvede kugler ifølge farven er forbundet ved Pin10.
pickServo.attach (9); dropServo.attach (10);
Oprindeligt er pick servomotoren indstillet i den oprindelige position, som i dette tilfælde er 115 grader. Det kan variere og kan tilpasses i overensstemmelse hermed. Motoren bevæger sig efter en vis forsinkelse til detektorområdet og venter på detektionen.
pickServo.write (115); forsinkelse (600); for (int i = 115; i> 65; i--) { pickServo.write (i); forsinkelse (2); } forsinkelse (500);
Den TCS 3200 læser farve og giver frekvensen fra Out Pin.
farve = detectColor (); forsinkelse (1000);
Afhængig af den opdagede farve bevæger drop-servomotoren sig med en bestemt vinkel og falder farvekuglen ned til den respektive kasse.
switch (farve) { case 1: dropServo.write (50); pause; sag 2: dropServo.write (80); pause; sag 3: dropServo.write (110); pause; sag 4: dropServo.write (140); pause; sag 5: dropServo.write (170); pause; sag 0: pause; } forsinkelse (500);
Servomotoren vender tilbage til udgangspositionen for den næste bold, der skal vælges.
for (int i = 65; i> 29; i--) { pickServo.write (i); forsinkelse (2); } forsinkelse (300); for (int i = 29; i <115; i ++) { pickServo.write (i); forsinkelse (2); }
Funktionen detectColor () bruges til at måle frekvens og sammenligner farvefrekvensen for at slutte farven. Resultatet er trykt på den serielle skærm. Derefter returnerer det farveværdien i tilfælde for at flytte drop servomotorens vinkel.
int detectColor () {
Skrivning til S2 og S3 (LAV, LAV) aktiverer de røde fotodioder til at tage aflæsningerne for rød farvetæthed.
digitalWrite (S2, LOW); digitalWrite (S3, LOW); frekvens = pulseIn (sensorOut, LOW); int R = frekvens; Serial.print ("Red ="); Serial.print (frekvens); // udskrivning RØD farvefrekvens Serial.print (""); forsinkelse (50);
Skrivning til S2 og S3 (LAV, HØJ) aktiverer de blå fotodioder til at tage aflæsningerne for blå farvetæthed.
digitalWrite (S2, LOW); digitalWrite (S3, HIGH); frekvens = pulseIn (sensorOut, LOW); int B = frekvens; Serial.print ("Blå ="); Serial.print (frekvens); Serial.println ("");
Skrivning til S2 og S3 (HIGH, HIGH) aktiverer de grønne fotodioder til at tage aflæsningerne for grøn farvetæthed.
digitalWrite (S2, HIGH); digitalWrite (S3, HIGH); // Aflæsning af udgangsfrekvensfrekvensen = pulseIn (sensorOut, LOW); int G = frekvens; Serial.print ("Grøn ="); Serial.print (frekvens); Serial.print (""); forsinkelse (50);
Derefter sammenlignes værdierne for at tage farvebeslutningen. Aflæsningerne er forskellige for forskellige eksperimentelle opsætninger, da detektionsafstanden varierer for alle, når du foretager opsætningen.
hvis (R <22 & R> 20 & G <29 & G> 27) { color = 1; // Red Serial.print ("Detected Color is ="); Serial.println ("RØD"); } hvis (G <25 & G> 22 & B <22 & B> 19) { color = 2; // Orange Serial.println ("Orange"); } hvis (R <21 & R> 20 & G <28 & G> 25) { color = 3; // Green Serial.print ("Detected Color is ="); Serial.println ("GRØNN"); } hvis (R <38 & R> 24 & G <44 & G> 30) { color = 4; // Yellow Serial.print ("Detected Color is ="); Serial.println ("GUL"); } hvis (G <29 & G> 27 & B <22 & B> 19) { color = 5; // Blue Serial.print ("Detected Color is ="); Serial.println ("BLÅ"); } returfarve; }
Dette afslutter farvesorteringsmaskinen ved hjælp af TCS3200 og Arduino UNO. Du kan også programmere det til at registrere flere farver, hvis det er nødvendigt. Hvis du er i tvivl eller har forslag, så skriv til vores forum eller kommentar nedenfor. Tjek også videoen nedenfor.