Съдържание:

ADXL345 Използване на Arduino Uno R3: 5 стъпки
ADXL345 Използване на Arduino Uno R3: 5 стъпки

Видео: ADXL345 Използване на Arduino Uno R3: 5 стъпки

Видео: ADXL345 Използване на Arduino Uno R3: 5 стъпки
Видео: How to interface Arduino uno with adxl345/accelerometer and servo motor sg90 2024, Ноември
Anonim
ADXL345 Използване на Arduino Uno R3
ADXL345 Използване на Arduino Uno R3

В този урок ще научим как да използваме сензора за ускорение ADXL345.

Стъпка 1: Компоненти

- дъска Arduino Uno * 1

- USB кабел * 1

- ADXL345 *1

- Платформа * 1

- Джъмперни проводници

Стъпка 2: Принцип

Акселерометърът се използва за измерване на силата, генерирана по време на ускорението. Най-фундаменталното е общоизвестното ускорение на гравитацията, което е 1g.

Чрез измерване на ускорението, причинено от гравитацията, можете да изчислите ъгъла на наклона на устройството спрямо равната повърхност. Чрез анализ на динамичното ускорение можете да определите начина, по който устройството се движи. Например, самобалансираща се дъска или ховърборд прилага сензор за ускорение и жироскоп за филтър Kalman и корекция на стойката.

ADXL345

ADXL345 е малък, тънък, 3-осен акселерометър с ниска мощност с измерване с висока разделителна способност (13-бита) до ± 16 g. Данните за цифров изход са форматирани като 16-битови две допълнения и са достъпни или чрез SPI (3- или 4-жичен) или I2C цифров интерфейс. В този експеримент се използва цифровият интерфейс I2C.

Той е много подходящ за измерване на статичното ускорение на гравитацията в приложенията за отчитане на наклона, както и на динамичното ускорение в резултат на движение или удар. Неговата висока разделителна способност (4 mg/LSB) позволява измерване на наклона с по -малко от 1,0 °. Отличната чувствителност (3,9 mg/LSB @2 g) осигурява високоточен изход до ± 16 g.

Как работи ADXL345

ADXL345 открива ускорението с чувствителния компонент отпред, а след това компонентът на чувствителността на електрическия сигнал го променя в електрически сигнал, който е аналогов. След това интегрираният в модула AD адаптер ще преобразува аналоговия сигнал в цифров.

X_OUT, Y_OUT и Z_OUT са стойностите съответно по оста X, Y и Z. Поставете модула с лицето нагоре: Z_OUT може да достигне най -много +1g, минимумът на X_OUT е -1g към посоката на Ax, а минимумът от Y_OUT е -1g към посоката Ay. От друга страна, обърнете модула с главата надолу: минимумът на Z_OUT е -1g, максимумът на X_OUT е +1g към посоката на Ax, а максимумът на Y_OUT е +1g към посоката Ay., както е показано по -долу. Завъртете модула ADXL345 и ще видите промяната на три стойности.

когато канал А се промени от високо ниво на ниско ниво, ако канал В е високо ниво, това показва, че въртящият се енкодер се върти по часовниковата стрелка (CW); ако в този момент канал В е на ниско ниво, това означава завъртане обратно на часовниковата стрелка (CCW). Така че, ако прочетем стойността на канал B, когато канал A е на ниско ниво, можем да знаем в коя посока се върти въртящият се енкодер.

Принцип: Вижте схематичната диаграма на модула на въртящия се енкодер по -долу. От него можем да видим, че щифт 3 на въртящия се енкодер, а именно CLK на модула, е канал В. Пин 5, който е DT, е канал А. За да знаете посоката на въртене на рекордера, просто прочетете стойността на CLK и DT.

Във веригата има чип за регулатор на напрежение 3.3v, така че можете да захранвате модула с 5V или 3.3V.

Тъй като SDO е свързан към GND, I2C адресът на ADXL345 е 0x53, 0xA6 за запис, 0xA7 за четене

Pin функция на ADXL345 модул.

Стъпка 3: Процедури

Стъпка 1. Изградете веригата.

Стъпка 2:

Изтеглете кода от

Стъпка 3:

Качете скицата на дъската Arduino Uno

Щракнете върху иконата за качване, за да качите кода на контролната платка.

Ако в края на прозореца се появи „Готово качване“, това означава, че скицата е качена успешно.

След качването отворете Serial Monitor, където можете да видите откритите данни. Когато ускорението на модула се промени, цифрата ще се промени съответно в прозореца.

Стъпка 4: Код

Код
Код

// ADXL335

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

ADXL335

забележка: vcc5v, но ADXL335 Vs е 3.3V

Веригата:

5V: VCC

аналогов 0: ос x

аналог 1: ос y

аналог 2: ос z

След изгарянето на

програма, отворете прозореца за отстраняване на грешки в серийния монитор, където можете да видите откритите данни да се показват. Когато ускорението варира, цифрата ще варира съответно.

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

/Електронна поща:

// Уебсайт: www.primerobotics.in

const int xpin =

А0; // оста x на акселерометъра

const int ypin =

А1; // оста y

const int zpin =

А2; // ос z (само при 3-осни модели)

void setup ()

{

// инициализираме серийните комуникации:

Serial.begin (9600);

}

void loop ()

{

int x = analogRead (xpin); // четене от xpin

забавяне (1); //

int y = analogRead (ypin); // четене от ypin

забавяне (1);

int z = analogRead (zpin); // четене от zpin

поплавък нула_G = 338,0; // захранване ADXL335

от 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 ");

плувам

нула_Gx = 331.5; // изход нула_G на ос x: (x_max + x_min)/2

плувам

нула_Gy = 329.5; // изход нула_G на оста y: (y_max + y_min)/2

float zero_Gz = 340.0; //

нула_G изход на ос z: (z_max + z_min)/2

плаваща скала =

67.6; // захранване от Vs 3.3V: 3.3v/5v *1024/3.3v *330mv/g = 67.6g

float scale_x =

65; // скалата на оста x: x_max/3.3v*330mv/g

float scale_y =

68.5; // скалата на оста y: y_max/3.3v*330mv/g

float scale_z =

68; // скалата на оста z: z_max/3.3v*330mv/g

Serial.print (((float) x

- нула_Gx)/мащаб_x); // отпечатайте стойност x на сериен монитор

Serial.print ("\ t");

Serial.print (((float) y

- нула_Gy)/мащаб_y); // отпечатва y стойност на сериен монитор

Serial.print ("\ t");

Serial.print (((float) z

- нула_Gz)/мащаб_z); // отпечатва z стойност на сериен монитор

Serial.print ("\ n");

забавяне (1000); // изчакайте 1 секунда

}

Стъпка 5: Анализ на кода

Кодът за експеримента ADXL345 включва 3 части: инициализиране на всеки порт и устройство, получаване и съхраняване на данни, изпратени от сензорите, и преобразуване на данните.

Препоръчано: