Inhaltsverzeichnis:

ADXL345 mit Arduino Uno R3 - Gunook
ADXL345 mit Arduino Uno R3 - Gunook

Video: ADXL345 mit Arduino Uno R3 - Gunook

Video: ADXL345 mit Arduino Uno R3 - Gunook
Video: Simple Arduino Earthquake Detector with GY-61 ADXL335 3-Axis Analog Accelerometer 2024, November
Anonim
ADXL345 mit Arduino Uno R3
ADXL345 mit Arduino Uno R3

In dieser Lektion lernen wir die Verwendung des Beschleunigungssensors ADXL345.

Schritt 1: Komponenten

- Arduino Uno-Board * 1

- USB-Kabel * 1

-ADXL345 * 1

- Steckbrett * 1

- Überbrückungsdrähte

Schritt 2: Prinzip

Ein Beschleunigungsmesser wird verwendet, um die während der Beschleunigung erzeugte Kraft zu messen. Die grundlegendste ist die allgemein bekannte Erdbeschleunigung, die 1 g beträgt.

Durch Messung der Erdbeschleunigung können Sie den Neigungswinkel des Geräts zur ebenen Fläche berechnen. Durch die Analyse der dynamischen Beschleunigung können Sie feststellen, wie sich das Gerät bewegt. Zum Beispiel wendet ein selbstausgleichendes Board oder Hoverboard den Beschleunigungssensor und das Gyroskop für den Kalman-Filter und die Haltungskorrektur an.

ADXL345

Der ADXL345 ist ein kleiner, dünner, stromsparender 3-Achsen-Beschleunigungsmesser mit hochauflösender (13-Bit) Messung bei bis zu ±16 g. Digitale Ausgangsdaten werden als 16-Bit-Zweierkomplement formatiert und sind entweder über eine SPI- (3- oder 4-Draht) oder eine digitale I2C-Schnittstelle zugänglich. In diesem Experiment wird die digitale I2C-Schnittstelle verwendet.

Es ist gut geeignet, um die statische Gravitationsbeschleunigung in Neigungssensoranwendungen sowie dynamische Beschleunigungen aufgrund von Bewegungen oder Stößen zu messen. Seine hohe Auflösung (4 mg/LSB) ermöglicht die Messung der Neigungsänderung um weniger als 1,0°. Und die ausgezeichnete Empfindlichkeit (3,9 mg/LSB @ 2 g) bietet eine hochpräzise Ausgabe von bis zu ±16 g.

So funktioniert ADXL345

Der ADXL345 erkennt die Beschleunigung mit der Sensorkomponente an der Vorderseite, und dann wandelt die elektrische Signalsensorkomponente sie in ein analoges elektrisches Signal um. Als nächstes wandelt der auf dem Modul integrierte AD-Adapter das analoge Signal in ein digitales um.

X_OUT, Y_OUT und Z_OUT sind die Werte auf der X-, Y- bzw. Z-Achse. Legen Sie das Modul mit der Vorderseite nach oben: Z_OUT kann höchstens +1g erreichen, das Minimum von X_OUT beträgt -1g in Richtung Ax und das Minimum von Y_OUT beträgt -1g in Richtung Ay. Drehen Sie das Modul andererseits auf den Kopf: Das Minimum von Z_OUT beträgt -1g, das Maximum von X_OUT beträgt +1g in Richtung Ax und das Maximum von Y_OUT beträgt +1g in Richtung Ay., Wie nachfolgend dargestellt. Drehen Sie das ADXL345-Modul und Sie sehen die Änderung von drei Werten.

Wenn Kanal A von High-Pegel auf Low-Pegel wechselt, wenn Kanal B High-Pegel hat, zeigt dies an, dass sich der Drehgeber im Uhrzeigersinn (CW) dreht; Wenn Kanal B zu diesem Zeitpunkt auf niedrigem Pegel ist, bedeutet dies, dass er sich gegen den Uhrzeigersinn (CCW) dreht. Wenn wir also den Wert von Kanal B lesen, wenn Kanal A auf Low-Pegel ist, können wir wissen, in welche Richtung sich der Drehgeber dreht.

Prinzip: Siehe das schematische Diagramm des Rotary Encoder-Moduls unten. Daraus können wir sehen, dass Pin 3 des Drehgebers, nämlich CLK auf dem Modul, Kanal B ist. Pin 5, der DT ist, ist Kanal A. Um die Drehrichtung des Rekorders zu kennen, lesen Sie einfach den Wert von CLK und DT.

Es gibt einen 3,3-V-Spannungsregler-Chip in der Schaltung, sodass Sie das Modul mit 5 V oder 3,3 V versorgen können.

Da SDO mit GND verbunden ist, ist die I2C-Adresse des ADXL345 0x53, 0xA6 zum Schreiben, 0xA7 zum Lesen

Pin-Funktion des ADXL345-Moduls.

Schritt 3: Verfahren

Schritt 1. Bauen Sie die Schaltung auf.

Schritt 2:

Laden Sie den Code von https://github.com/primerobotics/Arduino. herunter

Schritt 3:

Laden Sie die Skizze auf das Arduino Uno-Board hoch

Klicken Sie auf das Symbol Hochladen, um den Code auf die Steuerplatine hochzuladen.

Wenn unten im Fenster "Hochladen fertig" erscheint, bedeutet dies, dass die Skizze erfolgreich hochgeladen wurde.

Öffnen Sie nach dem Hochladen Serial Monitor, wo Sie die erkannten Daten sehen können. Wenn sich die Beschleunigung des Moduls ändert, ändert sich die Zahl im Fenster entsprechend.

Schritt 4: Code

Code
Code

//ADXL335

/********************************

ADXL335

Hinweis: vcc5v, aber ADXL335 Vs beträgt 3,3 V

Die Rennbahn:

5V: VCC

analog 0: x-Achse

analog 1: y-Achse

analog 2: z-Achse

Nach dem Verbrennen

Programm öffnen Sie das Debugging-Fenster des seriellen Monitors, in dem Sie sehen können, dass die erkannten Daten angezeigt werden. Wenn die Beschleunigung variiert, ändert sich die Zahl entsprechend.

*********************************

/Email:

//Website:www.primerobotics.in

const int xpin =

A0; // x-Achse des Beschleunigungsmessers

const int ypin =

A1; // y-Achse

const int zpin =

A2; // Z-Achse (nur bei 3-Achsen-Modellen)

Void-Setup ()

{

// Initialisieren Sie die serielle Kommunikation:

Serial.begin (9600);

}

Leere Schleife ()

{

int x = analogRead (xpin); // von xpin lesen

Verzögerung(1); //

int y = analogRead(ypin); // von ypin lesen

Verzögerung(1);

int z = analogRead (zpin); // von zpin lesen

Float Null_G = 338,0; // ADXL335 Netzteil

bei Vs 3.3V: 3.3V/5V*1024=676/2=338

//Seriendruck (x);

//Seriendruck("\t");

//Seriendruck (y);

//Seriendruck("\t");

//Seriendruck (z);

//Seriendruck("\n");

schweben

zero_Gx = 331,5; // die zero_G-Ausgabe der x-Achse: (x_max + x_min)/2

schweben

zero_Gy=329,5; // die zero_G Ausgabe der y-Achse: (y_max + y_min)/2

float zero_Gz=340.0; // die

zero_G Ausgabe der z-Achse:(z_max + z_min)/2

Schwimmerskala =

67,6; // Stromversorgung von Vs 3,3 V: 3,3 V / 5 V * 1024 / 3,3 V * 330 mv / g = 67,6 g

float scale_x =

65; // die Skala der x-Achse: x_max/3.3v*330mv/g

float scale_y =

68,5; // die Skala der y-Achse: y_max/3.3v*330mv/g

float scale_z =

68; // die Skala der z-Achse: z_max/3.3v*330mv/g

Serial.print (((schwimmen)x

- Null_Gx)/Skala_x); // x-Wert auf seriellem Monitor drucken

Serial.print("\t");

Serial.print(((float)y

- null_Gy)/Skala_y); // y-Wert auf seriellem Monitor drucken

Serial.print("\t");

Serial.print(((float)z

- null_Gz)/Skala_z); // Z-Wert auf seriellem Monitor drucken

Serial.print("\n");

Verzögerung (1000); // 1 Sekunde warten

}

Schritt 5: Codeanalyse

Der Code für das ADXL345-Experiment umfasst 3 Teile: Initialisieren Sie jeden Port und jedes Gerät, erfassen und speichern Sie die von den Sensoren gesendeten Daten und konvertieren Sie die Daten.

Empfohlen: