Se sei già registrato           oppure    

Orario: 28/04/2024 23:28:25  

 

Energia Alternativa ed Energia Fai Da Te > Arduino

VISUALIZZA L'ALBUM

Pagine: (7)   1   [2]   3   4   5   6   7    (Ultimo Msg)


Anemometro con arduino
FinePagina

righetz

Avatar
GigaWatt


Gruppo:MODERATORE
Messaggi:4225

Stato:



Inviato il: 28/08/2016 12:43:33

La pulsantiera la puoi costruire seguendo lo schema.
Quello schema corrisponde alla lcd schield della Saintsmart.
Una pulsantira più semplice da configurare è quella elencata qui

/6/]LINK

Se usi l'anemometro per visuyalizzare i due valori di velocità, per ora non serve.



---------------
Chi non si indebita fa la rabbia degli usurai

 

righetz

Avatar
GigaWatt


Gruppo:MODERATORE
Messaggi:4225

Stato:



Inviato il: 28/08/2016 13:10:24

A quel prezzo la prenderei, ti risparmi un sacco di lavoro ed è tutto pronto.
Ci sono già le librerie disponibili per la gestione dei pulsanti.



---------------
Chi non si indebita fa la rabbia degli usurai

 

donato
MegaWatt


Gruppo:Utente
Messaggi:449

Stato:



Inviato il: 28/08/2016 13:56:51

ho comprato lo schermo, nel frattempo inizio a studiare un po arduino e mi chiedo se il codice che mi hai inviato funziona anche sul mio arduino visto che tu hai usato un lcd senza pulsanti e io ho preso quello indicato prima nel link

 

righetz

Avatar
GigaWatt


Gruppo:MODERATORE
Messaggi:4225

Stato:



Inviato il: 28/08/2016 14:41:00

Funziona e visualizza i dati, i pulsanti non interagiscono perche nelle righe di codice non sono inseriti i riferimenti ai pulsanti.

Praticamente su quella schedina verrà "pilotato" solo lo schermo lcd



---------------
Chi non si indebita fa la rabbia degli usurai

 

donato
MegaWatt


Gruppo:Utente
Messaggi:449

Stato:



Inviato il: 28/08/2016 15:04:39

Si avevo visto che nel programma non c'era niente che riguardasse ai pulsanti(almeno per quello che son riuscito a capire... Ho mooolto da imparare)
Però non sapevo se erano compatibili gli schermi.
Proprio adesso ho misurato il raggio del anemometro ed é di 66.4mm

 

donato
MegaWatt


Gruppo:Utente
Messaggi:449

Stato:



Inviato il: 28/08/2016 15:08:58

Il foro é di 2.8mm÷2=1,4
67,8-1,4=66,4mm raggio anemometro



Immagine Allegata: 20160828_145322_HDR-1024x576.jpg
 
ForumEA/M/20160828_145322_HDR-1024x576_1.jpg

 

donato
MegaWatt


Gruppo:Utente
Messaggi:449

Stato:



Inviato il: 28/08/2016 15:13:52

Scusami righetz non ho capito a cosa serve l'allegato ( pinChangelnt)

 

righetz

Avatar
GigaWatt


Gruppo:MODERATORE
Messaggi:4225

Stato:



Inviato il: 28/08/2016 17:30:10

È una libreria da installare dentro la cartella libraries di Arduino. Permette di gestire gli interrupt.
Nel listato del codice è inserita l'attivazione delle interrupt nel setup



---------------
Chi non si indebita fa la rabbia degli usurai

 

donato
MegaWatt


Gruppo:Utente
Messaggi:449

Stato:



Inviato il: 29/08/2016 00:49:08

Cosa sono gli interrupt?

 

Powermos

Avatar
milliWatt


Gruppo:Utente
Messaggi:9

Stato:



Inviato il: 29/08/2016 08:43:44

CITAZIONE (donato, 29/08/2016 00:49:08 ) Discussione.php?213940&2#MSG23

Cosa sono gli interrupt?


In modo molto basilare l'interrupt è una chiamata prioritaria originata da un qualche evento che forza il microcontrollore ad eseguire una routine predefinita, in sostanza immagina di avere una linea di impianto che segnala un allarme, tu vorresti fare si che quando questa linea cambia stato il microcontrollore reagisca subito senza ritardi indipendentemente da cosa stà facendo in un dato momento. In questo caso si collega fisicamente la linea di allarme a un ingresso del microcontrollore che possa essere configurato come ingresso di interrupt, poi nel codice, in base al sistema in uso esistono diversi modi, ma il concetto di base è identico, andrai a definire una particolare routine o funzione come interrupt associandola all'ingresso fisico del microcontrollore di cui abbiamo detto prima. In questo modo, se ad un certo momento l'ingresso di interrupt cambia stato il microcontrollore accorgendosene sava tutto il lavoro che stava facendo fino a questo istante (registri interni, variabili utente sono definiti in gergo tecnico il contesto del sistema e salvati in una particolare area di memoria detta stack nel caso dei linguaggi ad alto livello come il C oppure in registri hardware dedicati nel caso in cui si lavori a basso livello in assembly) per saltare subito ad eseguire il codice di interrupt, una volta eseguito recupera i dati dei registri e le variabili che aveva salvato nello stack per ricominciare ad eseguire le instruzioni dal punto in cui aveva interrotto.
Il fatto che questo meccanismo richieda il salvataggio di diversi parametri prima di saltare ad eseguire il codice di interrupt fa si che in base al tipo di hardware utilizzato e anche al tipo di linguaggio non si possano avere delle reazioni di tipo immediato, ma con un ritardo calcolabile, tipicamente pari ad alcuni cicli macchina. Questo è importante specialmente nel caso in cui gli interrupt siano associati a dei timer e quindi si richieda di ricaricare i registri relativi in modo tale da rispettare in modo meticoloso la tempistica del timer oppure si tratti di applicazioni di controllo motore in cui il rispetto della tempistica definisce anche le prestazioni del sistema di controllo.
Esistono inoltre diverse sorgenti di interrupt, ovvero, mentre nel caso precedente l'interrupt era scatenato da un evento fisico, cioè il cambio dello stato di una linea di ingresso del microcontrollore, la causa scatenante potrebbe anche essere di natura differente come, ad esempio, l'overflow di un timer interno oppure alla ricezione di un carattere dalla porta seriale o del controller USB o CAN BUS o per il fatto che il convertitore AD ha completato la conversione e cosi via. Il fatto che si possano avere più sorgenti di interrupt da luogo a molteplici scenari e possibili applicazioni.
Alcuni micrcontrollori infatti permettono la gestione degli interrupt in modo tale da automatizzare alune operazioni, ad esempio, è possibile al termine della conversione AD copiare direttamente il dato in memoria (caratteristiche DMA dei microcontrollori) il tutto senza aggravare il carico di lavoro della CPU che continua a fare il suo lavoro (ovviamente il microcontrollore in queste applicazioni di tipo avanzato deve avere una architettura interna dedicata ed è il caso tipico delle applicazioni che si occupano del controllo motore).

Nel caso dell'anemometro si può collegare la sua uscita (tipicamente un contatto reed, facendo attanzione che la tensione massima sia compatibile con quella del microcontrollore ed eventualmente mettendo un partitore di tensione con un condensatore in modo da creare un piccolo filtro RC) ad un ingresso di interrupt configurato per essere attivato, ad esempio, in corrispondenza del cambio di stato della linea.
Nella routine di interrupt associata a questo ingresso andrai ad incrementare un contatore (ricordati solo di gestire l'overflow del contatore bloccandolo quando arriva al valore massimo definito dal tipo di variabile che hai utilizzato). Poi si definisce un altro interrupt legato ad un timer con base tempi, ad esempio, di un secondo. Ogni volta che scatta il timer si va a controllare il valore contenuto del contatore associato all'ingresso di interrupt dell'anemometro in questo modo potrai conoscere il numero di impulsi al secondo, in alternativa potresti definire una finestra temporale più ampia, ad esempio 10 s, mediando su questa la lettura del contatore. Ogni volta che scatta il timer quindi si effettua il controllo del numero di impulsi e se questo risulta inferiore al valore di soglia azzeri semplicemente il contatore e non fai nulla, se invece risulta superiore attivi un flag che sarà gestito da qualche parte nel main e che darà l'avvio alla procedura di allarme associata allo sforamento sulla velocità massima del vento oppure gestisci immediatamente l'allarme nella routine di interrupt (anche se non è mai bello, tipicamente una routine di interrupt deve essere ridotto al minimo indispensabile per evitare di perdersi eventuali altri eventi, quando un interrupt è attivo e ne scatta un altro l'esecuzione di quest'ultimo avverrà dopo che è finita l'esecuzione della routine di interrupt correntemente in esecuzione).

Spero di essere riuscito, in qualche modo, a chiarirti un po' le idee.

Ciao
Pow



Modificato da Powermos - 29/08/2016, 15:31:03


---------------
"Conoscerete la verità e la verità vi farà liberi" (Gv 8,32)

 

righetz

Avatar
GigaWatt


Gruppo:MODERATORE
Messaggi:4225

Stato:



Inviato il: 29/08/2016 09:31:35

Grande powermos, bella spiegazione tecnica... meno male che mi sei venuto in aiuto.
Nella materia sono autodidatta e molte cose le imparo anche io al momento e con le spiegazioni sono una frana.

@Donato, nel listato ho aggiornato il raggio dell'anemometro inserendo il dato corretto che hai comunicato.
Appena puoi carica il programmino sulla schedina arduino e vediamo come funziona.



Modificato da righetz - 29/08/2016, 09:36:14


---------------
Chi non si indebita fa la rabbia degli usurai

 

donato
MegaWatt


Gruppo:Utente
Messaggi:449

Stato:



Inviato il: 29/08/2016 18:51:15

Ragazzi grazie delle spiegazioni e del tempo che mi dedicate ma purtroppo sono alle prime armi con arduino e se voglio imparare qualcosa non mi resta che chiedere a voi altrimenti arduino al primo problema finisce un altra volta nel cassetto e io non voglio

 

righetz

Avatar
GigaWatt


Gruppo:MODERATORE
Messaggi:4225

Stato:



Inviato il: 29/08/2016 20:02:19

Siamo stati tutti di "primo pelo". Basta iniziare



---------------
Chi non si indebita fa la rabbia degli usurai

 

donato
MegaWatt


Gruppo:Utente
Messaggi:449

Stato:



Inviato il: 31/08/2016 19:26:27

Ragazzi purtroppo andrò un po lento nel progetto .
Lunedi ho ricominciato a lavorare e tra lavoro e altre cose mi manca il tempo.(piano piano insieme finiremo anche questo)

 

donato
MegaWatt


Gruppo:Utente
Messaggi:449

Stato:



Inviato il: 11/09/2016 11:30:31

ciao ragazzi sto iniziando a simulare al pc i vari collegamenti da fare con arduino ,lcd,anemometro ,step down,resistenza e condensatore
ho fatto i collegamenti tra lcd e arduino e stavo iniziando a collegare il sensore anemometro all'arduino e mi rendo conto nel codice di arduino che mi ha postato righetz il pin 6 é assegnato come ingresso anemometro mentre nello schema raffigurato (sempre postato da righetz) sul pin 6 c,é un piedino dell'lcd a questo punto come devo procedere?

 
 InizioPagina
 

Pagine: (7)   1   [2]   3   4   5   6   7    (Ultimo Msg)

Versione Mobile!

Home page       TOP100-SOLAR      Home page forum