Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Crepuscolare

Progetti, interfacciamento, discussioni varie su questa piattaforma.

Moderatori: Foto UtenteMassimoB, Foto UtenteWALTERmwp, Foto Utentexyz

0
voti

[1] Crepuscolare

Messaggioda Foto Utenteilluminor » 4 nov 2020, 14:37

Buon giorno,
sto cercando di fare un semplice crepuscolare con arduino.
In pratica per il momento faccio accendere un led giusto per provare.
Il problema è quando avvio il programma perché quando qqscurisco il fotodiodo il led si siaccende ma dopo poco si spegne per poi riccendersi,in pratica ali inizio i valori sono alti e giustamente si accende il led poi per qualche3 strano motivo inizia a leggere i valori piu bassi fino allo 0 che si spegne il led per poi ripartire con i valori alti e ricomincia il ciclo, e non capisco perche lo faccia nonostante il fotodiodo sia oscurato.
i contatti sono messi cosi;


Codice dello sketch;
[*]
Codice: Seleziona tutto
//  VARIABILI & COSTANTI ↓

// Tempo intervallo lettura dati FotoDiodo

const unsigned long interval_a                  = 5000;                                                       
unsigned long previousMillis_a                  = 0;                                     


/************************************* PIEDINATURA ***********************************************************************/


//N° Pin della BASE TRANSISTOR
const byte pin_B_Tr                             = 6;                                                 

// N° dell Pin Analogico dell' FotoDiodo + limite fotodiodo.

const byte pin_Fd                               = A0;                                             
const int  Limite_Fd                            = 45;                             


int  valLumen = 0;                                       

/************************************************************************************************************************/

void setup() {

  Serial.begin ( 9600 );                                                                                     

  pinMode ( pin_B_Tr,         OUTPUT );                                                                               

}

/**************************************************************************************************************************/

void Lettura_Fd ()  {

  valLumen = analogRead ( pin_Fd );   // 0 - 1023                                 
  Serial.print ( " Sensore Crepuscolare :    " );                                         
  Serial.print ( valLumen, DEC );                                                 
  Serial.println (" ☼  ");
}


/**************************************** F I N E  dei  V O I D **************************************************************/

void loop ()  {


  unsigned long currentMillis = millis();       
                                                                     
  /******* Richiamo per  F O T O D I O D O  eseguito solo ogni intervallo di 5000 milisecondi *******************/

  // Lettura FotoDiodo
  if ( millis() - previousMillis_a >= interval_a )
  {
    Lettura_Fd ();

    previousMillis_a = currentMillis;
  }
  if ( Limite_Fd < valLumen ) // Sono stati invertiti per far funionare i led                   
 
  { 
    digitalWrite ( pin_B_Tr,     LOW );                                                   

  }
  else                                                                                                                       
  {
 
    digitalWrite ( pin_B_Tr,   HIGH );                                                       

  }
} // void loop


/****************************************** F I N E ****************************************************************/

[/*]
Avatar utente
Foto Utenteilluminor
32 1 3 7
Stabilizzato
Stabilizzato
 
Messaggi: 437
Iscritto il: 10 mag 2012, 17:54

0
voti

[2] Re: Crepuscolare

Messaggioda Foto Utentelelerelele » 5 nov 2020, 10:12

per tagliare la testa al toro proverei a dare un segnale con un trimmer, al posto del fotodiodo.
Avatar utente
Foto Utentelelerelele
2.897 3 7 9
Expert EY
Expert EY
 
Messaggi: 3295
Iscritto il: 8 giu 2011, 8:57
Località: Reggio Emilia

0
voti

[3] Re: Crepuscolare

Messaggioda Foto UtenteMarcoD » 5 nov 2020, 12:06

Il sugggerimento di lelelarele è buono.

Può darsi che le due masse non siano ben connesse fra loro, variando l'assorbimento si disallineano.

Limita la corrente nella base da circa 30 a 3 mA: metti un 1 kohm fra il pin 4 e la base del transistor

Non ho esaminato con cura il programma,: la cosa più sgradevole è esaminare un programma fatto daxun altro :-)

Per provare il programma da solo , togli il transistor e metti un LED fra il pin 4 e la massa arduino

Se disperato, per filtrare e caricare un poco l'uscita del fotodiodo, metterei un condensatore da 0,1 uF in parallelo al diodo, e anche un resistore da 1 Mohm
Avatar utente
Foto UtenteMarcoD
9.298 5 9 13
Master EY
Master EY
 
Messaggi: 4425
Iscritto il: 9 lug 2015, 16:58
Località: Torino

5
voti

[4] Re: Crepuscolare

Messaggioda Foto Utentebanjoman » 5 nov 2020, 13:16

Il fotodiodo non si usa cosi'.
Va polarizzato inversamente con una tensione, ad esempio 5V, e una resistenza in serie.
Poi si misura la variazione di tensione ai suoi capi.
Oppure si puo' sfruttare la variazione di tensione generata ai suoi capi, ma e' debolissima e occorre almeno un operazionale con adeguato guadagno per leggere qualcosa.
Collegare il fotodiodo direttamente a un ingresso ADC sortisce effetti imprevisti. Ad esempio il fotodiodo carica la capacita' d'ingresso (piccola) del ADC, che poi si scarica gradualmente durante le successive letture e via cosi'....
Cerca su google "circuiti con fotodiodo.

O_/
Max
Se funziona quasi bene, è tutto sbagliato. A.Savatteri/M.Mazza
Avatar utente
Foto Utentebanjoman
8.401 5 8 12
Master EY
Master EY
 
Messaggi: 1263
Iscritto il: 19 set 2013, 19:27

0
voti

[5] Re: Crepuscolare

Messaggioda Foto UtenteIlGuru » 5 nov 2020, 13:26

Anche le letture andrebbero trattate con una FFT per ripulirle dal rumore, ma se sul forum di arduino insegnano che si fa così..
\Gamma\nu\tilde{\omega}\theta\i\ \sigma\epsilon\alpha\upsilon\tau\acute{o}\nu
Avatar utente
Foto UtenteIlGuru
4.834 2 10 13
Master EY
Master EY
 
Messaggi: 1715
Iscritto il: 31 lug 2015, 23:32

4
voti

[6] Re: Crepuscolare

Messaggioda Foto UtentePaolino » 5 nov 2020, 15:15

Magari, senza scomodare la FFT, con una media mobile si riesce a filtrare e si semplifica anche il codice .

Ciao.

Paolo.
"Houston, Tranquillity Base here. The Eagle has landed." - Neil A.Armstrong

-------------------------------------------------------------

PIC Experience - http://www.picexperience.it
Avatar utente
Foto UtentePaolino
32,5k 8 12 13
G.Master EY
G.Master EY
 
Messaggi: 4224
Iscritto il: 20 gen 2006, 11:42
Località: Vigevano (PV)

0
voti

[7] Re: Crepuscolare

Messaggioda Foto Utentestefanopc » 11 nov 2020, 9:32

Io di solito faccio 3 o 5 letture e poi faccio la media.
Lo facevo anche in assembly con i PIC.
Altrimenti si potrebbero fare ad esempio 7 letture scartare la più piccola e la più grande e fare la media delle rimanenti.
Per quanto riguarda il fotodiodo segui le indicazioni di Banjoman.
Ciao
600 Elettra
Avatar utente
Foto Utentestefanopc
5.215 2 6 12
Master
Master
 
Messaggi: 1665
Iscritto il: 4 ago 2020, 9:11

0
voti

[8] Re: Crepuscolare

Messaggioda Foto Utentelucaking » 11 nov 2020, 12:09

Sicuramete è tutto corretto quello ciò che è stato consigliato, ma intanto io comincerei da cio che ha suggerito Foto Utentebanjoman.
Avatar utente
Foto Utentelucaking
1.293 3 5 8
Expert
Expert
 
Messaggi: 1149
Iscritto il: 29 mag 2015, 14:28

0
voti

[9] Re: Crepuscolare

Messaggioda Foto UtenteIlGuru » 11 nov 2020, 12:40

Forse dovresti metterci anche un filtro passa basso. Se illumini il fotodiodo con luce artificiale per i test, quella luce si spegne e si riaccende 100 volte al secondo ed il micro potrebbe essere così veloce da registrarlo.
\Gamma\nu\tilde{\omega}\theta\i\ \sigma\epsilon\alpha\upsilon\tau\acute{o}\nu
Avatar utente
Foto UtenteIlGuru
4.834 2 10 13
Master EY
Master EY
 
Messaggi: 1715
Iscritto il: 31 lug 2015, 23:32

0
voti

[10] Re: Crepuscolare

Messaggioda Foto Utenteilluminor » 13 nov 2020, 15:28

Buon Giorno,
un comparatore TL331 è compatibile con arduino ?
Se compatibile è possibile inserirlo nel circito per il fotodiodo?
Avatar utente
Foto Utenteilluminor
32 1 3 7
Stabilizzato
Stabilizzato
 
Messaggi: 437
Iscritto il: 10 mag 2012, 17:54

Prossimo

Torna a Arduino

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti