Мазмуну:

ADXL345 жана Бөлүкчө Фотонун колдонуу менен ылдамданууну өлчөө: 4 кадам
ADXL345 жана Бөлүкчө Фотонун колдонуу менен ылдамданууну өлчөө: 4 кадам

Video: ADXL345 жана Бөлүкчө Фотонун колдонуу менен ылдамданууну өлчөө: 4 кадам

Video: ADXL345 жана Бөлүкчө Фотонун колдонуу менен ылдамданууну өлчөө: 4 кадам
Video: BTT - Manta M4P - Basics 2024, Ноябрь
Anonim
Image
Image

ADXL345-кичине, ичке, ультра кубаттуу, 3 октук акселерометр, ± 16 г чейин жогорку чечилиште (13-бит) өлчөө. Санарип чыгуучу маалыматтар 16-бит эки катары толукталган жана I2 C санариптик интерфейси аркылуу жеткиликтүү. Бул эңкейүүнү сезүүчү колдонмолордо тартылуу күчүнүн статикалык ылдамдатуусун, ошондой эле кыймылдан же шоктон келип чыккан динамикалык ылдамданууну өлчөйт. Анын жогорку токтому (3,9 мг/LSB) жантайыштын өзгөрүүсүн 1,0 ° дан аз өлчөөгө мүмкүндүк берет.

Бул окуу куралында ADXL345 сенсор модулунун бөлүкчө фотону менен интерфейси сүрөттөлгөн. Ылдамдануу маанилерин окуу үчүн I2c adapter. This I2C адаптери бар бөлүкчөлөрдү колдондук, сенсор модулуна туташууну жеңил жана ишенимдүү кылат.

1 -кадам: Аппараттык камсыздоо талап кылынат:

Аппараттык камсыздоо талап кылынат
Аппараттык камсыздоо талап кылынат
Аппараттык камсыздоо талап кылынат
Аппараттык камсыздоо талап кылынат
Аппараттык камсыздоо талап кылынат
Аппараттык камсыздоо талап кылынат

Максатыбызга жетүү үчүн бизге керектүү материалдар төмөнкү аппараттык компоненттерди камтыйт:

1. ADXL345

2. Бөлүкчөлөрдүн фотону

3. I2C кабели

4. Бөлүкчө фотону үчүн I2C калканы

2 -кадам: Аппараттык туташуу:

Аппараттык туташуу
Аппараттык туташуу
Аппараттык туташуу
Аппараттык туташуу

Аппараттык туташуу бөлүмү негизинен сенсор менен фотон бөлүкчөсүнүн ортосунда талап кылынган зым байланыштарын түшүндүрөт. Туура туташууларды камсыздоо каалаган өндүрүш үчүн кандайдыр бир системада иштеп жатканда негизги зарылчылык болуп саналат. Ошентип, керектүү байланыштар төмөнкүлөр:

ADXL345 I2C үстүндө иштейт. Бул жерде сенсордун ар бир интерфейсин кантип зым менен жабуу керектигин көрсөтүүчү зымдардын схемасы келтирилген.

Кутудан тышкары, такта I2C интерфейси үчүн конфигурацияланган, андыктан эгер сиз агностиксиз болсоңуз, анда бул байланышты колдонууну сунуштайбыз.

Сизге болгону төрт зым керек! Vcc, Gnd, SCL жана SDA төөнөгүчтөрүнө төрт гана туташуу керек жана алар I2C кабелинин жардамы менен туташкан.

Бул байланыштар жогорудагы сүрөттөрдө көрсөтүлгөн.

3 -кадам: Ылдамданууну өлчөө коду:

Ылдамданууну өлчөө коду
Ылдамданууну өлчөө коду

Эми бөлүкчө коду менен баштайлы.

Бөлүкчө менен сенсор модулун колдонуп жатканда, биз application.h жана spark_wiring_i2c.h китепканасын камтыйт. "application.h" жана spark_wiring_i2c.h китепканасы сенсор менен бөлүкчөнүн ортосундагы i2c байланышын жеңилдетүүчү функцияларды камтыйт.

Колдонуучунун ыңгайлуулугу үчүн бүт бөлүкчө коду төмөндө келтирилген:

#кошуу

#кошуу

// ADXL345 I2C дареги 0x53 (83)

#define Addr 0x53

int xAccl = 0, yAccl = 0, zAccl = 0;

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

{

// Өзгөрмөнү коюу

Particle.variable ("i2cdevice", "ADXL345");

Particle.variable ("xAccl", xAccl);

Particle.variable ("yAccl", yAccl);

Particle.variable ("zAccl", zAccl);

// I2C байланышын MASTER катары баштаңыз

Wire.begin ();

// Сериялык байланышты баштоо, байдын ылдамдыгын = 9600

Serial.begin (9600);

// I2C өткөрүүнү баштоо

Wire.beginTransmission (Addr);

// Өткөрүү ылдамдыгынын регистрин тандаңыз

Wire.write (0x2C);

// Чыгуу маалымат ылдамдыгын тандоо = 100 Гц

Wire.write (0x0A);

// I2C берүүнү токтотуу

Wire.endTransmission ();

// I2C өткөрүүнү баштоо

Wire.beginTransmission (Addr);

// Күчтү башкаруу реестрин тандаңыз

Wire.write (0x2D);

// Авто уйкуну өчүрүү тандаңыз

Wire.write (0x08);

// I2C өткөрүүнү токтотуу

Wire.endTransmission ();

// I2C өткөрүүнү баштоо

Wire.beginTransmission (Addr);

// Маалымат форматынын реестрин тандаңыз

Wire.write (0x31);

// Толук чечимди тандаңыз, +/- 2g

Wire.write (0x08);

// I2C өткөрүүнү токтотуу

Wire.endTransmission ();

кечигүү (300);

}

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

{

кол коюлбаган int маалыматтары [6];

үчүн (int i = 0; i <6; i ++)

{

// I2C өткөрүүнү баштоо

Wire.beginTransmission (Addr);

// Маалымат реестрин тандоо

Wire.write ((50+i));

// I2C өткөрүүнү токтотуу

Wire.endTransmission ();

// Аппараттан 1 байт маалымат сураңыз

Wire.requestFrom (Addr, 1);

// 6 байт маалыматтарды окуңуз

// xAccl lsb, xAccl msb, yAccl lsb, yAccl msb, zAccl lsb, zAccl msb

эгер (Wire.available () == 1)

{

маалымат = Wire.read ();

}

кечигүү (300);

}

// Маалыматтарды 10 битке айландырыңыз

int xAccl = (((маалыматтар [1] & 0x03) * 256) + маалыматтар [0]);

эгер (xAccl> 511)

{

xAccl -= 1024;

}

int yAccl = (((маалыматтар [3] & 0x03) * 256) + маалыматтар [2]);

эгер (yAccl> 511)

{

yAccl -= 1024;

}

int zAccl = (((маалыматтар [5] & 0x03) * 256) + маалыматтар [4]);

эгер (zAccl> 511)

{

zAccl -= 1024;

}

// Маалыматтарды тактасына чыгаруу

Particle.publish ("X-Axisте ылдамдануу:", String (xAccl));

Particle.publish ("Y-Axis ичинде ылдамдануу:", String (yAccl));

Particle.publish ("Z-огунда ылдамдануу:", String (zAccl));

}

Particle.

Сенсор чыгаруу үчүн жогорудагы сүрөттө көрсөтүлгөн.

4 -кадам: Тиркемелер:

Колдонмолор
Колдонмолор

ADXL345-бул кичинекей, ичке, ультра кубаттуу, 3-октук акселерометр, аны телефондордо, медициналык приборлордо ж.

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