فهرست مطالب:

ADXL345 با استفاده از Arduino Uno R3: 5 مرحله
ADXL345 با استفاده از Arduino Uno R3: 5 مرحله

تصویری: ADXL345 با استفاده از Arduino Uno R3: 5 مرحله

تصویری: ADXL345 با استفاده از Arduino Uno R3: 5 مرحله
تصویری: Lesson 11: Using Tilt Sensor Switch 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) خروجی با دقت بالا تا 16g پوند را فراهم می کند.

نحوه کار ADXL345

ADXL345 شتاب را با جزء حسگر در جلو تشخیص می دهد و سپس جزء حسگر سیگنال الکتریکی آن را به سیگنال الکتریکی تبدیل می کند که آنالوگ است. در مرحله بعد ، آداپتور AD یکپارچه شده روی ماژول ، سیگنال آنالوگ را به دیجیتال تبدیل می کند.

مقادیر X_OUT ، Y_OUT و Z_OUT در محور X ، Y و Z هستند. ماژول را رو به بالا قرار دهید: Z_OUT حداکثر می تواند به +1 گرم برسد ، حداقل X_OUT -1g به جهت Ax و حداقل Y_OUT -1g به جهت Ay است. از طرف دیگر ، ماژول را وارونه کنید: حداقل Z_OUT -1 گرم ، حداکثر X_OUT 1g +جهت Ax و حداکثر Y_OUT 1g +جهت Ay است. ، همانطور که در زیر نشان داده شده است. ماژول ADXL345 را بچرخانید و تغییر سه مقدار را مشاهده خواهید کرد.

وقتی کانال A از سطح بالا به سطح پایین تغییر می کند ، اگر کانال B سطح بالا باشد ، نشان می دهد که رمزگذار چرخشی در جهت عقربه های ساعت (CW) می چرخد. اگر در آن لحظه کانال B سطح پایینی داشته باشد ، به این معنی است که خلاف جهت عقربه های ساعت (CCW) می چرخد. بنابراین اگر مقدار کانال B را در زمانی که کانال A سطح پایینی است بخوانیم ، می توانیم بدانیم که رمزگذار دوار در کدام جهت می چرخد.

اصل: نمودار شماتیک ماژول Rotary Encoder را در زیر مشاهده کنید. از آنجا می توانیم ببینیم که پین 3 رمزگذار چرخشی ، یعنی CLK روی ماژول ، کانال B. است. پین 5 ، که DT است ، کانال A است. برای اطلاع از جهت چرخشی دستگاه ضبط ، فقط مقدار CLK و DT

یک تراشه تنظیم کننده ولتاژ 3.3 ولت در مدار وجود دارد ، بنابراین می توانید ماژول را با 5 ولت یا 3.3 ولت تغذیه کنید.

از آنجا که SDO به GND متصل شده است ، آدرس I2C ADXL345 0x53 ، 0xA6 برای نوشتن ، 0xA7 برای خواندن است

عملکرد پین ماژول ADXL345.

مرحله 3: روش ها

مرحله 1. مدار را بسازید.

گام 2:

کد را از https://github.com/primerobotics/Arduino بارگیری کنید

مرحله 3:

طرح را روی برد Arduino Uno بارگذاری کنید

برای بارگذاری کد در صفحه کنترل ، روی نماد بارگذاری کلیک کنید.

اگر "بارگذاری انجام شد" در پایین پنجره ظاهر شد ، به این معنی است که طرح با موفقیت بارگذاری شده است.

پس از بارگذاری ، Serial Monitor را باز کنید ، در آنجا می توانید داده های شناسایی شده را مشاهده کنید. هنگامی که شتاب ماژول تغییر می کند ، شکل مطابق با آن در پنجره تغییر می کند.

مرحله 4: کد

کد
کد

// ADXL335

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

ADXL335

توجه: vcc5v

، اما ADXL335 Vs 3.3V است

مدار:

5 ولت: VCC

آنالوگ 0: محور x

آنالوگ 1: محور y

آنالوگ 2: محور z

پس از سوزاندن

برنامه ، پنجره اشکال زدایی مانیتور سریال را باز کنید ، جایی که می توانید داده های تشخیص داده شده را در حال نمایش نشان دهید. وقتی شتاب متغیر است ، بر این اساس شکل تغییر می کند.

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

/پست الکترونیک:

// وب سایت: www.primerobotics.in

const int xpin =

A0 ؛ // محور x شتاب سنج

const int ypin =

A1 ؛ // محور y

const int zpin =

A2 ؛ // محور z (فقط در مدلهای 3 محوره)

void setup ()

{

// راه اندازی ارتباطات سریال:

Serial.begin (9600)؛

}

حلقه خالی ()

{

int x = analogRead (xpin) ؛ // از xpin بخوانید

تأخیر (1) ؛ //

int y = analogRead (ypin) ؛ // از ypin بخوانید

تأخیر (1) ؛

int z = analogRead (zpin) ؛ // از zpin بخوانید

شناور 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 ؛ // خروجی zero_G محور x: (x_max + x_min)/2

شناور

zero_Gy = 329.5 ؛ // خروجی zero_G محور y: (y_max + y_min)/2

شناور zero_Gz = 340.0 ؛ // the

zero_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

- zero_Gx)/scale_x) ؛ // مقدار x را در مانیتور سریال چاپ کنید

Serial.print ("\ t")؛

Serial.print ((((float) y

- 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 قسمت است: راه اندازی هر پورت و دستگاه ، جمع آوری و ذخیره داده های ارسال شده از حسگرها و تبدیل داده ها.

توصیه شده: