Lux Sensor: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Zeile 35: Zeile 35:
Das dritte Bauteil ist ein Microcontroller in dieser Schaltung wurde ein Microcontroller des Unternehmens Atmel (heute Microchip) verwendet, der sich auf einer Arduino Leiterplatte von Arduino befindet und mit dem Arduino Bootloader betrieben wird. Diese Schaltung lässt sich mit dem gleichen Quelltext auf die meisten Microcontroller auf Arduino Basis übertragen. In diesem Beispiel wurde ein Arduino Uno verwendet, im Video wird ein Arduino Mega benutzt, um zu demonstrieren, dass beide Plattformen den Betrieb unterstüzen.
Das dritte Bauteil ist ein Microcontroller in dieser Schaltung wurde ein Microcontroller des Unternehmens Atmel (heute Microchip) verwendet, der sich auf einer Arduino Leiterplatte von Arduino befindet und mit dem Arduino Bootloader betrieben wird. Diese Schaltung lässt sich mit dem gleichen Quelltext auf die meisten Microcontroller auf Arduino Basis übertragen. In diesem Beispiel wurde ein Arduino Uno verwendet, im Video wird ein Arduino Mega benutzt, um zu demonstrieren, dass beide Plattformen den Betrieb unterstüzen.


{| class="wikitable"
|-
! Bauteil                                      !! Hersteller                          !! Anzahl
|-
| [https://store.arduino.cc/arduino-uno-rev3 Arduino Uno]    || [https://de.wikipedia.org/wiki/Arduino_(Plattform) Arduino]          || 1
|-
| [https://www.adafruit.com/product/1085 ADS1115 16-Bit ADC Platine]              || [https://en.wikipedia.org/wiki/Adafruit_Industries Adafruit] || 1
|-
| Lux Sensor Platine ||  || 1
|}


== Messkette==
== Messkette==

Version vom 1. Januar 2019, 12:58 Uhr

Lux Sensor Platine

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

Autor: Luca Di Lillo:
Betreuer: Prof. Schneider


Mit Hilfe eines Lux Sensors, lässt sich die Beleuchtungsstärke der Umgebung messen. Anders als bei der Leuchtdichte kann der Mensch nicht abschätzen wie groß die Beleuchtungsstärke in einem Raum ist, deshalb muss gemessen werden. Natürlich kann und muss die Leuchtdichte für eine korrekte Aussage auch gemessen werden, allerdings kann der Mensch erkennen, dass die Leuchtdichte direkt im Zentrum einer Leuchte größer ist als auf einem Tisch auf dem das Licht der Leuchte fällt, jedoch kann der Mensch keine Aussage treffen an welchem Punkt eine größere Beleuchtungsstärke ist. Die Beleuchtungsstärke Lux [lx], setzt sich aus dem Lichtstrom in Lumen [lm] und der Fläche in [m²] zusammen.



Die hier dargestellte Sensorplatine enthält vier Sensoren Lux Sensoren, die jeweils ein analoges Signal liefern. Das Signal muss für die weitere Nutzung von einem Analog-Digital-Umsetzer in ein digitales Signal umgewandelt und dann in Lux umgerechnet werden.

Aufgabe

Nutzen von 25 unbestückten Lux Sensor Platinen

- Bestückung von Sensorplatinen in einem Nutzen
- Löten der Sensorplatinen in einem Reflowofen
- Nutzentrennung, um die einzelnen Sensoren zu erhalten
- Inbetriebnahme eines Sensors


Auswertschaltung

Datenblätter

Datenblatt des Sensors: Ambient Light Sensor
Datenblatt des Analog-Digital Umsetzers: Texas Instruments ADS 1115

Sensorplatine

Der eingesetzte Lux Sensor NOA 1212 ist ein SMD Bauelement, aus diesem Grund musste eine Leiterplatte entworfen werden, auf die der Sensor bestückt wurde. Der Schaltungsentwurf dieser Leiterplatte ist dem Datenblatt des Sensors zu entnehmen. Aus Urheberrechtlichen Gründen können die mit Eagle erstellten Schaltungsentwürfe, der hier verwendeten Sensor Platine, nicht gezeigt werden. Nachdem die Leiterplatte entworfen wurde, konnte die Leiterplatten (PCB) bei einem Elektronikhersteller in Auftrag gegeben werden. Die unbestückten Leiterplatten wurden dann bestückt. Dazu wurde im ersten Schritt mit einer Schablone, die das Abbild der Bauteile des Sensors zeigt und einem Pastendrucker, Lotpaste auf die Leiterplatte gerakelt. Danach wurde mit einem automatischen Bestücker die Leiterplatte bestückt und in einem Reflowofen gelötet. Da sich die Bauteile auf einem Nutzen mit je 25 Sensorplatinen befanden mussten diese nun mit einem Nutzentrenner getrennt werden. Im letzten Schritt wurde jede Platine auf Funktion getestet und der Ausschuss wurde aussortiert oder gegebenenfalls repariert.

Schaltung

Fritzing Schaltung

Für die Schaltung sind drei Bauteile nötig. Zum einen die Luxsensor Platine, auf der sich die vier Luxsensoren befinden. Das zweite Bauteil ist eine Leiterplatte auf der sich der Analog-Digital Umsetzer (ADU) befindet. Ausgewählt wurde ein Analog-Digital Umsetzer des Unternehmens Adafruit. Dies hat mehrere Gründe, die Luxsensor Platine hat vier analoge Ausgänge, deshalb wurde ein ADU benötigt auf dem sich ein Multiplexer befindet. Alternativ hätte es die Möglichkeit gegeben an jeden analogen Ausgang der Sensorplatine, einen eigenen ADU anzuschließen, dies hat allerdings den Nachteil, dass die Anzahl der Bauteile vervierfacht werden und somit die Anschaffung der Bauteile steigen würde. Des Weiteren gibt die Luxsensor Platine eine Spannung im milli Volt Bereich aus, deshalb war es nötig ein ADU zu verwenden der solche geringen Spannungen verarbeiten und verstärken kann. Ein Weiteren Vorteil ist, dass Leiterplatten von Adafruit speziell für den Einsatz mit einem Arduino oder vergleichbaren Microcontroller konzipiert sind und kompatible Librarys mitliefern, die eine schnelle Programmierung ermöglichen. Das dritte Bauteil ist ein Microcontroller in dieser Schaltung wurde ein Microcontroller des Unternehmens Atmel (heute Microchip) verwendet, der sich auf einer Arduino Leiterplatte von Arduino befindet und mit dem Arduino Bootloader betrieben wird. Diese Schaltung lässt sich mit dem gleichen Quelltext auf die meisten Microcontroller auf Arduino Basis übertragen. In diesem Beispiel wurde ein Arduino Uno verwendet, im Video wird ein Arduino Mega benutzt, um zu demonstrieren, dass beide Plattformen den Betrieb unterstüzen.

Bauteil Hersteller Anzahl
Arduino Uno Arduino 1
ADS1115 16-Bit ADC Platine Adafruit 1
Lux Sensor Platine 1

Messkette

Messkette














Die Messkette setzt sich aus drei Bauteilen zusammen, der Luxsensor Platine, den Analog-Digital Umsetzer (ADS 1115) und dem Microcontroller (Arduino). In den drei Bauteilen befinden sich weitere elektrische Komponenten die essenziell sind, um die Daten zu verarbeiten. Im folgenden wird unterschieden zwischen dem Primärsensor, Signalvorverarbeitung, Analog-Digital Umsetzer, Bussystem, Digitale Signalverarbeitung und Bewertung der Sensordaten.

Primärsensor

Der Primärsensor ist eine Photodiode. Trifft Licht in Form eines Photons auf die Diode, werden Elektronen aus dem Material der Diode rausgelöst und es entsteht ein kleiner aber messbarer Strom.

Signalvorverarbeitung

Die Signalvorverarbeitung übernimmt ein Verstärker, im Datenblatt Amp genannt. Der Verstärker hat drei Eingänge und einen Ausgang. Ein Eingang ist die Kathode der Photodiode, die zwei weiteren Eingänge sind GB1 und GB2. Mit GB1 und GB2 lässt sich die Verstärkung einstellen. In dem Fall der hier gezeigten Sensorplatine ist GB2 immer auf 3,3 V und GB1 immer auf 0 V, so dass die Verstärkung nicht nachträglich verändert werden kann. Ist GB 2 auf 3,3 V und GB1 auf 0 V, ist der Medium Gain aktiviert [siehe Datenblatt Seite 7], mit dem Medium Gain lassen sich Lux Werte bis ca. 100000 lux aufnehmen. Nach dem Verstärker ist an den Knotenpunkt ein Widerstand RL angeschlossen, der an die Masse angeschlossen ist, so dass am Knotenpunkt eine Spannung gemessen werden kann.

Analog-Digital-Umsetzer

Als Analog Digital Umsetzer wurde ein ADS1115 von Texas Instruments, eingebettet auf eine Leiterplatte von Adafruit, verwendet. Dieser IC enthält neben dem ADC noch weitere Bauteile, die hier essenziel sind. Zum einen ist das ein Multiplexer, denn der ADS1115 kann vier analoge Signale verarbeiten. Danach folgt ein Programmierbarer Verstärker, der es ermöglicht, kleine Messgrößen zu verstärken. Jetzt folgt der eigentliche ADC, der die analogen Signale in digitale Signale wandelt. Zum Schluss werden die Signale an den Datenbus weitergeleitet, dazu mehr im Abschnitt Bussystem. Der Analog Digitalumsetzer im ADS1115 ist ein a ΔΣ ADC (Delta Sigma Modulation). Ein ΔΣ ADC, arbeitet nach dem Prinzip der Überabtastung. Die Eingangssignale werden mit einer hohen Frequenz abgetastet, um ein Aliasing zu vermeide. Danach werden die Signale gefiltert. Das Filter ist ein Digitalfilter, das den Rauschanteil unterdrückt. Da die Sensorplatine vier analoge Signale liefert, ist es sinnvoll diesen Analog-Digital-Umsetzer einzusetzen, da er über eine vier Kanal Multiplexer verfügt. Ein Multiplexer schaltet, wie bei einem Schalter die Signale nacheinander weiter, so dass es möglich ist über eine Leitung, Signale von mehreren Quellen nacheinander weiter zu leiten. Des Weiteren wurde diese ADU eingesetzt, da sie die Daten über einen I²C Bus an den Microcontroller weiterleitet und somit ein geringer Verdrahtungsaufwand nötig ist.

Bussystem

Das Bussystem, über das die Daten an den Microcontroller geliefert werden, ist der I²C (Inter- Integrated Circuit) Bus. Der Busanschluss ist in den IC des Analog Digital Umsetzers eingebettet. Das bedeutet, dass die Digitalen Signale, die aus dem ADU kommen, direkt über die Busleitung versendet werden. Der I²C, ist ein synchroner serieller Bus, das bedeutet, dass die Daten nacheinander über eine Leitung übertragen werden. Der Bus arbeitet nach dem Master Slave Prinzip und besteht aus einer Datenleitung SDA (Signal Data), einer Taktleitung SCL (Signal Clock), sowie einer Spannungsversorgung VDD und GND (Ground).

Digitale Signalverarbeitung

Das Ausgangssignal des Sensors, das digital verarbeitet wurde ist eine Spannung, die mit der Beleuchtungsstärke korrespondiert. Im Datenblatt des Sensors sind Formeln hinterlegt, die es erlauben aus der gemessenen Spannung eine Beleuchtungsstärke zu berechnen. Im Folgenden wird auf die Berechnung der Beleuchtungsstärke eingegangen, die im Microcontroller so umgesetzt wird.



Zuerst wir der Widerstand in Abhängigkeit der Verstärkung berechnet. VDD ist die Spannung, mit der der Sensor versorgt wird, bedingt durch die Sensorplatine sind das hier 3,3V. EVMAX ist der maximale Beleuchtungsstärkewert, der abhängig von dem Verstärkungsfaktor erreicht werden kann, in unserem Fall sind das rund 1000000 lux. Die 100 lux geteilt durch 4,9 µA stehen für den angenäherten Ausgangsstrombei 100 lux, dieser Wert ist wieder abhängig von der zuvor eingestellten Verstärkung, in unserem Fall ist das Medium Gain, der wie schon erwähnt bei dieser Platine nicht verändert werden kann.



Mit Hilfe der zweiten Formel wir dann die aktuelle Beleuchtungsstärke in Lux gemessen. Dazu werden die 100 lux durch 4,9 µA geteilt. Diese Werte kommen als angenäherter Strom bei 100 lux zustande. Dazu multipliziert wird die gemessene Spannung geteilt durch den mit Formel 1 berechneten Widerstand. Der ermittelte Wert Ev stellt die aktuelle Beleuchtungsstärke in Lux dar.

Bewertung der Sensordaten

Bedingt durch die Bestückung der kleinen Lichtsensoren, kann es vorkommen, dass diese beim Reflowprozess von ihrem Lötpad schwimmen und dadurch keine geeigneten Messwerte aufgenommen werden können. Dieser Fehler ist leicht zu erkennen, da die gelieferten Werte immer kleiner als Null sind und somit ausgeschlossen werden können. Schwieriger wird es im weiteren Signalverarbeitungsschritt Fehler zu erkennen. Zum einen entstehen schon Fehler beim Messen der Daten und dem Verarbeiten der Daten im Verstärker. Die nächsten Fehler, die entstehen können sind beim Verarbeiten der Daten von einem analogen in ein digitales Signal. Die Wandlung der Daten ist immer fehlerbehaftet, die schon bei der Verstärkung des Signals anfangen und bei der Umwandlung fortgesetzt werden. Der nächste Fehler kann durch das Versenden der Daten über den I2C Bus entstehen, dieser Bus ist sehr störanfällig dadurch bedingt kann durch Elektromagnetische Verträglichkeitsprobleme z.B. durch Motoren, der Bus gestört werden und keine oder fehlerhafte Daten übertragen werden.

Da auf de Platine vier Luxsensoren sitzen ist es möglich die Fehler des Signals geringer zu halten, dazu wendet man den Median auf die vier Signale an. Das bedeutet, dass die Werte der Größe nach geordnet werden. Die beiden mittleren Werte, werden dann addiert und durch zwei dividiert, dadurch ist gewährleistet, dass Werte, die aus dem Rahmenfallen nicht berücksichtigt werden. Des Weiteren bietet sich an jeden der vier Sensoren mit einer Referenzlichtquelle zu kalibrieren. Dazu bietet es sich an eine Referenzlichtquelle der Physikalisch-Technischen Bundesanstalt (PTB) zu beziehen, die Lichtquelle wird dann mit einem geeichten optischen Spektrometer in einem vorher definierten Abstand gemessen und die Luxwerte aufgenommen. Dann wird an die Position des Spektrometers die Platine befestigt, so dass diese den gleichen Abstand zu der Referenzlichtquelle hat wie vorher das Spektrometer. Nachdem mit allen vier Sensoren der Platine die Daten aufgenommen wurden, erhalten diese einen Kalibrierfaktor, der es ermöglicht, dass die Sensoren alle die gleichen Daten messen, dies bedeutet trotzdem nicht, dass sie immer das Gleiche messen werden.

Quelltext

 
#include <Adafruit_ADS1015.h> 

Adafruit_ADS1015 adc; //Initialisiert den Analog Digital Wandler mit default Adresse 0x48

double EVMAX = 100000; //Maximale ausgabe in Lux bei eingestelltem Gain
double CURRENT = 0.0000049; //Strom bei 100 lx bei eingestelltem Gain
double U = 3.3;

double A_0;
double A_1;
double A_2;
double A_3;
double RL;

void setup()
{
  Serial.begin(9600);

  adc.begin();
  adc.setGain(GAIN_SIXTEEN); //Gain Wert auf 16 eingestellt für eine Reichweite von +/-0.0078125V
  RL = (U - 0.4) / EVMAX * (100 / CURRENT); //Berechnung von RL entnommen aus Datenblatt http://www.onsemi.com/pub/Collateral/NOA1212-D.PDF
}

void loop()
{
  A_0 = adc.readADC_SingleEnded(0) * 0.001 * 0.0078125; //Spannung am ersten Sensor wird gemessen und dann von milli Volt in Volt umgerechnet
  A_1 = adc.readADC_SingleEnded(1) * 0.001 * 0.0078125;
  A_2 = adc.readADC_SingleEnded(2) * 0.001 * 0.0078125;
  A_3 = adc.readADC_SingleEnded(3) * 0.001 * 0.0078125;


  A_0 = A_0 / ((CURRENT / 100) * RL); //Spannungswert wird von Spannung in Lux umgerechnet, Formel entnommen aus Datenblatt
  A_1 = A_1 / ((CURRENT / 100) * RL);
  A_2 = A_2 / ((CURRENT / 100) * RL);
  A_3 = A_3 / ((CURRENT / 100) * RL);

  //Ausgabe der Sensordaten
  Serial.print("A0: ");
  Serial.print(A_0);
  Serial.println(" Lux");

  Serial.print("A1: ");
  Serial.print(A_1);
  Serial.println(" Lux");

  Serial.print("A2: ");
  Serial.print(A_2);
  Serial.println(" Lux");

  Serial.print("A3: ");
  Serial.print(A_3);
  Serial.println(" Lux");

  delay(100000); //Wartezeit, reset drücken um eine neue Messung zu starten

}


Lernerfolg

Gesamtfazit

YouTube Video

https://youtu.be/vwBdSAtz3AY

Schwierigkeitsgrad

Literatur

Quellenverzeichnis

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