Loading...
  Show Posts
Pages: [1] 2 3 4
1  International / Hardware / Re: INA122 + ADS1115 on: January 23, 2013, 01:07:04 am
Ho allegato il file con le specifiche del geofono (di seguito elencate).

Type SS-4.5N
Natural Frequency ( Hz ) 4.5±10%
Coil resistance (Ω) 375±5%
Damping 0.6±5%
Open circuit intrinsic voltage sensitivity ( v/m/s ) 28.8 v/m/s ±5%
Harmonic distortion ( % ) ≦0.2%
Typical Spurious Frequency(Hz) ≥120
Moving Mass ( g ) 11.3g
Typical case to coil motion p-p ( mm ) 4mm
Operating Temperature Range ( ℃ ) -40℃ TO +100℃
Height ( mm ) 36mm
Diameter ( mm ) 25.4mm
Weight ( g ) 86g
Warranty Period 3years


Il geofono se non erro è in grado di fornire fino a 28.8 v/m/s se particolarmente eccitato.
Però io devo acquisirne le misure quando è a riposo, in questo caso ho avuto modo di notare che l'oscillazione massima intorno allo 0 e di 2 millivolt con picchi di 5 millivolt massimo.
Per questo ho scelto un adc esterno e voglio amplificare il segnale.
Anche se per precauzione voglio inserire all'entrata dell'ADC o dell'amplificatore (non so ancora) un limitatore (diodo zener da 3.9 volt).

Edit[ Non considerare questo esempio poco chiaro.
In basso un esempio di acquisizione del segnale geofononico con l'ADS1115. C'è la traccia del segnale non amplificato e una traccia con amplificata con LMV358 gain 20.

Ogni gradatino vale circa 32768/20 = 160 circa. la traccia amplificata oscilla intorno al valore 16384.
]

Esempio di acquisizione collegando il geofono al canale 0 e 1 dell'ADS. acquisizione in modalità differenziale.
il grafico va da -100 a + 100 quindi ogni quadratino vale 10. i valori acquisiti come risultano oscillano tra -10 e +10, i picchi sono i miei movimenti. che trasformati in milliVolt diventano
10*256/32768 = 0,078125 milliVolt oppure considerando il picco 50 il valore in milliVolt è 0.390625 milliVolt.



in trepida attesa di consigli e suggerimenti.
2  International / Hardware / Re: INA122 + ADS1115 on: January 22, 2013, 02:03:52 pm
Volete dire che l'ADC accetta solo valori da 0 a 4096V e non +/-4.096V

Se acquisisco in modalità single-ended solo valori positivi, e alimento l'amplificatore con un'alimentazione singola 3.3V e fisso la REF (pin) a 1.650 V. In questo modo se il valore è superiore a 1.650 i valori in entrata sono positivi, mentre se il valore in uscita e minore di 1.650 i valori in entrata sono negativi.

Si può fare.

Suggerimenti in merito per aumentare la precisione dell'adc sono bene accetti.


grazie.
3  International / Hardware / Re: Letture analogiche on: January 22, 2013, 10:20:35 am
Ne sei sicuro. In tutti gli esempi dove si utilizza un accelerometro tipo MMA7361 (esempio o qualsiasi sensore  multi canale) non è c'è questa lettura a perdere. Pure io leggevo/leggo i dati dall'accelerometro su tre pin diversi senza l'utilizzo della lettura a perdere.

4  International / Hardware / Re: Letture analogiche on: January 22, 2013, 09:27:52 am
Il codice è corretto ?
verifica.
5  International / Hardware / Re: INA122 + ADS1115 on: January 22, 2013, 08:56:37 am
Quindi. devo alimentarlo con una tensione duale, per discriminare il segnale positivo da quello negativo.

Lo schema di collegamento nel caso di alimentazione duale è quello riportato a pagina 7 del datasheet, ed usare l'adc in modalità differenziale.

confermi. (grazie)

L'adc è caratterizzato da un PGA interno che va da 2 a 16 consentendo di acquisire con range da +/- 256 a 2048 (escluso 1 o 4096)
posso pensare di amplificare il segnale con l'amplificatore esterno di 64 o al massima 256 è poi variare caso per caso in funzione del segnale il pga interno.

I segnale da acquisire sono molti bassi. L'obiettivo è di avere una precisione inferiore al microVolt.

Il solo adc sfruttando il PGA consente di avere una precisione di 7.8 microVolt. In questo modo in teoria posso scendere sotto il micro.






 
6  International / Hardware / Re: INA122 + ADS1115 on: January 22, 2013, 07:53:11 am
L'adc, può acquisire in modalità single-ended, oppure in differential mode. Su questo non ci sono problemi.

Siccome il segnale in ingresso all'amplificatore può essere negativo o positivo, all'uscita cosa avrò ?

Cioè il segnale risultante come sarà ?

grazie.
7  International / Hardware / INA122 + ADS1115 on: January 22, 2013, 05:46:02 am
Salve,

Voglio utilizzare l'amplificatore INA122 per amplificare un segnale proveniente da un geofono (bobina) che produce una tensione che oscilla intorno allo 0, per poi acquisirla con l'ADC ADS1115 collegato all'arduino attraverso l'interfaccia I2C.

1. Posso utilizzarlo ?

2. INA122 deve essere alimentato con l'alimentazione singola 3.3 o 5 volt, oppure è necessario alimentarlo con una tensione duale ?

 
8  International / Hardware / Re: Confusione riguardo alla scelta di Arduino on: November 08, 2012, 09:22:02 am
E tra Arduino R3 e Leonardo, al di là delle shield che sono diverse e necessità eventualmente un adattatore.
il beneficio del ATmega32U2 rispetto al ATmega16U2 ?

9  International / Italiano / Re: GEOFISICA on: October 19, 2012, 09:50:03 am
Purtroppo ti devo dare una brutta notizia... per ragioni lunghe da spiegare non è possibile distinguere la presenza di acqua nel terreno con le prove hvsr ma al massimo le discontinuità tettoniche.
In pratica se si individuano ad esempio 2 strati uno superficiale e uno profondo e se si è certi che quello superficiale sia costituito da materiali permeabili,( sabbia, roccia permeabile) e il secondo più profondo da materiale impermeabile ( roccia compatta, argilla) è possibile che al contatto tra le due litologie sia presente una falda freatica.

con l'arduino comunque è possibile realizzare lo strumento per la ricerca delle falde idriche, e fa parte sempre della branca della GEOFISICA

Gcam, potresti fornire info più dettagliate ? l'argomento mi interessa anche se sono molto poco informato...

Operativamente la tecnica consiste nell'immettere corrente nel terreno  mediante due picchetti, e misurare utilizzando altri due picchetti la caduta di potenziale. Il rapporto tra la corrente e la differenza di potenziale moltiplicato per un fattore k da la resistività apparente del terreno.

Eseguendo più misure si ottiene una curva l'interpretazione della quale da la stratigrafia e le resistività vera di ogni strato.

dimenticavo tutto naturalmente in corrente continua.

Dal punto di vista strumentale, ci vuole uno o più ADC con canali differenziali uno per l'acquisizione della corrente e l'altro o gli altri per l'acquisizione della caduta di potenziale.
Le grandezze in gioco in genere sono basse ed è sufficiente sistema di acquisizione almeno a 12 bit. (personalmente ho individuato l'ADS1115 caratterizzato da canali differenziali e con la possibilità di cambiare il range)

Inoltre ci vuole un circuito invertente da realizzare mediante due rele.
Ogni misura va eseguita due volte, facendo in modo che la corrente circoli nei due versi opposti.

La cosa non è semplice. Però procedendo per gradi si ci può arrivare a realizzare il cosiddetto georesistimetro.



10  International / Italiano / Re: GEOFISICA on: October 17, 2012, 11:05:25 am
Purtroppo ti devo dare una brutta notizia... per ragioni lunghe da spiegare non è possibile distinguere la presenza di acqua nel terreno con le prove hvsr ma al massimo le discontinuità tettoniche.
In pratica se si individuano ad esempio 2 strati uno superficiale e uno profondo e se si è certi che quello superficiale sia costituito da materiali permeabili,( sabbia, roccia permeabile) e il secondo più profondo da materiale impermeabile ( roccia compatta, argilla) è possibile che al contatto tra le due litologie sia presente una falda freatica.

con l'arduino comunque è possibile realizzare lo strumento per la ricerca delle falde idriche, e fa parte sempre della branca della GEOFISICA
11  International / Italiano / Re: MCP3301: ADC esterno a 13 bit con interfaccia SPI on: June 29, 2012, 06:26:37 am
Sempre sull'MCP3301. Sul datasheet è riportato:

For the MCP330X devices, the recommended minimum clockspeed during the conversion cycle (tCONV) is 85 kHz.
Failure to meet this criteria may introduce linearity errors into the conversion outside the rated specifications.
It should be noted that, during the entire conversion cycle, the A/D converter does not have requirements for clock speed or duty cycle as long as
all timing specifications are met.


Considerando che per ogni acquisizione sono necessari 16 clock. Gli 85 KHz sono facilmente raggiungibili. Basta fare un oversampling di 16 ed acquisire almeno a 332 Hz. Mentre se gli 85 K sono campioni, significa che l'ADC non è utilizzabile, con l'ARDUINO ???.

Vorrei utilizzare la funzione
SPI.transfer(0) in questo modo:

digitalWrite(10, LOW);                 
highByte = SPI.transfer(0x00);  //XXXSVVVV  -> XXX bit nulli, S segno, V bit significativi.     
lowByte = SPI.transfer(0x00); //VVVVVVVV
digitalWrite(10, HIGH);               

per leggere i valori dell'ADC. Però i primi tre bit da sinistra di highByte sono nulli o non significativi.

Come faccio a comporre il valore, escludendo i tre bit nulli e considerando che il 4° bit da sinistra fornisce il segno.

grazie.
12  International / Italiano / Re: MCP3301: ADC esterno a 13 bit con interfaccia SPI on: June 22, 2012, 09:34:56 am
si infatti è un 13 bit, o meglio un 12 bit più segno.
quindi ?
Nel datasheet c'è: null,null,sb,b11,b10,b9.....b0

ma con 'sb' si stabilisce il segno ?

comunque il metodo di lettura è corretto ?
13  International / Italiano / MCP3301: ADC esterno a 13 bit con interfaccia SPI on: June 22, 2012, 04:32:37 am
Devo collegare ed utilizzare l'ADC MCP3301.
L'ADC utilizza l'interfaccia SPI, che sembra semplice da utilizzare.

Però mi sfuggono alcune cose:
1.per quanto riguarda la configurazione
    SPI.setClockDivider
    SPI.setDataMode
    SPI.setBitOrder()

quale sono i valori ottimali e/o esatti da utilizzare ?

Sto utilizzando il codice seguente per acquisire i valori, però non riesco a capire se funziona correttamente.

Come faccio a verificare ?

// inslude the SPI library:
#include <SPI.h>

# define CS 10   // Pin Selezione
//# define MOSI 11  // MOSI
# define MISO 12   // MISO
# define SCLK 13 // CLOCK

#define FASTADC 1
#ifndef cbi
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#endif
#ifndef sbi
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
#endif

long readvalue0;

void setup()
{
 // Set pin modalità
 pinMode (CS, OUTPUT);
 //pinMode (MOSI, OUTPUT);
 pinMode (MISO, INPUT);
 pinMode (SCLK, OUTPUT);
 
 // Disabilitare il dispositivo per iniziare
 digitalWrite (CS, HIGH);
 //digitalWrite (MOSI, LOW);
 digitalWrite (SCLK, LOW);

 Serial.begin (115200);
 
//SPI.setClockDivider (SPI_CLOCK_DIV2);
//SPI.setClockDivider (SPI_CLOCK_DIV4);
//SPI.setClockDivider (SPI_CLOCK_DIV8);
//SPI.setClockDivider (SPI_CLOCK_DIV16);
//SPI.setClockDivider (SPI_CLOCK_DIV32);
//SPI.setClockDivider (SPI_CLOCK_DIV64);
SPI.setClockDivider (SPI_CLOCK_DIV128);


 SPI.setDataMode (SPI_MODE0);
 //SPI.setDataMode (SPI_MODE1);

 //SPI.setBitOrder (MSBFIRST);
 //SPI.setBitOrder (LSBFIRST);
}

void loop ()
{
 long t0=micros();
 for(int k=0; k<500; k++)
 {
   readvalue0 = read_adcSlow ();
   Serial.println (readvalue0, DEC);
 }
}

int read_adcSlow ()
{
  long avg = 0; int value=0;
  for (int k=0; k<16; k++)
  {
    //Select adc
    digitalWrite (CS, LOW);  //pull CS low to enable
 
    //cycle clock twice, ignore two null bits

    digitalWrite (SCLK, HIGH);
    digitalWrite (SCLK, LOW);
    digitalWrite (SCLK, HIGH);
    digitalWrite (SCLK, LOW);
 
    // Legge i bit di adc
    for (int i=11; i>=0; i--)
    {
      //value += digitalRead (MISO) << i;
      value += (bitRead(PINB, 4) << i);
      //cycle clock
      digitalWrite (SCLK, HIGH);
      digitalWrite (SCLK, LOW);
    }
    avg=avg+value;
    digitalWrite (CS, HIGH);
    //delayMicroseconds (10);
  }
  avg=avg/4;
  return avg;
}

Praticamente
14  International / Italiano / Re: Vref Esterna on: June 09, 2012, 05:57:31 am
A proposito di VREF e ADC esterno. Sto prendendo in considerazione l'ADC: ADS7816, un monocale a 12 bit è una velocità di campionamento a 200Ksps.

Se setto la VREF al minimo 100mV ed applico un oversampling di 2 bit. arrivo ad avere una precisione di 6.18 microVolt.
A questo punto potrei volendo amplificare 64 per arrivare a 0.1 microVolt di precisione.

In questo modo ho la precisione di 24 bit con una VREF a 5 volt.


15  International / Italiano / Re: Vref Esterna on: June 09, 2012, 02:24:44 am
A questo punto, mi sa tanto che devo per forza ricorrere ad un ADC esterno.
1100/4096 che sono i 10 bit di arduino + 2 bit di oversampling arrivo a 268 microV.
la mia idea era di scendere sotto i 5 microV ricorrendo  anche ad una amplificazione.

grazie.
Pages: [1] 2 3 4