Fénymérés TEPT4400 fototranzisztorral

Egy kis elmélet! Mi a megvilágítás azaz a lux (Wikipédia-ban található infót másoltam ide)?
A megvilágítás az adott területre eső fényáram mértékegysége. A fényáram (mértékegysége a lumen) elképzelhető úgy, mint a jelen lévő látható fény összege, a megvilágítás pedig, mint az adott területre eső fényáram intenzitása. Egy lux az a megvilágítás, amelyet 1 lumen fényáram 1 négyzetméteren létrehoz:
Egy adott mennyiségű fény nagyobb területen elosztva halványabban fogja azt megvilágítani, azaz a megvilágítás mértéke fordítottan arányos a terület nagyságával. Ezért van az, hogy a zseblámpa fényét mérve a lux mérő közelről többet mutat, mint távolabbról. Példák a lux értékekre, hogy el tudjuk képzelni.

MegvilágításMegvilágított felület:
10−4 luxHoldtalan, borús éjszakai égbolt
0,002 luxHoldtalan, tiszta éjszakai égbolt (airglow)
0,27–1,0 luxTelihold egy tiszta éjszakán
3 luxA színérzékelés határa
3,4 luxszürkület kezdete tiszta égbolt esetén
50 luxLakás nappalijának megvilágítása
80 luxIrodaépület folyosójának/mosdójának világítása
100 luxNagyon sötét, beborult nappali égbolt
320–500 luxIrodai megvilágítás
400 luxNapfelkelte, vagy napnyugta tiszta időben
1000 luxBorult égbolt
10 000–25 000 luxTeljes napsütés (nem közvetlen)
32 000–130 000 luxKözvetlen napfény

A feladatom az volt, hogy egy 7 szegmens led kijelző fényereje alkalmazkodjon a környezeti megvilágításhoz. A kijelző működött teljes sötétségben éjszaka, és nappal is, amikor közvetlenül rásütött a nap. Nyilván éjjel kellett a minimum, teljes napsütésben pedig a maximum fényerő. Mivel a kijelző MAX7219 IC-val épített led mátrix kijelzőket is tartalmazott, 16 fényerő fokozatot lehetett beállítani. Vettem tehát egy TEPT 4400 fototranzisztort, mint legolcsóbb megoldás. Mondjuk ezt itt Magyarországon vettem 200Ft-ért, a modulok között található BH1750 szenzor pedig 284Ft volt szállítással együtt. Azonban egy fototranzisztort bekötni és használni időnként mégis könnyebb, hosszabb lehet a vezeték mint I2C busz esetén stb.
Elsőként azt kellett megállapítani, hogy használható-e a fototranzisztor fényerő beállításra, és ha igen milyen áramkörben. Nézzük először a fototranzisztor adatlapját. Itt egy ábra a megvilágítás és az átfolyó áram kapcsolatáról:

Már itt látszik, hogy lesznek nehézségek! Az adatlap 200 lux-ig ad értékeket, miközben nekem 0-100.000 lux közötti tartományban kell mérnem. Láthatóan kísérletezgetni kell, hogy mi van 200 lux fölött.





Egy egyszerű kapcsolás így néz ki:

A kísérletem úgy nézett ki, hogy letöltöttem egy lux mérő programot a telefonomra, a fototranzisztort, illetve az egész kapcsolást és a telefon érzékelőjét egymás mellé raktam az asztalon. Miközben hadonásztam egy zseblámpával, mértem a kimenő feszültséget. Láthatóan csak erős becslésre lehet számítani. Mennyire pontos a telefon fénymérője? Mennyire azonos a telefon és a fototranzisztor megvilágítása ha egymás mellett vannak? Durva hibákra lehet számítani. De ez is több mint a semmi. Különböző ellenállás értékekkel próbálkoztam, és néhány lux értéket próbáltam rögzíteni.

1 Kohm soros ellenállás

LUXV
200.013
500.032
1000.07
5000.33
50004.3

Ez a mérés elég biztató! 5000 lux-ig fel tudtam menni. Azonban a 0-500 lux tartományban alig változik a feszültség. Pedig itt kell a 15 fényerőszintből legalább 10-et beállítani. Várhatóan 10.000 lux felett (napsütés), már maximális fényerőre lesz szükség.

10 Kohm soros ellenállás

LUXV
200.10
500.4
1000.7
5003
50005


Még ez is jó lehet, azonban itt már 5000 luxnál gyakorlatilag teljesen kinyitott a tranzisztor, és az áramkör kimenő feszültsége a maximumot elérte. A wikipédiás táblázat alapján valahol a borult idő és a nem közvetlen napsütés között vége a mérésnek. Még ez is jó lehet, de ezt a gyakorlatban lehet csak eldönteni.

47 Kohm soros ellenállás

LUXV
250.7
501.5
1003.1
5004.9

Ez már a digitális tartomány. 500 lux-nál (szobai megvilágítás) már teljesen kinyitott a tranzisztor. Nekem ez várhatóan nem lesz jó, de ha alkonyat kapcsolóra lenne szükségem, akkor valószínűleg így használnám. A majdnem sötét kapcsolási pontját elég széles tartományból lehetne kiválasztani, és beállítani.
Programpéldát nincs értelme írni, annyira egyszerű a feladat. Az analóg bemeneten lehet mérni a kimenő feszültséget, és felhasználni a mért értéket. A kijelző készítésekor azonban több probléma is kiderült. Pl a minimum fényerő elég nagy ugrás a 0-hoz képest. Vagyis a led fénye nem csak úgy fokozatosan beúszik a sötétbe, hanem egyszer csak egy határozott fényerő szinten megjelenik. Ez nem baj, csak megemlítem. Teljes sötétségben lehetett volna a minimum fényerő még kisebb is. PWM szabályozást alkalmaztam, s nem a várt módon működött, de ez nyilván a szemünk működésével van összefüggésben. Másik gond a fényerő határok környékén volt. Ha a fényerő kismértékben változik (pl. a szomszéd udvarában fújta a szél az almafa lombját, és az átszűrődő fény gyors ütemben változott), hajlamos a kijelző villogásra, azaz a két szomszédos fényerőszint között kapcsolgat idegbeteg módon. Ezt átlagolással oldottam meg, azaz csináltam egy tömbből egy fifo tárolót, és folyamatosan másodpercenként léptettem be a mérési eredményeket. Viszont a kijelzők fényerejét mindig a mért értékek átlaga alapján állítottam be. A bekapcsolás elég látványos, mert kezdetben a fifo minden értéke 0, és ahogy belépnek a mért értékek, az átlag emelkedik, azaz nő a fényerőszint a minimumról az aktuálisra. Találós kérdés: kikapcsoláskor fokozatosan csökken a nullára a fényerő? (válasz: nem, mert ha kikapcsolod a kütyüt azonnal elalszik minden led)

Ennek a programnak egy részlete:

void fenyero_beallitas()
{
    for (byte j=9;j>0;j--) {mert_fenyero[j]=mert_fenyero[j-1];}
    mert_fenyero[0]=analogRead(A6);
    fenyertek=(mert_fenyero[0]+mert_fenyero[1]+mert_fenyero[2]+
    mert_fenyero[3]+mert_fenyero[4]+mert_fenyero[5]+mert_fenyero[6]+
    mert_fenyero[7]+mert_fenyero[8]+mert_fenyero[9])/10;
}

A példa programrész függvényét másodpercenként hívtam meg, és a fenyertek változóban kaptam meg az aktuális átlagos fényerő értéket, amit felhasználtam a fényerő beállításban. A “mert_fenyero” és “fenyertek” változók globális változók! Biztosan nem egy szép megoldás, de működik!

Mennyire volt hasznos amit olvastál?

Kattints egy csillagra az értékeléshez!

Sajnálom, hogy amit olvastál nem volt hasznos számodra!

Szeretném ha elégedett lennél!

Írd le kérlek, hogy mi nem tetszett!?