Usiamo il sensore di direzione del vento dell’anemometro DeAgostini - Il Meteo clicca per ingrandire Introduzione Le banderuole che indicano la direzione del vento mi hanno sempre affascinato. L’uomo si è sbizzarrito nel crearne in tutte le forme: simboli propiziatori oppure religiosi quali galli ed agnelli, oche e cavalli, arcangeli e sangiorgi che uccidono draghi, demoni e streghe. Recentemente si vedono sui tetti orsetti panda, caravelle, motociclette ed altro ancora. Con la tecnologia è arrivata l’elettronica e non è stato più necessario guardare in alto per cercare una banderuola: ora da dove soffia il vento lo si legge su un comodo display. Descrivo come utilizzare il sensore di direzione del vento usato nell’anemometro DeAgostini “Meteo - costruisci la tua stazione meteorologica” e come costruire un prototipo di circuito che visualizzi la direzione del vento su un display. Premessa Un paio di anni fa, a settembre del 2008, uscì il primo numero dell’opera “Meteo costruisci la tua stazione meteorologica” edito dalla DeAgostini, con allegate le palette rotanti e il timone di direzione del vento dell’anemometro. clicca per ingrandire Il prezzo era di soli 3 euro e l’ho acquistato sperando in un breve arrivo degli altri componenti. L’anemometro era composto da un sensore (uscite 1 e 61), da un modulo interfaccia e trasmettitore a 433 MHz, da un modulo ricevitore e display da inserire in una base madre e da minuterie quali tubi, viti, anelli e simili. (uscite 45, 46, 47, 49). A me interessava il solo sensore dell’anemometro, ho dunque atteso “un sole e sei lune” e a marzo di quest’anno ho ordinato il nr.61; l’edicolante me l’ha consegnato a luglio con l’altra metà del sensore. Cosa c’è dentro il sensore? Il sensore ha una flangia per il tubo di sostegno da 16mm; dal lato superiore esce il perno per il timone che misura la direzione del vento e dal lato inferiore esce il perno per le palette che misurano la velocità del vento. Sette fili colorati (terminati su un microconnettore che ho rimosso) escono dal sensore e c’è un piccolo magnete su un braccio delle palette per la misura della velocità del vento. Se posso io evito di aprire oggetti chiusi ad incastro ma con un po’ di intuito e molta fortuna spesso si riesce a capire cosa c’è dentro. Seguiamo un percorso deduttivo. clicca per ingrandire Se fuori c’è un magnete, dentro c’è un’ampolla reed o un sensore hall. Armato di tester ICE 680G predisposto per ohmmetro con fondo scala 100 ohm (così dai puntali escono 600 uA e non si rovina quasi nessun componente), ho testato le combinazioni dei fili e trovato un contatto reed. clicca per ingrandire Continuando a cercare invertendo i puntali ho trovato un diodo. Ho messo una resistenza da 1K in serie ad una pila da 4.5 Volt ed ho misurato una tensione sul diodo di 1,2 Volt: è un led. E siamo a tre fili su sette: quello in comune è con buona probabilità la massa. Se c’è un led, ci sono fotodiodi o fototransistor o fotoresistenze. Ho scommesso sui primi ed ho collegato il tester, configurato a microamperometro con fondo scala 50 uA, fra il “filo comune” ed uno dei quattro fili restanti; ho acceso il led ed ho ruotato il timone di direzione del vento. In una posizione ho misurato 40 uA che scendevano a 25 uA spostando il timone di +/- 45 gradi e poi a zero spostandolo di +/- 90 gradi. Stessi risultati per gli altri tre fili: bingo, ci sono quattro fotodiodi. Riporto le connessioni trovate rispettando l’ordine del cavetto multifilare colorato: I nomi delle direzioni li ho assegnati ipotizzando per comodità che la flangia rappresenti il Nord e verificando quale fotodiodo eroga corrente quando il timone di direzione del vento punta verso le varie direzioni "rispetto alla flangia". Ovviamente il sensore è un goniometro (che misura una direzione relativa) e non una bussola (che misura una direzione assoluta) quindi le direzioni assegnate ai quattro fotodiodi sono del tutto arbitrarie. Nulla cambierebbe se le ruotassimo “tutte” di un qualunque angolo, basta solo non alterare la loro sequenza, sarà poi il programma di elaborazione che provvederà alla taratura, allineando il valore letto ad una direzione nota. Due sensori in un contenitore Il sensore in basso misura la velocità del vento: Ad ogni giro delle palette il magnete chiude il contatto dell’ampolla reed per circa un quarto di giro. Misurando la frequenza degli impulsi, o il loro periodo, si risale alla velocità del vento. E’ stato già fatto, quindi non aggiungerei nulla alla conoscenza comune. Invito a leggere l’articolo di Ciuppy http://www.grix.it/viewer.php?page=6189 : un NE555 pilotato da un fotoaccoppiatore rigenera gli impulsi che sono poi elaborati da un PIC: la medesima interfaccia può essere pilotata dal contatto reed del nostro sensore. L’articolo citato descrive chiaramente anche la relazione fra velocità del vento, dimensione dei bracci delle palette e frequenza degli impulsi. Nel nostro caso, avendo un solo impulso per giro, la frequenza varia da circa 1 a 8 Hz per velocità del vento fra 10 e 50 Km/h: la risoluzione è bassa, quindi è meglio misurare il periodo in msec. In alternativa si può allungare il tempo di lettura. Il sensore in alto misura la direzione del vento In meteorologia si usa il verso “negativo” della direzione del vento che genera una spinta sulla "coda" del timone: la "punta" si posiziona verso la direzione da cui il vento spira. All'interno quasi sicuramente il led è fisso, così non ci sono contatti striscianti sempre critici, ed una maschera con aperture calibrate è solidale con l’asse del timone: in funzione della sua posizione ricevono la luce dal led solo uno o due dei quattro fotodiodi disposti a 90 gradi. I fotodiodi generano correnti proporzionali all’illuminazione ricevuta ed elaborandole si risale alla posizione angolare del timone. Il sensore dell’indicatore di direzione del vento Ho misurato la corrente generata dai fotodiodi in funzione della illuminazione variando con un potenziometro la corrente di alimentazione del led. Conoscere tale relazione serve per dimensionare il circuito di misura. La curva “fotovoltaico” mostra i valori letti sul fotodiodo “in cortocircuito” cioè collegandolo direttamente al microamperometro, la curva “fotoconduttivo” mostra i valori letti in uscita dal diodo polarizzato inversamente con 4,5 Volt; i valori esposti sono quelli relativi alla posizione del timone che produce la massima corrente. Per i dettagli sulle due modalità di funzionamento dei fotodiodi leggete l'appendice 1. Nel sensore in mio possesso tre fotodiodi hanno caratteristiche simili ed il quarto (filo rosso) ha una corrente di uscita inferiore del 15% rispetto agli altri tre: non so se ciò sia dovuto alle tolleranze dei componenti oppure al degrado del fotodiodo per le mie vessazioni durante le prove oppure se sia una precisa volontà dal costruttore per semplificare il calcolo della direzione. Per conoscere l’andamento della corrente generata dai fotodiodi in funzione della posizione angolare del timone di direzione ho collegato l’asse del timone ad un minitrapano Proxxon sottoalimentato a 3 Volt per ridurne la velocità al minimo e non distruggere il sensore che non è stato certo progettato per ruotare velocemente. A circa 5 giri al secondo si produce un segnale periodico visualizzabile su un oscilloscopio con la base dei tempi impostata a 20 msec/div, una rotazione più lenta crea problemi alla persistenza dell’immagine completa sullo schermo. Per visualizzare il segnale ho convertito la corrente in tensione ed ho usato la configurazione fotoconduttiva polarizzando inversamente i fotodiodi. Il filo comune collega i catodi del led e dei fotodiodi quindi per alimentare il led serve una ulteriore tensione positiva; il led è alimentato a 6 Volt e assorbe circa 4 mA. Il diodo è polarizzato inversamente con 6 Volt e quando è illuminato genera una corrente che produce una caduta di tensione sulla resistenza: Vout= Ifd x R: la Ifd è di circa 70 uA e se R=39K abbiamo Vout ~ 2,8 Volt Colleghiamo l’oscilloscopio alla resistenza: il megaohm di resistenza di ingresso dell’oscilloscopio è un carico accettabile. La prima foto è presa dall’oscilloscopio, la seconda è una elaborazione grafica con la sovrapposizione di una griglia orizzontale di 10 divisioni “per periodo” per ricavare gli angoli di illuminazione: abbiamo 36 gradi per divisione. x. Ipotizziamo che il fotodiodo in esame sia quello del Nord. Ci sono quattro livelli di uscita, la differenza fra i due valori intermedi a +/- 54 gradi di rotazione rispetto al “massimo” dovrebbe essere dovuta alla geometria della maschera, così come l’ondulazione sul livello massimo. Potrebbe anche essere una precisa volontà dal costruttore per semplificare il calcolo della direzione. Consideriamo “molto simili ~ quasi uguali” i due valori intermedi e chiamiamoli “ livello medio”: partendo dal valore massimo e ruotando in senso orario si ha: 0 - 36 gradi (N) livello massimo (illuminazione diretta) 36 - 72 gradi (NNE- NE-ENE) livello medio (illuminazione laterale) 72 - 180 gradi (oltre ENE) livello minimo (buio) Lo stesso risultato si ha simmetricamente in senso antiorario. Gli altri tre fotodiodi (Est, Sud ed Ovest) hanno le uscite sfasate rispettivamente di 90, 180 e 270 gradi rispetto a quella del fotodiodo Nord. Come risalire alla direzione del vento Allineando i quattro segnali di uscita in un unico diagramma si ottengono 20 settori circolari di 18 gradi ciascuno: mettiamo in relazione i livelli di ciascuna uscita con la direzione del timone. Con l'ipotesi di considerare "quasi uguali i due livelli intermedi" abbiamo approssimato il segnale vero con un segnale a tre soli livelli: consideriamo pari a zero il livello minimo e chiamiamo: Na, Nb Ea, Eb Sa, Sb Wa, Wb i livelli max e medio del fotodiodo Nord i livelli max e medio del fotodiodo Est i livelli max e medio del fotodiodo Sud i livelli max e medio del fotodiodo Ovest Per le direzioni Nord, Est, Sud ed Ovest abbiamo l’uscita di un solo fotodiodo al livello massimo, per le altre 12 direzioni intermedie le uscite di due fotodiodi sono presenti in varie combinazioni di livelli massimi e medi. clicca per ingrandire il riferimento “zero” per i gradi è quello di massima corrente per il fotodiodo Nord. La cattiva notizia è che i settori Nord, Est, Sud ed Ovest hanno una ampiezza di 36 gradi mentre per le altre 12 direzioni l’ampiezza è di 18 gradi. Il nostro sensore non è lineare perché i settori circolari non sono tutti di 22,5 gradi: occorre accontentarsi. La buona notizia è la presenza di una mappatura univoca della direzione del vento in funzione delle uscite dei fotodiodi. Leggendo i valori di corrente (eventualmente convertiti in tensione) in uscita dai fotodiodi e applicando la mappa sopra riportata si risale univocamente ad uno dei sedici settori di direzione. Si può lavorare in analogico con quattro uscite a tre livelli oppure passare in digitale con otto uscite a due livelli. Veramente comodo e semplice da gestire. Per finire consideriamo che la rosa dei venti universalmente conosciuta mostra solo otto venti e quindi le loro direzioni hanno una risoluzione di 45 gradi. La risoluzione del sensore è di 18/36 gradi: i valori forniti sono più che adeguati per individuare quale degli otto venti stia soffiando. clicca per ingrandire Il circuito di test Giunti a questo punto ci si potrebbe anche fermare avendo raggiunto lo scopo previsto che era quello di capire quali segnali mettesse a disposizione il nostro sensore. Un vecchio adagio dice: "se non lo provi non saprai mai se funziona davvero" e quindi ho allestito un circuito di test. Ho scartato un circuito a componenti discreti perché occorre trasformare i segnali con tre livelli di tensione in binario (servono 4 comparatori a finestra con due operazionali ciascuno), poi occorre realizzare sedici porte “and” a più ingressi con vari "not" ausiliari per accendere 16 led. Se vogliamo il dato su un display numerico servono un encoder 16/4 e un paio di decoder a 7 segmenti. Questo è uno dei classici casi in cui un PIC è davvero la soluzione ottimale. Il circuito di interfaccia Per realizzare velocemente il circuito di test ho usato un Basic Stamp 2 della Parallax. Avevo in casa la board DeA del Robot DeAgostini che monta un PIC 16C57C programmato da Parallax con l’interprete PBASIC ed una EEPROM 24LC16B da 2KB per memorizzare i programmi. Fornisce 16 pin per I/O, una RAM con 24 variabili word (splittabili in byte, nibble e bit) e un display-debug su PC via RS232 integrata: il tutto consuma circa 30 mA a 6Volt. Anche se il BS2 è ormai obsoleto continuo ad usarlo spesso per i circuiti di prova grazie alle istruzioni di alto livello disponibili nell’ambiente di sviluppo gratuito del PBASIC 2.5. Usando altre versioni del Basic Stamp (1, 2e ,2sx, 2p, 2pe, 2px, ecc) occorre modificare le costanti delle temporizzazioni usate nei programmi: sul manuale Parallax c’è davvero tutto. La board Dea ha un pulsante, una bread board con 17+17 contatti, un connettore da 10+10 pin con tutti i pin di I/O e molti connettori per i motori ed i sensori: il suo scopo era governare il mitico robot DeA "panettone". Il BS2 DeA richiede una alimentazione da 6 Volt a massimo 7,5 Volt, monta un regolatore LM2940 che fornisce i 5 Volt necessari ed ha uno zener da 8.2 Volt in parallelo alla alimentazione: se si inverte l'alimentazione o se si superano gli 8.5 Volt il fusibile salta. Se non c'è il fusibile salta lo zener, un po' brutale ma efficace: era previsto che il robot fosse assemblato da numerosi appassionati ma non tutti espertissimi di elettronica! Il mio circuito di test è alimentato a 12 Volt: ho aggiunto un 7805 "volante" con due diodi per avere circa 6,3 Volt in uscita verso il BS2 (in alto a sinistra nella foto). Per alimentare il led del sensore ho sfruttato la caduta di tensione sul 7805, visto che il catodo del led è collegato anche ai catodi dei fotodiodi connessi ai +6.3 Volt per la polarizzazione inversa. Con una resistenza da 1K il led assorbe circa 5 mA e genera una corrente massima nei fotodiodi di circa 100uA: giusto quel che si serve. Nella foto il filo rosso "volante" è quello che alimenta il led. clicca per ingrandire Se si usa la board DeA va ricordato che il pulsante S1 connesso a massa e la relativa resistenza da 1K connessa al Vdd +5V sono già integrati sulla scheda. La misura della direzione del vento Occorre misurare le correnti generate dai quattro fotodiodi. Il BS2 gestisce la conversione A/D con l’istruzione RCTIME che misura il tempo di carica o di scarica di un condensatore alimentato dalla tensione o dalla corrente da misurare. In Appendice 2 ci sono tutti i dettagli su come funziona la conversione A/D del BS2. Usiamo 4 pin del BS2 per misurare sequenzialmente le correnti dei fotodiodi e memorizziamo il reciproco dei valori letti in quattro variabili: il tempo di carica dei condensatori è inversamente proporzionale alla corrente di carica. Con dei test “a finestra” ricaviamo i tre livelli di uscita. Le soglie di misura vanno regolate in base ai valori usati. Per C=0.22uF, I(led)=5 mA, I(fd)max=100 uA il tempo di carica è di circa 2.8 msec, il risultato di RCTIME è di circa <1500>, il reciproco 65535/RES è di circa <45>. Le soglie sono poste al 10% ed all’80% del valore massimo. VMIN CON 5 VMAX CON 35 ' soglia inferiore : stabilisce il livello MINIMO ' soglia superiore : stabilisce il livello MASSIMO Con ulteriori test di tipo “and” arriviamo ad un valore della variabile DIREZ che “mappa” i 16 settori circolari. Il risultato, convertito in diciture alfabetiche, è inviato ad un display LCD a due righe in modalità 4 bit. Il BS2 esegue 4 letture sequenziali: con tre fotodiodi al buio avremo tre misure lunghe 130 msec, aggiungendo la misura del quarto fotodiodo illuminato si arriva a mezzo secondo, un tempo adeguato per considerarle “contemporanee” vista la lentezza del cambio di direzione del vento. L’allineamento del timone Come detto all'inizio il sensore è un goniomentro e non una bussola: occorre definire quale sia il Nord. La modalità usata dalla stazione meteo DeA prevede che ogni volta che il sensore viene riposizionato, occorre spegnere il modulo sensore-trasmettitore, allineare il timone di direzione con la punta verso Nord, riaccendere il modulo ed effettuarne la ricerca dalla stazione base: questo perchè il programma di gestione assume come Nord la posizione del timone all'accensione. Questa è una limitazione imposta del programma di gestione e non dal sensore: è possibile effettuare l'allineamento usando una qualunque direzione senza la necessità di spegnerlo. Per allineare il timone del vento alla direzione reale dobbiamo “ruotare” la mappa interna. Poiché la variabile DIREZ assume valori fra 0 e 15 in funzione della posizione del timone del vento, per ruotare la mappa basta sommare la variabile ROTAZIONE, con valori fra 0 e 15, e poi calcolare il resto della divisione per 16 (funzione modulo N). Pigiando il pulsante S1 e collegato al pin 2, si incrementa il valore di ROTAZIONE (il valore iniziale è 0) ruotando così la mappa di una direzione alla volta. Il valore corrente della variabile ROTAZIONE è poi memorizzato nella EEPROM e quindi non si perde allo spegnimento;tale valore è anche mostrato sul display in basso a destra in formato esadecimale (0-F). Per allineare il sensore si posiziona il timone del vento verso una “direzione nota” e si pigia il pulsante S1 finché sul display non appare la stessa direzione. La procedura va ripetuta ogni volta che si sposta il sensore. Per individuare con buona precisione una “direzione nota” occorre una bussola da rilevamento, di quelle con lo specchio, e il quadrante rotante e possibilmente la sospensione dell'ago magnetico in olio. Si ruota il quadrante allineando la direzione cercata alla tacca di puntamento, si porta la bussola all'altezza degli occhi e ci si gira su se stessi finché l’ago magnetico, visto riflesso sullo specchio, si allinea al Nord del quadrante; adesso guardando attraverso il foro presente alla base dello specchio si cerca un oggetto o un particolare distante almeno un centinaio di metri. Quel punto individua la direzione cercata: è più facile da fare che da spiegare! La bussola presente sul timone di direzione si puo' usare solo come ripiego: l'ago magnetico, oltre a muoversi ad ogni minima vibrazione, è influenzato dal magnete posto sul braccio della paletta che lo fa spostare di quasi 20 gradi. Se siete pigri allora direzionate la flangia a Nord usando la bussola integrata sul timone, verificate che l'ultimo carattere del display sia <0> e non pigiate mai il pulsante S1. L'assemblaggio Per sostenere il sensore ho utilizzato un paio di spezzoni di tubi in pvc da 16 mm per impianti elettrici con giunti e curve: il tutto è fissato su una base ricavata da un tubo pvc da 50 mm per scarichi idraulici. Il cavo multifili entra perfettamente all'interno dei tubi e il connettore strip line da 4+4 pin consente un agevole smontaggio del sensore in caso di necessità. clicca per ingrandire Il prototipo: a sinistra la board DeA, al centro il display lcd, a destra il sensore sul supporto: clicca per ingrandire Sulla prima riga del display : la direzione del vento. Sulla seconda riga: il mio nick e, all'ultima posizione, lo stato della variabile ROTAZIONE in esadecimale, il valore corrente è <B> = 11. Il prototipo finalmente esposto al vento, il posizionamento non è a norma WMO, ma funziona! clicca per ingrandire Il listato in Pbasic 2.5 Parallax. Il codice è un file testo con estensione ".bs2" : va importato nell'Editor Basic Stamp fornito gratuitamente da Parallax: l'ultima versione è la 2.5. Si dà il comando Run e il codice viene precompilato e scaricato nella EEPROM della board BS2 attraverso la connessione seriale del PC. Il codice gira su qualunque Board BS2, ricordate che nella versione DeA il pulsante S1 (e la relativa resistenza) è già presente ed è connesso al pin 2. http://adamatj.altervista.org/_altervista_ht/art04/sensore_vento_dea.bs2 Prima ci sono le direttive di compilazione, poi la dichiarazione delle variabili, delle costanti e dei pin, poi ancora la fase di inizializzazione ed infine il programma che richiama ciclicamente 4 routine. L'ultima routine "disegna" serve solo per la messa a punto e visualizza sullo schermo del PC alcune variabili e in modo grafico le correnti dei fotodiodi. (Direttive) (Dichiarazioni) (Inizializzazione) DO GOSUB misura GOSUB mappa GOSUB ruota GOSUB scrivi 'GOSUB disegna grafico su PC LOOP ' ' ' ' ' legge i 4 fotodiodi ricava la mappatura in DIREZ cambia la rotazione della mappa scrive su display lcd serve solo per i test: fa il debug (Subroutine) Il codice precompilato occupa circa 1,5 dei 2 Kb disponibili: se si elimina la routine "disegna" si risparmia mezzo Kb. Le routine di gestione del display lcd le ho prese dalla documentazione Parallax, le altre le ho scritte io. Il listato completo e commentato è nel link: siate comprensivi, è davvero pessimo ma lo scopo era quello di verificare la fattibilità della misura di direzione. Sviluppi futuri Il prototipo serve solo come studio di fattibilità per verificare che le ipotesi sul funzionamento del sensore siano corrette. Per un circuito definitivo è certamente opportuno usare un PIC di recente generazione che consenta una gestione ottimale delle potenzialità del sensore elaborandone sia i segnali di direzione che quelli di velocità del vento. Per le norme WMO un anemometro /indicatore del vento deve essere montato su un palo ad almeno 3 metri sopra eventuali ostacoli e con 10 metri di spazio libero intorno: occorre quindi “trasportare” il segnale per almeno 50 metri per farlo arrivare al display di stazione. Su queste distanze i collegamenti radio non sono affidabili sulle bande condivise da migliaia di telecomandi e sensori remoti inoltre si pone anche la necessità di cambiare periodicamente la pila in cima al palo. In pratica occorre: - telealimentare il sensore - generare uno o due segnali analogici a 4-20 mA o uno digitale a 20 mA (i segnali in tensione non superano i 5 metri) - inviare i segnali lungo un comune cavo da esterno con 3/4 conduttori. - leggere il segnale in corrente - elaborare il segnale - ecc ecc C’è davvero da divertirsi …. La lista dei componenti del circuito di test 1 sensore anemometro DeAgostini Meteo, uscite 1 e 61 4 condensatori da 0.22uF 60 V 1 resistenza 1K 1/4 W 2 diodi 1N4001 2 consensatori elettrolitici 100 uF 25V 2 condensatori 100 nF 60 V 1 regolatore LM7805 1 resistenza 1K 1/4 W (non serve se si usa la board BS2 DeA) 1 pulsante (non serve se non si usa la board BS2 DeA) 1 connettore per alimentazione maschio da 5.5 mm 1 connettore per alimentazione femmina da 5.5 mm 1 connettore strip line 4+4 pin maschio/femmina 1 board Basic Stamp 2 1 display lcd 2 righe 16 caratteri Il costo dei componenti il sensore Dea 3+10 euro la board BS2 OEM 40 euro (in kit) - chip Parallax 49$ il display lcd 10 euro i componenti vari 7 euro La reperibilità del sensore Il sensore è reperibile presso la DeAgostini richiedendo, anche in edicola, i numeri arretrati nr. 1 e 61 (Codice Opera = 5447): ci vuole molta pazienza per la spedizione. Cercando in rete ho letto che il sensore DeAgostini, e probabilmente tutta la stazione meteo, è lo stesso della stazione meteo venduta tempo fa dalla Lidl, nota catena di supermercati, nonché della stazione meteo Ventus W155: guardando le foto la somiglianza è davvero evidente. Un po’ di documentazione Un anemometro digitale http://www.grix.it/viewer.php?page=6189 Deagostini - Meteo http://www.meteo.it/DeAgostini/Default.aspx Deagostini il sensore 1 http://images.meteo.it/Pdf/10361.pdf Deagostini Il sensore 61 http://images.meteo.it/Pdf/11273.pdf National: fotodiodi http://www.national.com/onlineseminar/2004/photodiode/PhotodiodeAmplifers.pdf Celle fotovoltaiche http://www.padova.infm.it/torzo/fotocella.pdf Fotodiodi http://www.ifac.cnr.it/~brenci/materiale_didattico/12-fotodiodi.pdf Basic Stamp 2 http://www.parallax.com/tabid/295/Default.aspx Basic Stamp 2 http://www.parallax.com/dl/docs/article/IlBASICStamp2.pdf Basic Stamp Editor http://www.parallax.com/tabid/441/Default.aspx Basic Stamp Doc http://www.parallax.com/tabid/440/Default.aspx Le routine LCD http://www.parallax.com/dl/docs/prod/audiovis/lcd2x16par.pdf Appendice 1: brevi note sui fotodiodi Un fotodiodo è un diodo con particolari drogaggi della giunzione: va sempre usato con la giunzione interdetta e genera una corrente in uscita quando è illuminato. La massima tensione di polarizzazione inversa varia in funzione del modello usato così come la sensibilità alle varie lunghezze d'onda della luce incidente. Il circuito equivalente corrisponde ad un diodo con in parallelo un condensatore di svariati picofarad (la capacità della giunzione interdetta), una resistenza di molte decine di megaohm (la corrente di buio) e un generatore di corrente (la corrente generata). La simbologia che ho usato è quella della documentazione National. Questa è la caratteristica I-V di un fotodiodo: nel primo quadrante è un “diodo vulgaris” anche se non proprio progettato per funzionare in tale zona. (Nel grafico la corrente “negativa” è intesa IN USCITA dal fotodiodo che la genera) Nel terzo e quarto quadrante la caratteristica varia in funzione dell’illuminazione ma soprattutto il diodo “eroga corrente”, per chi desidera sapere “perché e come” lo faccia ci sono dei link di approfondimento. Ci sono due modi diversi di impiego: i cinque circuiti presentati, anche se disegnati in modo semplificato, non sono teorici, li ho usati tutti in varie occasioni. Modalità fotoconduttiva, terzo quadrante: il diodo è polarizzato inversamente e genera una corrente proporzionale alla illuminazione ricevuta. Per utilizzare tale segnale occorre un amplificatore operazionale: - Il diodo è polarizzato inversamente perché l’ingresso invertente dell’operazionale è a massa virtuale. I due circuiti sono simili ma quello di destra necessita di alimentazione duale. Se l’illuminazione produce una corrente di 5 uA allora in uscita abbiamo una tensione di 0,5 Volt di segno opposto a quello della corrente in ingresso. In molti casi è possibile usare una configurazione più semplice con una sola resistenza. Con questo circuito occorre avere accortezza nel dimensionare il carico applicato sulla resistenza di caduta. Modalità fotovoltaica, quarto quadrante: il diodo è polarizzato a zero volt (zero bias) ed eroga corrente verso l’esterno proporzionalmente all’illuminazione ricevuta. E' la modalità di funzionamento dei pannelli solari. Per convertire la corrente generata in una tensione occorre usare un operazionale: gli ingressi invertenti sono a massa virtuale e quindi il diodo è in stato “zero bias”. Nella figura a sinistra il diodo ha l’anodo a massa perché deve fornire una corrente negativa: in uscita abbiamo Vout = - (-i) x R = i x R L’operazionale può essere alimentato a tensione singola (LM324- LM358). Nella figura a destra il diodo ha il catodo a massa e fornisce una corrente positiva: in uscita abbiamo Vout= - i x R L’operazionale deve essere alimentato a tensione duale (TL082/84). Se l’illuminazione produce una corrente di 15 uA con una resistenza da 100K troveremo in uscita una tensione di 1,5 Volt “con segno opposto” Che differenza c’è fra le due modalità? In modalità fotoconduttiva il diodo è più veloce nella risposta alle variazioni di illuminazione e ha una risposta più lineare ma genera rumore dovuto alla corrente di buio. In modalità fotovoltaica il diodo ha una risposta più lenta ma non genera rumore essendo assente la corrente di buio. Come consiglia la National si usa la prima modalità se la velocità è più importante della precisione, la seconda se vale il contrario. Va ricordato che il diodo è polarizzato inversamente e si comporta come un condensatore di bassa capacità (come un diodo varicap), quindi spesso il circuito in cui è inserito diventa un oscillatore e quando si cerca di compensarlo diventa anche un integratore mandando allegramente a passeggio la tensione di uscita. Nella documentazione c’è una gustosa serie di slides della National in merito. La National stessa mette i progettisti in guardia su tali componenti: li definisce “tricky” (complicati) ed avverte che necessitano di un sacco di lavoro per un corretto impiego. Se lo dicono loro che debbono venderli! Appendice 2: la conversione A/D del BS2 Il BS2 fornisce l’istruzione “RCTIME pin, stato, risultato” che consente di misurare il tempo di carica o quello di scarica di un condensatore con una risoluzione di 2 usec ed un limite di 131 msec. Nella modalità "scarica" (RCTIME pin,1,risultato) si misura il tempo in cui la tensione ai capi del condensatore già carico scende da 5 Volt a circa 1,3 Volt: t= RC x ln (5.0 /1.3). Questa è la modalità consigliata da Parallax perchè offre una maggiore risoluzione della misura essendo piu' ampia l'escursione della tensione sul condensatore. misura con 15 misura risultato VAR Word risultato HIGH misura PAUSE 1 RCTIME misura,1,risultato fino a circa 1,3 Volt DEBUG ? DEC risultato ‘ dichiarazione pin15 per la ‘ dichiarazione variabile ‘ carica del condensatore ‘ per 1 ms ‘ misura del tempo di scarica ‘ display sul PC Nella modalità "carica" (RCTIME pin,0,risultato) si misura il tempo in cui la tensione ai capi del condensatore scarico sale da 0 Volt a circa 1,3 Vol: t= RC x ln [ ( 5.0 / (5.01.3) ]. Usiamo tale modalità perchè possiamo caricare il condensatore fino a 1,3 Volt con la corrente generata dal fotodiodo. La carica è quindi a "corrente costante" e non a "tensione costante". E' possibile omettere le resistenze di protezione da 220 ohm perchè non usiamo la tensione Vdd +5Volt per caricare o scaricare il condensatore. - si scarica il condensatore mettendo il pin in OUT a livello <0> per 1 msec. - l’istruzione RCTIME mette il pin in IN e fa partire un contatore. - la corrente generata dal fotodiodo carica il condensatore a corrente costante - quando il condensatore raggiunge il valore di soglia (1,3 Volt) il contatore si ferma. - il valore del contatore è disponibile su una variabile “word”, nel range <0-65535>. misura con 15 misura risultato VAR Word risultato LOW misura PAUSE 1 RCTIME misura,0,risultato fino a circa 1,3 Volt DEBUG ? DEC risultato ‘ dichiarazione pin15 per la ‘ dichiarazione variabile ‘ scarica del condensatore ‘ per 1 ms ‘ misura del tempo di carica ‘ display sul PC Il condensatore C= 0.22 uF è caricato "a corrente costante" quindi la tensione cresce in modo lineare e la misura termina quando la tensione arriva a circa 1,3 Volt: se la corrente i è di 100 uA t x i Vc = ------C Vc x C 1,3 x 0.22 x 10^-6 t = --------- = ------------------------- ~ 2.8 msec i 100 x 10^-6 Il risultato è scritto in una variabile word a passi di 2 usec: il valore è ~ 1430. A fotodiodo non illuminato la corrente generata dai fotodiodi causata dai riflessi interni è di qualche microampere e il condensatore non riuscirà a raggiungere il livello di soglia: il valore di uscita memorizzato nella variabile sarà pari a <0>. La sequenza dei valori ottenuti è dunque: <1> <2> … <65535> <0> primo valore (soglia raggiunta in t <= 2usec) secondo valore (soglia raggiunta in t = 4 usec) penultimo valore (soglia raggiunta in t=131.07 msec) ultimo valore (soglia non raggiunta) e lo <0> viene dopo il <65535>, bisogna ricordarsene nello scrivere il codice : IF risultato=0 THEN risultato=65535 sequenza ' pone <0> alla fine della Poichè il risultato è “inversamente proporzionale “ alla corrente di carica, per avere un andamento “direttamente proporzionale” occorre calcolarne “il reciproco rispetto al valore massimo”. Ho verificato la linearità della conversione del BS2 con un condensatore da 0,1 uF ed un fotodiodo BPW34, progressivamente illuminato da una lampada da tavolo, confrontando la lettura del BS2 con quella di un microamperometro in serie al BPW34. Corrente del BPW34 (uA) valore letto dal BS2 60 50 40 30 20 11 1060 1300 1630 2300 3240 6240 valore reciproco int(65535/valore) 61 50 40 28 20 10 ne esce una discreta iperbole e calcolando il reciproco dei valori letti (65535/x) otteniamo una buona retta anche se la divisione fra interi del BS2 taglia la parte decimale del quoziente. clicca per ingrandire Conclusione Il mio scopo era quello di capire come usare il sensore e se fosse possibile interfacciarlo in modo semplice. Ho voluto condividere la mia esperienza affinché possa essere utile a chi sarà interessato a usare, certo molto meglio di quanto abbia fatto io, questo economico sensore.