- Componenten vereist
- Hoe het chassis te maken voor de kleur sorterende robotarm
- TCS3200 kleurensensor
- Arduino kleurensorteerder schakelschema
- Programmeren van Arduino Uno voor het sorteren van kleurrijke ballen
Zoals de naam al doet vermoeden, is kleursortering simpelweg het sorteren van de dingen op basis van hun kleur. Het kan gemakkelijk worden gedaan door het te zien, maar als er te veel dingen moeten worden gesorteerd en het een repetitieve taak is, zijn automatische kleursorteermachines erg handig. Deze machines hebben een kleurensensor om de kleur van objecten te detecteren en na het detecteren van de kleurenservomotor het ding te pakken en in de betreffende doos te plaatsen. Ze kunnen worden gebruikt in verschillende toepassingsgebieden waar kleuridentificatie, kleuronderscheid en kleursortering belangrijk zijn. Enkele toepassingsgebieden zijn onder meer de landbouwindustrie (graansortering op basis van kleur), voedingsindustrie, diamant- en mijnbouw, recycling etc. De toepassingen zijn hier niet toe beperkt en kunnen verder worden toegepast in verschillende industrieën.
De meest populaire sensor voor het detecteren van kleuren is de TCS3200-kleurensensor. We hebben eerder de TCS3200-sensor met Arduino gebruikt om de RGB-component (rood, groen, blauw) van elke kleur te krijgen en hebben deze ook gekoppeld aan Raspberry Pi voor het detecteren van de kleur van elk object.
Hier in deze tutorial zullen we een kleursorteermachine maken met behulp van een kleursensor TCS3200, enkele servomotoren en een Arduino-bord. Deze tutorial omvat het sorteren van gekleurde ballen en ze in het relevante kleurvak bewaren. De kist staat in de vaste positie en de servomotor wordt gebruikt om de sorteerhand te bewegen om de bal in de betreffende kist te houden.
Componenten vereist
- Arduino UNO
- TCS3200 kleurensensor
- Servomotoren
- Truien
- Breadboard
Hoe het chassis te maken voor de kleur sorterende robotarm
Voor het maken van de complete opstelling inclusief chassis, arm, roller, pad hebben we de witte Sunboard van 2mm dikte gebruikt. Het is gemakkelijk verkrijgbaar in de stationaire winkels. We hebben een papiersnijder gebruikt om de Sunboard Sheet en FlexKwik of FeviKwik te snijden om de verschillende onderdelen te verbinden.
Hieronder staan enkele stappen om de kleursorteerarm te bouwen:
1) Neem het zonnebankblad.
2) Snijd de zonnebankplaat in stukken nadat u alle zijden met schaalverdeling en stift hebt gemeten zoals weergegeven in de afbeelding.
3) Houd nu de twee stukken zonnepaneel bij elkaar en giet er een druppel FeviKwik op om de stukken aan elkaar te plakken. Blijf de stukken verbinden door de afbeelding te volgen.
4) Nadat alle stukjes zijn samengevoegd, ziet deze kleursorteermachine er ongeveer zo uit:
TCS3200 kleurensensor
TCS3200 is een kleurensensor die met de juiste programmering een willekeurig aantal kleuren kan detecteren. TCS3200 bevat RGB-arrays (rood groen blauw). Zoals weergegeven in figuur op microscopisch niveau kan men de vierkante dozen in het oog op de sensor zien. Deze vierkante dozen zijn reeksen RGB-matrix. Elk van deze dozen bevat drie sensoren: een is voor het detecteren van de intensiteit van het ROOD, een is voor het detecteren van de intensiteit van het GROENE licht en de laatste voor het detecteren van de intensiteit van het BLAUWE licht.
Elk van de sensorarrays in deze drie arrays wordt afzonderlijk geselecteerd, afhankelijk van de vereisten. Daarom staat het bekend als programmeerbare sensor. De module kan worden gebruikt om de specifieke kleur aan te voelen en de andere te verlaten. Het bevat filters voor dat selectiedoeleinden. Er is een vierde modus genaamd ' geen filtermodus' waarin de sensor wit licht detecteert.
Arduino kleurensorteerder schakelschema
Het schakelschema voor deze Arduino Color Sorter is vrij eenvoudig te maken en vereist niet veel aansluitingen. Het schema wordt hieronder gegeven.
Dit is het circuit achter de opstelling van een kleurensorteermachine:
Programmeren van Arduino Uno voor het sorteren van kleurrijke ballen
Het programmeren van Arduino UNO is vrij eenvoudig en vereist een eenvoudige logica om de stappen bij het sorteren van kleuren te vereenvoudigen. Compleet programma met demonstratievideo aan het eind.
Omdat de servomotor wordt gebruikt, is de servobibliotheek een essentieel onderdeel van het programma. Hier gebruiken we twee servomotoren. De eerste servo zal de gekleurde ballen van de beginpositie naar de TCS3200-detectorpositie verplaatsen en vervolgens naar de sorteerpositie gaan waar de bal zal worden gedropt. Nadat hij naar de sorteerpositie is gegaan, laat de tweede servo de bal met zijn arm naar de gewenste kleurbak vallen. Bekijk het volledige werk in de video aan het einde.
De eerste stap is het opnemen van alle bibliotheken en het definiëren van de servovariabelen.
# omvatten
De TCS3200-kleurensensor kan werken zonder bibliotheek, omdat er alleen de frequentie van de sensorpin hoeft te worden gelezen om de kleur te bepalen. Definieer dus gewoon de pincodes van TCS3200.
#define S0 4 #define S1 5 #define S2 7 #define S3 6 #define sensorOut 8 int frequentie = 0; int kleur = 0;
Maak de geselecteerde pinnen als output, aangezien dit de kleurenfotodiode hoog of laag maakt en de Out-pin van TCS3200 als input neemt. De OUT-pin geeft de frequentie. Selecteer aanvankelijk de schaling van de frequentie op 20%.
pinMode (S0, OUTPUT); pinMode (S1, OUTPUT); pinMode (S2, OUTPUT); pinMode (S3, OUTPUT); pinMode (sensorOut, INPUT); digitalWrite (S0, LOW); digitalWrite (S1, HIGH);
De servomotoren zijn aangesloten op pin 9 en 10 van Arduino. De pickup-servo die de gekleurde ballen oppikt is verbonden met pin 9 en de drop-servo die de gekleurde ballen laat vallen volgens de kleur is verbonden met pin 10.
pickServo.attach (9); dropServo.attach (10);
Aanvankelijk wordt de pick-servomotor in de aanvankelijke positie gezet, in dit geval 115 graden. Het kan verschillen en kan dienovereenkomstig worden aangepast. De motor beweegt na enige vertraging naar het detectorgebied en wacht op de detectie.
pickServo.write (115); vertraging (600); voor (int i = 115; i> 65; i--) { pickServo.write (i); vertraging (2); } vertraging (500);
De TCS 3200 leest de kleur en geeft de frequentie van de Out Pin.
color = detectColor (); vertraging (1000);
Afhankelijk van de gedetecteerde kleur, beweegt de servomotor met een bepaalde hoek en laat de kleurenbal vallen in zijn respectievelijke doos.
switch (kleur) { case 1: dropServo.write (50); breken; geval 2: dropServo.write (80); breken; geval 3: dropServo.write (110); breken; geval 4: dropServo.write (140); breken; geval 5: dropServo.write (170); breken; geval 0: pauze; } vertraging (500);
De servomotor keert terug naar de beginpositie om de volgende bal op te pakken.
voor (int i = 65; i> 29; i--) { pickServo.write (i); vertraging (2); } vertraging (300); voor (int i = 29; i <115; i ++) { pickServo.write (i); vertraging (2); }
De functie detectColor () wordt gebruikt om de frequentie te meten en vergelijkt de kleurfrequentie om de conclusie van kleur te maken. Het resultaat wordt afgedrukt op de seriële monitor. Vervolgens retourneert het de kleurwaarde voor gevallen om de servomotorhoek te verplaatsen.
int detectColor () {
Schrijven naar S2 en S3 (LOW, LOW) activeert de rode fotodiodes om de rode kleurdichtheid af te lezen.
digitalWrite (S2, LOW); digitalWrite (S3, LOW); frequentie = pulseIn (sensorOut, LOW); int R = frequentie; Serial.print ("Red ="); Serial.print (frequentie); // afdrukken RODE kleurfrequentie Serial.print (""); vertraging (50);
Door naar S2 en S3 te schrijven (LOW, HIGH), worden de blauwe fotodiodes geactiveerd om de blauwe kleurdichtheid af te lezen.
digitalWrite (S2, LOW); digitalWrite (S3, HIGH); frequentie = pulseIn (sensorOut, LOW); int B = frequentie; Serial.print ("Blauw ="); Serial.print (frequentie); Serial.println ("");
Door naar S2 en S3 (HIGH, HIGH) te schrijven, worden de groene fotodiodes geactiveerd om de groene kleurdichtheid te meten.
digitalWrite (S2, HIGH); digitalWrite (S3, HIGH); // Lezen van de uitgangsfrequentie frequentie = pulseIn (sensorOut, LOW); int G = frequentie; Serial.print ("Groen ="); Serial.print (frequentie); Serial.print (""); vertraging (50);
Vervolgens worden de waarden vergeleken om de kleurbeslissing te nemen. De aflezingen zijn verschillend voor verschillende experimentele opstelling, aangezien de detectieafstand voor iedereen varieert bij het maken van de opstelling.
if (R <22 & R> 20 & G <29 & G> 27) { kleur = 1; // Red Serial.print ("Detected Color is ="); Serial.println ("ROOD"); } if (G <25 & G> 22 & B <22 & B> 19) { kleur = 2; // Orange Serial.println ("Orange"); } if (R <21 & R> 20 & G <28 & G> 25) { kleur = 3; // Green Serial.print ("Detected Color is ="); Serial.println ("GROEN"); } if (R <38 & R> 24 & G <44 & G> 30) { kleur = 4; // Yellow Serial.print ("Detected Color is ="); Serial.println ("GEEL"); } if (G <29 & G> 27 & B <22 & B> 19) { kleur = 5; // Blue Serial.print ("Detected Color is ="); Serial.println ("BLAUW"); } kleur teruggeven; }
Dit maakt de kleursorteermachine af met TCS3200 en Arduino UNO. U kunt het ook programmeren om indien nodig meer kleuren te detecteren. Als je twijfelt of suggesties hebt, schrijf dan naar ons forum of reageer hieronder. Bekijk ook de onderstaande video.