Sommario:

Misurazione dell'accelerazione utilizzando ADXL345 e Raspberry Pi: 4 passaggi
Misurazione dell'accelerazione utilizzando ADXL345 e Raspberry Pi: 4 passaggi

Video: Misurazione dell'accelerazione utilizzando ADXL345 e Raspberry Pi: 4 passaggi

Video: Misurazione dell'accelerazione utilizzando ADXL345 e Raspberry Pi: 4 passaggi
Video: Input Shaper GH-Enterprise TMC2225 Marlin 2024, Novembre
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 viene dimostrata l'interfacciamento del modulo sensore ADXL345 con raspberry pi ed è stata illustrata anche la sua programmazione in linguaggio python. Per leggere i valori di accelerazione su tutti i 3 assi, abbiamo utilizzato raspberry pi con un adattatore I2C. Questo adattatore I2C rende facile e affidabile la connessione al modulo sensore.

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. Raspberry Pi

3. Cavo I2C

4. Scudo I2C per lampone pi

5. Cavo Ethernet

Passaggio 2: collegamento hardware:

Collegamento hardware
Collegamento hardware
Collegamento hardware
Collegamento hardware

La sezione relativa ai collegamenti hardware spiega sostanzialmente le connessioni di cablaggio necessarie tra il sensore e il Raspberry Pi. 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

Il vantaggio dell'utilizzo di raspberry pi è che fornisce la flessibilità del linguaggio di programmazione in cui si desidera programmare la scheda per interfacciare il sensore con essa. Sfruttando questo vantaggio di questa scheda, stiamo dimostrando qui la sua programmazione in python. Il codice python per ADXL345 può essere scaricato dalla nostra comunità github che è Control Everything Community.

Oltre che per la facilità degli utenti, spieghiamo anche qui il codice:

Come primo passo della codifica è necessario scaricare la libreria smbus in caso di python, perché questa libreria supporta le funzioni utilizzate nel codice. Quindi, per scaricare la libreria puoi visitare il seguente link:

pypi.python.org/pypi/smbus-cffi/0.5.1

Puoi copiare il codice Python funzionante per questo sensore anche da qui:

import smbus

tempo di importazione

# Ottieni busbus I2C = smbus. SMBus(1)

# Indirizzo ADXL345, 0x53(83)

# Seleziona il registro del tasso di larghezza di banda, 0x2C(44)

# 0x0A(10) Modalità normale, velocità dati in uscita = 100 Hz

bus.write_byte_data(0x53, 0x2C, 0x0A)

# Indirizzo ADXL345, 0x53(83)

# Seleziona il registro di controllo della potenza, 0x2D(45)

# 0x08(08) Disattivazione della sospensione automatica

bus.write_byte_data(0x53, 0x2D, 0x08)

# Indirizzo ADXL345, 0x53(83)

# Seleziona registro formato dati, 0x31(49)

# 0x08(08) Autotest disabilitato, interfaccia a 4 fili

# Risoluzione completa, intervallo = +/-2 g

bus.write_byte_data(0x53, 0x31, 0x08)

tempo.sonno(0.5)

# Indirizzo ADXL345, 0x53(83)

# Rilegge i dati da 0x32(50), 2 byte

# Asse X LSB, Asse X MSB

data0 = bus.read_byte_data(0x53, 0x32)

data1 = bus.read_byte_data(0x53, 0x33)

# Converti i dati in 10 bit

xAccl = ((data1 & 0x03) * 256) + data0

se xAccl > 511:

xAccl -= 1024

# Indirizzo ADXL345, 0x53(83)

# Rilegge i dati da 0x34(52), 2 byte

# Asse Y LSB, Asse Y MSB

data0 = bus.read_byte_data(0x53, 0x34)

data1 = bus.read_byte_data(0x53, 0x35)

# Converti i dati in 10 bit

yAccl = ((data1 & 0x03) * 256) + data0

se yAccl > 511:

yAccl -= 1024

# Indirizzo ADXL345, 0x53(83)

# Rilegge i dati da 0x36(54), 2 byte

# Asse Z LSB, Asse Z MSB

data0 = bus.read_byte_data(0x53, 0x36)

data1 = bus.read_byte_data(0x53, 0x37)

# Converti i dati in 10 bit

zAccl = ((data1 & 0x03) * 256) + data0

se zAccl > 511:

zAccl -= 1024

# Invia i dati allo schermo

print "Accelerazione nell'asse X: %d" %xAccl

print "Accelerazione nell'asse Y: %d" %yAccl

print "Accelerazione nell'asse Z: %d" %zAccl

La parte di codice menzionata di seguito include le librerie necessarie per la corretta esecuzione dei codici Python.

import smbusimport time

Il codice può essere eseguito digitando il comando indicato di seguito nel prompt dei comandi.

$> pitone ADXL345.py

L'uscita del sensore è mostrata anche nell'immagine sopra per riferimento dell'utente.

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: