راه اندازی ماژول شتاب سنج ADXL335 با AVR
ماژول ADXL335 یک ماژول شتاب سنج است که یکی از ساده ترین ها برای استفاده و راه اندازی هستش به همین خاطر برای تجربه ی اول کارکردن با شتاب سنج ها این ماژول رو انتخاب کردم در ادامه با تعریف شتاب سنج و کاربرد اون در صنعت آشنا می شیم. پیش نیاز این بحث آشنایی با قسمت ADC میکروکنترلر AVR است.
تعریف شتاب سنج
شتاب سنج دستگاهی است که مقدار شتاب صحیح (Proper Acceleration) را اندازه گیری می کند. شتاب صحیح شتاب نسبت به جسم در حال سقوط آزاد است.
شتاب سنج دارای مدلهای یک محوری و چند محوری است که می توانند اندازه و جهت شتاب را به عنوان یک کمیت برداری اندازه گیری کنند؛ می توان از حسگرهای شتاب سنج برای تعیین موقعیت و آشکار سازی لرزش و ضربه استفاده کرد. شتاب سنجهای ریزماشین کاری شده با روند رو به افزایشی در لوازم الکترونیکی قابل حمل و کنترلرهای بازیهای کامپیوتری برای تعیین موقعیت و به عنوان ورودی بازیهای کامپیوتری به کار می روند.
کاربرد شتاب سنج
شتاب سنجها برای مانیتور کردن سلامت دستگاههای چرخشی مانند پمپ ها، پنکه ها، غلتک ها، کمپرسورها و برجهای خنک کننده می توان استفاده کرد. اثبات شده است که برنامههای مانیتور لرزش هزینهها را کاهش می دهند، زمان از کارافتادگی دستگاهها را کاهش می دهد و ایمنی کارخانه را افزایش می دهد. این امر به وسیله تشخیص موقعیت هایی مانند غیر هم محوری شافتها (محورها)، عدم تعادل موتورها و خرابی چرخ دنده ها یا خطا در نیرو که منجر به تعمیرات پرهزینه می شود، صورت می گیرد. اطلاعات لرزشی شتاب سنجها به کاربر اجازه مانیتور کردن ماشینها و پیدا کردن این خطاها را پیش از اینکه دستگاه چرخنده از کار بیفتد می دهد برنامههای مانیتور کردن لرزش در صنعت هایی مانند تولید خودرو، استفادههای ابزار کار، تولیدات دارویی، تولید انرژی و نیروگاه ها، خمیر کاغذ و کاغذ، تولید آشامیدنی و غذا، آب و فاضلاب و پتروشیمی و تولید فولاد به کار می روند.
معرفی مشخصات ماژول شتاب سنج ADXL335
یک سنسور شتاب سنج 3 محور کوچک، با توان مصرفی پایین و دارای خروجی ولتاژ با حالت دهی سیگنال است. این سنسور میتواند شتابهای استاتیک گرانش مانند کاربردهای زاویه سنجی را اندازه گیری کند. همچنین شتابهای دینامیک مانند شتابهای حرکتی، شوکهای مکانیکی و لرزش در این سنسور قابل اندازه گیری است. کاربر با استفاده از خازنهای CX، CY و CZ میتواند پهنای باند شتاب سنج را متناسب با نیاز در هر سه محور تنظیم نماید. پایه های XOUT، YOUT و ZOUT خروجیهای ولتاژ برای سه محور x و y و z هستند.
ابزار لازم برای راه اندازی:
مشخصات ماژول شتاب سنج ADXL335 :
- خروجی آنالوگ
- اندازه گیری در بازه +-3.6g
- ولتاژ تغذیه 1.8 ولت تا 3.6 ولت
- تولید شده در قالب LFCSP-LQ
- حساسیت 300 میلی ولت به ازای هر g
- کاملا حفاظت شده در مقابل حرارت و رطوبت
- پهنای باند 0.5 هرتز تا 550 هرتز برای محور z
- پهنای باند 0.5 هرتز تا 1600 هرتز برای محورهای x و y
- شتاب سنج سه محور با سه خروجی مجزا برای سه محور x و y وz
مدار لازم راه اندازی ماژول شتاب سنج ADXL335
از دو تا خازن برای جلوگیری از نویز استفاده کردم یکی در ورودی تغذیه که رو برد برد می بنید و یکی مابین AVCC و GND این خازن ها در شماتیک پایین نیست.
برنامه ی لازم برای راه اندازی ماژول شتاب سنج ADXL335
با توجه به مشخصات ماژول که در بالا ارئه شد خروجی این ماژول به صورت ولتاژ هست یعنی ما نیاز داریم ولتاژ سه پایه ی X , Y و Z رو برای فهمیدن تغییرات اندازه بگیریم. این کار به وسیله ی ADC میکروکنترلر انجام می شود. در ادامه ما نیاز داریم تا اعداد اندازه گیری شده را در جایی نمایش دهیم من از ارتباط سریال برای این موضوع استفاده کردم تا اعداد نمایش داده شده در مانیتور PC به نمایش در بیاد (به خاطر شلوغ نشدن مدار از ارتباط سریال به جای lcd کاراکتری استفاده کردم) برای نمایش اعداد اندازه گیری شده در کامپیوتر از قسمت ترمینال سریال نرم افزار آردوینو استفاده کردم.
#include <mega32a.h> #include <delay.h> #include <stdio.h> #define ADC_VREF_TYPE 0x40 unsigned int read_adc(unsigned char adc_input) { ADMUX=adc_input | (ADC_VREF_TYPE & 0xff); delay_us(10); ADCSRA|=0x40; while ((ADCSRA & 0x10)==0); ADCSRA|=0x10; return ADCW; } int x,y,z; void main(void) { // USART initialization // Communication Parameters: 8 Data, 1 Stop, No Parity // USART Receiver: On // USART Transmitter: On // USART Mode: Asynchronous // USART Baud Rate: 9600 UCSRA=0x00; UCSRB=0x18; UCSRC=0x06; UBRRH=0x00; UBRRL=0x47; // ADC initialization // ADC Clock frequency: 86.400 kHz // ADC Voltage Reference: AVCC pin ADMUX=ADC_VREF_TYPE & 0xff; ADCSRA=0x87; while (1) { x=read_adc(0); y=read_adc(1); z=read_adc(2); printf("x=%d y=%d z=%d electrolab.ir \n",x,y,z); delay_ms(333); } }
- در سطر 7 تابع read_adc مقدار تبدیل شده ولتاژ رو به ما برمیگردونه
- در سطر 17 متغییر های X , Y , Z برای ذخیره شدن مقادیر اندازه گیری شده توسط ADC استفاده میشه
- در سطر 41 تا43 ولتاژ پایه های 0 و 1 و 2 پورت A اندازه گیری میشه و در متغییر های مربوطه قرار داده میشه
- در سطر44 مقادیر اندازه گیری شده توط دستور printf به صورت سریال به PC فرستاده میشه
خروجی که باید در کامپیوترتون ببینید:
اگر سوالی در مورد این پروژه یا موارد دیگر دارین می تونید در قسمت نظرات مطرح کنید.