Direzione Vento

Buongiorno! in una discussione precedente abbiamo parlato e discusso su come leggere i valori relativi al vento e alla direzione del famoso anemometro+anemoscopio di Nuova Elettronica.
Mi sono applicato e ecco cosa ne è venuto fuori:

La velocità a quanto pare viene letta correttamente, l'unico problema è quello della direzione che non riesco a stabilire, pensavo di creare un algoritmo o qualcosa che una volta puntata la bandieruola verso nord(tramite una bussola) alla sua rotazione o comunque movimento mi visualizzasse la direzione(tipo Nord, Sud, Est e Ovest)

Vi Prego di darmi una mano...

#define PIN_ANEMOMETRO 2
#define PIN_ANEMOSCOPIO 7

int NumeroRivoluzioni = 0;


void setup() {
  Serial.begin(9600);
  pinMode(PIN_ANEMOMETRO, INPUT);
  pinMode(PIN_ANEMOSCOPIO, INPUT);
  digitalWrite(PIN_ANEMOMETRO, HIGH);
  digitalWrite(PIN_ANEMOSCOPIO, HIGH);
  attachInterrupt(0, ImpulsiAnemometro, FALLING);
 }
 
  void ImpulsiAnemometro() {
      NumeroRivoluzioni++;
   }   
 
 
 void loop() {
   int Millisecondi = millis();

   if (Millisecondi >= 1000) {
      int Velocita;
      long Costante_moltiplicativa;

      Costante_moltiplicativa = 24011;
      Costante_moltiplicativa *= NumeroRivoluzioni;
      Costante_moltiplicativa /= 1000;
      Velocita = Costante_moltiplicativa;
      int Velocita_Effettiva;
      Velocita /= 10;
      Velocita_Effettiva = Velocita;
      Serial.println("Velocita' misurata: ");
      Serial.println(Velocita);
      Serial.println(" ");
      
      int AngoloVento;
      int DirezioneVento;
      AngoloVento = (NumeroRivoluzioni*360);
      long Direzione;
      Direzione = AngoloVento;
      Serial.println(" ");
      Serial.println("Direzione Vento: ");
      Serial.println(Direzione);  
      
      NumeroRivoluzioni = 0;
      
      delay(1000);
      
      }
      }

Questo è un esempio di Output che ottengo:

Direzione Vento: 
2160 
Velocita' misurata: 
7 Km/H

Un ringraziamento anticipato a tutti!!! :smiley: :smiley: :smiley:

Come puoi avere una direzione se moltiplichi il valore con 360? Quanti impulsi hai per un giro completo di 360 gradi?
Ciao UWe

Il reed che misura la velocità è Normalmente Aperto mentre il reed che misura la direzione essendo montato all'interno dello stilo viene mantenuto chiuso dal magnete di direzione, qualunque sia la direzione nella quale è orientata la bandieruola.

Nel corso della medesima rotazione, il reed della direzione, che è mantenuto chiuso dal magnete della direzione, si apre brevemente allorquando lo schermo metallico posto sul rotore passa davanti al magnete della direzione, annullando per un istante l'effetto del campo magnetico sul reed della direzione.

Il momento in cui si verifica questa interruzione dipende esclusivamente dalla posizione angolare in cui si trova la bandieruola rispetto al rotore, quindi comparando il tempo che separa l'azionamento del reed di velocità dall'azionamento del reed di direzione è dunque possibile risalire alla posizione angolare della bandieruola e quindi ricavare la direzione del vento.

non ricordo bene il motivo per cui misi quel 360...
Porca Paletta...sono incasinatissimo non ne vengo fuori con questa direzione!

Questa è la risposta che mi diede lesto poco tempo fa, ma che non sono riuscito ancora a comprendere e a trasformare in codice arduino...probabilmente questo potrà essere d'aiuto per stabilire la formula per la direzione del vento:
"quindi hai un reed che invia low quando l'albero velocità ha fatto 360 gradi, e un altro reed che invia high quando incrocia il magnete dell'albero velocità"

fardox:
Nel corso della medesima rotazione, il reed della direzione, che è mantenuto chiuso dal magnete della direzione, si apre brevemente allorquando lo schermo metallico posto sul rotore passa davanti al magnete della direzione, annullando per un istante l'effetto del campo magnetico sul reed della direzione.

Il momento in cui si verifica questa interruzione dipende esclusivamente dalla posizione angolare in cui si trova la bandieruola rispetto al rotore, quindi comparando il tempo che separa l'azionamento del reed di velocità dall'azionamento del reed di direzione è dunque possibile risalire alla posizione angolare della bandieruola e quindi ricavare la direzione del vento.

Allora puoi solo sapere quando il vento soffia in una certa direzione perché ricevi un segnale in quel momento.
Il tempo tra 2 impulsi é casuale perché dipende dalla variazione della direzione del vento.
Cosi non funziona. Deve funzionare un un modo diverso.

Non é che hai 3 segnali? Uno come posizione (home) e 2 altri che danno una risoluzione piú fine all interno di una rotazione di 360 gradi?

ciao Uwe

Ciao UWE, mi dispiace non poterti dare ragione, ma personalmente ho smontato l'anemometro e di sensori ce ne sono solamente 2 ovvero i due sensori Reed, e basta.
Ogni sensore è collegato in un canale separato.

Allora non riesci a leggere la posizione della bandierola della direzione del Vento sui 360 gradi. Leggi solo quando si trova in posizione di "home".
Ciao Uwe

Mi sembra strano...N.E. riesce(con il suo controller in allegato al progetto) a leggere il vento nelle 4 posizioni fondamentali...

Capisco il Tuo argomento. Allora non so come fa.
Controlla la resistenza del contatto in funzione della posizione della bandierola
Ciao Uwe

forse usa proprio i 2 reed per contare tempo e posizione.. prova a postare una foto del lato dove ci sono i magneti ed un ain cui si cedono i sensori magari così si capisce meglio....

La posizione, misurando il tempo dopo un impulso, si puó calcolare solo se la rotazione é uniforme. La direzione del vento sicuramente non é una grandezza che fa girare la paletta in modo uniforme.
Sí mandaci qualche foto oppure la descrizione del anemometro su qualche sito.
Ciao Uwe

Qui ci sono un paio di foto(perdonatemi la qualità sono fatte con la Webcam)

E questa è la descrizione di nuova elettronica:

Nel corso della medesima rotazione, il reed della direzione, che è mantenuto chiuso dal magnete della direzione, si apre brevemente allorquando lo schermo metallico posto sul rotore passa davanti al magnete della direzione, annullando per un istante l'effetto del campo magnetico sul reed della direzione.
Il momento in cui si verifica questa interruzione dipende esclusivamente dalla posizione angolare in cui si trova la bandieruola rispetto al rotore, quindi comparando il tempo che separa l'azionamento del reed di velocità dall'azionamento del reed di direzione è dunque possibile risalire alla posizione angolare della bandieruola e quindi ricavare la direzione del vento.

Capito forse....
Hai 4 posizioni che corrispondono ai 4 punti cardinali maggiori Norde Est Sud e Ovest quando il vento cambia direzzione la freccia si sposta... spostandosi il magnete ruota e se è coperto dallo schermo metallico il reed non è eccitato...
La mia idea se ho capito in maniera giusta il funzionamento è:
prepara arduino da codice impostandolo a nord e quando monti l'affare lo posizioni verso nord... dopo di che ogni "scatto " che fà è una direzzione diversa però non so se potrebbe funzionare in quanto il vento potrebbe cambiare di direzione e invece di farlo ruotare in senso orario lo farebbe in anti orario e vanificandoti il tutto... non saprei sinceramente.. sicuro che non abbia nessun altro meccanismo interno ? o qualche altro circuito ?

Zero assoluto...ha soltanto quei due maledetti Reed e un po di meccanica.

Però se quel pò d meccanica fà si che l'anemoscopio giri solo in un senso... potresti fare come ho detto io ammesso che hai capito la spiegazione un pò alla buona che ho fatto :slight_smile:

Sisi, la spiegazione l'ho capita, ma il discorso è che l'anemoscopio e l'anemometro possono girare in tutti e due i sensi... quindi non risolvo nulla lo stesso.

Uhm.. a quel punto non saprei come procedere :frowning:
se più non trovi il modo di mettere un Encoder ottico anche all'esterno dell' anemoscopio...oppure intenamente mettendo degli specchietti ed usare un CNY70... anzi no.. resterebbe sempre il problema della posizione...

Il funzionamento lo spiegai all'epoca sull'altro thread:

Forse ho capito.

All'interno dell'albero su cui gira la banderuola c'è un altro reed, tenuto chiuso da un magnete fissato sull'albero della banderuola. Posizionata sull'albero della velocità all'altezza di questo magnete c'è una piccola placca metallica.

Mentre l'albero gira il magnete fisso su di esso chiude il reed della velocità. Contemporaneamente la placca metallica passa davanti al magnete di direzione ed il reed interno all'albero si apre. Siccome il magnete della direzione si sposta con la banderuola mentre il magnete della velocità è fisso ed il relativo reed segna tempi diversi in base alla velocità, fanno un calcolo per sapere a che angolo si trova il magnete di direzione conoscendo la differenza di tempo fra i segnali dei 2 reed...

Mi sono un po' ingarbugliato ma credo che sia così.

Si, infatti l'ho capito, ma non riesco a "tradurlo" in codice arduino...ecco perchè vi ho chiesto un aiuto... :*

ma se sai la velocità del vento, non sai anche la direzione in cui ruota? quindi metti in relazione lo scatto della direzione con la direzione di rotazione e sai dove sei..

@leo72: uhmm non riesco a immaginarmi bene il modo..

@fardox: ce la fai a fare un piccolo video in cui mentre muovi i due "rilavatori" ci mostri cosa avviene ai sendori reed?altrimenti perdiamo solo tempo in supposizioni

Ci sono 2 alberi, uno regge la banderuola della direzione e l'altro è quello dell'anemometro. Il primo si sposta con la direzione quindi può capitare anche che stia fermo in una posizione nel caso di vento stabile. Il secondo gira in base al vento.
Gli alberi sono coassiali ed infilati uno dentro l'altro su un terzo albero, su cui sono i reed.

Il magnete sull'albero dell'anemometro gira continuamente e chiude ad intervalli il suo reed. Calcolando il tempo tra 2 chiusure, si può sapere la velocità del vento con la classica formuletta V=S/T.
Sull'albero di supporto c'è un altro reed, quello della direzione. Il relativo magnete è sull'alberino dell'anemoscopio. Sull'albero dell'anemometro c'è una placca metallica che periodicamente passa davanti a quest'altro magnete "oscurandone" l'effetto. Dato che il magnete è agganciato all'albero dell'anemoscopio, il tempo di "sgancio" di questo magnete dipende solo dalla posizione data dall'anemoscopio.

Spostandosi, l'albero dell'anemoscopio sposta la posizione del magnete per cui la placca di copertura montata sull'albero dell'anemometro lo coprirà in un tempo successivo a quello dell'attivazione del reed della velocità, tempo via via sempre più maggiore man mano che la posizione della banderuola aumenta.