Isi kandungan:

ADXL345 Menggunakan Arduino Uno R3: 5 Langkah
ADXL345 Menggunakan Arduino Uno R3: 5 Langkah

Video: ADXL345 Menggunakan Arduino Uno R3: 5 Langkah

Video: ADXL345 Menggunakan Arduino Uno R3: 5 Langkah
Video: How To Track Orientation with Arduino | ADXL345 Accelerometer Tutorial 2024, November
Anonim
ADXL345 Menggunakan Arduino Uno R3
ADXL345 Menggunakan Arduino Uno R3

Dalam pelajaran ini, kita akan belajar bagaimana menggunakan sensor pecutan ADXL345.

Langkah 1: Komponen

- Papan Arduino Uno * 1

- Kabel USB * 1

- ADXL345 * 1

- Papan Roti * 1

- Wayar pelompat

Langkah 2: Prinsip

Accelerometer digunakan untuk mengukur daya yang dihasilkan semasa pecutan. Yang paling mendasar adalah pecutan graviti yang biasa diketahui iaitu 1g.

Dengan mengukur pecutan yang disebabkan oleh graviti, anda dapat mengira sudut kecondongan peranti ke permukaan yang rata. Dengan menganalisis pecutan dinamik, anda dapat mengetahui cara peranti bergerak. Sebagai contoh, papan pengimbang diri atau papan hover menggunakan sensor pecutan dan giroskop untuk penapis Kalman dan pembetulan postur.

ADXL345

ADXL345 adalah akselerometer 3-paksi kecil, nipis, rendah, dengan ukuran resolusi tinggi (13-bit) hingga ± 16 g. Data output digital diformat sebagai pelengkap 16-bit dua dan dapat diakses melalui antara muka digital SPI (3- atau 4-wayar) atau I2C. Dalam eksperimen ini, antara muka digital I2C digunakan.

Sangat cocok untuk mengukur percepatan statik gravitasi dalam aplikasi penginderaan kemiringan, serta percepatan dinamis yang dihasilkan dari gerakan atau kejutan. Resolusi tinggi (4 mg / LSB) memungkinkan pengukuran perubahan kecenderungan kurang dari 1.0 °. Dan kepekaan yang sangat baik (3.9mg / LSB @ 2g) memberikan output ketepatan tinggi sehingga ± 16g.

Bagaimana ADXL345 berfungsi

ADXL345 mengesan pecutan dengan komponen penginderaan di bahagian depan, dan kemudian komponen pengesan isyarat elektrik mengubahnya menjadi isyarat elektrik, yang bersifat analog. Seterusnya, penyesuai AD yang disepadukan pada modul akan menukar isyarat analog menjadi digital.

X_OUT, Y_OUT dan Z_OUT masing-masing adalah nilai pada paksi X, Y, dan Z. Letakkan modul menghadap ke atas: Z_OUT boleh mencapai + 1g paling banyak, minimum X_OUT adalah -1g menuju arah Ax, dan minimum Y_OUT adalah -1g ke arah Ay. Sebaliknya, putar modul terbalik: minimum Z_OUT ialah -1g, maksimum X_OUT adalah + 1g menuju arah Ax, dan maksimum Y_OUT adalah + 1g menuju arah Ay., seperti yang ditunjukkan di bawah. Putar modul ADXL345 dan anda akan melihat perubahan tiga nilai.

apabila saluran A berubah dari tahap tinggi ke tahap rendah, jika saluran B berada pada tahap tinggi, ini menunjukkan pengekod putar berputar mengikut arah jam (CW); jika pada saat itu saluran B berada pada tahap rendah, itu bermaksud putaran berlawanan arah jarum jam (CCW). Oleh itu, jika kita membaca nilai saluran B ketika saluran A berada pada tahap rendah, kita dapat mengetahui ke arah mana pengekod putar berputar.

Prinsip: Lihat gambarajah skema modul Rotary Encoder di bawah. Dari situ kita dapat melihat bahawa pin 3 dari pengekod putar, iaitu CLK pada modul, adalah saluran B. Pin 5, yang merupakan DT, adalah saluran A. Untuk mengetahui arah putaran perakam, baca nilai CLK dan DT.

Terdapat cip pengatur voltan 3.3v di litar, jadi anda boleh menghidupkan modul dengan 5V atau 3.3V.

Oleh kerana SDO telah disambungkan ke GND, alamat I2C ADXL345 adalah 0x53, 0xA6 untuk menulis, 0xA7 untuk dibaca

Fungsi Pin Modul ADXL345.

Langkah 3: Prosedur

Langkah 1. Bina litar.

Langkah 2:

Muat turun kod dari

Langkah 3:

Muat naik lakaran ke papan Arduino Uno

Klik ikon Muat Naik untuk memuat naik kod ke papan kawalan.

Sekiranya "Selesai memuat naik" muncul di bahagian bawah tetingkap, ini bermaksud lakaran berjaya dimuat naik.

Setelah memuat naik, buka Serial Monitor, di mana anda dapat melihat data yang dikesan. Apabila pecutan modul berubah, angka akan berubah sesuai pada tetingkap.

Langkah 4: Kod

Kod
Kod

// ADXL335

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

ADXL335

nota: vcc5v, tetapi ADXL335 Vs adalah 3.3V

Litar:

5V: VCC

analog 0: paksi-x

analog 1: paksi-y

analog 2: paksi-z

Selepas membakar

program, buka tetingkap debug monitor bersiri, di mana anda dapat melihat data yang dikesan sedang dipaparkan. Apabila pecutan berbeza, angka akan berubah sesuai.

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

/ E-mel:

// Laman Web: www.primerobotics.in

const int xpin =

A0; // paksi x pecutan

const int ypin =

A1; // paksi-y

const int zpin =

A2; // paksi-z (hanya pada model 3 paksi)

persediaan tidak sah ()

{

// memulakan komunikasi bersiri:

Serial.begin (9600);

}

gelung kosong ()

{

int x = analogRead (xpin); // baca dari xpin

kelewatan (1); //

int y = analogRead (ypin); // baca dari ypin

kelewatan (1);

int z = analogRead (zpin); // baca dari zpin

apungan zero_G = 338.0; // bekalan kuasa ADXL335

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

terapung

zero_Gx = 331.5; // output zero_G paksi x: (x_max + x_min) / 2

terapung

zero_Gy = 329.5; // output sifar_G bagi paksi y: (y_max + y_min) / 2

terapung zero_Gz = 340.0; // the

zero_G output paksi z: (z_max + z_min) / 2

skala apungan =

67.6; // bekalan kuasa oleh Vs 3.3V: 3.3v / 5v * 1024 / 3.3v * 330mv / g = 67.6g

skala apungan_x =

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

skala apungan_y =

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

skala apungan_z =

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

Cetakan bersiri (((terapung) x

- zero_Gx) / skala_x); // mencetak nilai x pada monitor bersiri

Serial.print ("\ t");

Cetakan bersiri (((terapung) y

- zero_Gy) / skala_y); // mencetak nilai y pada monitor bersiri

Serial.print ("\ t");

Cetakan bersiri (((terapung) z

- zero_Gz) / skala_z); // mencetak nilai z pada monitor bersiri

Cetakan bersiri ("\ n");

kelewatan (1000); // tunggu selama 1 saat

}

Langkah 5: Analisis Kod

Kod untuk eksperimen ADXL345 merangkumi 3 bahagian: memulakan setiap port dan peranti, memperoleh dan menyimpan data yang dihantar dari sensor, dan menukar data.

Disyorkan: