bios85 Inserito: 25 gennaio 2014 Segnala Inserito: 25 gennaio 2014 Salve a tutti, come da titolo devo realizzare un piccolo corcuitino che mi misuri l'illuminamento di una zona mediante un fotodiodo.... per iniziare a fare delle prove ho acquistato una piccola board (light click) della mikroelettronica che contiene il fotodiodo, il circuito di condizionamento e un adc a 12bit!!! Il fotodiodo è il seguante PD15-22C-TR8 e questo è il datascheet http://www.everlight.com/datasheets/PD15-22C-TR8_datasheet.pdf Ora ho provato la schedina e misurando in una stanza con una luce non fortissima (misurato con luxometro 350 lux) satura subito... così ad occhio bastano circa 200 lux per saturare. Quello che volevo chiedervi è mi potreste spiegare la relazione tra la corrente del fotodiodo e la luce? Essendo che la sensibilità del fotodiodo non è costante (nel suo range di misura), come devo tenerne conto? Io da datasheet ho capito che il sensore fa passare circa 6,5uA di corrente per ogni mW/Cm2 di illuminamento, è corretto oppure ho capito male? Ringrazio tutti anticipatamente e scusate per le troppe domande!
Livio Orsini Inserita: 25 gennaio 2014 Segnala Inserita: 25 gennaio 2014 I data sheet hanno sempre ragione. Il problema è che c'è una notevole dispersione dei parametri, poi molto dipende dalla polarizzazione del fotodiodo. Poi potresti prevedere anche una sorta di diaframma per evitare che saturi con poca luce. Per la linearizzazione, visto che hai un microcontrollore, ti conviene farla eseguire al micro.
bios85 Inserita: 26 gennaio 2014 Autore Segnala Inserita: 26 gennaio 2014 Salve, ovvio che i datasheet hanno sempre ragione... io intendevo dire se io ho interpretato bene!!! Per quanto riguarda la linearizzazione il fotodiodo dovrebbe dare una risposta in corrente già lineare, il mio problema è che non riesco a capire come tenere conto della sensibilità! Confrontando le mie misure con un luxometro noto che il mio sensore misura circa 1/4 di quanto misura il luxometro.....
accacca Inserita: 26 gennaio 2014 Segnala Inserita: 26 gennaio 2014 (modificato) Parlo da ignorante... non ho esperienza sull'argomento A naso tu dovresti fare una taratura iniziale Le tue misure secondo me,ma ripeto posso anche sbagliare del tutto, dovrebbero essere relative fai una misura al buio e quello è il tuo offset poi misuri alla luce e fai la differenza Come convertire in lux il valore trovato non so rispondere Hai trovato qualcosa nel sw che danno con la schedina ? Sempre secondo me.... Guarda la Fig.4 del datasheet credo che la chiave sia in quel grafico Consocendo al corrente ricavi E mW/cm2 Modificato: 26 gennaio 2014 da accacca
bios85 Inserita: 26 gennaio 2014 Autore Segnala Inserita: 26 gennaio 2014 (modificato) Si infatti la chiave è in quel grafico... ma è riferito a una lunghezza d'onda di 875nm, e se la luce che misuro ha una lunghezza d'onda diversa? Nell'esempio della schedina non convertono in lux ma restituisce una variabile con valore da zero a 100% sensa unità di misura.... Ieri ho fatto una prova di confronto con un luxometro in una stanza con delle lampade a luce bianca (non tubi fluorescenti) e la scheda della mikroe segna circa 80 lux invece il luxometro circa 350lux.... Ho sostituito la R2 da 1M a 100K perchè altrimenti saturava con pochissima luce e ho fatto in questo modo: ho letto il valore dell'ADC e l'ho convertito in tensione, poi da questo valore ho ricavato il valore di corrente che scorre in R2, poi ho diviso questo valore di corrente per 6,5uA e ho ottenuto i mW/Cm2 dai quali ho ricavato i lux.... In pratica non ho tenuto conto della sensibilità, non ho capito come fare! Secondo voi la procedura è corretta? Qui c'è lo schema della schedina: http://www.mikroe.com/downloads/get/1985/light_click_manual.pdf Modificato: 26 gennaio 2014 da bios85
accacca Inserita: 26 gennaio 2014 Segnala Inserita: 26 gennaio 2014 Forse grafico di figura 2 hai 1 a 875nm a seconda della tua lunghezza d'onda diminuisci il risultato ottenuto Cavoli non è un problema banale dovresti tenere conto anche della variazione della "corrente di buio" con la temperatura (grafico fig.3) Secondo me con l'hw che hai in mano puoi solo fare come hanno fatto loro restituire un valore del tipo poco-abbastanza-tanto fare una misura precisa da quel poco che leggo è piuttosto complesso probabilmente devi avere anche qualche filtro ottico davanti al sensore (come sempre le sparo...)
Livio Orsini Inserita: 26 gennaio 2014 Segnala Inserita: 26 gennaio 2014 Tutti i fotodiodi e fototransistor hanno sensibilità differenti alla varie lunghezze d'onda. Nei datasheet c'è sempre un bel diagramma che sinstetizza questa risposta. Per realizzare strumenti di misura "seri" si usano arrays di diodi con sensibilità differenti a differenti lunghezze d'onda, poi si eseguono medie pesate delle varie risposte. Il diaframma, per ridurre la quantità di luce che incide sul sensore, serva anche a minimizzare gli effeti di non linearità.
bios85 Inserita: 26 gennaio 2014 Autore Segnala Inserita: 26 gennaio 2014 Infatti io devo stimare i lux che sono su una strada per poi regolare delle lampade per mantenere l'illuminamento costante, questa è l'idea.... ma ancora la differenze con il luxometro secondo me è tanta.... anche se devo testare se questa differenza è uguale a diverse intensità di luce e se fosse così potrei risolvere il problema via software!!!
Livio Orsini Inserita: 26 gennaio 2014 Segnala Inserita: 26 gennaio 2014 Se è solo per mantenere costante la luminosità poco importa la misura assoluta, tanto compari una soglia con l'uscita del sensore. Quello che veramente è importante è la costanza della misura, ovvero misure identiche per condizioni identiche. Il valore di soglia lo puoi definire con l'ausilio di uno strumento di misura. Ricalibrazioni, linearizzazioni ed altro non sono necessarie se non ti interesa una misura assoluta.
bios85 Inserita: 2 febbraio 2014 Autore Segnala Inserita: 2 febbraio 2014 Salve a tutti, in questa settimana ho fatto più prove ma non c'è stato modo di riuscire a tarare questo sensore, troppe differenze anche tra lampade diverse... quindi la mia deduzione e che è troppo sensibile agli infrarossi!!! Allora ho acquistato questo: TEMD5510FX01 che è già filtrato, ora secondo voi che modifiche dovrei apportare alla schedina? Poi qualcuno di voi sa dirmi dove posso trovare le norme con i valori di illuminamento delle strade? Grazie
GiRock Inserita: 2 febbraio 2014 Segnala Inserita: 2 febbraio 2014 Si dice questo, con tanto di link al datasheet magari : TEMD5510FX01Norme di Illuminazione Stradale 2013
Livio Orsini Inserita: 2 febbraio 2014 Segnala Inserita: 2 febbraio 2014 ora secondo voi che modifiche dovrei apportare alla schedina? Se vuoi misurare l'illuminazione stradale per una tua curiosità è un conto, se invece devi eseguire misure per motivi professionali compre uno strumento certificato, altrimenti le tue misure son tempo e soldi sprecati: non servono a nulla.
bios85 Inserita: 2 febbraio 2014 Autore Segnala Inserita: 2 febbraio 2014 Come ho già detto sopra devo realizzare una scheda in grado di pilotare una lampada a led in modo da avere un illuminamento x (il sistema è più complesso ma lo scopo finale è questo) . La retroazione del circuito è appunto un fotodiodo. Io ho detto che non mi serve una precisione di un lux, ma nemmeno un errore di 300 lux tutto qua! Le misure di riferimento le sto facendo con un luxmetro professionale ovviamente.
accacca Inserita: 2 febbraio 2014 Segnala Inserita: 2 febbraio 2014 Come proposto da Livio al #9 con quello che hai puoi dividere il campo di misura in 4/5 parti e riconoscere 4/5 situazioni differenti non i LUX in assoluto. Secondo me potresti fare una cosa diversa Caratteristiche del led che usi lumen/w (misuri la corrente di alimentazione) conosci l'angolo del cono di illuminazione Conosci al distanza lampada piano da illuminare Credo che con questi dati potresti riuscire a stimare i lux sul piano (Sempre approssimazione è ma non devi usare più l'ambardan di cuui sopra) Per fare una cosa più furba potresti fare delle misure con il luxmetro professionale e crearti una tabella tot corrente tot lux. Mediando su più lampade potresti avere una tabella che caratterizza in modo abbastanza preciso la tua illuminazione Immagino che la resa del led lumen/w dipenderà anche dalla temperatura Poichè la tua applicazione è da esterno dovresti valutare se la variazione estate/inverno procude variazioni apprezzabili della tabella di cui sopra. Temp fa il responsabile dell'azienda municipalizzata della mia città, aveva scritto un'articolo sulla sperimentazione che aveva fatto con lampade a led per illuminazione stradale. Ti riassumo quello che ricordo: All'epoca le aziende che avevano proposto soluzioni con lampade a led si erano dimostrate molto superficiali e ignoranti in materia. Tutte avevano dato risalto alla durata della lampada led ma avevano dimostrato poche o nuessuna conoscenze delle normative relative all'illuminazione pubblica. (Non mi sembra il tuo caso ma ti avviso perchè anche il lampione più figo del mondo se non è a norma....) Altra cosa che ricordo è che il tizio aveva fatto a tutte la stessa domanda: ok per la lampada manutenzione (quasi) nulla ma l'alimentatore ? Ha la stessa durata ? e qui erano cadute le pere (e sarei cascato anche io con tutte le scarpe). Cerco l'articolo se lo trovo in rete ti posto il link.
bios85 Inserita: 2 febbraio 2014 Autore Segnala Inserita: 2 febbraio 2014 grazie per i consigli.... comunque nei dati del fotodiodo c'è un grafico che illustra la corrente inversa del fotodiodo in funzione dei lux che lo colpiscono, questo andamento è lineare! essendo l'area del fotodiodo nota penso che questo grafico ne tenga conto... poi a me mi serve sapere sulla superficie da illuminare quanti lux ci sono in modo da regolare la potenza della lampada. Una volta che questo funziona si passa allo step successivo e quindi alimentatore, driver ecc e si terrà conto di efficienza e tutto il resto. Per quanto riguarda le normative è vero non so nulla ancora, adesso è l'inizio di un prototipo.....
bios85 Inserita: 3 febbraio 2014 Autore Segnala Inserita: 3 febbraio 2014 Salve e buona sera.... oggi mi è sorto un'altro problema, sto facendo delle prove di controllo della lampada impostando una soglia di illuminamento e cercando di tenerla costante allontanando ad esempio la lampada dal sensore.... Il controllo che faccio è molto semplice: in pratica leggo il sensore e confronto la lettura con la soglia, se sono al di sopra abbasso di 1 il duty de PWM altrimenti lo aumento di 1 e rifaccio il controllo!!! Il problema è che la lampada pulsa intorno alla soglia impostata.... io pensavo che con una frequenza di controllo abbastanza elevata questo effetto non si notasse!!! Potete darmi qualche consiglio su come risolvere il problema? Con un controllo PID potrei risolvere? Ringrazio ancora tutti...
Livio Orsini Inserita: 4 febbraio 2014 Segnala Inserita: 4 febbraio 2014 Con un controllo PID potrei risolvere? Assoutamente no! Tu ora stai lavorando solo in proporzionale, l'aggiunta di una componente integrale ti porta solo ad eliminare l'errore, mentre quella derivativa potrebbe migliorare la velocità di risposta. nel tuo caso devi solo filtrare adeguatamente la lettura del sensore.
bios85 Inserita: 4 febbraio 2014 Autore Segnala Inserita: 4 febbraio 2014 Grazie mille per i consigli sempre gentilissimo... Comunque mi potresti spiegare meglio? Io ora il duty cycle lo gestisco con questa routine: //-------------Regola luminosità lampada in moda da avere i LUX_desiderati---------- void Regola_intensita_lampada(unsigned int LUX_desiderati){ //pwm_period1---> corrisponde a duty cycle pari a 1 //lux ---> sono i lux misurati dal sensore if((lux > LUX_desiderati) && (lux > soglia_minima_LUX) && (pwm_duty > 0)){ pwm_duty=pwm_duty-1; PWM_Set_Duty(pwm_duty, 1); } if((lux < LUX_desiderati) && (pwm_duty < pwm_period1)){ pwm_duty=pwm_duty+1; PWM_Set_Duty(pwm_duty, 1); } } //-------------Fine Regola luminosità lampada in moda da avere i LUX_desiderati---------- Per il filtraggio intendi modificare il filtro R6-C8 del seguente schema? Grazie ancora
Livio Orsini Inserita: 4 febbraio 2014 Segnala Inserita: 4 febbraio 2014 Fai molto meglio se il filtro lo fai in modo digitale direttamente nel micro. COn quale periodo leggi il sensore?
bios85 Inserita: 4 febbraio 2014 Autore Segnala Inserita: 4 febbraio 2014 Non lo so di preciso, questo è il ciclo: while(1){ //LOOP INFINITO Net_Ethernet_28j60_doPacket(); //Processa i pacchetti ETHERNET for(i = 0; i < NUM_OF_SOCKET_28j60; i++) { if(socket_28j60[i].open == 0) pos[i] = 0; } Regola_intensita_lampada(soglia_LUX); Leggi_sensori(); //Leggo il sensore }//LOOP INFINITO Il tutto dipende da quanto tempo occorre per gli altri metodi.... comunque il clk del mikro è 120MHz!!!
Livio Orsini Inserita: 4 febbraio 2014 Segnala Inserita: 4 febbraio 2014 Non richiami la lettura a tempo? Tra l'altro la varaizione di luce ambiente non è un fenomeno estremamente rapido, se campioni a 100 ms sei anche troppo veloce. Potresti realizzare una media scorrevole su 20 campioni effettuati con clock da 100 ms, usi il valore così ottenuto e non dovresti avere oscillazioni dovute al PWM. Come hai settato il geenratore di PWM del PIC?
accacca Inserita: 4 febbraio 2014 Segnala Inserita: 4 febbraio 2014 comunque il clk del mikro è 120MHz!!! Grrrrrrrrr! facciamo tutti firmware quando il micro corre ........ MI è venuto un dubbio: la variazione di 1 passo del tuo PWM è apprezzabile sulla luminosità della lampada ? Cioè se cambi di 1 il pwm avanti indietro riesci ad apprezzare la varaizione di intensità luminosa. Perchè a me sembra succeda questo: tu quando puoi aggiorni il dutycycle del pwm che oscilla +/-1 attorno alla soglia siccome non sei regolare rimani per x tempo sotto e y tempo sopra soglia e riesci a vedere lo sfarfallio.
Livio Orsini Inserita: 4 febbraio 2014 Segnala Inserita: 4 febbraio 2014 (modificato) Accacca quelle regolazioni van fatte....come si fa una regolazione. Sembra un concetto lapalissiano e banale ma lo è molto meno di quanto sembri. Tutte le regolazioni ad anello chiuso quantizzate devono rispettare alcune condizioni ben precise, come banda morta di regolazione, tempo di campionamento rigorosamente costante, etc. Se ci si limita a chiudere l'anello si rischia quasi sempre l'instabilità. Poi c'è anche un'errore concettuale: Regola_intensita_lampada(soglia_LUX); Leggi_sensori(); //Leggo il sensore Prima si legge il sensore e poi si regola la variabile. Per fare le cose fatte decentemente bisognerebbe avere un tempo di campionamento a periodo fisso e non influenzabile dai vari processi, ovvero un iterrupt temporizzato ad alta priorità. Con questa temporizzazione si legge la variabile e si corregge l'uscita. La metodologia di regolazione quantizzata la descrivo dettaglaitamente, con numerosi esempi e funzioni in pseudo "C", nel mio tutorial sulle regolazioni. (sezione didattica, sottosezione elettrotecnica). Modificato: 4 febbraio 2014 da Livio Orsini
bios85 Inserita: 4 febbraio 2014 Autore Segnala Inserita: 4 febbraio 2014 (modificato) Allora questi sn i settaggi del PWM: //--------Inizializzo modulo PWM------------------------------------------------ pwm_period1 = PWM_Init(10000, 1, 1, 2); //Inizializzo PWM1 (Utilizza TIMER 2) PWM_Set_Duty(0, 1); //Inizialmente setto il duty del PWM1 a zero PWM_Start(1); //Avvio modulo PWM La frequenza è 10KHz, la funzione PWM_Init(10000, 1, 1, 2) mi restituisce pwm_period1 che è il valore da assegnare al modulo PWM per avere un duty paro a 1. Quindo posso variare il duty nell'intervallo 0<= duty<=pwm_period1! Per quanto riguarda la lettura del sensore faccio già una media su 20 campioni, però leletture le faccio una dopo l'altra.... comunque proverò a temporizzare il tutto con un timer e vediamo se riesco a migliorare qualche cosa!!! Ci tengo a precisare che io sono ancora studente e non ho esperienze lavorative sulle spalle, quindi ho solo da imparare!!! Grazie Modificato: 4 febbraio 2014 da bios85
Livio Orsini Inserita: 4 febbraio 2014 Segnala Inserita: 4 febbraio 2014 Ci tengo a precisare che io sono ancora studente... Questo si era capito abbastanza bene. E' proprio per questo che cerco di farti fare un'analisi critica del lavoro invece di darti soluzioni pronte.
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora