Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Arduino Color Sorter-project

In dit artikel laat ik je zien hoe je een Arduino Color Sorter kunt maken. Je kunt de volgende video bekijken of het geschreven artikel hieronder lezen.

Ontwerp

Alles wat we nodig hebben voor dit Arduino-project is één kleurensensor (TCS3200) en twee servomotoren voor hobbyisten, wat dit project vrij eenvoudig maar toch erg leuk maakt om te bouwen. In de eerste plaats heb ik met behulp van de Solidworks 3D-modelleringssoftware het ontwerp van de kleurensorteerder gemaakt en hier is het werkingsprincipe:

  • Aanvankelijk vallen de gekleurde kegels die in de oplader worden vastgehouden in het platform dat op de bovenste servomotor is bevestigd.
  • Vervolgens draait de servomotor en brengt de kegel naar de kleurensensor die de kleur detecteert.
  • Daarna draait de onderste servomotor naar de specifieke positie en dan draait de bovenste servomotor weer totdat de kegel in de geleiderail valt.

Hier kunt u het 3D-model downloaden, evenals de tekeningen met alle afmetingen die nodig zijn om dit Arduino-project te bouwen.

U kunt dit 3D-model vinden en downloaden, en het ook verkennen in uw browser op Thangs.

Download het montage 3D-model op Thangs.

De volgende tekeningen kunnen worden gebruikt voor het lasersnijden van alle onderdelen voor de behuizing:

De Arduino-kleurensorteerder bouwen

Het materiaal dat ik voor dit project heb gebruikt, is een tick-vezelplaat van 3 mm. Ik teken de onderdelen op de vezelplaat opnieuw volgens de tekeningen en zaag met een kleine handzaag alle onderdelen op maat.

Toen ik alle onderdelen klaar had, begon ik ze in elkaar te zetten. Eerst heb ik de buitenste delen in elkaar gezet met een lijmpistool.

Vervolgens heb ik met universele lijm de twee servomotoren op hun platforms gelijmd en aan het geheel bevestigd.

Daarna heb ik opnieuw met een lijm de geleiderail op de onderste servomotor bevestigd, evenals de steun en het platform dat nodig is voor de bovenste servomotor.

Vervolgens heb ik een schakelaar en een stroomaansluiting geplaatst om de Arduino van stroom te voorzien met een 5V-adapter en op het derde platform heb ik de kleurensensor geplaatst.

Ik heb de componenten met elkaar verbonden volgens de volgende schakelschema's.

U kunt de benodigde componenten voor dit Arduino-project vinden via onderstaande links:

  • TCS230 TCS3200 kleurensensor…….
  • Arduino Nano ………………………….
  • Broodplank en springdraden ……… 
  • Servomotor …………………………….
  • Schakelaar……………………………….……..
  • Stroomaansluiting………………………….……

Arduino Color Sorter-broncode

Op dit punt moeten we eerst de Arduino programmeren en vervolgens de montage voltooien. Hier is de Arduino-code:

/*     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;  
}Code language: Arduino (arduino)

Beschrijving van de code:

We moeten dus de "Servo.h" -bibliotheek opnemen, de pinnen definiëren waarop de kleurensensor zal worden aangesloten, de servo-objecten maken en enkele variabelen declareren die nodig zijn voor het programma. In het setup-gedeelte moeten we de pinnen definiëren als uitgangen en ingangen, de frequentieschaal voor de kleurensensor instellen, de servopinnen definiëren en de seriële communicatie starten voor het afdrukken van de resultaten van de kleur die op de seriële monitor wordt gelezen.

In het lusgedeelte begint ons programma met het verplaatsen van de bovenste servomotor naar de positie van de kegellader. Merk op dat deze waarde van 115 past bij mijn onderdelen en mijn servomotor, dus je moet deze waarde en de volgende waarden voor de servomotoren aanpassen aan je build.

Vervolgens gebruiken we de "for"-lus en draaien we de kegel naar de positie van de kleurensensor. We gebruiken een "for"-lus, zodat we de snelheid van de rotatie kunnen regelen door de vertragingstijd in de lus te wijzigen.

Vervolgens zullen we, na een vertraging van een halve seconde, met behulp van de op maat gemaakte functie readColor() de kleur van de kegel lezen. Hier is de code van de aangepaste functie. Met behulp van de vier stuurpennen en de frequentie-uitgangspen van de kleurensensor lezen we de kleur van de kegel. De sensor leest 3 verschillende waarden voor elke kegel, Rood, Groen en Blauw en aan de hand van deze waarden vertellen we wat de werkelijke kleur is. Voor meer details over hoe de TCS3200-kleurensensor werkt, kun je mijn eerdere gedetailleerde tutorial erover bekijken.

Hier zijn de RGB-waarden die ik van de sensor heb gekregen voor elke kegel. Houd er rekening mee dat deze waarden kunnen variëren omdat de sensoren niet altijd nauwkeurig zijn. Daarom laten we met behulp van deze "als" -instructies de sensor een fout van ongeveer +-5 van de geteste waarde voor de specifieke kleur toe. Dus als we bijvoorbeeld een rode kegel hebben, is de eerste "if" -instructie waar en krijgt de variabele "color" de waarde 1. Dus dat is wat de aangepaste functie readColor() doet en daarna een "switch-case ”-statement draaien we de onderste servo naar de specifieke positie. Aan het einde draaien we de bovenste servomotor verder totdat de kegel in de geleiderail valt en sturen deze opnieuw terug naar de beginpositie zodat het proces kan worden herhaald.

Het ontwerp afmaken


Na het uploaden van de code heb ik het Arduino-bord met een lijmpistool vastgezet.

Vervolgens heb ik met behulp van een doorzichtige plastic fles de oplader gemaakt en samen met het bovenste deel aan de montage gelijmd en het project voltooid.

Stel gerust een vraag in de opmerkingen hieronder.


Productieproces

  1. Maak Monitor Ambilight met Arduino
  2. Arduino Pong Game - OLED-scherm
  3. Audiofrequentiedetector
  4. Arduino Tamagotchi Clone - Digital Pet
  5. Draadloze lichtschakelaarmanipulator
  6. Tech-TicTacToe
  7. Bewegingssensor-waterpistool
  8. Arduino Countdown Timer
  9. Arduino RGB-kleurenmixer
  10. Arduino-zonnebloem:een elektronische zonnedanser
  11. RC Porsche Car (Arduino Project)