شتاب سنج ADXL202
در این بخش دانلود پروژه دانلود پروژه راه اندازی شتاب سنج ADXL202 با میکروکنترلر AVR, توسط تیم الکترونیک و برنامه نویسی الکترونیک ۹۸ برای شما علاقه مندان به پروژه های میکروکنترلر AVR آماده شده است. از آنجا که خروجی شتاب سنج ADXL202, موج PWM است, باید مقدار یک بودن پالس در یک دوره تناوب اندازه گیری شود. با داشتن این زمان و مشخص بودن زمان تناوب می توان چرخه کاری موج PWM را به دست آورد.
با مشخص شدن چرخه کاری می توان شتاب را طبق فرمول های به کار گرفته شده در برنامه پروژه به دست آورد و با مشخص شدن تغییرات شتاب نیز می توان اندازه زاویه را محاسبه کرد, در نتیجه در این پروژه هدف اندازه گیری زمان یک بودن پالس در یک دوره تناوب است.
نقشه شماتیک پروژه ساخت شتاب سنج ADXL202 با میکرو AVR
مدار این پروژه شامل یک میکروکنترلر ATmega8, یک LCD کاراکتری 2 در 16 و یک شتاب سنج ADXL202 با 14 پایه است و به صورت مدار درج شده در تصویر زیر به یکدیگر متصل می شوند. پایه شماره 9 نیز به پایه D6 میکروکنترلر متصل می گردد, در حقیقت خروجی PWM شتاب سنج به این پایه فرستاده می شود.
توجه : مدار مربوط به LCD, برای برنامه نویسی میکروکنترلر در محیط نرم افزار BASCOM-AVR پیکربندی شده است. به منظور استفاده از این مدار برای نرم افزار Code Vision AVR, پایه ها را مطابق آنچه در محیط Code Wizard AVR نشان داده شده اند, به ال سی دی LCD متصل کنید.
قطعات مورد نیاز
:: میکروکنترلر ATmega8 | خرید
:: یک عدد ولوم (پتانسیومتر) با مقدار 10 کیلو اهم | خرید
:: LCD کاراکتری 2*16 | خرید
:: یک عدد مقاومت با مقدار 1.2 مگا اهم | خرید
:: دو عدد خازن عدسی 100 نانو فاراد | خرید
:: سنسور شتاب سنج دو محوره ADXL202 | خرید
برنامه پروژه در محیط Code Vision AVR
ابتدا با استفاده از محیط برنامه نویسی Code Wizard AVR تنظیمات نوع میکروکنترلر را (ATmega8) و فرکانس کاری آنرا (8MHz) در زبانه Chip انجام دهید و در زبانه LCD پورت B را به عنوان پورتی که ال سی دی کاراکتری به آن وصل می شود، انتخاب کنید. سپس در زبانه Timer1 تنظیمات را به صورت شکل زیر انجام دهید تا در حالت تایمر پیکربندی شود.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
#include <mega8.h> // Alphanumeric LCD Module functions #asm .equ __lcd_port=0x18 ;PORTB #endasm #include <lcd.h> #include <delay.h> #include <stdlib.h> // Declare your global variables here char *str; void main(void) { // Declare your local variables here // Port D initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTD=0x00; DDRD=0x00; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: 8000.000 kHz // Mode: Normal top=FFFFh // OC1A output: Discon. // OC1B output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge // Timer 1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=0x00; TCCR1B=0x01; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; // LCD module initialization lcd_init(16); lcd_putsf("Timer is :"); while (1) { do { } while (PIND.7); do { } while (PIND.7==0); // Start Timer TCCR1B=0x01; do { } while (PIND.7); // Stop Timer TCCR1A=0x00; lcd_putsf(" "); itoa(TCNT1,str); lcd_putsf(" "); TCNT1=0; delay_ms(500); }; } |
برنامه در محیط Bascom-AVR
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
$regfile = "m8def.dat" $crystal = 8000000 Config Timer1 = Timer , Prescale = 8 Stop Timer1 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db7 = Pc.0 , Db6 = Pc.1 , Db5 = Pb.4 , Db4 = Pb.3 , Rs = Pb.0 , E = Pb.5 Cursor Off Config Pind.7 = Input Cls Lcd " Timer is : " Do Bitwait Pind.7 , Reset Bitwait Pind.7 , Set Start Timer1 Bitwait Pind.7 , Reset Stop Timer1 Home Lower Lcd " " ; Timer1 ; " " Timer1 = 0 Waitms 500 Loop End 'end program |
شرح برنامه میکروکنترلر به زبان بیسیک و زبان C
همانطور که قبلا گفته شد هدف از این برنامه, اندازه گیری مدت زمان یک بودن پالس در یک دوره تناوب است. بدین منظور منتظر می مانیم تا مقدار پالس از صفر به یک تغییر کند, در این لحظه تایمر فعال می شود و زمان را اندازه می گیرد تا زمانی که دوباره مقدار پالس از یک به صفر تغییر یابد. سپس مقدار تایمر بدست آمده روی ال سی دی LCD نمایش داده می شود.
سلام دوست عزیز
کتابخانه بسیاری از قطعات و ماژول ها در نرم افزار شبیه ساز Proteus وجود ندارد، که یا باید با جستجو در اینترنت آنرا پیدا کنید و یا خود کتابخانه آنرا برای نرم افزار بسازید.