Мазмұны:

ADXL345 Arduino Uno R3: 5 қадамдарын қолдану
ADXL345 Arduino Uno R3: 5 қадамдарын қолдану

Бейне: ADXL345 Arduino Uno R3: 5 қадамдарын қолдану

Бейне: ADXL345 Arduino Uno R3: 5 қадамдарын қолдану
Бейне: How To Interface ADXL335 Analog Accelerometer Sensor With Arduino 2024, Қараша
Anonim
ADXL345 Arduino Uno R3 пайдалану
ADXL345 Arduino Uno R3 пайдалану

Бұл сабақта біз ADXL345 үдеткіш датчигін қолдануды үйренеміз.

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

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

- USB кабелі * 1

- ADXL345 *1

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

- Өткізгіш сымдар

2 -қадам: принцип

Акселерометр үдеу кезінде пайда болатын күшті өлшеу үшін қолданылады. Ең негізгісі-1г ауырлық күшінің жалпыға белгілі үдеуі.

Ауырлық күшінің әсерінен болатын үдеуді өлшеу арқылы құрылғының көлбеу бұрышын тегіс бетке есептеуге болады. Динамикалық үдеуді талдау арқылы сіз құрылғының қалай қозғалатынын біле аласыз. Мысалы, өзін-өзі теңдестіру тақтасы немесе қалқып жүру тақтасы Калман сүзгісі мен қалыпын түзету үшін үдеу датчигі мен гироскопты қолданады.

ADXL345

ADXL345-бұл шағын, жұқа, қуаты аз, 3 осьті акселерометр, жоғары ажыратымдылықпен (13 биттік) ± 16 г дейін. Сандық шығыс деректері 16 биттік екі қосымша ретінде пішімделеді және SPI (3 немесе 4 сымды) немесе I2C сандық интерфейсі арқылы қол жетімді. Бұл экспериментте I2C цифрлық интерфейсі қолданылады.

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

ADXL345 қалай жұмыс істейді

ADXL345 алдыңғы жақтағы сезгіш компонентпен үдеуді анықтайды, содан кейін электрлік сигналды сезетін компонент оны аналогты электр сигналына өзгертеді. Содан кейін модульге қосылған AD адаптері аналогты сигналды цифрлық сигналға түрлендіреді.

X_OUT, Y_OUT және Z_OUT - сәйкесінше X, Y және Z осіндегі мәндер. Модульді жоғары қаратып қойыңыз: Z_OUT максимум +1г жетуі мүмкін, X_OUT минимумы Ax бағытына қарай -1г, ал Y_OUT минимумы Ай бағытына қарай -1г. Екінші жағынан, модульді төңкеріңіз: Z_OUT минимумы -1g, X_OUT максимумы Ax бағытына +1g, ал Y_OUT максимумы Ay бағытына қарай +1g., төменде көрсетілгендей. ADXL345 модулін айналдырыңыз, сонда сіз үш мәннің өзгергенін көресіз.

А арнасы жоғары деңгейден төменгі деңгейге ауысқанда, егер В каналы жоғары болса, ол айналмалы кодердің сағат тілімен айналуын көрсетеді (CW); егер сол кезде В каналы төмен болса, бұл сағат тіліне қарсы айналуды білдіреді (CCW). Егер біз А арнасының деңгейі төмен болғанда В каналының мәнін оқитын болсақ, айналмалы кодер қай бағытта айналатынын біле аламыз.

Принципі: Төмендегі Rotary Encoder модулінің схемасын қараңыз. Бұдан біз айналмалы кодердің 3 түйреуішін, атап айтқанда модульдегі CLK, B. каналы екенін білеміз, ол DT - 5 канал. А жазғыштың айналу бағытын білу үшін CLK мәнін оқып, DT.

Контурда 3.3В кернеу реттегішінің чипі бар, сондықтан сіз модульді 5В немесе 3.3В кернеуіне қосуға болады.

SDO GND қосылғандықтан, ADXL345 I2C мекенжайы 0x53, 0xA6 жазу үшін, 0xA7 оқу үшін.

ADXL345 модулінің түйреуіш функциясы.

3 -қадам: процедуралар

Қадам 1. Схеманы құрыңыз.

2 -қадам:

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

3 -қадам:

Эскизді Arduino Uno тақтасына жүктеңіз

Кодты басқару тақтасына жүктеу үшін Жүктеу белгішесін басыңыз.

Егер терезенің төменгі жағында «Жүктеу аяқталды» пайда болса, бұл эскиз сәтті жүктелгенін білдіреді.

Жүктеуден кейін анықталған деректерді көруге болатын сериялық мониторды ашыңыз. Модульдің үдеуі өзгергенде, сәйкесінше терезеде фигура өзгереді.

4 -қадам: код

Код
Код

// ADXL335

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

ADXL335

Ескерту: vcc5v, бірақ ADXL335 Vs - 3,3В

Тізбек:

5В: VCC

аналогтық 0: х осі

аналог 1: y осі

аналог 2: z осі

Жанып болғаннан кейін

Бағдарламада монитордың қате түзету терезесін ашыңыз, онда сіз анықталған деректердің көрсетілетінін көре аласыз. Егер үдеу өзгерсе, сәйкесінше көрсеткіш өзгереді.

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

/Электрондық пошта:

// Веб -сайт: 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 қуат көзі

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; // 3.3В кернеуі бойынша қуат көзі: 3.3в/5в *1024/3.3в *330мв/г = 67.6г

float scale_x =

65; // x осінің масштабы: x_max/3.3v*330mv/g

өзгермелі масштаб_ =

68.5; // у осінің масштабы: y_max/3.3v*330mv/g

float scale_z =

68; // z осінің масштабы: z_max/3.3v*330mv/g

Serial.print (((float) 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 бөліктен тұрады: әр порт пен құрылғыны инициализациялау, сенсорлардан жіберілген деректерді алу және сақтау және деректерді түрлендіру.

Ұсынылған: