Sommario:
- Passaggio 1: Componenti
- Fase 2: Principio
- Passaggio 3: procedure
- Passaggio 4: codice
- Passaggio 5: Analisi del codice
Video: ADXL345 Utilizzo di Arduino Uno R3: 5 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:02
In questa lezione impareremo come utilizzare il sensore di accelerazione ADXL345.
Passaggio 1: Componenti
- Scheda Arduino Uno * 1
- Cavo USB * 1
- ADXL345 *1
- Tagliere * 1
- Ponticelli
Fase 2: Principio
Un accelerometro viene utilizzato per misurare la forza generata durante l'accelerazione. Il più fondamentale è l'accelerazione di gravità comunemente nota che è di 1 g.
Misurando l'accelerazione causata dalla gravità, è possibile calcolare l'angolo di inclinazione del dispositivo rispetto alla superficie piana. Analizzando l'accelerazione dinamica, puoi capire come si muove il dispositivo. Ad esempio, la scheda autobilanciante o l'hoverboard applica il sensore di accelerazione e il giroscopio per il filtro Kalman e la correzione della postura.
ADXL345
L'ADXL345 è un accelerometro a 3 assi piccolo, sottile, a bassa 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 e sono accessibili tramite un'interfaccia digitale SPI (3 o 4 fili) o I2C. In questo esperimento viene utilizzata l'interfaccia digitale I2C.
È particolarmente adatto per misurare 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 (4 mg/LSB) consente la misurazione della variazione di inclinazione di meno di 1,0°. E l'eccellente sensibilità (3,9 mg/LSB a 2 g) fornisce un'uscita ad alta precisione fino a ± 16 g.
Come funziona ADXL345
L'ADXL345 rileva l'accelerazione con il componente di rilevamento nella parte anteriore, quindi il componente di rilevamento del segnale elettrico lo cambia in segnale elettrico, che è analogico. Successivamente, l'adattatore AD integrato nel modulo convertirà il segnale analogico in digitale.
X_OUT, Y_OUT e Z_OUT sono i valori rispettivamente sugli assi X, Y e Z. Posiziona il modulo a faccia in su: Z_OUT può raggiungere al massimo +1 g, il minimo di X_OUT è -1 g verso la direzione Ax e il minimo di Y_OUT è -1 g verso la direzione Ay. Capovolgere invece il modulo: il minimo di Z_OUT è -1g, il massimo di X_OUT è +1g verso la direzione Ax e il massimo di Y_OUT è +1g verso la direzione Ay., come mostrato di seguito. Ruota il modulo ADXL345 e vedrai il cambiamento di tre valori.
quando il canale A passa da livello alto a livello basso, se il canale B è livello alto, indica che l'encoder rotativo gira in senso orario (CW); se in quel momento il canale B è di livello basso, significa che gira in senso antiorario (CCW). Quindi, se leggiamo il valore del canale B quando il canale A è di livello basso, possiamo sapere in quale direzione ruota l'encoder rotativo.
Principio: vedere il diagramma schematico del modulo Encoder rotativo di seguito. Da esso possiamo vedere che il pin 3 dell'encoder rotativo, ovvero CLK sul modulo, è il canale B. Il pin 5, che è DT, è il canale A. Per conoscere il senso di rotazione del registratore basta leggere il valore di CLK e DT.
Nel circuito è presente un chip regolatore di tensione da 3,3 V, quindi è possibile alimentare il modulo con 5 V o 3,3 V.
Poiché SDO è stato collegato a GND, l'indirizzo I2C dell'ADXL345 è 0x53, 0xA6 per la scrittura, 0xA7 per la lettura
Funzione pin del modulo ADXL345.
Passaggio 3: procedure
Passaggio 1. Costruisci il circuito.
Passo 2:
Scarica il codice da
Passaggio 3:
Carica lo schizzo sulla scheda Arduino Uno
Fare clic sull'icona Carica per caricare il codice sulla scheda di controllo.
Se viene visualizzato "Caricamento completato" nella parte inferiore della finestra, significa che lo schizzo è stato caricato con successo.
Dopo il caricamento, apri Serial Monitor, dove puoi vedere i dati rilevati. Quando l'accelerazione del modulo cambia, la figura cambierà di conseguenza sulla finestra.
Passaggio 4: codice
//ADXL335
/********************************
ADXL335
nota: vcc5v, ma ADXL335 Vs è 3,3 V
Il circuito:
5V: VCC
analogico 0: asse x
analogico 1: asse y
analogico 2: asse z
Dopo aver bruciato il
programma, aprire la finestra di debug del monitor seriale, dove è possibile visualizzare i dati rilevati. Quando l'accelerazione varia, la cifra varierà di conseguenza.
*********************************
/E-mail:
//Sito web:www.primerobotics.in
const int xpin =
A0; // asse x dell'accelerometro
const int ypin =
A1; // asse y
const int zpin =
A2; // asse z (solo su modelli a 3 assi)
configurazione nulla()
{
// inizializza le comunicazioni seriali:
Serial.begin(9600);
}
ciclo vuoto()
{
int x = analogRead(xpin); //leggi da xpin
ritardo(1); //
int y = analogRead(ypin); //leggi da ypin
ritardo(1);
int z = analogRead(zpin); //leggi da zpin
float zero_G = 338.0; //Alimentatore ADXL335
da Vs 3.3V: 3.3V/5V*1024=676/2=338
//Serial.print(x);
//Serial.print("\t");
//Serial.print(y);
//Serial.print("\t");
//Serial.print(z);
//Serial.print("\n");
galleggiante
zero_Gx=331.5;//l'uscita zero_G dell'asse x:(x_max + x_min)/2
galleggiante
zero_Gy=329,5;//l'uscita zero_G dell'asse y:(y_max + y_min)/2
float zero_Gz=340.0;//il
zero_G uscita dell'asse z:(z_max + z_min)/2
scala galleggiante =
67,6; // alimentazione da Vs 3,3 V: 3,3 v /5 v * 1024/3,3 v * 330 mv/g = 67,6 g
float scale_x =
65;//la scala dell'asse x: x_max/3.3v*330mv/g
float scale_y =
68,5;//la scala dell'asse y: y_max/3.3v*330mv/g
float scale_z =
68;//la scala dell'asse z: z_max/3.3v*330mv/g
Serial.print(((float)x
- zero_Gx)/scala_x); //stampa il valore x sul monitor seriale
Serial.print("\t");
Serial.print(((float)y
- zero_Gy)/scale_y); //stampa il valore y sul monitor seriale
Serial.print("\t");
Serial.print(((float)z
- zero_Gz)/scala_z); //stampa il valore z sul monitor seriale
Serial.print("\n");
ritardo(1000); //aspetta 1 secondo
}
Passaggio 5: Analisi del codice
Il codice per l'esperimento ADXL345 comprende 3 parti: inizializzare ogni porta e dispositivo, acquisire e memorizzare i dati inviati dai sensori e convertire i dati.
Consigliato:
Utilizzo di Mifare Ultralight C con RC522 su Arduino: 3 passaggi
Utilizzo di Mifare Ultralight C Con RC522 su Arduino: L'utilizzo della tecnologia RFID per identificare i titolari di carta o per autorizzare a fare qualcosa (aprire una porta, ecc.) è un approccio abbastanza comune. In caso di applicazioni fai-da-te, il modulo RC522 è ampiamente utilizzato in quanto è abbastanza economico ed esiste molto codice per questo modulo.I
Utilizzo di un display a 4 cifre e 7 segmenti, con Arduino: 7 passaggi
Utilizzo di un display a 4 cifre e 7 segmenti, con Arduino: in questo tutorial ti mostrerò come utilizzare un display a 7 segmenti con 4 cifre usando arduino. Alcune cose di base che vorrei sottolineare sono che questo occupa quasi tutti i pin digitali su arduino uno, leonardo, le schede con 13 digi
Utilizzo di uno stereo per auto per riprodurre Mp3 su un vecchio stereo di casa: 7 passaggi
Utilizzo di uno stereo per auto per riprodurre Mp3 su un vecchio stereo di casa: Riproduzione di file mp3 sullo stereo di casa Negli ultimi due decenni ho scaricato o copiato circa 5000 brani rock classici e avevo bisogno di un modo semplice per riprodurre file di musica digitale su un vecchio stereo di casa. Ho un computer home theater (HTC) collegato
Utilizzo di un cutter per vinile per creare uno stencil per aerografo: 5 passaggi
Utilizzo di un cutter in vinile per creare uno stencil per aerografo: in questo tutorial, darò una breve introduzione al processo di utilizzo di un cutter in vinile per creare stencil che puoi usare per dipingere con una configurazione aerografo o davvero, con qualsiasi tipo di vernice. In queste foto ho usato un aerografo boo
Utilizzo di Arduino Uno per il posizionamento XYZ del braccio robotico 6 DOF: 4 passaggi
Utilizzo di Arduino Uno per il posizionamento XYZ del braccio robotico 6 DOF: questo progetto riguarda l'implementazione di uno schizzo Arduino breve e relativamente semplice per fornire il posizionamento cinematico inverso XYZ. Avevo costruito un braccio robotico con 6 servocomandi, ma quando si trattava di trovare un software per eseguirlo, non c'era molto là fuori tranne che per il cliente