پروژه ی رادار با mega16 و با قابلیت مانیتورینگ در کامپیوتر و اندروید

پروژه های میکروکنترلر AVR

به نام خدا

در این مطلب قصد دارم پروژه ی رادار را خدمت دوستان معرفی کنم

در این پروژه اژ ماژول آلتراسونیک sfr05 برای تشخیص موانع و از سرووموتور sg5010 برای اسکن محیط با زاویه 180 درجه استفاده شده است.و همچنین از یک lcd کاراکتری 2*16 برای نمایش اطلاعات شامل زاویه و فاصله و از یک میکروی atmega16 برای پردازش اطلاعات استفاده شده است.

یکی از خصوصیات منحصر به فرد این پروژه مانیتورینگ بودن آن توسط کامپیوتر است.

به این صورت که اطلاعات با استفاده از مبدل usb به serial به کامپیوتر ارسال میشود و نرم افزار با پردازش آنها موقعیت جسم را نمایش می دهد

این قابلیت با استفاده از کامپایلر prosesing  طراحی شده است.

 

img_20160718_124550   img_20160718_124456

img_20160722_130212

img_20160722_130547

 

تنظیمات ماژول آلتراسونیک و سروو موتور به شرح زیر است

مشخصات ماژول  SRF05

123

نحوه کار ماژول  SRF05

 Vcc : به ۵ ولت وصل میشود.

 GND : به زمین وصل میشود.

ابتدا یک پالس با زمان ۲۰ میکرو ثانیه به پایه Trig  میدهیم

و بعد ماژول  srf05 ، ۸  پالس به سمت محیط ارسال میکند

و بعد ما پالسی از پایه Echo دریافت میکنیم و با محاسبه طول این پالس و ضرب کردن در مقادیری.فاصله ماژول  srf05 رو تا مانع پیدا میکنیم

توجه مهماگه طول پالسی که دریافت کردیم از ۳۰ میلی ثانیه بیشتر شد یعنی مانعی جلوی ماژول نیست.

توجه :  طول پالسی که دریافت میکنیم بین ۱۰۰ میکرو ثانیه تا ۲۰ میلی ثانیه هستش.

پایه Out  هم به جایی وصل نیست

1

2

3

4

//ارسال یک پالس به پایه تریگ

;PORTC.0=1

