Spisu treści:

ADXL345 przy użyciu Arduino Uno R3: 5 kroków
ADXL345 przy użyciu Arduino Uno R3: 5 kroków

Wideo: ADXL345 przy użyciu Arduino Uno R3: 5 kroków

Wideo: ADXL345 przy użyciu Arduino Uno R3: 5 kroków
Wideo: Akcelerometr ADXL345 z Atmega8 przez I2C 2024, Lipiec
Anonim
ADXL345 przy użyciu Arduino Uno R3
ADXL345 przy użyciu Arduino Uno R3

W tej lekcji nauczymy się korzystać z czujnika przyspieszenia ADXL345.

Krok 1: Komponenty

- Płytka Arduino Uno * 1

-Kabel USB * 1

-ADXL345 * 1

-Płytka chlebowa * 1

- Przewody połączeniowe

Krok 2: Zasada

Akcelerometr służy do pomiaru siły generowanej podczas przyspieszania. Najbardziej fundamentalnym jest powszechnie znane przyspieszenie grawitacyjne, które wynosi 1g.

Mierząc przyspieszenie wywołane grawitacją, można obliczyć kąt nachylenia urządzenia do poziomej powierzchni. Analizując dynamiczne przyspieszenie, możesz określić, w jaki sposób porusza się urządzenie. Na przykład samobalansująca deska lub hoverboard stosuje czujnik przyspieszenia i żyroskop do filtru Kalmana i korekcji postawy.

ADXL345

ADXL345 to mały, cienki, energooszczędny, 3-osiowy akcelerometr z pomiarem o wysokiej rozdzielczości (13-bitów) do ±16 g. Cyfrowe dane wyjściowe są sformatowane jako 16-bitowe uzupełnienie dwójki i są dostępne za pośrednictwem interfejsu cyfrowego SPI (3- lub 4-przewodowego) lub I2C. W tym eksperymencie używany jest interfejs cyfrowy I2C.

Dobrze nadaje się do pomiaru statycznego przyspieszenia grawitacyjnego w aplikacjach z wykrywaniem przechyłu, a także dynamicznego przyspieszenia wynikającego z ruchu lub wstrząsu. Jego wysoka rozdzielczość (4 mg/LSB) umożliwia pomiar zmian nachylenia o mniej niż 1,0°. A doskonała czułość (3,9 mg/LSB przy 2 g) zapewnia wysoką precyzję do ±16g.

Jak działa ADXL345?

ADXL345 wykrywa przyspieszenie za pomocą elementu czujnikowego z przodu, a następnie element wykrywający sygnał elektryczny zamienia go na sygnał elektryczny, który jest analogowy. Następnie adapter AD zintegrowany z modułem zamieni sygnał analogowy na cyfrowy.

X_OUT, Y_OUT i Z_OUT są wartościami odpowiednio na osiach X, Y i Z. Umieść moduł przodem do góry: Z_OUT może osiągnąć maksymalnie +1g, minimum X_OUT to -1g w kierunku Ax, a minimum Y_OUT to -1g w kierunku Ay. Z drugiej strony odwróć moduł do góry nogami: minimum Z_OUT to -1g, maksimum X_OUT to +1g w kierunku Ax, a maksimum Y_OUT to +1g w kierunku Ay., jak pokazano niżej. Obróć moduł ADXL345, a zobaczysz zmianę trzech wartości.

gdy kanał A zmienia się z wysokiego poziomu na niski, jeśli kanał B ma wysoki poziom, oznacza to, że enkoder obrotowy obraca się zgodnie z ruchem wskazówek zegara (CW); jeśli w tym momencie kanał B ma niski poziom, oznacza to, że obraca się w kierunku przeciwnym do ruchu wskazówek zegara (CCW). Jeśli więc odczytamy wartość kanału B, gdy kanał A ma niski poziom, możemy wiedzieć, w którym kierunku obraca się enkoder obrotowy.

Zasada: Zobacz schemat ideowy modułu enkodera obrotowego poniżej. Z tego widać, że pin 3 enkodera obrotowego, czyli CLK na module, to kanał B. Pin 5, czyli DT, to kanał A. Aby poznać kierunek obrotów rejestratora, wystarczy odczytać wartość CLK i DT.

W obwodzie znajduje się układ regulatora napięcia 3,3 V, dzięki czemu można zasilać moduł napięciem 5 V lub 3,3 V.

Ponieważ SDO zostało podłączone do GND, adres I2C ADXL345 to 0x53, 0xA6 do zapisu, 0xA7 do odczytu

Funkcja pinów modułu ADXL345.

Krok 3: Procedury

Krok 1. Zbuduj obwód.

Krok 2:

Pobierz kod z

Krok 3:

Prześlij szkic na płytkę Arduino Uno

Kliknij ikonę Prześlij, aby przesłać kod do tablicy kontrolnej.

Jeśli na dole okna pojawi się komunikat „Zakończono przesyłanie”, oznacza to, że szkic został pomyślnie przesłany.

Po przesłaniu otwórz Serial Monitor, gdzie możesz zobaczyć wykryte dane. Gdy przyspieszenie modułu ulegnie zmianie, liczba w oknie odpowiednio się zmieni.

Krok 4: Kod

Kod
Kod

//ADXL335

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

ADXL335

Uwaga: vcc5v, ale ADXL335 Vs to 3,3 V

Obwód:

5V: VCC

analogowe 0: oś x

analogowy 1: oś y

analogowy 2: oś z

Po spaleniu

otwórz okno debugowania monitora szeregowego, w którym możesz zobaczyć wykryte dane, które są wyświetlane. Gdy przyspieszenie się zmienia, liczba ta będzie się odpowiednio zmieniać.

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

/E-mail:

//Strona internetowa:www.primerobotics.in

const int xpin =

A0; // oś x akcelerometru

const int ypin =

A1; // oś y

const int zpin =

A2; // oś z (tylko w modelach 3-osiowych)

pusta konfiguracja()

{

// zainicjuj komunikację szeregową:

Serial.początek(9600);

}

pusta pętla()

{

int x = odczyt analogowy (xpin); //odczytaj z xpin

opóźnienie(1); //

int y = odczyt analogowy(ypin); //odczytaj z ypin

opóźnienie(1);

int z = odczyt analogowy (zpin); //odczytaj z zpin

pływak zero_G = 338,0; //Zasilacz ADXL335

przez 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");

pływak

zero_Gx=331.5;//wyjście zero_G osi x:(x_max + x_min)/2

pływak

zero_Gy=329.5;//wyjście zero_G osi y:(y_max + y_min)/2

float zero_Gz=340.0;//the

zero_G wyjście osi z:(z_max + z_min)/2

skala zmiennoprzecinkowa =

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

liczba zmiennoprzecinkowa_x =

65;//skala osi x: x_max/3.3v*330mv/g

zmiennoprzecinkowa skala_y =

68.5;//skala osi y: y_max/3.3v*330mv/g

zmiennoprzecinkowa skala_z =

68;//skala osi z: z_max/3.3v*330mv/g

Serial.print(((zmiennoprzecinkowa)x

- zero_Gx)/skala_x); //drukuj wartość x na monitorze szeregowym

Serial.print("\t");

Serial.print(((zmiennoprzecinkowa)y

- zero_Gy)/skala_y); //wydrukuj wartość y na monitorze szeregowym

Serial.print("\t");

Serial.print(((zmiennoprzecinkowa)z

- zero_Gz)/skala_z); //drukuj wartość z na monitorze szeregowym

Serial.print("\n");

opóźnienie (1000); //czekaj 1 sekundę

}

Krok 5: Analiza kodu

Kod eksperymentu ADXL345 składa się z 3 części: inicjalizacja każdego portu i urządzenia, gromadzenie i przechowywanie danych wysyłanych z czujników oraz konwersja danych.

Zalecana: