Мазмуну:

ADXL345 Arduino Uno R3 колдонуу: 5 кадам
ADXL345 Arduino Uno R3 колдонуу: 5 кадам

Video: ADXL345 Arduino Uno R3 колдонуу: 5 кадам

Video: ADXL345 Arduino Uno R3 колдонуу: 5 кадам
Video: How to Interface ADXL345 Accelerometer with Arduino UNO 2024, Ноябрь
Anonim
ADXL345 Arduino Uno R3 колдонуу
ADXL345 Arduino Uno R3 колдонуу

Бул сабакта биз ADXL345 ылдамдатуу сенсорун колдонууну үйрөнөбүз.

1 -кадам: Компоненттер

- Arduino Uno тактасы * 1

- USB кабели * 1

- ADXL345 *1

- Нан тактасы * 1

- секирүүчү зымдар

2 -кадам: Принцип

Акселерометр ылдамдануу учурунда пайда болгон күчтү өлчөө үчүн колдонулат. Эң негизгиси жалпыга белгилүү болгон тартылуу ылдамдануусу 1г.

Жердин тартылуу күчүнүн ылдамдатуусун өлчөө менен, түзмөктүн эңкейиш бурчун эсептей аласыз. Динамикалык ылдамдатууну талдоо аркылуу, сиз түзмөктүн кантип жылып баратканын айта аласыз. Мисалы, өзүн-өзү теңдөөчү такта же hoverboard Калман чыпкасы жана позасын оңдоо үчүн ылдамдатуу сенсорун жана гироскопту колдонот.

ADXL345

ADXL345-кичине, ичке, аз кубаттуу, 3 октук акселерометр, ± 16 г чейин жогорку чечим (13-бит) менен өлчөө. Санариптик чыгуучу маалыматтар 16 биттик эки кошумча катары форматталган жана SPI (3 же 4 зымдуу) же I2C санариптик интерфейси аркылуу жеткиликтүү. Бул экспериментте I2C санариптик интерфейси колдонулат.

Бул эңкейүүнү сезүүчү колдонмолордо тартылуу күчүнүн статикалык ылдамдануусун, ошондой эле кыймылдан же шоктон келип чыккан динамикалык ылдамданууну өлчөө үчүн ылайыктуу. Анын жогорку токтому (4 мг/LSB) эңкейүүнү 1,0 ° тан азыраак өлчөөгө мүмкүндүк берет. Ал эми эң сонун сезгичтик (3.9mg/LSB @2g) ± 16g чейин жогорку тактыкта чыгарууну камсыз кылат.

ADXL345 кантип иштейт

ADXL345 фронттогу сезгич компонент менен ылдамданууну аныктайт, андан кийин электрдик сигналды сезүүчү компонент аны аналогдук электрдик сигналга өзгөртөт. Андан кийин, модулга бириктирилген AD адаптери аналогдук сигналды санарипке айландырат.

X_OUT, Y_OUT жана Z_OUT - X, Y жана Z огунда маанилер. Модулду өйдө каратып коюңуз: Z_OUT эң көп дегенде +1г жетиши мүмкүн, X_OUTтун минимуму Ax багытында -1г, ал эми Y_OUTтун минималдуусу Айга карай -1г. Башка жагынан алганда, модулду тескери буруңуз: Z_OUT минимуму -1г, X_OUT максимуму Ax багытына +1г, Y_OUT максимуму Ай багытына карай +1г., Төмөндө көрсөтүлгөндөй. ADXL345 модулун буруңуз жана үч баалуулуктун өзгөрүшүн көрөсүз.

А каналы жогорку деңгээлден төмөнкү деңгээлге өзгөргөндө, эгер В каналы жогорку деңгээлде болсо, анда ал айлануучу коддогучтун саат жебеси боюнча айланганын көрсөтөт (CW); эгер ошол учурда В каналы төмөн болсо, бул сааттын жебесине каршы айланууну билдирет (CCW). Ошентип, эгер биз А каналы төмөн болгондо В каналынын маанисин окусак, анда айлануучу кодер кайсы багытта бурулганын биле алабыз.

Принцип: Төмөндөгү Rotary Encoder модулунун схемасын караңыз. Андан биз айлануучу коддогучтун 3 -пини, тактап айтканда, модулдагы CLK, B. B. Pin 5, бул DT, А -канал экенин көрө алабыз. DT.

Райондо 3.3V чыңалуу жөндөгүч чипи бар, андыктан 5V же 3.3V менен модулду күчтөндүрө аласыз.

SDO GND менен туташкандыктан, ADXL345тин I2C дареги 0x53, 0xA6 жазуу үчүн, 0xA7 окуу үчүн

ADXL345 модулунун пин функциясы.

3 -кадам: Процедуралар

Кадам 1. Районду куруу.

2-кадам:

Кодду https://github.com/primerobotics/Arduino сайтынан жүктөп алыңыз

3 -кадам:

Эскизди Arduino Uno тактасына жүктөңүз

Кодду башкаруу тактасына жүктөө үчүн Жүктөө сөлөкөтүн басыңыз.

Терезенин ылдыйында "Жүктөө бүттү" пайда болсо, бул эскиз ийгиликтүү жүктөлгөнүн билдирет.

Жүктөп бергенден кийин, ачылган маалыматтарды көрө турган Serial Monitorду ачыңыз. Модулдун ылдамдашы өзгөргөндө, фигура ошого жараша терезеде өзгөрөт.

4 -кадам: Код

Code
Code

// ADXL335

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

ADXL335

Эскертүү: vcc5v, бирок ADXL335 Vs 3.3V

Район:

5V: VCC

аналогдук 0: x огу

аналог 1: y огу

аналог 2: z огу

Күйгүзгөндөн кийин

Программада сериялык монитордун мүчүлүштүктөрдү оңдоо терезесин ачыңыз, анда сиз аныкталган маалыматтарды көрсөтө аласыз. Ылдамдануу өзгөргөндө, көрсөткүч ошого жараша өзгөрөт.

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

/Электрондук почта:

//Website:www.primerobotics.in

const int xpin =

A0; // акселерометрдин х огу

const int ypin =

A1; // y огу

const int zpin =

A2; // z огу (3 огунун моделдеринде гана)

жараксыз орнотуу ()

{

// сериялык байланышты баштоо:

Serial.begin (9600);

}

боштук цикл ()

{

int x = analogRead (xpin); // xpinден окуу

кечигүү (1); //

int y = analogRead (ypin); // ypin тартып окуу

кечигүү (1);

int z = analogRead (zpin); // zpinден окуу

float zero_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 ");

сүзүү

zero_Gx = 331.5; // x огунун zero_G чыгышы: (x_max + x_min)/2

сүзүү

zero_Gy = 329.5; // y огунун zero_G чыгышы: (y_max + y_min)/2

float zero_Gz = 340.0; //

z огунун zero_G чыгышы: (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 (((калкып чыгуу) x

- zero_Gx)/scale_x); // сериялык монитордо x маанисин басып чыгаруу

Serial.print ("\ t");

Serial.print (((калкып) ж

- zero_Gy)/scale_y); // сериялык мониторго y маанисин басып чыгаруу

Serial.print ("\ t");

Serial.print (((float) z

- zero_Gz)/scale_z); // z наркын сериялык мониторго басып чыгаруу

Serial.print ("\ n");

кечигүү (1000); // 1 секунд күтө туруңуз

}

5 -кадам: Код анализи

ADXL345 экспериментинин коду 3 бөлүктөн турат: ар бир портту жана түзмөктү инициализациялоо, сенсорлордон жөнөтүлгөн маалыматтарды алуу жана сактоо жана маалыматтарды өзгөртүү.

Сунушталууда: