Pagina 1 di 5

Crepuscolare

MessaggioInviato: 4 nov 2020, 14:37
da illuminor
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 ****************************************************************/

[/*]

Re: Crepuscolare

MessaggioInviato: 5 nov 2020, 10:12
da lelerelele
per tagliare la testa al toro proverei a dare un segnale con un trimmer, al posto del fotodiodo.

Re: Crepuscolare

MessaggioInviato: 5 nov 2020, 12:06
da MarcoD
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

Re: Crepuscolare

MessaggioInviato: 5 nov 2020, 13:16
da banjoman
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

Re: Crepuscolare

MessaggioInviato: 5 nov 2020, 13:26
da IlGuru
Anche le letture andrebbero trattate con una FFT per ripulirle dal rumore, ma se sul forum di arduino insegnano che si fa così..

Re: Crepuscolare

MessaggioInviato: 5 nov 2020, 15:15
da Paolino
Magari, senza scomodare la FFT, con una media mobile si riesce a filtrare e si semplifica anche il codice .

Ciao.

Paolo.

Re: Crepuscolare

MessaggioInviato: 11 nov 2020, 9:32
da stefanopc
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

Re: Crepuscolare

MessaggioInviato: 11 nov 2020, 12:09
da lucaking
Sicuramete è tutto corretto quello ciò che è stato consigliato, ma intanto io comincerei da cio che ha suggerito Foto Utentebanjoman.

Re: Crepuscolare

MessaggioInviato: 11 nov 2020, 12:40
da IlGuru
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.

Re: Crepuscolare

MessaggioInviato: 13 nov 2020, 15:28
da illuminor
Buon Giorno,
un comparatore TL331 è compatibile con arduino ?
Se compatibile è possibile inserirlo nel circito per il fotodiodo?