Farbseperator: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Zeile 158: Zeile 158:
   }
   }
   return Farbe;
   return Farbe;
}
}<\code>


== Komponententest ==
== Komponententest ==

Version vom 21. Januar 2021, 12:37 Uhr

→ zurück zur Übersicht: WS 20/21: Fachpraktikum Elektrotechnik (MTR)

Werbeplakat des Farbseperators [1]



Autoren: Noah Greis, Richard Stanislawski

Betreuer: Prof. Dr. Göbel



Einleitung

Dieses Projekt ist Bestandteil des GET Fachpraktikums des Bachelorstudienganges Mechatronik im 5. Semester und wird hier genauer beschrieben. Der "Farbseperator" soll mit zwei Servomotoren und einem Farbsensor ausgestattet werden. Die Motoren werden von dem programmierten Arduino Mikrocontroller gesteuert und richten sich je nach erkannter Farbe aus. Dabei wird das zu sortierende Material in unterschiedliche Behälter separiert.

Anforderungen

Der "Farbseperator" soll im allgemeinen die folgenden Funktionen erfüllen.

  • separates Aufnehmen zur Farberkennung
  • eindeutige Farberkennung
  • präzise Verteilung in vorgesehene Behälter durch Sortierrutsche


Funktionaler Systementwurf/Technischer Systementwurf

Prozessablauf

Hauptbestandteil des Prozesses ist der Arduino Uno, welcher durch Rückmeldungen des Sensors (Farbsensor), die Servomotoren ansteuert. Dabei ist die Ausrichtung von der Rückmeldung des Sensors abhängig.

CAD-Modell











Dies ist ein fertiges CAD - Modell der Maschine.















Komponentenspezifikation

Komponente Beschreibung Bild
Arduino NANO Der Microcontroller NANO spielt in diesem Projekt die Hauptrolle. Er verarbeitet eingehende Signale des Farbsensors und steuert durch Pulsweitenmodulation die 2 Servomotoren an. Durch seine geringen Abmaße eignet sich diese Modell hervorragend für Projekte mit kleinem Bauraum.
Arduino NANO
MicroServo SG90 Der Servomotor SG90 ist in der Lage auf den Grad° genau seine Position zu bestimmen. Dadurch lassen sich dynamische Funktionen des Farbseperator präzise steuern. Auch hier sind die kleinen Abmaße von großem Vorteil.
ServoMotor SG90
Farberkennungssensor TCS230/TCS3200 Der Farbsensor detektiert dank seiner 8x8 Fotodioden-Matrix farbiges Licht. Die aufgenommenen Daten werden durch einen Strom-Frequenz-Wandler in eine Frequenz umgewandelt welche dann der erkannten Lichtfrequenz entspricht. 4 helle Leuchtdioden erhellen gleichmäßig das auszulesene Objekt.
Farbsensor TCS230/TCS3200

Umsetzung (HW/SW)

Schaltung des Farbseparators [2]



Arduino Pinout
Pin 6 Servomotor Oben
Pin 7 Servomotor Unten
Pin 8 Sensor S0
Pin 9 Sensor S1
Pin 10 Sensor S2
Pin11 Sensor OUT
Pin 12 Sensor S2
Vcc Servos & Sensor
Gnd Servos & Sensor













Funktion FarbeErkennen:

int FarbeErkennen() {

 int Gefunden = 0;
 while (Gefunden == 0){
   
 // Rot-Filter Diode aktivieren
 digitalWrite(SENSOR_S2, LOW); 
 digitalWrite(SENSOR_S3, LOW); 
 frequency = pulseIn(SENSOR_OUT, LOW); // Ausgabewert lesen
 int Rot = frequency;    //Ausgabewert in "Rot" speichern
 
 // Ausgabe des gespeicherten Rot Wertes
 Serial.print("R=");
 Serial.print(frequency);
 Serial.print("  ");
 delay(50);
 // Grün-Filter Diode aktivieren
 digitalWrite(SENSOR_S2, HIGH);
 digitalWrite(SENSOR_S3, HIGH);
 frequency = pulseIn(SENSOR_OUT, LOW);// Ausgabewert lesen
 int Gruen = frequency;   //Ausgabewert in "Gruen" speichern
 
 // Ausgabe des gespeicherten Grün Wertes
Serial.print("G=");
Serial.print(frequency);
Serial.print("  ");
delay(50);
 // Blau-Filter Diode aktivieren
 digitalWrite(SENSOR_S2, LOW);
 digitalWrite(SENSOR_S3, HIGH);
 frequency = pulseIn(SENSOR_OUT, LOW);// Ausgabewert lesen
 int Blau = frequency;   //Ausgabewert in "Blau" speichern
 
 // Ausgabe des gespeicherten Blau Wertes
Serial.print("B=");
Serial.print(frequency);
Serial.println("  ");
delay(50);


//Werte abgleich mit eingestellten Bereichen. Bereiche variieren stark abhängig vom äußeren Lichteinfall.

 if(Rot<68 & Rot>61 & Gruen>94 & Blau<84 & Blau>75){
   Farbe = 1; // Rot
   Gefunden = 1;
 }
 if(Rot<73 & Gruen<65 & Blau<75 & Blau>70){
   Farbe = 2; // Gelb
   Gefunden = 1;
 }
  if(Rot>68 & Gruen<96 & Gruen>89 & Blau>79 & Blau<84){
   Farbe = 3; // Braun
   Gefunden = 1;
 }
  if(Rot>64 & Rot <72 & Gruen>75 & Gruen<83 & Blau<62 & Blau>59){
   Farbe = 4; // Violett
   Gefunden = 1;
 }
 if(Rot<67 & Rot>61 & Gruen>70 & Gruen<78 & Blau<78 & Blau>58){
   Farbe = 5; // Grün
   Gefunden = 1;
 }
 if (Rot<63 & Rot>55 & Gruen<93 & Gruen>80 & Blau>76){
   Farbe = 6; // Orange
   Gefunden = 1;
 }
 if(Rot<65 & Rot>60 & Gruen>65 & Gruen<71 & Blau<55 & Blau >44 ){
   Farbe = 7; //Blau
   Gefunden = 1;
 }
  if (Rot<65 & Rot>59 & Gruen<87 & Gruen>80 & Blau <67 & Blau>60){
   Farbe = 8; // Rosa
   Gefunden = 1;
  }
 }
 return Farbe;

}<\code>

Komponententest

Servo Motor SG90

Die Positionen in Grad [°] sind bei dem SG90 bereits vorbestimmt. Somit reichte es aus , die Positionen von 0° und 180° zu bestimmen, um einerseits die Startposition und anderseits die Umdrehungsrichtung zu bestimmen.

Farbsensor TCS230/TCS3200

Das testen des Farbsensors ist recht einfach. Man ließt die Daten vom NANO aus und erhält die RG(B) Anteile zu der jeweils detektierten Farbe des bekannten Testobjektes. Der blaue Wert war zwar fehlerhaft, jedoch genügten die Rot- und Grünwerte aus. Für die Nutzung als Farbseperator reicht dies jedoch keinesfalls aus.

Da die Farben einerseits von ihren RG(B)- Anteilen sehr nahaneinander liegen und anderseits ihre Werte stark vom Umgebungslicht abhängen, ist eine generelle Auswertung für uns nicht möglich gewesen. Nach jedem Ortswechsel mussten die maximalen Rot- und Grünwerte ausgelesen und über eine Balkendiagramm aufgetragen werden. Somit ließen sich dann Grenzbereiche für die Farben festlegen. Diese variieren stark und sind oft sehr klein.

Ermittelter Farbbereich für "Grün"


In dieser Abbildung sind die gemessenen Maximalwerte des Rot- und Grünanteils. Der Bereich eine Farbe erstreckte sich vom eigenen Maximalwert zu dem welcher als nächstes zuvor lag.





Ergebnis

Dank der recht einfachen Ansteuerung der Servomotoren gelang uns eine präzise Ausrichtung dieser. Sie ermöglichen eine sichere und genaue der Aufnahme und des Transportes des Testobjektes, so wie eine Direktionsvorgabe durch die von einem zweiten Servomotor angetriebene Rutsche.


Auch sehr ähnliche Farben wie z.B. Rot und Orange konnten dank der Bereichsermittlung separiert werden. Auch wenn sich anfangs Bereiche zum Teil durch schwankende Werte überlappten, ließ sich das Problem mit geringfügigen Bereichswertänderungen in den Griff bekommen.


Dank dieser Taktik, ließen sich Kalibrierung des Farbsensors an verschiedenen Standorten verhältnismäßig schnell durchführen.

Zusammenfassung

Durch genaue Kalibrierung ließ sich das Projekt "Farbseparator" gut umsetzen. Das System nimmt farbige Dragées auf und sortiert diese erfolgreich nach Farbe.

Lessons Learned

Man sollte immer die Zeit abschätzen die man für die Umsetzung eines Projektes o.ä. benötigt. Davon sollte man dann die doppelte Menge in einen Zeitplan einberechnen. Abgesehen davon haben wir die spannende Praxis von Microcontrollern und all ihrer weitläufigen Möglichkeiten miterleben können. Auf der Suche nach Problemlösungen hat haben wir Stück für Stück sehr viel Wissen über die Funktionsweise der Komponenten lernen und Anwenden können. Zuvor im Rahmen der Lehrveranstaltungen Elektrotechnik und Informatik erlangtes Fachwissen, hat hier seinen praktischen Nutzen zeigen können.

Projektunterlagen

Projektplan

Projektdurchführung

Dank des geteilten Haushaltes hielt die Pandemie uns nicht davon ab, vom Anfang bis zum Schluss zusammen zu arbeiten. Gemeinsame Recherchen, Abstimmungen so wie Arbeiten am Projekt halfen dabei, dieses Projekt genauso umzusetzen, wie wir uns es vorgestellt hatten. Kurze Kommunikationswege erleichterten diese Umsetzung.

YouTube Video

Weblinks

Literatur


→ zurück zur Übersicht: WS 20/21: Fachpraktikum Elektrotechnik (MTR)

  1. Eigenes Dokument
  2. Eigenes Dokument