VLCinstruct

Leren van elkaar

Makerspace, NLT, Techniek

Skittle sorteermachine

Inleiding:

Wij hebben dit project gekozen, omdat we aan het googlen waren over wat we konden maken voor ons arduinoproject. Toen kwamen we terecht op de website howtomechatronics. Daar zagen we een aantal leuke projecten, en hebben uiteindelijk gekozen voor de arduino kleuren sorteerder. Omdat het ons een leuke uitdaging leek, en er veel beweging zat in het apparaat, en we graag wilden weten hoe je zoiets maakt. Lees alles eerst goed door voordat je gaat beginnen.

https://howtomechatronics.com/projects/arduino-color-sorter-project/

Inhoudsopgave:

  • Benodigdheden
  • Wat ga je maken
  • Stappenplan
  • Verbetering
  • Conclusie

Benodigdheden:

  • TCS230 TCS3200 Color Sensor
  • Arduino Nano
  • Breadboard and Jump Wires
  • 2 Servo Motors
  • Usb kabel
  • Houtsnijwerk
  • Computer met Solidworks programma en arduino code programma
  • Dun plastic (bijvoorbeeld van een fles)

Wat ga je maken?

Dit apparaat dat je gaat maken, is ontwikkeld om skittles of m&m’s te onderschijden van kleur, en ze in aparte bakjes te plaatsen. Het is de bedoeling dat je de skittles in de plastic houder doet en vervolgens de machine aan zet. Hierna gaan de skittles een voor een op een draaischijf die is aangesloten op een servo, hiermee gaan ze langs een leurensensor, deze sensor bepaalt de stand van de glijbaan en in welk bakje de skittle vervolgens geduwd wordt door de draaischijf. De glijbaan wordt dus ook bestuurd door een servo. Als alles verloopt volgens plan zullen alle kleuren goed gesorteerd zijn in aparte bakjes.

Stappenplan

Het houten bouwwerk:

Op de website HowToMechatronics staan de Solidworks bestanden bijgevoegd. Met deze bestanden moet je een bestand vormen. Hierdoor snapt een houtsnijmachine hoe hij de vormen moet uitsnijden. Vervolgens laat je dit bestand uitsnijden op een 3 millimeter dik houtvezelplaat. Nu heb je als het ware een bouwpakket gemaakt.

Het in elkaar zetten:

Wanneer je alle onderdelen hebt, kan je dit in elkaar zetten met houtlijm/lijmpistool/alleslijm volgens de bijgevoegde afbeelding. Zorg ervoor dat je de dwarsliggende plankjes niet meteen vastlijmt, omdat je later de bedrading er nog achter langs moet kunnen doen.

Bedrading:

Haal de bedrading van de servo achter alle plankjes langs naar de achterkant van het kastje. Zaag zo nodig een gat in het dak voor de bedrading. Zet de bedrading als volgt in elkaar

.

Als je draadjes te kort zijn kan je de arduino en het breadboard aan de achterkant van het kastje bevestigen. Plaats de kleurensensor en de twee servo’s in de daarvoor bestemde uitgesneden ruimtes. Bevestig nu de draaischijf op de eerste servo, en de glijbaan op de tweede servo, zoals op het plaatje. Als alles klopt kun je alles vastlijmen, als je last hebt van draden die losgaan kun je ze aan elkaar bevestigen met plakband, hierdoor wordt de kans dat ze losgaan kleiner.

De code:

Maak het apparaat klaar voor gebruik en sluit hem aan aan de computer met een usb kabel.
Start nu het arduino code programma op. En knip en plak de code hieronder, of kijk op de  website howtomechatronics.com Check of de poort staat op de Arduino die jij gebruikt. Upload hierna de code naar de arduino. Als het goed is moet je apparaat nu gaan werken. Misschien moet je de manier van hoe de draaischijf/glijbaan op de servo staat veranderen voor het gewenste resultaat.

/*     Arduino Project - Color Sorting Machine
 *
 *  by Dejan Nedelkovski, www.HowToMechatronics.com
 *
 */
#include <Servo.h>

#define S0 2
#define S1 3
#define S2 4
#define S3 5
#define sensorOut 6

Servo topServo;
Servo bottomServo;

int frequency = 0;
int color=0;

void setup() {
  pinMode(S0, OUTPUT);
  pinMode(S1, OUTPUT);
  pinMode(S2, OUTPUT);
  pinMode(S3, OUTPUT);
  pinMode(sensorOut, INPUT);

  // Setting frequency-scaling to 20%
  digitalWrite(S0, HIGH);
  digitalWrite(S1, LOW);

  topServo.attach(7);
  bottomServo.attach(8);

  Serial.begin(9600);
}

void loop() {

  topServo.write(115);
  delay(500);
  
  for(int i = 115; i > 65; i--) {
    topServo.write(i);
    delay(2);
  }
  delay(500);
  
  color = readColor();
  delay(10);  

  switch (color) {
    case 1:
    bottomServo.write(50);
    break;

    case 2:
    bottomServo.write(75);
    break;

    case 3:
    bottomServo.write(100);
    break;

    case 4:
    bottomServo.write(125);
    break;

    case 5:
    bottomServo.write(150);
    break;

    case 6:
    bottomServo.write(175);
    break;
    
    case 0:
    break;
  }
  delay(300);
  
  for(int i = 65; i > 29; i--) {
    topServo.write(i);
    delay(2);
  } 
  delay(200);
  
  for(int i = 29; i < 115; i++) {
    topServo.write(i);
    delay(2);
  }
  color=0;
}

// Custom Function - readColor()
int readColor() {
  // Setting red filtered photodiodes to be read
  digitalWrite(S2, LOW);
  digitalWrite(S3, LOW);
  // Reading the output frequency
  frequency = pulseIn(sensorOut, LOW);
  int R = frequency;
  // Printing the value on the serial monitor
  Serial.print("R= ");//printing name
  Serial.print(frequency);//printing RED color frequency
  Serial.print("  ");
  delay(50);

  // Setting Green filtered photodiodes to be read
  digitalWrite(S2, HIGH);
  digitalWrite(S3, HIGH);
  // Reading the output frequency
  frequency = pulseIn(sensorOut, LOW);
  int G = frequency;
  // Printing the value on the serial monitor
  Serial.print("G= ");//printing name
  Serial.print(frequency);//printing RED color frequency
  Serial.print("  ");
  delay(50);

  // Setting Blue filtered photodiodes to be read
  digitalWrite(S2, LOW);
  digitalWrite(S3, HIGH);
  // Reading the output frequency
  frequency = pulseIn(sensorOut, LOW);
  int B = frequency;
  // Printing the value on the serial monitor
  Serial.print("B= ");//printing name
  Serial.print(frequency);//printing RED color frequency
  Serial.println("  ");
  delay(50);

  if(R<45 & R>32 & G<65 & G>55){
    color = 1; // Red
  }
  if(G<55 & G>43 & B<47 &B>35){
    color = 2; // Orange
  }
  if(R<53 & R>40 & G<53 & G>40){
    color = 3; // Green
  }
  if(R<38 & R>24 & G<44 & G>30){
    color = 4; // Yellow
  }
  if(R<56 & R>46 & G<65 & G>55){
    color = 5; // Brown
  }
  if (G<58 & G>45 & B<40 &B>26){
    color = 6; // Blue
  }
  return color;  
}

Verbeteringen:

Onze problemen waren dat we niet goed wisten op welke manier de draaischijf en de glijbaan op de servo moest worden bevestigd. Hierdoor waren er een aantal complicaties. Ook deed de servo van de glijbaan het niet goed. Verdenking van deze complicatie is: onze kleurensensor werkte niet goed/ de afstand van de kleurensensor was niet goed/ de servo deed het niet/de bedrading klopte niet of er was iets mis in de code.

Conclusie:

Zoals we al zeiden was er een probleem met de glijbaan, hierdoor sorteerde de machine niet. De eerste arduino met de draaischijf deed het perfect dus de skittles gingen wel op de juiste manier door de machine heen ze werden alleen allemaal in hetzelfde bakje gedaan, omdat de glijbaan niet werkte.

Geef een reactie

Thema door Nand Homan en Jeroen van Diepen

Hey, wij gebruiken Cookie's. Hiermee zorgen wij ervoor dat onze site werkt zoals hij bedoeld is. Ons cookie's hebben alleen maar goede bedoelingen, wij gebruiken ze zo minimaal mogelijk. We gebruiken ze niet voor onderzoeken, alleen voor het draaien van de site zelf.

Dus willen jullie Cookie's? Cookie policy