www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Merjenje intenzivnosti setlobe - arduino

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Elektronika za začetnike
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
KlemenD
Član
Član



Pridružen-a: Sre 18 Maj 2011 15:08
Prispevkov: 188
Aktiv.: 1.10
Kraj: Maribor

PrispevekObjavljeno: Pon Jul 22, 2013 11:22 pm    Naslov sporočila:  Merjenje intenzivnosti setlobe - arduino Odgovori s citatom

Zdravo Very Happy
V dveh različnih trenutkih bi rad izmeril intenzivnost svetlobe in potem rezultate meritev med seboj primerjal. Uporabil sem seznor TSL235 ki intezivnost svetlobe pretvori v neko frekvenco (višina frekvence sorazmerna z intenzivnostjo svetlobe ki pade na senzor). Najprej je bil iziv spisati program ki mi bo na arduinu meril frekvenco, no na sreco sem ta program nasel tukaj: LINK. No sedaj bi pa rad izmeril frekvenco v nekem trenutku (recimo temu vednost A) nato bi pa 100 milisekund kasnej rad izmeril še vrednost B, ter potem izračunal delež za koliko se je intenzivnost povečala torej B/A potem bi se mi ta delež ispisal na ekranu in meritev bi se spet ponovila.
Kodo sem prilagodil takole

Koda:
#include <FreqCounter.h>

void setup() {
  Serial.begin(57600);                    // connect to the serial port
  Serial.println("Frequency Counter");
}

long double a;
long double b;
long double z;
Void loop() {

 FreqCounter::f_comp= 8;             // Set compensation to 12
 FreqCounter::start(100);            // Start counting with gatetime of 100ms
 while (FreqCounter::f_ready == 0)         // wait until counter ready
 
 a=FreqCounter::f_freq;            // read result
 delay(100);

 FreqCounter::f_comp= 8;             // Set compensation to 12
 FreqCounter::start(100);            // Start counting with gatetime of 100ms
 while (FreqCounter::f_ready == 0)         // wait until counter ready
 
 b=FreqCounter::f_freq;            // read result
 z = b/a
Serial.println(z);
 delay(100);
}


Tukaj pa nekaj ni delalo... kasneje sem ugotovil problem, ko sem spremenil program tako da mi je izpisal vsako izmerjeno vrednost a in b čas med meritvami pa sem povečal na nekaj sekund. Dogajalo pa se je naslednje : (recimo da je vrednost 600 normalna vrednost ko je detektor na dnevni svetlobi, 50 pa ko ga pokrijem z prstom)
Zaženem program in ta najprej izmeri vrednost a ki je 600 nato pa gre program na 5 sec delay. V tem času detektor pokrijem z prstom in počamakam da gre program iz delay-a nato izpiše vrednost b ki pa je 600 ( namesto pricakovanih 50) spet gre na delay in prst umaknem program gre spet odzacetka in poisce novo vrednost a ki pa je sedaj 50... program zaostaja za eno izmerjeno vrednost pa nevem zakaj.
Primer sem poenostavil koliko sem lahko drugače pa delam merilec kisika v krvi, ce mi bo uspelo popravit kodo objavim celoten projekt ! Very Happy
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Elektronika za začetnike Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 496 dni


Powered by phpBB © 2001, 2005 phpBB Group