Fénymérés TEPT4400 fototranzisztorral

Tartalom:

  • Fénytani alapismeretek, lux és lumen mértékegységek megismerése, megvilágítás intenzitása gyakorlati példákkal
  • A TEPT4400 fotótranzisztor működése, karakterisztikái, bekötése egy áramkörbe
  • Soros ellenállás méretezése a gyakorlati felhasználás igénye alapján
  • Mérési eredmények, mintapéldák
  • Fényerő szabályozási tapasztalatok természetes (napsütötte) körülmények között

————————————————————————————-

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.

A célom az volt, hogy egy 7 szegmens-es 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-vel é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 kellene mérnem. Láthatóan kísérletezgetni kell, hogy mi van 200 lux fölött.
Ezt a kapcsolás használtam a kisérletezéshez:

Ha gyakorlatban is meg akarjuk építeni a kapcsolást, az első akadály a kivezetések azonosítása. A fototranzisztor így néz ki:

Az adatlapon, ami összesen 6 oldalas, percekig kerestem, hogy hol írták le, melyik a hosszabb, és melyik a rövidebb kivezetés. Íme a részlet ahol magtaláltam (jó szórakozást):

Megállapíthatjuk tehát, hogy a hosszabb kivezetés az emitter, ezt kell az ellenálláshoz kötni, míg a rövidebb a collector, amit a tápfesz pozitív pólusához kell kapcsolni.

A kísérletem úgy nézett ki, hogy letöltöttem egy lux mérő programot a telefonomra. A fototranzisztort és a telefon érzékelőjét egymás mellé raktam az asztalon, miközben hadonásztam egy zseblámpával és 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. Meg kell jegyeznem, hogy ez lett a nyerő ellenállás érték!

10 Kohm soros ellenállás

LUXV
200.10
500.4
1000.7
5003
50005


Még ez is jó lehet, azonban 5000 luxnál gyakorlatilag teljesen kinyitott a tranzisztor, és az áramkör kimenő feszültsége elérte a maximumot. 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.

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 sötétedés 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 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!

Szövegesen is leírhatod véleményedet!