Fili sensore hall assieme a fili fotoresistenza...

Dalla staffa dell'anemometro parto con i tre fili del sensore di hall (alimentazione + e - e segnale), vorrei mettere anche una fotoresistenza per far chiudere la tenda quando cala il sole e la vorrei montare nella staffa dell'anemometro. Secondo voi, se faccio passare i tutti i fili assieme, lunghezza tratta di 5 metri, potrei avere interferenze fra i due segnali?

--
Saluti da Drizzt. 


www.agidone.altervista.org 
http://www.tappezzeriagraziella.com/ 
MAI PIU' OPEL IN VITA MIA!!!!
Reply to
Drizzt do'Urden
Loading thread data ...

Per me puoi andare tranquillissimo, i sensori hall lavorano con correnti modestissime e il segnale della fotoresistenza lo filtrerai sicuramente passa-basso in analogico. Attento piuttosto a schermare bene tutti i segnali e a mettere a terra la staffa, altrimenti coi temporali rischi grossi dispiaceri. Tieni presente che il sensore di luce lo puoi fare anche con un led, funzionano anche come fotodiodi.

Ciao,

--
RoV - IW3IPD 
http://www.iw3ipd.microvise.it/ 
http://iw3ipd.blogspot.it/
Reply to
RoV

Il 31/08/2019 22:32, RoV ha scritto:

puoi spiegare meglio, sono proprio all'inizio con Arduino :-)

della staffa :-)

Buona domenica.

--
Saluti da Drizzt. 


www.agidone.altervista.org 
http://www.tappezzeriagraziella.com/ 
MAI PIU' OPEL IN VITA MIA!!!!
Reply to
Drizzt do'Urden

A te serve cogliere eventi sulla scala di diverse decine di minuti, mentre il segnale che avrai, soprattutto dopo

contenuto spettrale con frequenze molto elevate rispetto a quello che ti interessa. In assenza di precauzioni basta uno "spike" per credere che sia passato da notte a giorno o viceversa.

Per questo devi implementare via software un passa basso adatto. In pratica ti serve di accumulare in un registro

la media la tieni da parte in un array a intervalli anche

che puoi adattare o mal che vada tenere da parte per futuri usi.

Ovviamente dato che io sono il direttore supremo dell'UCAF

--
- Ciao, ho visto le tue foto su Facebook 
   chiamami al 347******9 
- Non ti sembra esagerato darmi subito il 
   tuo numero? 
- Sono un chirurgo plastico, posso aiutarti.
Reply to
Archaeopteryx

Ah, pensavo semplicemente ad un RC (R serie, C verso massa) prima di entrare nel canale analogico dell'Arduino, utile ad abbattere crosstalk dall'Hall ed eventuale RF "captata". Visto che l'intensita' di luce ha tempi di variazione molto piu' lunghi dei fronti del segnale Hall, hai ampio margine di progetto: puoi permetterti costanti di tempo dell'ordine dei secondi.

Comunque il cavo ha il brutto vizio di fare da antenna... Ti suggerirei di usare dal controllore al sensore un cavo schermato con lo schermo collegato al negativo di alimentazione Hall e a terra. Dentro ci trasporti il +5, il segnale dell'Hall e il segnale della fotoresistenza.

Non vorrei fare l'uccello del malaugurio, ma secondo me il PLA non e' adatto a stare al sole e non e' abbastanza robusto per fare i braccetti di supporto. Ricordati che deve resistere a sole, pioggia e grandine. In caso puoi rifare i braccetti con del tondino di alluminio o inox.

Anch'io mi sono costruito da molto tempo i controllori per i tendoni da sole (ne ho due in casa, uno controlla un tendone, l'altro una coppia). Ho sempre usato anemometri commerciali: i primi si sono rotti dopo pochi anni con la grandine, i secondi sono fatti meglio e molto piu' durevoli. Ci ho aggiunto un sensore di pioggia autocostruito col filo di inox. Della luce non mi sono preoccupato, anche se sono un po' pentito. Il primo controllore l'ho fatto circa vent'anni fa, basato su micro ST6 e scheda filata. Nel 2011 li ho rifatti usando il micro C8051F350, perche' con quella famiglia Silabs avevo accumulato una discreta esperienza al lavoro e ancora non conoscevo Arduino (diciamo che lo disprezzavo per principio, ma ho poi cambiato radicalmente idea e ora sono fan).

Qualche foto:

formatting link
formatting link
formatting link

Ciao!

--
RoV - IW3IPD 
http://www.iw3ipd.microvise.it/ 
http://iw3ipd.blogspot.it/
Reply to
RoV

Drizzt do'Urden ha scritto:

vai tranquillo,nessun problema...per sicurezza sul segnale della FR mettici un RC a 1 o 2Hz e vivi tranquillo

Reply to
emilio

Il 01/09/2019 11:58, RoV ha scritto:

perfetto, nessun problema a farlo e vedo che lo ha consigliato anche emilio.

anche per questo nessun problema a farlo.

con trasparente, se si dovessero rompere, a cambiarli si fa un attimo, vediamo quanto dura tutto poi al massimo modifico il progetto, nella tua

formatting link

--
Saluti da Drizzt. 


www.agidone.altervista.org 
http://www.tappezzeriagraziella.com/ 
MAI PIU' OPEL IN VITA MIA!!!!
Reply to
Drizzt do'Urden

Il 01/09/2019 11:31, Archaeopteryx ha scritto:

--
Saluti da Drizzt. 


www.agidone.altervista.org 
http://www.tappezzeriagraziella.com/ 
MAI PIU' OPEL IN VITA MIA!!!!
Reply to
Drizzt do'Urden

Il 01/09/2019 11:58, RoV ha scritto:

Potresti dirmi la logica di funzionamento? Ho scaricato alcuni manuali di centraline per capire come gestire il

--
Saluti da Drizzt. 


www.agidone.altervista.org 
http://www.tappezzeriagraziella.com/ 
MAI PIU' OPEL IN VITA MIA!!!!
Reply to
Drizzt do'Urden

segnale che avviene nell'ordine di diversi minuti mentre

vuoi farlo via software puoi fare come segue:

1) dichiari una variabile accumulatore che a inizio ciclo poni uguale a zero; ogni tot secondi, diciamo 10 s prendi il valore che misura l'illuminazione e lo sommi a quello

per un minuto, quindi sei volte in tutto.

2) Dividi il valore per 6 e ottieni il valore medio su un minuto. Ovviamente lo metti da parte e azzeri il registro per poter ricominciare. 3) "Nel frattempo" avrai dichiarato un array di dimensione M dello stesso tipo di dato, e inserisci il valore precedentemente trovato nella cella di indice "i".

diverso da quello precedente, che serve a filtrare le

incrementare i in un tempo tale che considerando la dimensione M dell'array tu possa avere sott'occhio gli ultimi 10-15 min (che chiamo Dt).

5) Adesso hai M valori su un intervallo degli ultimi Dt minuti. Non solo con il primo passo hai eliminato gli spikes e altre componenti ad alta frequenza, ma osservando l'array e gli M valori puoi:

e confrontarlo con il valore corrispondente ad alba/tramonto, a quel punto accendere o spegnere.

Nota che puoi esaminare se i valori crescono o decrescono quindi puoi anche avere anticipo o ritardo differenti tra alba e tramonto. Non solo, se hai abbastanza valori puoi distinguere nuvole passeggere che potrebbero farti fare la cosa sbagliata.

7) Hai realizzato un passa basso nel dominio del tempo, giusto per un po' di soddisfazione personale :D
--
- Ciao, ho visto le tue foto su Facebook 
   chiamami al 347******9 
- Non ti sembra esagerato darmi subito il 
   tuo numero? 
- Sono un chirurgo plastico, posso aiutarti.
Reply to
Archaeopteryx

Il 01/09/2019 13:48, Archaeopteryx ha scritto:

imparare ad usare gli array. Intanto, nel mio piccolino, sono andato avanti con il programma, sono riuscito a far chiudere la tenda sia col vento oltre un set determinato da un trimmer, che dalla luce, sempre determinata da un trimmer, e

rimane diseccitato.

Una soddisfazione :-)

--
Saluti da Drizzt. 


www.agidone.altervista.org 
http://www.tappezzeriagraziella.com/ 
MAI PIU' OPEL IN VITA MIA!!!!
Reply to
Drizzt do'Urden

Il 01/09/19 11:31, Archaeopteryx ha scritto:

Non mi e` chiaro il perche` dell'array di medie. Se uso un semplice buffer circolare di letture non ho gia`la media mobile? Certo e` la media mobile del periodo delle N letture e non di un periodo piu` grande. E' questo che intendevi (la media su un periodo molto piu` lungo)?

Reply to
Claudio_F

con un solo array potrebbe diventare difficile distinguere gli effetti. Credo che almeno per la luce serva un periodo

considerando il passaggio di nubi; ipotizzando un array di

arduino o un piccolo controllore, ci sarebbe un campione

disturbo questo potrebbe falsare le valutazioni sui dati.

In questo caso come minimo almeno io calcolerei i parametri di una retta di regressione e anche la deviazione standard, e a partire da quelli cercare di capire cosa sta succedendo. Invece con un array piccolo di

confronti dei valori adiacenti.

filtraggio molto affidabile del segnale in ingresso (che potrebbe benissimo essere analogico) un solo array

Oh, e poi l'ho detto che io sono il capo dell'Ufficio

problemi (meritati) per questa mia tendenza :D

--
- Ciao, ho visto le tue foto su Facebook 
   chiamami al 347******9 
- Non ti sembra esagerato darmi subito il 
   tuo numero? 
- Sono un chirurgo plastico, posso aiutarti.
Reply to
Archaeopteryx

Il 01/09/2019 14:36, Drizzt do'Urden ha scritto:

In effetti non serve un array ma una semplice variabile di tipo sufficientemente "ampio" che userai per tenere la somma dei valori letti. Qui uso delle float...

float lettura,somma,media; int n;

somma=0; n=0; do n++; "Esegui la lettura" somma=somma+lettura; while (n==10); media=somma/10.0;

Reply to
Giorgio

Probabilmente volevi scrivere (n < 10)

Ma comunque... cosi` effettui tutte le letture una dietro l'altra, impiegando, boh, qualche microsecondo?

Il rumore che elimini/riduci con questo sistema e` solo quello di quantizzazione dell'ADC (l'ultimo bit di ogni misura e` sempre "saltellante"), ma non elimini il ronzio di rete o eventuali disturbi esterni di durata comparabile o maggiore del tuo pacchetto di letture".

Per eliminare il ronzio 50Hz si devono fare due misure distanti tra loro esattamente 10ms e farne la media, questo processo va considerato un singolo campione.

lettura = analogRead(LUCE); delayMicroseconds(9996); lettura = (lettura + analogRead(LUCE)) >> 1;

I campioni vanno presi ad una certa distanza tra loro, che so, uno al secondo, e cosi` la media che ottieni riguarda un intero periodo di 10 secondi.

Non serve usare lente variabili float, una intera long va benissimo.

Reply to
Claudio_F

Sono passati tanti anni e, come per tutti i miei progetti home-made, la documentazione lascia a desiderare. Oggi mi sono fatto coraggio e ho provato a mettere insieme il materiale e ad aggiornare lo schema (l'originale era modificato a penna sulla stampa...) e ho pubblicato tutto su github:

formatting link

Per quanto riguarda l'altra tua domanda: lo stampato l'ho progettato io, ma me lo son fatto produrre da una ditta online, al tempo usavo Olimex. Come noterai dalle foto, c'e' una importante modifica filata: all'inizio avevo previsto di alzare i tendoni in caso di allarme, ma di abbassarli solo a mano. Poi mi sono pentito ed ho aggiunto il rele' K3 dello schema col relativo transistor pilota. Nelle foto si vedono su una basettina che sporge dal PCB principale. Non ho pubblicato il PCB, perche' ho solo la versione senza il rele' K3, che poi ho modificato tagliando qualche pista per inserire i contatti di K3. Schema e PCB li ho fatti con Altium Designer.

Per la logica, prova a guardare un po' main.c e vedi se la capisci, e' abbastanza commentato. Purtroppo non ho una descrizione pronta e farla adesso mi porterebbe via parecchio tempo. Qualcosa c'e' anche:

- nella parte finale di init.c (routine di interrupt del timer), ossia la logica di interpretazione dei pulsanti in funzione dello stato corrente. Il resto di init.c e' specifico del micro usato e sono inizializzazioni

- nella routine di interrupt in F35x_ADC0.c: filtri digitali degli A/D e comando DAC.

A proposito di filtri e DAC: la lettura del sensore di pioggia e' effettuata applicando una tensione AC prodotta col DAC interno al micro e misurando la corrente come differenza tra due canali ADC. Questo e' fatto per evitare di applicare continua al sensore, che causerebbe spiacevoli effetti galvanici.

Se la cosa ti interessa, chiedimi pure chiarimenti su punti specifici.

Ciao,

--
RoV - IW3IPD 
http://www.iw3ipd.microvise.it/ 
http://iw3ipd.blogspot.it/
Reply to
RoV

Il 01/09/2019 17:05, Giorgio ha scritto:

Questo sotto esegue una misura ogni loop del programma. Puoi allungare l'intervallo di media aumentando n oppure eseguendo il codice per esempio ogni 4 loop invece che ad ognuno, mediante un semplice contatore.

int n=0, lettura, media; uint64_t somma=0;

.... // Nel loop

if (n==10) { media=somma/10; // Gestisci la media... somma=0; n=0; } else { lettura=.... // esegui la lettura somma=somma+lettura; n++; }

Reply to
Giorgio

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.