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 

LDR modul && Arduino

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



Pridružen-a: Ned 14 Dec 2003 17:47
Prispevkov: 866
Aktiv.: 3.88
Kraj: Dobrepolje

PrispevekObjavljeno: Čet Dec 21, 2023 6:24 pm    Naslov sporočila:  LDR modul && Arduino Odgovori s citatom

Hi

Imam LDR modul s katerim bi rad čital kolikokrat se prižge LED.
Foto upor bi vstavil v tulec nad LED, da ne bi bilo motenj.

Spodnja koda pa šteje toliko časa dokler je prižgana LED.

Jaz pa bi rad čital samo vsak vklop tako da stari vrednosti prišteje 1.

Kaj bi moral dodati v kodo, probal sem z zastavicami pa mi ni uspelo?

lp,


Koda:



int Pulz;

void setup() {

 Serial.begin(9600);
 attachInterrupt(digitalPinToInterrupt(2), ISR_meritev, RISING);
 
}

 
void loop() {
 
    Serial.print("Stevilo pulzov: ");
    Serial.println(Pulz);

delay(1000);
}

void ISR_meritev() { 
     
  Pulz++; 
 
}

Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
marko11
Član
Član



Pridružen-a: Ned 14 Dec 2003 17:47
Prispevkov: 866
Aktiv.: 3.88
Kraj: Dobrepolje

PrispevekObjavljeno: Čet Dec 21, 2023 8:43 pm    Naslov sporočila:   Odgovori s citatom

Zakaj meni v pol sekunde našteje okrog 200 pulzov?

Če gledamo ta RISING v prekinitveni rutini, bi moral zapisati samo eno spremembo in to takrat ko gre signal iz nizkega na visok.

Kje delam napako?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
dkone
Član
Član



Pridružen-a: Sre 07 Mar 2007 18:53
Prispevkov: 2105
Aktiv.: 10.08
Kraj: Krško

PrispevekObjavljeno: Čet Dec 21, 2023 9:04 pm    Naslov sporočila:   Odgovori s citatom

Koliko pogosto se ti ledica prižge?

Ena rešitev bi bila takšna spodaj, ki jo ponavadi uporabljam(Brez interrupta):

Koda:


#define DI0 2 //kanal DI0
bool b_DI0_State = false;
unsigned long DI0_LastTimeChange = micros()/1000;
int int_NextChange = 300;

  if (digitalRead(DI0) == HIGH && b_DI0_State == false && (micros()/1000 - DI0_LastTimeChange) > int_NextChange) {
    Serial.println("IN0");
    b_DI0_State = true;
    DI0_LastTimeChange = micros()/1000;
  }
  else if (digitalRead(DI0) == LOW && b_DI0_State == true && (micros()/1000 - DI0_LastTimeChange) > int_NextChange) {
    //Serial.println("IN0_OFF");
    b_DI0_State = false;
    DI0_LastTimeChange = micros()/1000;
  }


Vedno gledam prejšnjo stanje, naredim še debouncing in nato ukrepam, ko res pritisnem tipko ali spustim. Torej prehod iz 0 v 1 ali iz 1 v 0. Zgornji primer prikazuje akcijo v obeh frontah. Serial.println uporabljam samo za debug. To se ne izvaja v prekinitveni rutini ampak v Loop-u.

PS: Zgornja koda je za Controllino, tako da imena vhodov je vzeta iz njihove knjižnice.

_________________
Denis
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
robert
Član
Član



Pridružen-a: Sob 29 Maj 2004 21:48
Prispevkov: 1872
Aktiv.: 8.39
Kraj: Tolmin

PrispevekObjavljeno: Čet Dec 21, 2023 10:31 pm    Naslov sporočila:   Odgovori s citatom

marko11 je napisal/a:
Zakaj meni v pol sekunde našteje okrog 200 pulzov?


Morda LED zelo hitro utripa ? Čeprav 50Hz tvoja motnja ni ampak se morda kaj inducira na dovodnemu kablu med LDR in Arduino vhodom.
Kaj bi sploh rad meril ? Predvidevam da elektro števec.

_________________
LP Robert
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
marko11
Član
Član



Pridružen-a: Ned 14 Dec 2003 17:47
Prispevkov: 866
Aktiv.: 3.88
Kraj: Dobrepolje

PrispevekObjavljeno: Čet Dec 21, 2023 11:02 pm    Naslov sporočila:   Odgovori s citatom

robert je napisal/a:
marko11 je napisal/a:
Zakaj meni v pol sekunde našteje okrog 200 pulzov?


Morda LED zelo hitro utripa ? Čeprav 50Hz tvoja motnja ni ampak se morda kaj inducira na dovodnemu kablu med LDR in Arduino vhodom.
Kaj bi sploh rad meril ? Predvidevam da elektro števec.


Dobro predvidevaš, el.števec.

Dioda naj ne bi utripala, ker jo prižigam z Nano Arduinom
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
marko11
Član
Član



Pridružen-a: Ned 14 Dec 2003 17:47
Prispevkov: 866
Aktiv.: 3.88
Kraj: Dobrepolje

PrispevekObjavljeno: Pet Dec 22, 2023 6:34 pm    Naslov sporočila:   Odgovori s citatom

Našel napako.

Sam LDR modul dela neke motnje, tako da je na izhodu toliko nekih špic, zato Arduino našteje toliko pulzov 200 ali več kot jih zazna.

Mogoče bi moral na izhod dodati kak filter?

Spodaj je slika modula.



LDR-sensor-modul.jpg
 Opis:
 Velikost datoteke:  24.95 KB
 Pogledana:  1 krat

LDR-sensor-modul.jpg


Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Vlado
Član
Član



Pridružen-a: Sre 03 Mar 2004 21:35
Prispevkov: 561
Aktiv.: 2.51
Kraj: Ljubljana

PrispevekObjavljeno: Pet Dec 22, 2023 6:46 pm    Naslov sporočila:   Odgovori s citatom

Marko,
na modulu imaš trimer z katerim moraš nastaviti nivo proženja.
Obračaj trimer da ledica na izhodu modula ugasne, potem daj pred LDR tvojo led in poskusi nastaviti da ti se LED na izhodu modula prižge samo ko tvoja LED sveti.
Še bolj bi bilo da so nodul in tvoja LED v kakšni cevi da nimaš vpliva zunanje svetlobe.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
marko11
Član
Član



Pridružen-a: Ned 14 Dec 2003 17:47
Prispevkov: 866
Aktiv.: 3.88
Kraj: Dobrepolje

PrispevekObjavljeno: Pet Dec 22, 2023 6:56 pm    Naslov sporočila:   Odgovori s citatom

Vlado je napisal/a:
Marko,
na modulu imaš trimer z katerim moraš nastaviti nivo proženja.
Obračaj trimer da ledica na izhodu modula ugasne, potem daj pred LDR tvojo led in poskusi nastaviti da ti se LED na izhodu modula prižge samo ko tvoja LED sveti.
Še bolj bi bilo da so nodul in tvoja LED v kakšni cevi da nimaš vpliva zunanje svetlobe.



Vse to sem napravil, pa ne deluje pravilno....
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Vlado
Član
Član



Pridružen-a: Sre 03 Mar 2004 21:35
Prispevkov: 561
Aktiv.: 2.51
Kraj: Ljubljana

PrispevekObjavljeno: Pet Dec 22, 2023 7:02 pm    Naslov sporočila:   Odgovori s citatom

Marko,
koliko so dolge povezave med modulom in Arduino-tom.
Če imaš daljše povezave, daj 10uF na napajanje modula.
Povej še ali ti LED na izhodu modula utripa, ali se normalno prižga v ritmu tvoje LED-ice.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
robert
Član
Član



Pridružen-a: Sob 29 Maj 2004 21:48
Prispevkov: 1872
Aktiv.: 8.39
Kraj: Tolmin

PrispevekObjavljeno: Pet Dec 22, 2023 7:52 pm    Naslov sporočila:   Odgovori s citatom

Preveri po spodnji shemi (podobnega modula), če ima kondenzator C2 oziroma ga dodaj vzporedno z LDR. Tudi C1 lahko povečaš na napajanju.
Operacijski ojačevalnik tudi nima nobene histereze in lahko to povzroči kakšne "čudne oscilacije". Tukaj bi dodal še en upor (čez prst 47K) med nožice 1 in 2 IC-ja oziroma med D0 in drsnik potenciometra. Wink



LDR-Sensor-Module-Circuit-Diagram.jpg
 Opis:
 Velikost datoteke:  40.25 KB
 Pogledana:  3 krat

LDR-Sensor-Module-Circuit-Diagram.jpg



_________________
LP Robert
Nazaj na vrh
Odsoten 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 -> Arduino sekcija Č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: 79 dni


Powered by phpBB © 2001, 2005 phpBB Group