این بار ما با اتصال شتاب سنج سه محوری آنالوگ ADXL335 به Arduino سرو کار خواهیم داشت.
ضروری
- - آردوینو ؛
- - شتاب سنج ADXL335؛
- - یک رایانه شخصی با محیط توسعه Arduino IDE.
دستورالعمل ها
مرحله 1
برای تعیین بردار شتاب از شتاب سنج استفاده می شود. شتاب سنج ADXL335 دارای سه محور است و به لطف این می تواند بردار شتاب را در فضای سه بعدی تعیین کند. با توجه به اینکه نیروی گرانش نیز یک بردار است ، شتاب سنج می تواند جهت گیری خود را در فضای سه بعدی نسبت به مرکز زمین تعیین کند.
تصویر تصاویر مربوط به گذرنامه (https://www.analog.com/static/imported-files/data_sheets/ADXL335.pdf) را برای شتاب سنج ADXL335 نشان می دهد. در اینجا محورهای مختصات حساسیت شتاب سنج در رابطه با قرارگیری هندسی بدنه دستگاه در فضا نشان داده شده است ، و همچنین یک جدول از مقادیر ولتاژ از 3 کانال شتاب سنج بسته به جهت گیری آن در فضا. داده های جدول برای یک سنسور در حالت استراحت آورده شده است.
بیایید نگاهی دقیق به آنچه شتاب سنج به ما نشان می دهد ، بیندازیم. بگذارید سنسور به صورت افقی قرار بگیرد ، مثلاً روی یک میز. سپس برآمدگی بردار شتاب برابر با 1g در امتداد محور Z یا Zout = 1g خواهد بود. دو محور دیگر صفر خواهند داشت: Xout = 0 و Yout = 0. وقتی سنسور "به پشت" تبدیل شود ، نسبت به بردار گرانش در جهت مخالف هدایت می شود. زوت = -1 گرم به طور مشابه ، اندازه گیری ها در هر سه محور انجام می شود. واضح است که شتاب سنج را می توان به صورت دلخواه در فضا قرار داد ، بنابراین ما قرائت هایی غیر از صفر را از هر سه کانال خواهیم گرفت.
اگر پروب در امتداد محور عمودی Z به شدت متزلزل شود ، مقدار Zout بیشتر از "1 گرم" خواهد بود. حداکثر شتاب قابل اندازه گیری در هر محور در هر جهت "3 گرم" است (یعنی هر دو با "به علاوه" و "منهای").
گام 2
من فکر می کنم ما اصل عملکرد شتاب سنج را فهمیدیم. حال بیایید نمودار اتصال را بررسی کنیم.
تراشه شتاب سنج آنالوگ ADXL335 نسبتاً کوچک و در بسته BGA قرار دارد و نصب آن روی صفحه در خانه دشوار است. بنابراین ، من از یک ماژول GY-61 آماده با شتاب سنج ADXL335 استفاده خواهم کرد. هزینه چنین ماژول هایی در فروشگاه های آنلاین چینی تقریباً یک پنی هزینه دارد.
برای تأمین شتاب سنج ، لازم است ولتاژ +3 ، 3 ولت را به پین VCC ماژول ارائه دهید. کانال های اندازه گیری سنسور به پایه های آنالوگ آردوینو متصل می شوند ، به عنوان مثال "A0" ، "A1" و " A2 ". این کل مدار است:)
مرحله 3
بیایید این طرح را در حافظه آردوینو بارگذاری کنیم. ما خوانش ها را از ورودی های آنالوگ در سه کانال خواهیم خواند ، آنها را به ولتاژ تبدیل کرده و به پورت سریال خارج می کنیم.
آردوینو 10 بیتی ADC دارد و حداکثر ولتاژ پین مجاز 5 ولت است. ولتاژهای اندازه گیری شده با بیت هایی رمزگذاری می شوند که فقط می توانند 2 مقدار بگیرند - 0 یا 1. این بدان معنی است که کل محدوده اندازه گیری با (1 + 1) به قدرت 10 تقسیم می شود ، یعنی روی 1024 بخش مساوی.
برای تبدیل قرائت ها به ولت ، باید هر مقدار را که در ورودی آنالوگ اندازه گیری می شود بر 1024 (بخش) تقسیم کنید و سپس در 5 (ولت) ضرب کنید.
بیایید ببینیم که واقعاً از شتاب سنج با استفاده از محور Z به عنوان مثال (ستون آخر) چیست. وقتی سنسور به صورت افقی قرار می گیرد و به بالا نگاه می کند ، اعداد می آیند (2.03 +/- 0.01). بنابراین این باید با شتاب "+ 1g" در امتداد محور Z و زاویه 0 درجه مطابقت داشته باشد. تلنگر را بچرخانید. اعداد وارد می شوند (1 ، 69 +/- 0 ، 01) ، که باید با "-1 گرم" و زاویه 180 درجه مطابقت داشته باشد.
مرحله 4
بیایید مقادیر را از شتاب سنج در زوایای 90 و 270 درجه گرفته و آنها را در جدول وارد کنیم. جدول زوایای چرخش شتاب سنج (ستون "A") و مقادیر مربوط به Zout را در ولت نشان می دهد (ستون "B").
برای وضوح ، یک نمودار ولتاژ در خروجی Zout در مقابل زاویه چرخش نشان داده شده است. قسمت آبی محدوده در حالت استراحت است (با شتاب 1 گرم). کادر صورتی روی نمودار یک حاشیه است تا بتوانیم شتاب را تا + 3g و تا -3g اندازه گیری کنیم.
در چرخش 90 درجه ، محور Z شتاب صفر دارد. آنهایی که مقدار 1.67 ولت برای محور Z یک صفر شرطی است. سپس می توانید شتاب را به این صورت پیدا کنید:
g = Zout - Zo / sensitive_z ، در اینجا Zout مقدار اندازه گیری شده بر حسب میلی ولت است ، Zo مقدار شتاب صفر در میلی ولت است ، حساسیت_ز حساسیت سنسور در امتداد محور Z است. شتاب سنج را کالیبره کرده و مقدار حساسیت را به طور خاص برای خود محاسبه کنید سنسور با استفاده از فرمول:
حساسیت_ز = [Z (0 درجه) - Z (90 درجه)] * 1000. در این حالت ، حساسیت شتاب سنج در امتداد محور Z = (2 ، 03 - 1 ، 68) * 1000 = 350 میلی ولت. به همین ترتیب ، حساسیت باید برای محورهای X و Y محاسبه شود.
ستون "C" جدول شتاب محاسبه شده برای پنج زاویه را با حساسیت 350 نشان می دهد. همانطور که مشاهده می کنید ، آنها عملاً با آنچه در شکل 1 نشان داده شده مطابقت دارند.
مرحله 5
با یادآوری دوره هندسه اولیه ، فرمول محاسبه زاویه چرخش شتاب سنج را بدست می آوریم:
angle_X = arctg [sqrt (Gz ^ 2 + Gy ^ 2) / Gx].
مقادیر به شعاع است. برای تبدیل آنها به درجه ، بر Pi تقسیم کرده و در 180 ضرب می کنید.
در نتیجه ، طرح کاملی برای محاسبه زاویه های شتاب و چرخش شتاب سنج در امتداد همه محورها در تصویر نشان داده شده است. نظرات توضیحاتی در مورد کد برنامه ارائه می دهد.
هنگام خروجی به درگاه "Serial.print ()" ، نویسه "\ t" یک کاراکتر تب را نشان می دهد به طوری که ستونها یکنواخت هستند و مقادیر در زیر یکدیگر قرار دارند. "+" به معنی اتصال (اتصال) رشته ها است. علاوه بر این ، عملگر "String ()" صریحاً به کامپایلر می گوید که مقدار عددی باید به یک رشته تبدیل شود. عملگر round () گوشه را تا نزدیکترین درجه 1 دور می زند.
مرحله 6
بنابراین ، ما یاد گرفتیم که چگونه از شتاب سنج آنالوگ ADXL335 با استفاده از Arduino اطلاعات گرفته و پردازش کنیم. اکنون می توانیم از شتاب سنج در طراحی های خود استفاده کنیم.