Sommario:

Misurazione dell'accelerazione utilizzando ADXL345 e fotone particellare: 4 passaggi
Misurazione dell'accelerazione utilizzando ADXL345 e fotone particellare: 4 passaggi

Video: Misurazione dell'accelerazione utilizzando ADXL345 e fotone particellare: 4 passaggi

Video: Misurazione dell'accelerazione utilizzando ADXL345 e fotone particellare: 4 passaggi
Video: Arduino: Accelerometro ADXL345 - Parte I 2024, Dicembre
Anonim
Image
Image

L'ADXL345 è un accelerometro a 3 assi piccolo, sottile, a bassissima potenza con misurazione ad alta risoluzione (13 bit) fino a ±16 g. I dati di uscita digitale sono formattati come complemento a due a 16 bit ed è accessibile tramite l'interfaccia digitale I2 C. Misura l'accelerazione statica di gravità nelle applicazioni di rilevamento dell'inclinazione, nonché l'accelerazione dinamica risultante dal movimento o da urti. La sua alta risoluzione (3,9 mg/LSB) consente di misurare variazioni di inclinazione inferiori a 1,0°.

In questo tutorial è stata illustrata l'interfaccia del modulo sensore ADXL345 con il fotone particellare. Per leggere i valori di accelerazione, abbiamo utilizzato la particella con un adattatore I2c. Questo adattatore I2C rende la connessione al modulo sensore facile e più affidabile.

Passaggio 1: hardware richiesto:

Hardware richiesto
Hardware richiesto
Hardware richiesto
Hardware richiesto
Hardware richiesto
Hardware richiesto

I materiali di cui abbiamo bisogno per raggiungere il nostro obiettivo includono i seguenti componenti hardware:

1. ADXL345

2. Fotone particellare

3. Cavo I2C

4. Scudo I2C per fotoni di particelle

Passaggio 2: collegamento hardware:

Collegamento hardware
Collegamento hardware
Collegamento hardware
Collegamento hardware

La sezione sui collegamenti hardware spiega fondamentalmente le connessioni di cablaggio richieste tra il sensore e il fotone della particella. Garantire connessioni corrette è la necessità di base mentre si lavora su qualsiasi sistema per l'output desiderato. Quindi, i collegamenti necessari sono i seguenti:

L'ADXL345 funzionerà su I2C. Ecco lo schema elettrico di esempio, che mostra come cablare ciascuna interfaccia del sensore.

Di default, la scheda è configurata per un'interfaccia I2C, quindi consigliamo di utilizzare questo collegamento se sei altrimenti agnostico.

Tutto ciò di cui hai bisogno sono quattro fili! Sono necessarie solo quattro connessioni pin Vcc, Gnd, SCL e SDA e questi sono collegati con l'aiuto del cavo I2C.

Queste connessioni sono mostrate nelle immagini sopra.

Passaggio 3: codice per la misurazione dell'accelerazione:

Codice per la misurazione dell'accelerazione
Codice per la misurazione dell'accelerazione

Iniziamo ora con il codice particellare.

Durante l'utilizzo del modulo sensore con la particella, includiamo application.h e la libreria spark_wiring_i2c.h. La libreria "application.h" e spark_wiring_i2c.h contiene le funzioni che facilitano la comunicazione i2c tra il sensore e la particella.

L'intero codice particella è riportato di seguito per comodità dell'utente:

#includere

#includere

// L'indirizzo ADXL345 I2C è 0x53(83)

#define Indirizzo 0x53

int xAccl = 0, yAccl = 0, zAccl = 0;

configurazione nulla()

{

// Imposta variabile

Particle.variable("i2cdevice", "ADXL345");

Particle.variable("xAccl", xAccl);

Particle.variable("yAccl", yAccl);

Particle.variable("zAccl", zAccl);

// Inizializza la comunicazione I2C come MASTER

Wire.begin();

// Inizializza la comunicazione seriale, imposta baud rate = 9600

Serial.begin(9600);

// Avvia la trasmissione I2C

Wire.beginTransmission(Addr);

// Seleziona il registro del tasso di larghezza di banda

Wire.write(0x2C);

// Seleziona velocità dati in uscita = 100 Hz

Wire.write(0x0A);

// Interrompi trasmissione I2C

Wire.endTransmission();

// Avvia la trasmissione I2C

Wire.beginTransmission(Addr);

// Seleziona il registro di controllo dell'alimentazione

Wire.write(0x2D);

// Seleziona la disattivazione della sospensione automatica

Wire.write(0x08);

// Interrompe la trasmissione I2C

Wire.endTransmission();

// Avvia la trasmissione I2C

Wire.beginTransmission(Addr);

// Seleziona il registro del formato dei dati

Wire.write(0x31);

// Seleziona la piena risoluzione, +/-2g

Wire.write(0x08);

// Termina la trasmissione I2C

Wire.endTransmission();

ritardo(300);

}

ciclo vuoto()

{

dati int non firmati[6];

for(int i = 0; i < 6; i++)

{

// Avvia la trasmissione I2C

Wire.beginTransmission(Addr);

// Seleziona registro dati

Wire.write((50+i));

// Interrompe la trasmissione I2C

Wire.endTransmission();

// Richiedi 1 byte di dati dal dispositivo

Wire.requestFrom(Addr, 1);

// Legge 6 byte di dati

// xAccl lsb, xAccl msb, yAccl lsb, yAccl msb, zAccl lsb, zAccl msb

if(Filo.disponibile()==1)

{

data = Wire.read();

}

ritardo(300);

}

// Converti i dati in 10 bit

int xAccl = (((data[1] & 0x03) * 256) + data[0]);

if(xAccl > 511)

{

xAccl -= 1024;

}

int yAccl = (((data[3] & 0x03) * 256) + data[2]);

if(yAccl > 511)

{

yAccl -= 1024;

}

int zAccl = (((data[5] & 0x03) * 256) + data[4]);

if(zAccl > 511)

{

zAccl -= 1024;

}

// Invia i dati alla dashboard

Particle.publish("L'accelerazione nell'asse X è:", String(xAccl));

Particle.publish("L'accelerazione nell'asse Y è:", String(yAccl));

Particle.publish("L'accelerazione nell'asse Z è:", String(zAccl));

}

La funzione Particle.variable() crea le variabili per memorizzare l'output del sensore e la funzione Particle.publish() visualizza l'output sulla dashboard del sito.

L'uscita del sensore è mostrata nell'immagine sopra come riferimento.

Passaggio 4: applicazioni:

Applicazioni
Applicazioni

ADXL345 è un piccolo, sottile, accelerometro a 3 assi a potenza ultrabassa che può essere impiegato in telefoni cellulari, strumentazione medica ecc. La sua applicazione include anche dispositivi di puntamento e di gioco, strumentazione industriale, dispositivi di navigazione personale e protezione dell'unità disco rigido (HDD).

Consigliato: