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? Értékelés után szövegesen is leírhatod megjegyzéseidet és véleményedet!

Kattints egy csillagra az értékeléshez!

Szövegesen is leírhatod véleményedet! Ha kérdésed van, ne felejtsd el megadni az email címedet!