;(delay_us(20

;PORTC.0=0

 

بعداز  این که  پالس ها را ارسال کردیم.یک کد قرار میدهیم تا ببینیم چه  زمانی پایه مورد نظر  (پایه ای که قرار است پالس را از ان دریافت کنیم  یک میشود ) که از کد زیر استفاده میکنیم

1

{}(while(PINC.1==0


وقتی پایه
Echo یک شد از حلقه بالا خارج میشود و سپس تایمر شروع به کار می کند (  مدت زمانی که پایه Echo یک است را محاسبه کنیم.) تا زمانی که پایه Echo یک است در حلقه ی زیر برنامه قرار دارد.

1

{}(while(PINC.1 == 1

سپس  با یک ضرب و تقسیم مناسب  فاصله ماژول تا مانع رو پیدا میکنیم.

در ضمن این نکته را یادآور میشوم که ما در این پروژه فرکانس کاری تایمر را 1 مگا هرتز قرار داده ایم که هر شمارش تایمر 1 میکرو ثانیه ظول می کشد و وقتی که TCNT تایمر تا 256 میشمارد وقفه سر ریز آن رخ می دهد و یک واحد به متغییر timer اضافه میشود به خاطر همین در کد زیر متغیر timer در عدد 256 ضرب شده است

و علت اینکه با مقدار tcnt جمع شده است این است مثلا فرض کنید 10 با وقفه سر ریز اتفاق افتاده که ما 2560 میکرو ثانیه را داریم  در این هنگام که مقدار tcnt برابر با 120 میشود پالس از طریق آلتراسونک دریافت میشود و به میکرو می رسد  و تایمر از شمارش بازمی ایستد برای همین ما نباید آن مقدار 120 را از دست بدهیم

;d=0;d=(timer*256.0+TCNT0)*.17

526

 

 

 

علت تقسیم بر 2 در فرمول زیراین تعداد پالس های محاسبه شده برای رفتن و برگشتن موج است و ما برای محاسبه فاصله تنها به زمان رفت(یا برگشت) نیاز داریم و نه زمان رفت و برگشت.

توجهسرعت صوت در هوا 343.2 متر بر ثانیه هستش.(که در زیر برای سادگی من 340 قرار داده ایم)

 

( واحد متر) 170m * (ز م ش)  = ((یک مگا هرتز) 1000000 / 1) * ( 2  / 340ms) * ( (واحد میکرو ثانیه)ز م ش)

 

که زمان محاسبه شده ( ز م ش) در فرمول مقدار   (timer*256.0+TCNT0) است

و بسته به این که این مقدار در چه عددی (170 برای متر 1.7 برای سانتیمتر 0.17 برای میلیمتر) ضرب شود واحد فاصله بدست می آید.

 

مشخصات و نحوه عملکرد سروو موتور SG5010

سروو موتور چیست؟

سروو برگرفته از یک کلمه یونانی به نام  servus که به معنی خدمتکار است.این سیستم نیز که تحت این نام کار می کند را سیستم سروو می گویند.بدین دلیل که مستقیما به فرامین پاسخ می دهد.

سروموتور به انگلیسی: Servomotor یا موتور کنترل به انگلیسی: Control motor  نوعی از موتورهای الکتریکی است که با هدف بکارگیری در سیستم‌های کنترل فیدبک طراحی می‌شود. لختی (اینرسی) در این موتورها پایین بوده و در نتیجه تغییر سرعت در این موتورها بسیار سریع است. معمولا قطر این موتورها کم اما درازای آنها زیاد می‌باشد.

در کاربردهاي مـدرن ، واژه سرو يا مکانيــسم سرو به يک سيستم کنـترلي فيدبک که متغير کنترل شونده ، موقعيت يا مشتق موقعيت مکانيکي به عنوان سرعت و شتاب است، محدود مي شود.

يک سيستم کنترلي فيدبک ، سيـستم کنـترلي است که به نگهـداشتن يک رابطه مفروض بين يک کميت کنـترل شده و يک کميـت مرجع ، با مقايسه توابع آنها و اسـتفاده از اختلاف به عنوان وسيله کنترل منجر مي شود.

سيستم کنـترلي فيدبک الکتريکي ، عموما براي کار به انرژي الکتـريکي تکيه مي کند . مشخصـات مهمي که معمولا براي چنين کنترلي مورد نياز است ، عبارتند از :

 1- پاسخ سريع ،
2-
 دقت بالا ،
3-
کنترل بدون مراقبت و
4-
کارکرد از راه دور .

تعریف عمومی سرو موتور بدین شکل است: سرو موتور یک دستگاه کوچکی است که یک محور (shaft) خروجی دارد. این محور قادر است تا در یک موقعیت و زاویه ای خاص با ارسال سیگنال رمزی قرار گیرد. در واقع چگونگی حرکت وموقعیت های زاویه ای این محور خروجی توسط دسته ای از سیگنالهای رمزی که برای سیم کنترل آن تعریف می شودکنترل می شود. برای طول مدت زمانیکه یک سیگنال فعال بوده و یک پالس برروی خط ورودی آن قرار دارد این محور خروجی در موقعیت خاص زاویه ای که مختص آن سیگنال است قرار می گیرد و با تغییر سیگنال رمزی موقعیت زاویه ای تغییر می کند. در عمل سرو موتورها در صنایع رباتیک وتولیدات صنعتی مانند موتورهای کنترل کننده هواپیماها کنترل موقعیت سطوح ( مانند آسانسورها و ) و کاربرد وسیعی دارند .

مقایسه سرو موتور با استپر موتور:

در واقع یک استپر موتور از طریق پالسی که دریافت می کند به موتور دستور میدهد که طبق یک درجه خاص بچرخد اما ممکن است این چرخش به مقدار کافی دقیق نباشد که این اختلاف چرخش در پروژه های حساس مشکل آفرین است.اما سروو موتور یک نوع استپر موتوراست که از یک طرف به انکودر متصل می باشد و در هر لحظه میزان چرخش موتور توسط انکودر اندازه گیری می شود(احتمالا از طریق یک پالس در جهت معکوس ) و یک فیدبک از درجه موجود به موتور ارسال می گردد و موتور با دقت مناسب در درجه مشخص شده متوقف می گردد.

569

مشخصات سرو SG5010:

SG-5010 یک سرو موتور محصول شرکت Tower Pro است که مناسب برای ساخت روباتهای پیشرفته و دقیق ،استفاده در هواپیماهای مدل و انواع بازوهای صنعتی می باشد.این سرو موتور دارای قابلیت چرخش 180 درجه می باشد. این موتور دارای سه پین برای تغذیه و کنترل استمشخصات کلی این سرو به شرح ذیل است:

8

ست کردن رجیسترهای ATtmega32 برای راه اندازی سرو SG5010 :

با استفاده از خاصیت PWM در میکروکنترلرها می توان با ارسال پالس مناسب به سروو، آنها را کنترل کرد. مقدار پالس مناسب در دیتاشیت هر سروو موتورآمده است. برای تولید پالس مناسب در ATtmega16 می توان از تایمر استفاده کرد. بنابراین با استفاده از تایمر 16 بیتی شماره یک میکروکنترلر ATtmega16 و مقدار دهی رجیستر OCR1A می توان پالس دلخواه را ایجاد کرد.

مثلا اگر بخواهیم سرو در درجه 70 درجه منوقف شود باید محاسبات انجام گیرد و سپس بر اساس این محاسبات رجیستر OCR1A مقدار دهی شود.

برای انجام این محاسبات تایمر یک به صورت زیر مقدار دهی می شود.

فرکانس کاری میکروکنترلر 8 مگاهرتز و clock value تایمر1 را برابر 1000 کیلوهرتز قرار میدهیم. مابقی رجیسترهای تایمر یک را به صورت زیر انجام می دهیم:

            ; TCCR1A=0xA0

            TCCR1B=0x12;// Clock value: 1000 kHz

            ;TCNT1H=0x00

           ; TCNT1L=0x00

 

 

برای مقدار دهی رجیستر ICR1 به صورت زیر عمل می کنیم:

Fpwm = Fcpu/(2*N * (1+TOP))= 50Hz

ابتدا با استفاده از رابطه بالا مقدار TOP را محاسبه کرده و سپس رجیستر را با مقدار TOP مقدار دهی می کنیم.توجه داشته باشید رجیستر ICR1 ، 16 بیتی است پس برای مقدار دهی 8 بیت پرارزش ICR1 از رجیستر 8 بیتی ICR1H و برای مقدار دهی 8 بیت کم ارزش از رجیستر ICR1L استفاده می کنیم.

 Fpwm فرکانس سرو موتور و برابر 50 هرتز است.

 Fcpu فرکانس کاری میکروکنترلر و برابر 8 مگاهرتز است.

 N مقدار تقسیم کلاک است و برابر است با 8

بنابر این :

 

 

 

 

Fpwm =Fcpu/( 2*N  * (1+TOP) )=>  8000000HZ/( 2*8  *(1+TOP) ) = 50MHZ

N =Fcpu/ClockValue=8MHZ/1000KHZ = 8

 TOP = 9999 => TOP =  0x270F

 <=

;ICR1L=0x0F

;ICR1H=0x27

 

نحوه کنترل سروو موتورها با AVR : (به دست آوردن عدد مناسب برای مقدار دهی رجیستر OCR1A)

همانطور که در دیتاشیت سروو SG 5010 آمده، حداقل پالس برای چرخش سروو به ترتیب برابر 600 میکروثانیه و حداکثر 2400 میکروثانیه می باشد. SG 5010 می تواند از صفر تا 180 درجه بچرخد لذا 600 میکرو ثانیه برای تنظیم روی صفر درجه و 2400 میکروثانیه برای تنظیم روی 180 درجه می باشد.

پس 600 تقسیم بر 2 برابر 300 میکروثانیه برای 0 درجه و 2400 تقسیم بر 2 برابر 1200 میکروثانیه برای 180 درجه.

پالس لازم برای اختلاف یک درجه از رایطه زیر محاسبه می شود:

(1200-300)/(180-0)=5

به عنوان مثال برای تنظیم روی یک درجه(درجه 1) مقدار پالس لازم برابر 5 + 300 = 305 میکروثانیه می باشد. پس رجیستر OCR1A را با عدد 305 مقدار دهی می کنیم.

برای تنظیم روی n درجه مقدار پالس لازم برابر  300 + (n * 5)  می باشد.

شماتیک و نوع و قطعات به کار رفته و نحوه اتصالات اجزای مدار نیز به صورت شکل زیر است :

 بخش برنامه اندرویدی پروژه رادار برای نمایش اطلاعات در گوشی اندروید

در برنامه اندروید زیر که مشاهده میکنید اطلاعات پس از اتصال از طریق بلوتوث و ماژول hc05 به گوشی اندرویدی منتقل میشوند:

 

در پروژه اندرویدی فوق به ازای موانع پیداشده توسط ماژول آلتراسونیک  نقاطی قرمز رنگ روی صفحه ظاهر می شود

و تمام مقادیر زاویه و فاصله در edit text  ها نمایش داده میشوند  همچین قابلیت اضافه ای که وجود دارد میتوانید به edit text ها دستی مقدار بدهید و با زدن دکمه set زاویه و فاصله را تنظیم کنید که در هنگام گسترس سورس کد از این مقادیر میتوانید جهت گسترش برنامه و تنظیم آفست استفاده کنید.

برای پاک کردن صفحه نیز به طور دستی میتوانید رو تکست ویو لمس کنید تا صفحه از نقاط قرمز پاک شود.

جهت ارتباط با میکرو کافیست یک ماژول بلوتوث تهیه کنید  و پس از تامین تغذیه 3.3 ولتی آن به صورت زیر عمل کنید:

1-گراند بلوتوث با گراند میکرو متصل شود.

2 – پایه tx میکرو به پایه rx  ماژول بلوتوث متصل شود.

=<همچمنین اگر سخت افزار ندارید این برنامه اندرویدی را میتوانید با نرم افزار شبیه ساز پروتئوس راه اندازی کنید که بعدا میگم چطور این کارو انجام بدید.

“در شماتیک فوق در پروتئوس به جای portcom  مبدل جهت ارتباط با کامپیوتر و ماژول بلوتوث جهت ارتباط با گوشی قرار میگیرد،حتی میتوانید با همان ماژول بلوتوث به نرم افزار تحت کامپیوتر هم متصل بشید که کاری نداره باید از بلوتوث لبتابتون استفاده کنید و به hc05 متصل بشید سپس دوتا پورت سریال ایجاد میشه براتون کافیه در نرم افزار پروسسینگ اسم اون پورت کام رو بدید.

در این پروژه از تمامی قسمت ها فیلم ظبط شده و فایل های شبیه سازی پروتعوس و شماتیک و pcb در آلتیوم طراحی شده است و به زبان c در کامپایلر کدویژن برای میکرو و به زبان ++c در کامپایلر پروسسینگ برای کامپیوتر و به زبان جاوا در اندروید استدیو برای اندروید کد نویسی شده است.همچنین برای ساخت پروژه ساپورت های لازم انجام می شود.

لیست قطعات مورد استفاده :

1-ماژول بلوتوث hc05

2-میکرو کنترلر atmega16

3-lcd کاراکتری 2 در 16

4-ماژول فاصله سنج آلتراسونیک

5-مبدل USB به سریال

6-سروو موتور SG 5010

7-LED و برد خام مدار چاپی و اسید و مته(جهت سوراخ کاری) و خازن (100 و 1000 میکرو) و پتانسیومتر(10 کیلو برای کنتراست lcd)

«این قطعات رو از هر فروشگاهی میتونید تهیه کنید»

توضیحات تنظیمات میکروکنترلر:

فرکانس کاری میکرو 8 مگا هرتز است که میتوانید از اسیلاتور داخلی استفاده کنید و فیوز بیت ها رو به صورت زیر تنظیمات کنید:

کلاک سلکت صفر برابر 0

کلاک سلکت یک برابر 0

کلاک سلکت دو برابر 1

کلاک سلکت سه برابر 0

و در صورت اتصال کریستال خارجی 8 مگا هرتز تمامی کلاک سلکت هارو 1 کنید

توضیحات بیشتر در مورد نحوه پروگرام کردن میکرو از این لینک ببینید.

 

خرید

 

میتوانید به تلگرام بنده مراجعه کنید ,سوالی داشتید یا مشکلی در دانلود به وجود آمد در خدمتم .

دانلود کامپایلر پروسسینگ برای اجرای کد گرافیکی برنامه در لبتاب.

آی دی تلگرام بنده :

microdroidprj@

مطالب پیشنهادی زیر را مشاهده کنید:

برنامه اندرویدی حرفه ای کنترلر LEDRGB و 8 رله با قابلیت دریافت دما از طریق بلوتوث 

برنامه ی اندرویدی برای ارتباط با ماژول HC-05

پروژه ارتباط با میکروکنترلر از طریق برنامه #c

6
دیدگاه بگذارید

avatar
3 Comment threads
3 Thread replies
2 Followers
 
Most reacted comment
Hottest comment thread
4 Comment authors
علیahmadfaridmicrodroidprjsiteمریم Recent comment authors
مریم
Guest
مریم

سلام خسته نباشید ببخشید این یوزر در تلگرام موجود نیست، من فقط قسمت برنامه کد ویژن این پروژه رو میخواستم، هزینش چقدر هست؟

ahmad
Guest
ahmad

سلام برای خرید ارور میده !

علی
Guest
علی

با سلام و ممنون از آموزش خوبتون ببخشید از کجا میشه کامپایلر پروسسور رو یاد گرفت به زبان فارسی؟ چون هر چی تو اینترنت سرچ می کنم چیزی پیدا نمیکنم