Farbseperator: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
(17 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt) | |||
Zeile 4: | Zeile 4: | ||
→ zurück zur Übersicht: [[:Kategorie:ProjekteET_MTR_BSE_WS2020|WS 20/21: Fachpraktikum Elektrotechnik (MTR)]] | → zurück zur Übersicht: [[:Kategorie:ProjekteET_MTR_BSE_WS2020|WS 20/21: Fachpraktikum Elektrotechnik (MTR)]] | ||
[[Datei:Farbseperator.jpg|500px|thumb|right|Werbeplakat des Farbseperators <ref> Eigenes Dokument </ref>]] | [[Datei:Farbseperator.jpg|500px|thumb|right|Werbeplakat des Farbseperators <ref> Eigenes Dokument </ref>]] | ||
<br><br> | |||
'''Autoren:''' [[Benutzer:Noah Greis | Noah Greis]], [[Benutzer:Richard Stanislawski | Richard Stanislawski]] | '''Autoren:''' [[Benutzer:Noah Greis | Noah Greis]], [[Benutzer:Richard Stanislawski | Richard Stanislawski]] | ||
'''Betreuer:''' [[Benutzer:Prof. Mirek Göbel| Prof. Dr. Göbel]]<br/> | '''Betreuer:''' [[Benutzer:Prof. Mirek Göbel| Prof. Dr. Göbel]]<br/> | ||
<br> | <br><br> | ||
== Einleitung == | |||
Dieses Projekt ist Bestandteil des GET Fachpraktikums des Bachelorstudienganges Mechatronik im 5. Semester und wird hier genauer beschrieben. Der "Farbseperator" ist ein Nachbau des Arduino Color Sorter Project<ref> [https://howtomechatronics.com/projects/arduino-color-sorter-project/ :''Arduino Color Sorter Project''], Dejan, abgerufen am 13.03.2021 </ref>. Er 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 == | == Anforderungen == | ||
Der "Farbseperator" soll im allgemeinen die folgenden Funktionen erfüllen. | Der "Farbseperator" soll im allgemeinen die folgenden Funktionen erfüllen. | ||
Zeile 26: | Zeile 24: | ||
== Funktionaler Systementwurf/Technischer Systementwurf == | == Funktionaler Systementwurf/Technischer Systementwurf == | ||
[[Datei:Prozessabaluf.jpg|400px|thumb|left|Prozessablauf]] | [[Datei:Prozessabaluf.jpg|400px|thumb|left|Prozessablauf<ref> Eigenes Dokument </ref>]] | ||
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. | 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. | ||
[[Datei:3D-MODELL.PNG|300px|thumb|left|CAD-Modell]] | [[Datei:3D-MODELL.PNG|300px|thumb|left|CAD-Modell<ref> [https://howtomechatronics.com/projects/arduino-color-sorter-project/ :''Arduino Color Sorter Project'', Dejan, abgerufen am 13.03.2021] </ref>]] | ||
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/> | <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/> | ||
Dies ist ein fertiges CAD - Modell der Maschine. | Dies ist ein fertiges CAD - Modell der Maschine. | ||
Zeile 44: | Zeile 42: | ||
! Beschreibung !! Bild | ! 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. || [[Datei:NANO.jpg.png|200px|thumb|left|Arduino NANO]] | | 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. || [[Datei:NANO.jpg.png|200px|thumb|left|Arduino NANO <ref> [https://www.distrelec.de/en/arduino-nano-board-arduino-a000005/p/11096733/ :''distrelec.de''] , abgerufen am 13.03.2021 </ref>]] | ||
|- | |- | ||
| 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. || [[Datei:SERVO.png|200px|thumb|left|ServoMotor SG90]] | | 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. || [[Datei:SERVO.png|200px|thumb|left|ServoMotor SG90 <ref> [https://www.basicpi.org/2018/05/19/sg90-9g-servo-is-no-wimp/ :''basicpi.org''], abgerufen am 13.03.2021 </ref>]] | ||
|- | |- | ||
| 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. || [[Datei:TCS230.png|200px|thumb|left|Farbsensor TCS230/TCS3200]] | | 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.<ref> [https://elektro.turanis.de/html/prj029/index.html :vgl. ''Farberkennung mit dem TCS230/TCS3200-Sensor''], abgerufen am 13.03.2021 </ref> || [[Datei:TCS230.png|200px|thumb|left|Farbsensor TCS230/TCS3200 <ref> [https://hacktronics.co.in/color-recognition/tcs230-tcs3200-color-recognition-sensor-gy-31-module :''Farberkennungssensor TCS230/TCS3200''], abgerufen am 13.03.2021 </ref>]] | ||
|} | |} | ||
Zeile 77: | Zeile 75: | ||
|} | |} | ||
<br><br><br><br><br><br><br><br><br><br> | <br><br><br><br><br><br><br><br><br><br> | ||
Funktion FarbeErkennen: | |||
<code>int FarbeErkennen() | |||
{ | |||
int Gefunden = 0; | |||
while (Gefunden == 0){ | |||
<span style="background:green">// Rot-Filter Diode aktivieren</span> | |||
digitalWrite(SENSOR_S2, LOW); | |||
digitalWrite(SENSOR_S3, LOW); | |||
frequency = pulseIn(SENSOR_OUT, LOW); <span style="background:green">// Ausgabewert lesen</span> | |||
int Rot = frequency; <span style="background:green">//Ausgabewert in "Rot" speichern</span> | |||
<span style="background:green">// Ausgabe des gespeicherten Rot Wertes</span> | |||
Serial.print("R="); | |||
Serial.print(frequency); | |||
Serial.print(" "); | |||
delay(50); | |||
<span style="background:green">// Grün-Filter Diode aktivieren</span> | |||
digitalWrite(SENSOR_S2, HIGH); | |||
digitalWrite(SENSOR_S3, HIGH); | |||
frequency = pulseIn(SENSOR_OUT, LOW);<span style="background:green">// Ausgabewert lesen</span> | |||
int Gruen = frequency; <span style="background:green">//Ausgabewert in "Gruen" speichern</span> | |||
<span style="background:green">// Ausgabe des gespeicherten Grün Wertes</span> | |||
Serial.print("G="); | |||
Serial.print(frequency); | |||
Serial.print(" "); | |||
delay(50); | |||
<span style="background:green">// Blau-Filter Diode aktivieren</span> | |||
digitalWrite(SENSOR_S2, LOW); | |||
digitalWrite(SENSOR_S3, HIGH); | |||
frequency = pulseIn(SENSOR_OUT, LOW);<span style="background:green">// Ausgabewert lesen</span> | |||
int Blau = frequency; <span style="background:green">//Ausgabewert in "Blau" speichern</span> | |||
<span style="background:green">// Ausgabe des gespeicherten Blau Wertes</span> | |||
Serial.print("B="); | |||
Serial.print(frequency); | |||
Serial.println(" "); | |||
delay(50); | |||
<span style="background:green">//Werte abgleich mit eingestellten Bereichen. Bereiche variieren stark abhängig vom äußeren Lichteinfall.</span> | |||
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 == | == Komponententest == | ||
Zeile 82: | Zeile 165: | ||
=== Servo Motor SG90 === | === Servo Motor SG90 === | ||
Die Positionen in Grad [°] sind bei dem SG90 bereits vorbestimmt. Somit reichte es aus , die | 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 === | === Farbsensor TCS230/TCS3200 === | ||
Zeile 90: | Zeile 173: | ||
Da die Farben einerseits von ihren RG(<s>B</s>)- 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. | Da die Farben einerseits von ihren RG(<s>B</s>)- 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. | ||
[[Datei:Farbbereiche.png|200px|thumb|left|Ermittelter Farbbereich für "Grün"]] | [[Datei:Farbbereiche.png|200px|thumb|left|Ermittelter Farbbereich für "Grün"<ref> Eigenes Dokument </ref>]] | ||
Zeile 123: | Zeile 206: | ||
== Projektunterlagen == | == Projektunterlagen == | ||
=== Projektplan === | === Projektplan === | ||
[[Datei:Projektplan Farbseparator.png]] | [[Datei:Projektplan Farbseparator.png|<ref> Eigenes Dokument </ref>]] | ||
=== Projektdurchführung === | === Projektdurchführung === | ||
Zeile 129: | Zeile 212: | ||
== YouTube Video == | == YouTube Video == | ||
https://hshl.sciebo.de/s/wBI4B2GP7B6byur | |||
== Weblinks == | == Weblinks == |
Aktuelle Version vom 13. März 2021, 17:13 Uhr
→ zurück zur Übersicht: WS 20/21: Fachpraktikum Elektrotechnik (MTR)
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" ist ein Nachbau des Arduino Color Sorter Project[2]. Er 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
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.
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. | |
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. | |
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.[7] |
Umsetzung (HW/SW)
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;
}
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.
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
https://hshl.sciebo.de/s/wBI4B2GP7B6byur
Weblinks
Literatur
→ zurück zur Übersicht: WS 20/21: Fachpraktikum Elektrotechnik (MTR)
- ↑ Eigenes Dokument
- ↑ :Arduino Color Sorter Project, Dejan, abgerufen am 13.03.2021
- ↑ Eigenes Dokument
- ↑ :Arduino Color Sorter Project, Dejan, abgerufen am 13.03.2021
- ↑ :distrelec.de , abgerufen am 13.03.2021
- ↑ :basicpi.org, abgerufen am 13.03.2021
- ↑ :vgl. Farberkennung mit dem TCS230/TCS3200-Sensor, abgerufen am 13.03.2021
- ↑ :Farberkennungssensor TCS230/TCS3200, abgerufen am 13.03.2021
- ↑ Eigenes Dokument
- ↑ Eigenes Dokument
- ↑ Eigenes Dokument