This is an old revision of the document!


Table of Contents

Fototakisti

Teooria

Fototakisti
Fototakisti elektriline tähis

Fototakisti on andur, mille elektriline takistus muutub sõltuvalt temale pealelangeva valguse intensiivsusest. Mida intensiivsem on valgus, seda rohkem tekib vabu laengukandjaid ning seda väiksemaks jääb elemendi takistus. Fototakisti kaks välist metallkontakti ulatuvad läbi keraamilise alusmaterjali valgustundliku kileni, mis oma geomeetria ja materjali omaduse poolest määravad elektrilised takistuslikud omadused. Kuna fototundlik materjal on iseloomult suure takistusega, siis peenikese käänulise rajaga elektroodide vahel saavutatakse madal elemendi kogutakistus keskmise valguse intensiivsuse juures. Nii nagu inimese silm, on ka fototakisti tundlik kindlale valguse lainepikkuse vahemikule. Fotoelemendi valikul tuleb sellega kindlasti arvestada, kuna vastasel juhul ei pruugi see rakenduses kasutatavale valgusallikale üldse reageeridagi. Siinkohal olgu ära toodud nähtava valguse lainepikkused jaotatuna lihtsustatult värvide järgi.

Värv Lainepikkuse vahemik (nm)
Lilla 400 – 450
Sinine 450 – 500
Roheline 500 – 570
Kollane 570 – 590
Oranž 590 – 610
Punane 610 – 700

Fototakistil on kindlasti määratud ka töötemperatuuri vahemik. Kui tahta lasta anduril töötada erinevatel temperatuuridel, siis tuleb kindlasti sisse viia täpsustavad teisendused, kuna anduri takistuslik omadus sõltub välistemperatuurist.

Valguse intensiivsuse iseloomustamiseks kasutatakse füüsikalist suurust valgustustihedus (tähis E), mis näitab mingile pinnale jõudva valgusvoo hulka. Mõõdetavaks ühikuks on luks (lx), kus 1 luks tähendab, et 1 m2 suurusele pinnale langeb ühtlaselt valgusvoog 1 luumen. Reaalses elus praktiliselt kunagi aga ei lange valgus (elamis)pinnale ühtlaselt ning seetõttu valgustustihedus saadakse rohkem keskmise väärtusena. Võrdluseks olgu ära toodud ka mõningad valgustustiheduse näited:

Keskkond Valgustustihedus (lx)
Täiskuu 0,1
Hämarus 1
Auditoorium 10
Klassiruum 30
Päikesetõus või -loojang 400
Haigla operatsioonisaal 500 - 1000
Otsene päikesevalgus 10000

Praktika

Kodulabori Andurite mooduli plaat on varustatud VT935G fototakistiga. Selle üks viik on ühendatud +5 V toitega ja teine mikrokontrolleri analoog-digitaalmuunduri kanaliga 1 (viik PF1). Sama mikrokontrolleri viigu ja maaga on ühendatud ka tavaline 10 kΩ takisti, mis koos fototakistiga moodustab pingejaguri. Kuna fototakisti elektriline takistus väheneb temale langeva valguse intensiivsuse kasvades, siis mõõdetav pinge mikrokontrolleri viigu peal kasvab valguse intensiivsuse kasvades. Tasuks arvestada, et Kodulaboris kasutatav fototakisti reageerib kõige intensiivsemalt kollasele ja oranžile valgusele.

VT935G andur ei olegi tegelikult mõeldud konkreetseks mõõteseadmeks, pigem üldiste valgustingimuste määramiseks - näiteks kas ruumis põleb lamp või mitte. Sel juhul tuleb lihtsalt mõõta anduri takistus poolpimedas ruumis, see programmi kirja panna ja selle abil võrrelda mõõdetavat - kas on heledam või pimedam.

Käesolev harjutus on aga natukese keerulisem, kuna leitakse andurile valgeva valguse valgustustihedust luksides. Selle tegemiseks on kasutusel ligikaudne arvutusvalem ja ujukoma arvud. Ujukoma arvud on C-keeles float ja double tüüpi, millega saab esitada murdarve. Nende puuduseks on suhteliselt suur ressursinõudlikkus. Arvutites on nende arvutamiseks spetsiaalne riistvara, 8-bitisel AVR mikrokontrolleril tehakse arvutused tarkvaras, mis võtab suhteliselt palju programmimälu ja aega. Kui puudused pole olulised, on ujukoma arvud väärt kasutamist.

VT935G valgustustiheduse (E) ja elektritakistuse (R) vaheline seos

Fototakisti valgustustiheduse ja elektritakistuse vahelise seose kohta annab anduri andmeleht ligikaudse valemi. Nagu kõrvalolevalt graafikult näha, on logaritmskaalas valgustustihedus ja takistus ligikaudu lineaarses seoses ning moodustavad sirge võrrandi, sest kehtib teisendus:

log(a/b) = log(a) - log(b)

Seost iseloomustab γ faktor (sirge tõus), mis VT935G anduril on 0,9. Teada on ka joone ühe punkti andmed: 18,5 kΩ takistus (RA) 10 lx valgustustiheduse (EA) juures. Seega on olemas 1 punkti koordinaadid ja sirge tõus ning iga muu punkti arvutamiseks piisab vaid ühest koordinaadist. Ehk kui mõõta anduri takistus (RB), saab joone võrrandist arvutada andurile langeva valgustustiheduse (EB). Avaldame joone võrrandist EB:

log(EB) = log(RA/RB) / γ + log(EA)

EB = 10log(RA/RB) / γ + log(EA)

Sellega on takistusest valgustustiheduse arvutamise valem olemas. Takistust otse aga mikrokontrolleriga mõõta ei saa - selleks on fototakisti pingejaguris, mille väljundpinge teisendab analoog-digitaalmuundur konkreetseks arvuks (ADC). Takistuse leidmiseks tuleb kõigepealt arvutada ADC väärtusest pingejaguri väljundpinge (U2), arvestades ka muunduri võrdluspinget (Uref). Valem on selline:

U2 = Uref ⋅ (ADC / 1024)

Pingejaguri valemist (vaata pingejaguri peatükki) saab leida skeemis ülemise fototakisti takistuse (R1):

R1 = (R2 ⋅ U1) / U2 - R2

Järgnevalt on pinge ja takistuse arvutamisel teadaolevad tegurid asendatud väärtustega ja alaindeksid ära jäetud:

U = 5 ⋅ (ADC / 1024)

R = (10 ⋅ 5) / U - 10

Valgustustiheduse leidmisel saab teha lihtsustavaid teisendusi:

E = 10log(18,5/R) / 0.9 + 1 = 10log(18,5/R) ⋅ 10/9 ⋅ 101 =

= 10log18,5 ⋅ 10/9 - logR ⋅ 10/9 ⋅ 10 = (10log18,5 ⋅ 10/9 / 10logR ⋅ 10/9) ⋅ 10 =

= (18,510/9 / R10/9) ⋅ 10 = 18,510/9 ⋅ 10 ⋅ R-10/9

Arvutades välja muutuja R ees oleva konstandi, jääb avaldis kujule:

E = 255,84 ⋅ R-10/9

Nende valemite abil saab kasutada vaid Kodulabori Andurite mooduli plaadil olevat fototakistit. Teiste komponentidega skeemi kasutades tuleks valemites muuta vastavaid arvväärtusi. Järgnevalt on toodud näidisprogrammi lähtekood, mis teostab ADC-ga mõõtmist, arvutamist ja valgustustiheduse kuvamist LCD ekraanile. Kuid veel enne programmi kompileerimist tuleb projektis teha seadistused ujukoma arvude kasutuselevõtuks. Selle kohta on lühiõpetus tarkvara paigaldamise peatükis.

Näidisprogrammis defineeritakse pinge, takistuse ja valgustustiheduse muutujad ujukoma tüüpi arvuna double. Arvud, mida soovitakse kindlasti ujukoma tehetes kasutada, peavad alati sisaldama komakohta (C-keeles punkti), olgu kas või nulli, sest siis ei tõlgenda kompilaator neid valesti. sprintf abil ujukoma arvu tekstiks teisendades tuleb kasutada “%f” formaati, mida võib täiendada täis- ja komakohtade arvuga, näiteks “%3.2”, mis kuvab alati 3 täis- ja 2 komakohta.

//
// Kodulabori Andurite mooduli fototakisti näidisprogramm.
// LCD ekraanil kuvatakse ligikaudne valgustustihedus luksides
//
#include <stdio.h> 
#include <math.h>
#include <homelab/module/lcd_gfx.h>
#include <homelab/adc.h>
#include <homelab/delay.h>
 
//
// Põhiprogramm
//
int main(void)
{ 
	char text[16];  
	unsigned short adc_value;
	double voltage, resistance, illuminance;
 
	// LCD ekraani seadistamine
	lcd_gfx_init(); 
 
        //LCD taustavalguse tööle seadmine
        lcd_gfx_backlight(true);
 
	// LCD ekraani puhastamine
	lcd_gfx_clear();
 
        //LCD-l kirjutamise koha valik
        lcd_gfx_goto_char_xy(3, 2);
 
	// Programmi nimi
	lcd_gfx_write_string("Luksmeeter");
 
	// ADC muunduri seadistamine
	adc_init(ADC_REF_AVCC, ADC_PRESCALE_8); 
 
	// Lõputu tsükkel
	while (true)
	{
		// Fototakisti keskmistatud väärtuse lugemine
		adc_value = adc_get_average_value(1, 10);
 
		// Pinge arvutamine ADC sisendis
		voltage = 5.0 * ((double)adc_value / 1024.0);
 
		// Fototakisti takistuse arvutamine pingejaguris
		resistance = (10.0 * 5.0) / voltage - 10.0;
 
		// Valgustustiheduse luksides arvutamine		
		illuminance = 255.84 * pow(resistance, -10/9);
 
		// Valgustustiheduse tekstiks teisendamine		
		sprintf(text, "%0.1f lux   ", illuminance); 
 
		// Näidu LCD-l kuvamine
		lcd_gfx_goto_char_xy(3, 3);
		lcd_gfx_write_string(text);
 
		// Viide 500 ms
		sw_delay_ms(500);
	}
}

Koodi näide teksti LCD-le (Kodulabor ver 3.x ja vanemad)

et/examples/sensor/photoresistor.1339239715.txt.gz · Last modified: 2020/07/20 09:00 (external edit)
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0