Pages: 1 2 3 [4] 5   Go Down
Author Topic: rilevare terremoti con arduino  (Read 7397 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 7
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao
a dirti la verità i prototipi che ho costruito fino ad ora si basano tutti sull'utilizzo di geofoni e non di accelerometri, questo perchè gli accelerometri "da sismica" con prestazioni analoghe ad un geofono costano molto di più, un esempio un geofono standard da 10 Hz costa circa 18 euro, per un accelerometro con stesse performance siamo sull'ordine dei 200-300 euro.
Volendo "adattare" un accelerometro a basso costo io utilizzerei MA7361, perchè ha un'uscita analogica e fondo scala settabile a 1,5 o 6 g, ciò lo rende facilmente intercambiabile con un geofono. Puoi inoltre provare ad amplificare il segnale in uscita di un fattore 10 per renderlo un pò più sensibile, oppure modificare l'aref di arduino (3,3 V). Settandolo a 1,5 g (default) hai un uscita di 800 mV/g.
Sul fatto se sia meglio l'uno o l'altro non so che dirti, a me risulta un pò più complicato lavorare con sensori ad uscita digitale, ma sembra dalle specifiche che la sensibiltà sia 70 count/g...inferiore(?)

Per Lesto:
E' da circa due anni che assieme ad un gruppo di circa 200 persone, per lo più geologi, geochimici e geofisici progettiamo strumenti per l'acquisizione dell'attività sismica basati su Arduino.
Durante gli anni abbiamo fatto diverse prove per capire come settare l'Arduino e quale sktch caricare.
La nostra priorità è di acquisire su seriale alla massima velocità possibile, ciò ti permette di registrare l'onda sismica ad una più alta frequenza di campionamento...un pò come un brano mp3 campionato a 96 kb/s ed una campionato a 192 kb/s, il secondo ha una qualità migliore, i terremoti sono delle onde di volume...
Ebbene, tra i vari skech usati (Impostando la velocità della seriale a 115200) abbiamo fatto un test tra le due funzioni
serial.print
serial.println
acquisendo per lo stesso intervallo di tempo, i dati scritti su seriale (frequenza di campionamento) erano meno.
Anche il fatto di scrivere la virgola come in questo caso, per dare "ordine" ai dati ti rallenta la frequenza di campionamento,
serial.print (A0);
serial.print(","),
serial.println (A1);
anche se, alla fine, è stata scelta come opzione per semplificare la scrittura del software di acquisizione.
Sul trimmer, esso ha la funzione solo di variare il guadagno dell'amplificatore, lo puoi sostituire con una resistenza di precisione...ma in questo caso hai dei valori fissi, mentre col trimmer puoi regolare il gain e fermarti non appena riesci ad osservare le prime vibrazioni (microtremori), ottenendo una sensibilità adatta al posto in cui collocherai il sensore, evitando di acquisire segnali antropici di base, una sorta di filtro...
Infine, il più semplicemente...ha senso quello che dici, ma la complessità di cui parlavo è prodotta da questo  (ti riporto la spiegazione tratta da un testo di sismologia...)
....."effettuare la taratura avremo bisogno di alcuni parametri tipici del sensore che utilizzeremo (forniti dal produttore), oltre ad eventuali filtri che utilizzeremo nel nostro circuito, fattore di amplificazione etc. Consideriamo il sismografo al pari di un sistema lineare dove l’input e’ il movimento del suolo che determina l’ampiezza della traccia sul sismogramma che possiamo esprimere in numero di count. Per un dato strumento la funzione di risposta all’ampiezza della frequenza  puo essere calcolata con l’equazione
Z (ω) = U (ω) Ad (ω)
In cui  U( ω)  lo spostamento del suolo (ground displacement) mentre Z( ω) puo’ rappresentare il numero di count o i mV e Ad (ω) e’ la risposta d’ampiezza della strumento. Ad(ω) e’ il risultato dell’effetto combinato di tutti gli elementi del sismografo, sensore, amplificatore, filtri. Ecco un esempio su come calcolarlo:
supponiamo che il nostro sismografo abbia queste caratteristiche:
(Geofono alias sismometro) una  f0 = 1 hz; G= 200 Vg-1  mentre (Arduino alias sismografo) usa  Amplificatore= gain 100 - Un filtro a 25 hz  Un digitalizzatore con gain di 10 5 /V
Il gain del sistema espresso in termini di velocita’, at 30 Hz puo’ essere calcolato in questo modo:
200 V /ms−1 (sensore ) × 100 V/V (amplifier ) × 0.2 V/V (filter ) × 105 Count /V (digitizer ) = 4 × 108 Count ms−1
Il gain del sensore e’ 200 V/ms −1 , e il guadagno del filtro e’  −14 db = 10−14 /20 = 0.2  a 30 Hz 
Per convertire il gain in spiazamento dobbiamo moltiplicare  ω = 2πf
4 × 10 8 Count /ms−1 × 2  π × 30 s −1 = 7.5 × 10 10 count/m = 75 count /nm.
Tutti questi noiosissimi calcoli servono a definire il rapporto tra count e spostamento, espresso in nm (nanometri, 10-6 m).
In modo simile qualora utilizzassimo l’accelerometro o se volessimo esprimere il valore in accelerazione dovremmo dividere per  ω = 2πf  At 2 Hz, t he seismometer would have a gain of 200V/ms−1
Applicando le considerazioni precedenti al nostro sensore, con queste caratteristiche:
f0 = 4,5  hz; G= 28,8  V g-1; Amplificatore= gain 100; Un filtro a 25 hz; Arduino con gain di 204,8 count/V
28,8  V /ms−1 (sensore ) × 100 V/V (amplificatore ) × 0.2 V/V (filtro ) × 204,8 Count /V (digitizer ) = 117965 count ms−1
117965 Count /ms−1 × 2  π × 30 s −1 = 7.5 × 10 10 count/m = 3,5 count /nm.

A proposito c'è qualcuno che ha voglia di aiutarmi a sbrogliare un circuito? io non ne sono capace!!






Logged

0
Online Online
Shannon Member
****
Karma: 131
Posts: 10474
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

un sensore i2c (o meglio ancora SPI) ha il vantaggio di avere un ADC separato in grado di fare moooolte più letture dell'ADC arduino: e lì sì che il problema diventa la seriale.

Quanto ti parlo di seriale, fai attenzione che parlo di arduino IDE 1.0; infatti le versioni precedenti BLOCCAVANO il codice finchè la scrittura non era completa; ora invece le cose avvengono "in parallelo", quindi mentre stai richiedendo una lettura all'ADC, finisci di scrivere i dati mancanti.

considerando la velocità dell'ADC arduino e che che devi stampare solo 7 byte (2 * numero + 1 di fine o inizio messaggio) non dovresti mai arrivare a "saturazione" usando un alto baud-rate.

Poi in caso si può usare la SPI, che arriva fino a 5Mb/s, basta prendere (a 10/15€) un adattatore SPI/USB per il pc, certo il codice non è semplice come la seriale...

come hai detto te, se il passaggio è lineare, allora ti serve
y=mx+q
dove m = Ad!!!
il valore Ad non lo devi calcolare ogni volta, è precalcolato (nel setup o harcodato nel codice)
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Monselice PD Italy
Offline Offline
Faraday Member
**
Karma: 26
Posts: 5500
фон Крыса
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salve eischifa, l'idea di costruire un sismografo mi era proprio venuta leggendo il suo articolo, non me ne intendo molto infatti mi sto documentando e mi leggerò per bene le formule sullo spostamento che ha scritto, io avevo pensato di prendere una coppia di geofoni ma non ne trovo a meno di 70/80 euro, dove li trovo quelli che costano meno ?

Per quanto riguarda il tipo di acellerometro, la versione del codice che ho postato in precedenza era per un BMA 180, ma giusto poche ore fà ho terminato di costruire un sensore ce implementa un MMA7361, preso proprio perchè semplicemente tramite un pin si cambia la sensibilità, da notare però che come ha detto lesto sensori che comunicano tramite I2C o SPI generalmente offrono lettura molto più precise di quelle che può effettuare l'ADC di arduino.
Logged

Se corri veloce come un fulmine, ti schianterai come un tuono.

0
Online Online
Shannon Member
****
Karma: 131
Posts: 10474
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

letture più precise e più veloci. sensori i2c/spi come l'ADXL345 (precisione massima 2g, ma fascia molto economica) arrivano a 8KHz, roba che nè la Seriale nè l'i2c reggono (bisogna usare per forza SPI, ma si può pensare di non passare nemmeno per arduino e andare diretti al PC con il chip USB/SPI)

IL BMA180, per esempio, ha una precisione minima di 1G (quindi direi che ci siamo), 14 bit di ADC (moolto buono) che lavora a 1,2KHz... certo poi bisogna vedere frequenze di risonanza e altre cose che non so, ma ad occhio il BMA180 mi pare migliore del MA7361
« Last Edit: May 30, 2012, 07:54:18 am by lesto » Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

0
Offline Offline
Newbie
*
Karma: 0
Posts: 7
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Lesto, ma tu hai un'idea di quale sia il tuo valore di Ad relativo al tuo sensore e al settaggio (gain) del tuo Arduino, oltra al filtro  che utilizzi?
Perchè per i geofoni che ho io, il produttore mi ha inviato un scheda di calibrazione in cui riporta tutti i dati che servono a trovare il numero magico...se il produttore non ti dà i dati non sarai mai in grado di risalire al tuo Ad...acquisirai terremoti ma non potrai confrontarli con il resto della comunità scientifica...
Quindi, capisco tutto il concetto di linearità, ma tu mi insegni che per risolvere un'equazione di primo grado devi avere una sola incognita.
Per il resto la mia difficoltà è quella di interfacciare un software di acquisizione e visualizzazione. Io ho creato il mio scrivendolo in LabVIEW. Come dicevo mi sono focalizzato sull'analogico perchè utilizzo geofoni, infinitamente più precisi.
Quindi io consiglio per uno strumentino "serio" i GEOFONI!
 Per chi fosse interessato qui
https://sites.google.com/site/geologiageofisicaesismologia/
 il sito dell'amico Angelo e del nostro gruppo.

Per l'acquisto dei geofoni puoi contattare

Sunny Chuang
Xi'an Senshe Electronic Technology Corporation
2, Industry Road, National Civil Aerospace
Industry Base, Xi'an,710100,China
URL:www.senshe.com
E-mail:sunnychuangcn@gmail.com
 
acquista solo le capsule (circa 25 USD)  e scegli geofoni con frequenza di 4,5 Hz.
Logged

Monselice PD Italy
Offline Offline
Faraday Member
**
Karma: 26
Posts: 5500
фон Крыса
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Grazie mille dell'informazione smiley
Logged

Se corri veloce come un fulmine, ti schianterai come un tuono.

Cagliari, Italy
Online Online
Tesla Member
***
Karma: 112
Posts: 7125
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ho dato uno sguardo veloce al sito. Molto interessante. Però qui ho visto una cosa che non mi quadra --> https://sites.google.com/site/geologiageofisicaesismologia/acquisizione-dati/12-7-munlticanale-amplif
Il pulsante attaccato al pin uno di Arduino.
Non si dovrebbe usare il pin 1 (TX) come ingresso se la seriale è in uso.  smiley-twist
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

0
Online Online
Shannon Member
****
Karma: 131
Posts: 10474
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Lesto, ma tu hai un'idea di quale sia il tuo valore di Ad relativo al tuo sensore e al settaggio (gain) del tuo Arduino, oltra al filtro  che utilizzi?
Perchè per i geofoni che ho io, il produttore mi ha inviato un scheda di calibrazione in cui riporta tutti i dati che servono a trovare il numero magico...se il produttore non ti dà i dati non sarai mai in grado di risalire al tuo Ad...acquisirai terremoti ma non potrai confrontarli con il resto della comunità scientifica...

ovvio che lo hai, se no come fai a trasformale i count in g?  smiley-grin
in oltre danno la linearità di questo dato(o i grafici se non è lineare), e un paio di chicche come l'autotest: la produzione in serie ci insegna che per quanto perfetta sia la produzione, non usciranno mai 2 sensori che saranno d'accordo sulle misurazioni. Grazie all'autotest puoi misurare rispetto ad un segnale noto (in pratica una finta accelerazione!) il valore in count del sensore, e vedere da quanto si discosta dalla Ad dichiarata (genericamente) per il modello (oltre che controllare di essere nei valori % dichiarati dal produttore). E dubito che geofoni da 25$ siano tarati a mano, e che ti vangano inviati i valori di taratura (ti danno il datasheet con i valori medi e la varianza in %)
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

0
Offline Offline
Newbie
*
Karma: 0
Posts: 7
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

senza la scheda di taratura che ti viene inviata dal produttore i geofoni non servono proprio a niente!!! da cosa ti accorgi che il produttore ha tarato il geofono:
12 geofoni acquistati= 12 schede di taratura
ogni scheda riporta tra le altre cose il valore di resistenza dell'avvolgimento interno, il dumping, la frequenza tipica, il peso della massa, etc.
Stiamo parlando di strumentazioni scientifiche, non di patatine!
Quei geofoni da 25 euro sono geofoni che sono adattati alla sismologia, il loro utilizzo principale e' la sismica attiva, dove ne colleghi 24 (ma anche 1000) ad un adc ed ottieni dei profili sismici.
Un geofono "broad band" appositamente concepito per acquisizioni sismologiche costa anche 10mila dollari....e' chiaro che non posso consigliarlo a chi sta progettando un sistema low cost...
visto che sei (sembri) davvero bravo perche' non ti unisci al gruppo Geofisica Datalogger (Facebook), il tuo contributo sarebbe prezioso, apriresti la mente ai miei duecento e passa colleghi che come me sono fermi da due anni a capire questi concetti elementari! smiley-wink
Logged

0
Online Online
Shannon Member
****
Karma: 131
Posts: 10474
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

perchè ci sono già nel gruppo a stressare smiley-wink

mi son fatto anche lincare un codice da sistemare ma purtroppo il tempo scarseggia sempre...

ps. "bravo" è una parola grossa
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Offline Offline
Newbie
*
Karma: 0
Posts: 1
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Scusate, ma mi necessitano alcune informazioni.

Nonostante la mia quasi tarda età sto cimentandomi con arduino.

Ho acquistato lo sketch di Futura Elettronica e sono in attesa di reperire l'acceletrometro MMA6361.

Le istruzioni allegate al kit e quelle sul sito ove è pubblicizzato (pagina di futura elettronica) non mi hanno aiutato un granchè. Non ho compreso:

Se lo sketch scaricabile dal sito deve essere modificato per l'utilizzo con l'MMA6361, ed eventualmente cosa modificare.
A questo punto se lo sketch va caricato su arduino, a cosa serve il file HEX scaricabile sul sito della rivista Elettronica In?
Quale dei vari file reperibili su www.geopsy.org devo utilizzare?
In che sequenza devo procedere a caricare i vari programmi ?

Ringrazio qualche buon anima che può illuminarmi.


 
Logged

0
Online Online
Shannon Member
****
Karma: 131
Posts: 10474
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

su arduino puoi caricare un solo programma alla volta, al massimo puoi modificare i sorgenti di due o più programmi in modo da crearne uno solo.

i sorgeti sono solitamente scritti in C o C++, anche se si può scrivere parte o tutto il programma in ASM (praticamente in linguaggio macchina). Poi questi sorgenti sono compilati creando gli 1 e 0 che è il vero e proprio programma, questo è il file HEX. dall'hex puoi risalire all'ASM ma se vai oltre hai risultati inaspettati.

di solito chi fornisce l'HEX è perchè non vuole rendere pubblici i sorgenti, di solito per sfruttare il programma a scopo commerciale.
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Global Moderator
Italy
Online Online
Brattain Member
*****
Karma: 332
Posts: 22813
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Scusate, ma mi necessitano alcune informazioni.

Nonostante la mia quasi tarda età sto cimentandomi con arduino.
Ciao e benvenuta.

Quote
Ho acquistato lo sketch di Futura Elettronica e sono in attesa di reperire l'acceletrometro MMA6361.

Le istruzioni allegate al kit e quelle sul sito ove è pubblicizzato (pagina di futura elettronica) non mi hanno aiutato un granchè. Non ho compreso:

Se lo sketch scaricabile dal sito deve essere modificato per l'utilizzo con l'MMA6361, ed eventualmente cosa modificare.
Forse hai acquistato un kit? Per "sketch" si intende il codice sorgente di un programma per l'Arduino.
Se il tuo kit prevede l'uso dello stesso sensore non devi modificare nulla.

Quote
A questo punto se lo sketch va caricato su arduino, a cosa serve il file HEX scaricabile sul sito della rivista Elettronica In?
Il file HEX è il file già compilato, nel caso si disponga di un programmatore per microcontrollori Atmel: in questo modo si evita di caricare lo sketch nell'ambiente di sviluppo di Arduino, compilarlo e poi caricarlo sull'Arduino da lì. Salti qualche passaggio, tutto qui.

Quote
Quale dei vari file reperibili su www.geopsy.org devo utilizzare?
In che sequenza devo procedere a caricare i vari programmi ?

Ringrazio qualche buon anima che può illuminarmi.


 
Non so cosa ci sia su quel sito. Perché lo citi se il kit lo hai comprato da Futura? Forse devi scaricare delle librerie per gestire qualche componente?
Non hai dato molte informazioni  smiley-wink

Comunque, tieni presente che l'Arduino non è un computer per cui il concetto di "caricare" è leggermente differente rispetto a quello a cui potresti essere abituata tu, ossia caricare/installare dei programmi su un sistema per poterne poi usare altri. Come ha detto lesto, spesso si distribuiscono delle "librerie", ossia delle porzioni di codice che aiutano a pilotare un determinato componente. Posizionando queste librerie in determinati punti dell'ambiente di Arduino, poi puoi caricarle nel tuo sketch per accedere a questi componenti,
Logged


0
Offline Offline
Sr. Member
****
Karma: 2
Posts: 303
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao,

per chi fosse interessato all'utilizzo degli accelerometri segnalo il Quake-Catcher Network (QCN).

http://qcn.stanford.edu

Utilizzano varie tipologie di accelerometri MEMS che si trovano in alcuni computer portatili oppure circuiti appositi collegati via USB ai computer.
Hanno un software, che si avvale del software per il calcolo distribuito BOINC, per l'invio dei dati (confrontano la differenza di accelerazione del sensore rispetto a quella dei 60 secondi precedenti e l'utilizzano come trigger).
Il server centrale controlla per una certa area i dati inviati dai sensori remoti e scarta i "falsi positivi".

Qui si trovano dei dati sulle performance dei vari sensori che utilizzano
http://qcn.stanford.edu/sensor-performance

Nella sezione pubblicazioni vi sono le pubblicazioni scentifiche sui risultati ottenuti in confronto a quelli ottenuti dalle stazioni delle reti sismometriche dei vari servizi geologici nazionali.

http://qcn.stanford.edu/research/publications

Ultimamente hanno aggiunto come sensore il USB Phidget Spatial 1056.
Sapete mica quale accelerometri utilizza?

Si realizzarne anche un modello con Arduino che immagazzina i dati in locale e poi li trasferisce al pc (o in  rete direttamente).

Ciao,
Marco.

Ciao,
Marco.
Logged

Monselice PD Italy
Offline Offline
Faraday Member
**
Karma: 26
Posts: 5500
фон Крыса
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Grazie della segnalazione, molto utile smiley
Logged

Se corri veloce come un fulmine, ti schianterai come un tuono.

Pages: 1 2 3 [4] 5   Go Up
Jump to: