Operácie

Triediaca stanica: Rozdiel medzi revíziami

Zo stránky SensorWiki

Balogh (diskusia | príspevky)
Vytvorená stránka „{| |Autor: || '''Meno Priezvisko''' |- |Študijný odbor: || Aplikovaná informatika || 3. Bc. ('''2019''') |} == Opis projektu == '''Čo''' je jeho cieľom,…“
 
StudentDTV (diskusia | príspevky)
 
(42 medziľahlých úprav od rovnakého používateľa nie je zobrazených.)
Riadok 1: Riadok 1:
{|
{|
|Autor:      || '''Meno Priezvisko'''  
|Autor:      || '''Patrik Herčút'''  
|-
|-
|Študijný odbor:  || Aplikovaná informatika || 3. Bc.  ('''2019''')  
|Študijný odbor:  || Robotika a kybernetika || 3. Bc.  ('''2019''')  
|}
|}


== Opis projektu ==
== Opis projektu ==
[[Súbor:GifVideo.gif|náhľad|Triediaca stanica]]
Cieľom projektu je vytvorenie triediacej stanice farebných cukríkov '''SKITTLES'''.


'''Čo''' je jeho cieľom, ako bude vyzerať výsledok.
__TOC__


'''Prečo?'''  
'''Prečo?'''  


# Prečo práve tento projekt, aký má zmysel, komu bude osožný...  
Balíček SKITTLES obsahuje viacero farieb cukríkov s rôznymi príchuťami. Po roztriedení môže konzument začať ktoroukoľvek farbou alebo príchuťou bez nutnosti prehľadávania obsahu balíčka.  
# Druhy '''riadok'''
 


'''Ako ?'''
'''Ako ?'''


Sem príde podrobný návod na výrobu.
Triediaca stanica pozostáva z týchto častí:
#Násypník
#RGB snímač
#IR snímač
#Podávač
#Servomotor podávača 
#Triediaci mechanizmus
#Servomotor triediaceho mechanizmu
[[Súbor:Obrazok1.png]]
 
==3D Model==
[[Médiá: PrílohaDTV.pdf|Model]] mechanizmu pre podávanie a triedenie cukríkov.
 
[[Súbor:3D model.jpg|center|300px]]
 
== Servomotory ==
 
Pre chod podávacieho zariadenia je použitý [http://servodatabase.com/servo/gws/s35-std servomotor] s kontinuálnym chodom. Triedenie zabezpečuje klasické modelárske [https://www.thanksbuyer.com/gws-digital-servo-sail-winch-s125-1t-2bb-360-degree-7-6kg-106oz-in-1-28sec-24047 servo].
[[Súbor:ServoObr1.jpg|center|300px]]
 
== Snímače ==
[[Súbor:ServoObr2.jpg|náhľad|Snímače podávača|200px]]
Snímanie farby cukríkov zabezbečuje [https://www.adafruit.com/product/1334 RGB snímač], správnu pozíciu podávacieho bubna určuje [https://www.sparkfun.com/products/9453 IR snímač.]


* Popisat proces premeny napadu na hmotny (funkcny) produkt
[[Súbor:RGB_Snimac.jpg|left|300px]]
* Vyspecifikovat potrebny material (uprednostnujeme vlastnych alebo existujucich komponentov, v pripade potreby vieme pomoct)<BR> vystupom bude zhmotneny napad a aj navod - krok za krokom pre reprodukciu produktu
[[Súbor:IRsnimac.jpg|center|200px]]




[http://www.example.com link title]
==Konštrukcia==


[[Súbor:MojObrazok2.jpg|center|300px]]
Pre vytvorenie konštrukcie je využitá buková [https://www.obi.sk/police-a-nabytkove-dosky/preglejka-1200-mm-x-600-mm-hrubka-4-mm-buk/p/5010418 preglejka] hrúbky 4mm. Laserom boli narezané jednotlivé diely z ktorých je zostavená celá konštrukcia triediacej stanice. Rozmer preglejky 1200*600 bol upravený kvôli rozmeru rezacieho stola lasera, rozmer 800*600 (žltý obrys na obrázku).
[[Súbor:NakresKonstrukcie.png|900px]]


[[Médiá:MojZdrojak.c]]




'''Použité zdroje:'''
Rezanie konštrukcie.


* Zoznam použitej literatúry, vrátane katalógových údajov (datasheet), internetových odkazov a pod.
[[Súbor:RezanieKonstrukcie.jpg|850px]]


__TOC__
Kvôli pohldnému rozoberaniu boli na spájanie použití puzdrové matice s rôznou dĺžkou skrutiek (20,30mm).
[[Súbor:PuzdrovaMaticaSoSrobom.jpg|170px]]
 
[[Súbor:obrazok_20190524_163948.jpg|450px]]


== Analýza ==


V tejto časti popíšete ako idete daný problém riešiť. Uvediete sem aj všetky potrebné technické údaje,
ktoré sú potrebné na úspešné vyriešenie projektu. Napríklad:


* popis komunikačnej zbernice (i2c, 1-wire, RS-232 a pod.)
* obrázok zapojenia vývodov použitej súčiastky
* odkaz na katalógový list
* priebehy dôležitých signálov
* este jedna polozka




== Popis riešenia ==


Sem opíšete ako konkrétne ste problém vyriešili. Začnite popisom pripojenia k procesoru
Vyhotovená konštrukcia.
(nezabudnite na schému zapojenia!) a zdôraznite ktoré jeho periférie ste pritom využili.  


'''Schéma zapojenia snímača'''
[[Súbor:obrazok_20190524_163901.jpg|850px]]
[[Súbor:Zapojenie.png]]


[[Súbor:Example.jpg]]
==Schéma zapojenia==
Schéma zapojenia servomotorov a ostatných periférií.


Pozn.: Názov obrázku musí byť jedinečný, uvedomte si, že Obr1.jpg už pred vami skúsilo
[[Súbor:SchemaDTV.png|850px]]
nahrať už aspoň 10 študentov.  


[[Súbor:MojObrazok.jpg|center|250px]]
==Výsledný proces triedenia==
[[Súbor:GifVideo.gif|center]]


=== Algoritmus a program ===
== Použité zdroje ==


Uveďte stručný popis algoritmu, v akom jazyku a verzii vývojového prostredia ste ho vytvorili.  
Užitočné odkazy:
Je vhodné nakresliť aspoň hrubú štruktúru programu napríklad vo forme vývojového diagramu.  
* [https://www.adafruit.com/product/1334 Adfruit RGB sensor]
Rozsiahly program pre lepšiu prehľadnosť rozdeľte do viacerých súborov.
* [https://www.sparkfun.com/products/9453 Sparkfun IR sensor]
* [https://www.tinkercad.com Tinkercad schéma zapojenia]
* [https://www.arduino.cc Arduino IDE]


Vyberte podstatné časti zdrojového kódu, použite na to prostredie ''source'':
== Program ==
Program triediacej stanice:


<source lang="c">
<source lang="c">
/* A nezabudnite zdroják hojne komentovať  */


int main(void) {
#include "Servo.h"
      
#include "Wire.h"
     printf("Hello, World!\n");   
#include "Adafruit_TCS34725.h"
    return(0);
 
Adafruit_TCS34725 tcs = Adafruit_TCS34725(TCS34725_INTEGRATIONTIME_50MS, TCS34725_GAIN_1X);
 
//variables
 
Servo feed;  // feed wheel
Servo sort;    // deflection mechanism
 
int IR_pin = 0;  //IR sensor
int IR_value=0;  //value from IR sensor
int Led_pin=11; // RBG sensor lighting
 
int blue = 10;    //RGB led blue pin
int green  = 9;  //RGB led green pin   
int red  = 6;      //RGB led red pin
 
//*Color conditions of candies
    int sOrange[6]={140,175,45,65,22,32};
    int sGreen[6]={80,100,95,115,30,40};
    int sRed[6]={132,175,55,70,32,40};
     int sPurple[6]={110,137,73,84,40,50};
     int sYellow[6]={117,137,70,83,20,32};
 
void setup() {
  Serial.begin(9600);
  Serial.println("Arduino sotring machine");
 
  feed.attach(5);   
  feed.write(0);
 
  sort.attach(3);
  sort.write(90);
 
  pinMode(Led_pin,OUTPUT);
  digitalWrite(Led_pin,LOW);
 
  pinMode(green,OUTPUT);
  pinMode(red,OUTPUT);
  pinMode(blue,OUTPUT);
 
  //Control conection to RGB sensor
  if (tcs.begin()) {
  Serial.println("Sensor ready");
  } else {
  Serial.println("Sensor filed");
  while (1);
  }
 
}
}
</source>


Nezabudnite však nahrať aj kompletné zdrojové kódy vášho programu!
void loop() {
  IR_value=analogRead(IR_pin);
 
  if(IR_value>450)    //feed wheel interupt
  {
    feed.write(90);
    delay(350);
    digitalWrite(Led_pin,HIGH);
 
    //color detection
    int colordec=detection(); 
    //candy classification
    divert(colordec);
    delay(300);
    feed.write(0);
    delay(350);
  }


Zdrojový kód: [[Médiá:Serial.h|serial.h]] a [[Médiá:Pip.c|main.c]]
}


[[Médiá:MojProgram.c|program.c]]


//function of color detection
int detection(){
    float red, green, blue, clean;
    int color_num;
    String detected="";
   
    tcs.getRGB(&red, &green, &blue);
   
    //write a color spectrum
    Serial.print("R:\t"); Serial.print(int(red));
    Serial.print("\tG:\t"); Serial.print(int(green));
    Serial.print("\tB:\t"); Serial.print(int(blue));
    Serial.print("\t");


=== Výsledok ===
    //conditions of colors
    if((sOrange[0]<red && red<sOrange[1]) && (sOrange[2]<green && green<sOrange[3]) && (sOrange[4]<blue && blue<sOrange[5]))
    {
    detected="orange";
    color_num=1;
    }
    else if((sGreen[0]<red && red<sGreen[1]) && (sGreen[2]<green && green<sGreen[3]) && (sGreen[4]<blue && blue<sGreen[5]))
    {
    detected="green"; 
    color_num=2;
    }
    else if((sRed[0]<red && red<sRed[1]) && (sRed[2]<green && green<sRed[3]) && (sRed[4]<blue && blue<sRed[5]))
    {
    detected="red"; 
    color_num=3;
    }
    else if((sPurple[0]<red && red<sPurple[1]) && (sPurple[2]<green && green<sPurple[3]) && (sPurple[4]<blue && blue<sPurple[5]))
    {
    detected="purple"; 
    color_num=4;
    }
    else if((sYellow[0]<red && red<sYellow[1]) && (sYellow[2]<green && green<sYellow[3]) && (sYellow[4]<blue && blue<sYellow[5]))
    {
    detected="yellow"; 
    color_num=5;
    }
    else{
    detected="blank";
    color_num=0;
    }


Nezabudnite zdokumentovať výsledok vašej práce. Určite sem patria fotografie, video
    Serial.print("Color:\t");
a zhodnotenie ako ste spokojní s výsledkom,  
    Serial.println(detected);
    return color_num;
  }
 
// function of servo 2 positioning 
void divert(int color)
{
  switch (color) {
  case 1: //orange
    sort.write(10);
    analogWrite(red,255);
    analogWrite(green,127); 
    analogWrite(blue,80);
    break;
  case 2: //green
    sort.write(45);
    analogWrite(red,0);
    analogWrite(green,255);
    analogWrite(blue,0);
    break;
  case 3://red
    sort.write(90);
    analogWrite(red,255);
    analogWrite(green,0); 
    analogWrite(blue,0);
    break;
  case 4: //purple
    sort.write(135);
    analogWrite(red,0);
    analogWrite(green,0); 
    analogWrite(blue,255);
    break; 
  case 5: //yellow
    sort.write(170);
    analogWrite(red,255);
    analogWrite(green,255); 
    analogWrite(blue,0);
    break;
  default: //empty
    analogWrite(red,0);
    analogWrite(green,0);
    analogWrite(blue,0);
    break;
  }
}
</source>


Kľúčové slová 'Category', ktoré sú na konci stránky nemeňte.


Zdrojový kód: [[Médiá:ProgramDTV_red.ino|stanica.ino]]


[[Category:DTV2019]]
[[Category:DTV2019]]

Aktuálna revízia z 17:39, 27. máj 2019

Autor: Patrik Herčút
Študijný odbor: Robotika a kybernetika 3. Bc. (2019)

Opis projektu

Triediaca stanica

Cieľom projektu je vytvorenie triediacej stanice farebných cukríkov SKITTLES.

Prečo?

Balíček SKITTLES obsahuje viacero farieb cukríkov s rôznymi príchuťami. Po roztriedení môže konzument začať ktoroukoľvek farbou alebo príchuťou bez nutnosti prehľadávania obsahu balíčka.


Ako ?

Triediaca stanica pozostáva z týchto častí:

  1. Násypník
  2. RGB snímač
  3. IR snímač
  4. Podávač
  5. Servomotor podávača
  6. Triediaci mechanizmus
  7. Servomotor triediaceho mechanizmu

3D Model

Model mechanizmu pre podávanie a triedenie cukríkov.

Servomotory

Pre chod podávacieho zariadenia je použitý servomotor s kontinuálnym chodom. Triedenie zabezpečuje klasické modelárske servo.

Snímače

Snímače podávača

Snímanie farby cukríkov zabezbečuje RGB snímač, správnu pozíciu podávacieho bubna určuje IR snímač.


Konštrukcia

Pre vytvorenie konštrukcie je využitá buková preglejka hrúbky 4mm. Laserom boli narezané jednotlivé diely z ktorých je zostavená celá konštrukcia triediacej stanice. Rozmer preglejky 1200*600 bol upravený kvôli rozmeru rezacieho stola lasera, rozmer 800*600 (žltý obrys na obrázku).


Rezanie konštrukcie.

Kvôli pohldnému rozoberaniu boli na spájanie použití puzdrové matice s rôznou dĺžkou skrutiek (20,30mm).




Vyhotovená konštrukcia.

Schéma zapojenia

Schéma zapojenia servomotorov a ostatných periférií.

Výsledný proces triedenia

Použité zdroje

Užitočné odkazy:

Program

Program triediacej stanice:

#include "Servo.h"
#include "Wire.h"
#include "Adafruit_TCS34725.h"

Adafruit_TCS34725 tcs = Adafruit_TCS34725(TCS34725_INTEGRATIONTIME_50MS, TCS34725_GAIN_1X);

//variables

Servo feed;   // feed wheel 
Servo sort;    // deflection mechanism

int IR_pin = 0;   //IR sensor
int IR_value=0;  //value from IR sensor
int Led_pin=11; // RBG sensor lighting

int blue = 10;    //RGB led blue pin
int green  = 9;  //RGB led green pin    
int red  = 6;      //RGB led red pin

//*Color conditions of candies 
    int sOrange[6]={140,175,45,65,22,32};
    int sGreen[6]={80,100,95,115,30,40};
    int sRed[6]={132,175,55,70,32,40};
    int sPurple[6]={110,137,73,84,40,50};
    int sYellow[6]={117,137,70,83,20,32};

void setup() {
  Serial.begin(9600);
  Serial.println("Arduino sotring machine");

  feed.attach(5);  
  feed.write(0);
  
  sort.attach(3); 
  sort.write(90);
  
  pinMode(Led_pin,OUTPUT);
  digitalWrite(Led_pin,LOW);

  pinMode(green,OUTPUT);
  pinMode(red,OUTPUT);
  pinMode(blue,OUTPUT);
  
  //Control conection to RGB sensor 
   if (tcs.begin()) {
   Serial.println("Sensor ready");
   } else {
   Serial.println("Sensor filed");
   while (1); 
   } 

}

void loop() {
  IR_value=analogRead(IR_pin);

  if(IR_value>450)     //feed wheel interupt
  {
    feed.write(90);
    delay(350);
    digitalWrite(Led_pin,HIGH);

     //color detection
     int colordec=detection();  
 
    //candy classification
    divert(colordec);
    delay(300);
    feed.write(0);
    delay(350);
  }

}


//function of color detection
int detection(){
    float red, green, blue, clean;
    int color_num;
    String detected="";
    
    tcs.getRGB(&red, &green, &blue);
    
    //write a color spectrum
    Serial.print("R:\t"); Serial.print(int(red)); 
    Serial.print("\tG:\t"); Serial.print(int(green)); 
    Serial.print("\tB:\t"); Serial.print(int(blue));
    Serial.print("\t");

    //conditions of colors 
    if((sOrange[0]<red && red<sOrange[1]) && (sOrange[2]<green && green<sOrange[3]) && (sOrange[4]<blue && blue<sOrange[5]))
    {
    detected="orange";
    color_num=1;
    }
    else if((sGreen[0]<red && red<sGreen[1]) && (sGreen[2]<green && green<sGreen[3]) && (sGreen[4]<blue && blue<sGreen[5]))
    {
    detected="green";  
    color_num=2;
    }
    else if((sRed[0]<red && red<sRed[1]) && (sRed[2]<green && green<sRed[3]) && (sRed[4]<blue && blue<sRed[5]))
    {
    detected="red";  
    color_num=3;
    }
     else if((sPurple[0]<red && red<sPurple[1]) && (sPurple[2]<green && green<sPurple[3]) && (sPurple[4]<blue && blue<sPurple[5]))
    {
    detected="purple";  
    color_num=4;
    }
     else if((sYellow[0]<red && red<sYellow[1]) && (sYellow[2]<green && green<sYellow[3]) && (sYellow[4]<blue && blue<sYellow[5]))
    {
    detected="yellow";  
    color_num=5;
    }
    else{ 
    detected="blank";
    color_num=0;
    }

    Serial.print("Color:\t");
    Serial.println(detected);
    return color_num;
  }

// function of servo 2 positioning  
void divert(int color)
{
  switch (color) {
  case 1: //orange
    sort.write(10);
     analogWrite(red,255);
     analogWrite(green,127);  
     analogWrite(blue,80);
    break;
  case 2: //green
    sort.write(45);
    analogWrite(red,0);
    analogWrite(green,255);
    analogWrite(blue,0);
    break;
  case 3://red
    sort.write(90);
    analogWrite(red,255);
    analogWrite(green,0);  
    analogWrite(blue,0);
    break;
  case 4: //purple
    sort.write(135);
    analogWrite(red,0);
    analogWrite(green,0);  
    analogWrite(blue,255);
    break;   
  case 5: //yellow
    sort.write(170);
    analogWrite(red,255);
    analogWrite(green,255);  
    analogWrite(blue,0);
    break;
  default: //empty
    analogWrite(red,0);
    analogWrite(green,0);
    analogWrite(blue,0);
    break;
  }
}


Zdrojový kód: stanica.ino