This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| et:examples:sensor:photoresistor [2014/09/30 09:05] – raivo.sell | et:examples:sensor:photoresistor [2020/07/20 09:00] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ~~PB~~ | + | < |
| ====== Fototakisti ====== | ====== Fototakisti ====== | ||
| - | //Vajalikud teadmised: | + | //Vajalikud teadmised: |
| + | [HW] [[et: | ||
| + | [ELC] [[et: | ||
| + | [AVR] [[et: | ||
| + | [LIB] [[et: | ||
| + | [LIB] [[et:software:homelab:library: | ||
| ===== Teooria ===== | ===== Teooria ===== | ||
| - | [{{ : | ||
| [{{ : | [{{ : | ||
| + | [{{ : | ||
| 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, | 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, | ||
| Line 27: | Line 32: | ||
| | Hämarus | | Hämarus | ||
| | Auditoorium | | Auditoorium | ||
| - | | Klassiruum | ||
| | Päikesetõus või -loojang | | Päikesetõus või -loojang | ||
| - | | Haigla operatsioonisaal | ||
| | Otsene päikesevalgus | | Otsene päikesevalgus | ||
| Line 38: | Line 41: | ||
| VT935G andur ei olegi tegelikult mõeldud konkreetseks mõõteseadmeks, | VT935G andur ei olegi tegelikult mõeldud konkreetseks mõõteseadmeks, | ||
| - | Käesolev harjutus on aga natukese keerulisem, kuna leitakse andurile | + | Käesolev harjutus on aga natukese keerulisem, kuna leitakse andurile |
| [{{ : | [{{ : | ||
| Line 76: | Line 79: | ||
| Nende valemite abil saab kasutada vaid Kodulabori moodulil 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. | Nende valemite abil saab kasutada vaid Kodulabori moodulil 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. | ||
| - | 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 " | + | 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. |
| <code c> | <code c> | ||
| - | // | + | // Kodulabori fototakisti näidisprogramm |
| - | // Kodulabori fototakisti näidisprogramm. | + | |
| // LCD ekraanil kuvatakse ligikaudne valgustustihedus luksides | // LCD ekraanil kuvatakse ligikaudne valgustustihedus luksides | ||
| - | // | ||
| #include < | #include < | ||
| #include < | #include < | ||
| Line 89: | Line 90: | ||
| #include < | #include < | ||
| - | // | ||
| // Põhiprogramm | // Põhiprogramm | ||
| - | // | ||
| int main(void) | int main(void) | ||
| { | { | ||
| Line 101: | Line 100: | ||
| lcd_gfx_init(); | lcd_gfx_init(); | ||
| - | //LCD taustavalguse tööle seadmine | + | // LCD taustavalguse tööle seadmine |
| lcd_gfx_backlight(true); | lcd_gfx_backlight(true); | ||
| | | ||
| Line 117: | Line 116: | ||
| // Lõputu tsükkel | // Lõputu tsükkel | ||
| - | while (true) | + | while (1) |
| { | { | ||
| - | // Fototakisti | + | // Fototakisti |
| adc_value = adc_get_average_value(13, | adc_value = adc_get_average_value(13, | ||
| - | // Kodulabor | + | // Kodulabor |
| - | // adc_value = adc_get_average_value(1, | + | // |
| // Pinge arvutamine ADC sisendis | // Pinge arvutamine ADC sisendis | ||
| + | // Kodulabor II | ||
| + | //voltage = 5.0 * ((double)adc_value / 1024.0); | ||
| + | // Kodulabor III | ||
| voltage = 2.0625 * ((double)adc_value / 2048.0); | voltage = 2.0625 * ((double)adc_value / 2048.0); | ||
| - | // Kodulabor 2 puhul: | ||
| - | // voltage = 5.0 * ((double)adc_value / 1024.0); | ||
| // Fototakisti takistuse arvutamine pingejaguris | // Fototakisti takistuse arvutamine pingejaguris | ||
| + | // Kodulabor II | ||
| + | // | ||
| + | // Kodulabor III | ||
| resistance = (33.0) / voltage - 10.0; | resistance = (33.0) / voltage - 10.0; | ||
| - | // Kodulabor 2 puhul: | ||
| - | // resistance = (10.0 * 5.0) / voltage - 10.0; | ||
| - | // Valgustustiheduse | + | // Valgustustiheduse |
| illuminance = 255.84 * pow(resistance, | illuminance = 255.84 * pow(resistance, | ||
| - | // Lööme illuminance muutuja kaheks integer tüüpi muutujaks | + | // Muutuja |
| + | // eraldi täisarvuliseks muutujaks jagamine | ||
| int8_t illu = illuminance; | int8_t illu = illuminance; | ||
| int16_t illudp = trunc((illuminance - illu) * 1000); | int16_t illudp = trunc((illuminance - illu) * 1000); | ||