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

به نام خدا

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

در این پروژه اژ ماژول آلتراسونیک sfr05 برای تشخیص موانع و از سرووموتور sg5010 برای اسکن محیط با زاویه ۱۸۰ درجه استفاده شده است.و همچنین از یک lcd کاراکتری ۲*۱۶ برای نمایش اطلاعات شامل زاویه و فاصله و از یک میکروی 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  هم به جایی وصل نیست

۱

۲

۳

۴

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

;PORTC.0=1

;(delay_us(20

;PORTC.0=0

 

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

۱

{}(while(PINC.1==0


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

۱

{}(while(PINC.1 == 1

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

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

و علت اینکه با مقدار tcnt جمع شده است این است مثلا فرض کنید ۱۰ با وقفه سر ریز اتفاق افتاده که ما ۲۵۶۰ میکرو ثانیه را داریم  در این هنگام که مقدار tcnt برابر با ۱۲۰ میشود پالس از طریق آلتراسونک دریافت میشود و به میکرو می رسد  و تایمر از شمارش بازمی ایستد برای همین ما نباید آن مقدار ۱۲۰ را از دست بدهیم

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

526

 

 

 

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

توجهسرعت صوت در هوا ۳۴۳٫۲ متر بر ثانیه هستش.(که در زیر برای سادگی من ۳۴۰ قرار داده ایم)

 

( واحد متر) ۱۷۰m * (ز م ش)  = ((یک مگا هرتز) ۱۰۰۰۰۰۰ / ۱) * ( ۲  / ۳۴۰ms) * ( (واحد میکرو ثانیه)ز م ش)

 

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

و بسته به این که این مقدار در چه عددی (۱۷۰ برای متر ۱٫۷ برای سانتیمتر ۰٫۱۷ برای میلیمتر) ضرب شود واحد فاصله بدست می آید.

 

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

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

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

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

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

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

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

 ۱- پاسخ سريع ،
۲-
 دقت بالا ،
۳-
کنترل بدون مراقبت و
۴-
کارکرد از راه دور .

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

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

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

569

مشخصات سرو SG5010:

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

8

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

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

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

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

فرکانس کاری میکروکنترلر ۸ مگاهرتز و clock value تایمر۱ را برابر ۱۰۰۰ کیلوهرتز قرار میدهیم. مابقی رجیسترهای تایمر یک را به صورت زیر انجام می دهیم:

            ; TCCR1A=0xA0

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

            ;TCNT1H=0x00

           ; TCNT1L=0x00

 

 

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

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

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

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

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

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

بنابر این :

 

 

 

 

Fpwm =Fcpu/( 2*N  * (۱+TOP) )=>  ۸۰۰۰۰۰۰HZ/( 2*8  *(۱+TOP) ) = 50MHZ

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

 TOP = 9999 => TOP =  ۰x270F

 <=

;ICR1L=0x0F

;ICR1H=0x27

 

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

همانطور که در دیتاشیت سروو SG 5010 آمده، حداقل پالس برای چرخش سروو به ترتیب برابر ۶۰۰ میکروثانیه و حداکثر ۲۴۰۰ میکروثانیه می باشد. SG 5010 می تواند از صفر تا ۱۸۰ درجه بچرخد لذا ۶۰۰ میکرو ثانیه برای تنظیم روی صفر درجه و ۲۴۰۰ میکروثانیه برای تنظیم روی ۱۸۰ درجه می باشد.

پس ۶۰۰ تقسیم بر ۲ برابر ۳۰۰ میکروثانیه برای ۰ درجه و ۲۴۰۰ تقسیم بر ۲ برابر ۱۲۰۰ میکروثانیه برای ۱۸۰ درجه.

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

(۱۲۰۰-۳۰۰)/(۱۸۰-۰)=۵

به عنوان مثال برای تنظیم روی یک درجه(درجه ۱) مقدار پالس لازم برابر ۵ + ۳۰۰ = ۳۰۵ میکروثانیه می باشد. پس رجیستر OCR1A را با عدد ۳۰۵ مقدار دهی می کنیم.

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

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

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

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

 

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

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

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

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

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

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

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

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

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

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

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

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

۳-lcd کاراکتری ۲ در ۱۶

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

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

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

۷-LED و برد خام مدار چاپی و اسید و مته(جهت سوراخ کاری) و خازن (۱۰۰ و ۱۰۰۰ میکرو) و پتانسیومتر(۱۰ کیلو برای کنتراست lcd)

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

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

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

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

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

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

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

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

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

 

 

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

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

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

microdroidprj@

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

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

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

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

mehdi sehati

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

مطالب مرتبط

Subscribe
Notify of
guest

11 نظرات
Inline Feedbacks
View all comments
مریم
مریم
7 years ago

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

ahmad
ahmad
7 years ago

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

علی
علی
7 years ago

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

محمد
محمد
6 years ago

سلام لطفا ایدی تلگرام تون درست کنید تا در ارتباط باشیم

شادی
شادی
5 years ago

سلام.چرا نمیشه دانلود کرد؟

صادق
صادق
2 years ago

سلام .برای خرید پروژ پیام میده کارت پذیرنده نا معتبر است.

11
0
Would love your thoughts, please comment.x