Abstands- und Farberkennungssensor: TCRT5000

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
TCRT5000-Modul

→ zurück zur Übersicht: WS 18/19: Sensortechnik (MTR)

Autor: Isaac Mpidi-Bita
Betreuer: Prof. Schneider

Aufgabe

In dieser Artikel werden folgenden Punkte abgearbeitet:

  • Auswahl eines Primärsensors
  • Analyse des Sensors anhand Literaturrecherche und praktisch
  • Signalverarbeitung
  • Bewertung der Sensordaten
  • Inbetriebnahme des Abstands- und Farberkennungssensor: TCRT5000

Einleitung

Der Abstandsensor IR TRCR5000 ist ein Abstandsmesser, der in der Kategorie von Lichtsensor bzw. optoelektronischen Sensoren gehört, weil er empfangene Licht in einem elektrischen Signal mit Hilfe des photoelektrischen Effekts umwandelt. Der Sensor kann verwendet sowohl um den Abstand zu messen, als auch um Information über die Helligkeitsgrad des gegenüber liegenden Objekt zu bekommen. Der Sensor kann in vielen Bereiche angewendet werden, wie z.B. Hinderniserkennung, Line Tracking, Materialerkennung und Schwarz-Weiß-Farbenerkennung, usw.

Technische Übersicht

Der Sensor besteht aus einem IR Sender und Empfänger (TRCR5000), einem Spannungsregler LM393 und einem Potentiometer.

Eigenschaft Daten
Abmessung
31.96 mm x 14.2 mm x 20.8 mm
Spannungsversorgung
3.3 V bis 5 V
Montage Schraubloch für einfache Befestigung
in z-Richtung
Messbereich zur
Entfernungsmessung
1 mm bis ungefähr 13 cm
Weiß-Schwarz-Unterscheidung
1 mm - 25 mm

Prinziperklärung

Das TRCR5000 Modul nutzt das das photoelektrische Effekt [1] zur Weg bzw. Abstandserfassung. Der Primärsensor ist mit einer Infrarot-LED und einem Phototransistor ausgestattet. Die Infrarot-LED sendet Licht im Infrarotbereich. Dies wird vom Objekt reflektiert und vom Phototransistor empfängt. Das Prinzip wird als Reflexion [2] bezeichnet.

Equipment

Verwendete Software

Für die Abarbeitung der obgenannten Aufgabestellungen wurde folgenden Software verwendet:

  • Arduino Software IDE 1.8.1
  • MATLAB/Simulink 2018a
  • Fritzing
  • Microsoft Excel und OneNote 2016
  • Tortoise SVN

Verwendete Komponente

Für die Abarbeitung der obgenannten Aufgabestellungen wurde folgenden Komponente eingesetzt:

  • Abstands- und Farberkennungssensor: TCRT5000
  • LCD Display mit I2C Anschluss
  • Arduino UNO R3 (Sunfounder Edition)

Messkette

  • Primärsensor

Dient zur Umsetzung der Messgröße in elektrischen Signal, in diesem Fall das TCRT5000.

  • Verstärker

Das Modul ist mit eine OpAmp ausgerüstet. Und dies dient zur Verstärkung des Signals.

  • Analog-Digital Umsetzer

Der Sensor selbst besitzt keinen integriertes A/D-Wandler. Zur weiteren Verarbeitung wird der A/D-Wandler des Arduino verwendet. Daraus folgt, dass die Rohdaten Werte zwischen 0 und 1023 sind.

  • Auswertung

Zur Auswertung der Messwerte, werden ein PC und ein Arduino-Mikrocontroller benötigt.

Hardwareaufbau

Schaltung des Bauteils

Schaltplan

Schaltplan

Steckplatine

Steckplatine

Softwarearchitektur

Signalverarbeitung

Mathematische Hilfsmittel

Zur Ermittlung der Kennlinie wird die stückweise lineare Interpolation [3] verwendet. Dass heißt, es wird jedes mal einen gerade zwischen zwei diskrete Messwerte gezogen.

Die allgemeine Gleichung einer Gerade lautet:

 : die Steigung
 : die Verschiebung.


Die Steigung lässt sich folgendermaßen berechnen:

Die Verschiebung lässt sich aus der allgemeine Gleichung wie folgt darstellen:

Setzt man einer der Punkt der gerade in (2), erhält man:




Setzt man zusätzlich ein, erhält man:

Anschließend werden und in der allgemeine Gleichung eingesetzt. Mit ein Paar Umformungen erhält man:

Softwaremäßig lässt sich der Zusammenhang so implementieren:

 
float lineareInterpolation(float x, float x_1, float x_2, float y_1, float y_2)
{
  return (y_2 - y_1) *  (x - x_1)/ (x_2 - x_1) + y_1;
}

Abstandsmessung

Der Abstand wird durch den analogen Eingang zur Verfügung gestellt. Anhand mehreren Testen hat sich rausgestellt, dass das Modul Änderung bis zu 12 cm erkennen kann. Dies sind jedoch schwierig zu bewerten da mehreren Faktoren Einfluss auf der Messung haben.

Einfluss der Farbe auf die Messung

Der TCRT5000-Sensor nutzt Licht und das Reflexion für die Abstandsmessung. Daher hängt der gemessene Wert vom das Objekt zurückgesendeten Licht ab. Daraus folgt, dass man beim hellen unterschiedliche Messwerte hat als beim dunkelen Objekten.


Kennlinie des Sensors für helle Oberfläche
Kennlinie des Sensors für helle Oberfläche
Abstand in [cm] Rohdaten des Sensors
1
92
2
223
3
600
4
750
5
829
6
870
7
870
8
899
9
918
10
931
11
941
12
957
13
965




Kennlinie des Sensors für dunkele Oberfläche
Kennlinie des Sensors für dunkele Oberfläche
Abstand in [cm] Rohdaten des Sensors
1
700
2
800
3
900
4
919
5
930
6
935
7
936
8
937
9
939
10
940
11
940
12
941



Umwelteinflüsse auf die Messung

Weitere Faktoren können Einfluss auf die Messung haben. Dies könnte z.B. die Umgebungstemperatur, die Raumbeleuchtung, die Betriebspannung, die Betriebstemperatur, usw sein.

Hier kann man sehen, dass man verschiedenen sich ändert kontinuierlich.

Umgang mit der Messunsicherheit

Um die Messunsicherheit zur bekämpfen, sollte man:

  • mehreren Testmessung in folge durchführen (immer neu kalibrieren)
  • der Mittelwert von mehrere Werte bilden und dies als Referenzpunkt nutzen
  • Nachkommastellen vernachlässigen
  • soweit es geht konstante Raumbeleuchtung halten (z.B: gleiche Lichtquelle)
  • soweit es geht konstante Raumtemperatur halten (z.B: mit Hilfe der Heizung einstellen)


Farberkennung

Die Farberkennung-Modus wird die LED hinter dem Modul angekündigt. Das Module sendet ein digitale Signal: 1 für dunkele Objekten und 0 für helleren Objekten.

Code

 
void loop() {
    // put your main code here, to run repeatedly:
    float fAbstand = 0; 
    int fAbstand_in_cm = 0;
    int i = 1; 

    /*---------------------------------*/
    /* Sensorwerte einlesen            */
    /*---------------------------------*/
    value_D0 = digitalRead(SENSOR_DIGITAL_PIN);   // digitale input vom IR distance sensor auslesen
    
    //Mittelwertwertermittlung der analogen Messwerte --> Zuverlässigkeit erhöhung
    for (i = 1; i <= 50; i++)
    {
      value_A0 = analogRead(SENSOR_ANALOG_PIN);   // analoge input vom IR distance sensor auslesen
      fAbstand = fAbstand + value_A0;
    }
    fAbstand = fAbstand / i;               
    
    /*---------------------------------*/
    /* Ermittlung des Abstands         */
    /*---------------------------------*/
    fAbstand_in_cm = abstandsberechnung(fAbstand);

    /*---------------------------------*/
    /* Ausgabe                         */
    /*---------------------------------*/
    SerielleAusgabe(value_A0, fAbstand_in_cm, value_D0)

    DisplayAusgabe(fAbstand_in_cm, value_D0);

    delay(50);
    
}

Bewertung des Sensors

Vorteile

  • Schnelle Messung (100 Messungen in 1,5 s)
  • Berührungslose Messung
  • Einfache Bauweise
  • Geringe Leistungsaufnahme
  • Schnelle Reaktionszeit
  • Geringe Platzbedarf

Nachteile

  • Temperaturabhängigkeit
  • Helligkeitsabhängigkeit
  • Materialabhängigkeit
  • Schwierigkeit bei der Erstellung eine Kennlinie

Gesamtfazit

Lernerfolg

Für der Auswahl des Sensors hat man sich Gedanken gemacht, welche Sensor bereits im Lager steht und welche man gebrauchen könnte. Ein weiteren Kriterium des Auswahl des Sensor war die Herausforderung der Erarbeitung. Da die Arbeit semesterbegleitend war, war es wichtig ein Sensor auszuwählen, mit dem man nach und nach Anhand Kenntnisse der Sensortechnik-Vorlesung in Verbindung bringen könnte.

Grundsätzlich wäre es einfacher und schneller gewesen einen Sensor mit bereitgestellten Bibliotheken oder mit einen schon vorgefertigten Lösung im Internet auszuwählen. Dieser Weg wäre für der Lernerfolg widersprüchlich und wäre keine Herausforderung.



Vor der wurden einige Ideen und Pläne zur späteren Realisierung erarbeitet. Die größte Fragestellung war, wie man mit einem einzelnen Sensor und dem dazugehörigen Datenkabel eine Signalauswertung durchführen kann. Sicherlich wäre die einfachste und schnellste Lösung die gewesen den NXT Ultraschallsensor direkt an das Lego Mindstorms Zielsystem anzuschließen, die Lego Toolbox zu benutzen und auszuwerten. Dieses Vorgehen wäre aber keine Herausforderung gewesen, sodass der über einen Arduino Uno als Zielsystem gegangen wurde. Hierbei kommuniziert der Arduino mit dem NXT Ultraschallsensor per I2C. Die empfangenen Messwerte werden daraufhin per USB in MATLAB/Simulink verarbeitet. Dazu wird der COM-Port in der Entwicklungsumgebung ausgelesen.

YouTube Video

Schwierigkeitsgrad

( ***** )

Quellenverzeichnis

--- → zurück zur Übersicht: WS 18/19: Sensortechnik (MTR)