LED-Messung mit Arduino           

von Heinz D.                      

Elektronik-Labor   Projekte   AVR    




Siehe auch:
Goniometer mit AT13
LED-Licht und physikalische Größen

Im laufe der Zeit liegen LED's herum, aber man weiss nicht mehr woher sie sind, geschweige denn, wie hell sie sind. Eine absolute Helligkeitsmessung wäre wünschenswert. Für den Hobbybereich ist ein exakter Messwert nicht so wichtig. Wichtiger ist die Reproduzierbarkeit der Messwerte (auch nach längerer Zeit) bei einfachem Messaufbau.

Der Diffusor ist von einer Lichterkette. Das schwarze Tuch (hinten) wird zur Messung übergelegt. Es können Farbfilter dazwischen gesetzt werden. Ohne RGB-Sensor muss dann jedoch mit (bekannten) farbigen Sende-LEDs die Dämpfung bestimmt werden.

Überlegungen:

1.
Bei konstantem Strom (9-10mA) nimmt eine blaue LED mehr Leistung auf, als eine IR-LED. Multipliziert man die Leistung mit der Durchlasskurve der BPW34, erhält man bei gleichem Wirkungsgrad etwa den gleichen Fotostrom bis ~470nm.






2.
Misst man mit einem LDR, der spektral recht ausgewogen ist, wünscht man sich farbunabhängig immer die gleiche Leistung an der Led. Bei +5V konstant und Rled 270 Ohm erreicht man bei etwa 21mW einen Fehler von meist unter +-10%.



Mir gefällt die 2. Variante, weil das auch mit einem Ohmmeter geht. Sie sollten jedoch einen LDR zur Referenz machen und immer den gleichen Abstand (20 Noppen*8mm=160mm) einhalten, um bei kleinen Tolleranzen nicht gleich eine Fehlmessung zu erhalten. Für Arduino ist ein 'Servo-Schwenker' angefügt. Es kann leicht angepasst werden, um z.B. Leds umzuschalten.


Download: optische_bank-ino.zip

// Optische Bank, Led an Pin 4, LDR an Pin A4, Servo an Pin 11
// schwenkt den Servo und gibt die Ad-Werte aus
//##################################################################################
#include <Servo.h> //benutzt Timer 1
Servo servo1; Servo servo2; Servo servo3;
byte tmpb=0;
word tmpw=0;
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void setup() {
Serial.begin(9600);
pinMode(0, INPUT_PULLUP); pinMode(1, INPUT_PULLUP); pinMode(2, INPUT_PULLUP); pinMode(3, INPUT_PULLUP);
pinMode(4, OUTPUT); pinMode(5, OUTPUT); pinMode(6, OUTPUT); pinMode(7, OUTPUT); //Out-Port
pinMode(8, INPUT); pinMode(12, INPUT); pinMode(13, OUTPUT); //US
pinMode(9, OUTPUT); pinMode(10, OUTPUT); pinMode(11, OUTPUT); //Servo
digitalWrite(A4, HIGH); digitalWrite(A5, HIGH); //Pullup Ad4+5
digitalWrite(4,HIGH); // Led on
servo3.attach(11);
}//################################################################################## MAIN
void loop() {
servo3.write(90);
delay(999);
for (int i=90; i <= 180; i++){ // Grad
servo3.write(i);
tmpw = analogRead(A4);
Serial.print("Winkel= "); Serial.print(i);
Serial.print(" Ad4= "); Serial.println(tmpw);
delay(199);
}
servo3.write(0);
delay(999);
for (int i=0; i <= 90; i++){ // Grad
servo3.write(i);
tmpw = analogRead(A4);
Serial.print("Winkel= "); Serial.print(i);
Serial.print(" Ad4= "); Serial.println(tmpw);
delay(199);
}
}//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


Elektronik-Labor   Projekte   AVR