سلام !
البته بعد از ۲ ماه ...
سرمون حسابی شلوغه کنکوره و بدبختیاش ... این کنکورم شد باعث اینکه ( متاسفانه) دیگه نتونم بیام و بنویسم (البته برای شما خوشبختانه !
از طرفی چون این وبلاگ یه کمی بازدیدکننده داره خیلی ها اومدن گفتن که چرا ادامه نمیدی ! بعداز کلی تست و امتحان قرعه این وبلاگ به نام علی آقا در آمد و ایشان فعلا مدیر این وبلاگ هستن (البته منم نظارت خودمو دارم .)!
از قبال ایشون مطمینم که حتما به ارزش های این وبلاگ اضافه می کنه....
منم احتمالا هر ماه یک پست غیر آموزشی مثل همین خواهم داشت ..........
در مورد اون کسایی که میل زدن وراهنمایی در مورد مسیریاب خواسته بودنخواستم بگم الان تو سایت ایران رباتیک یه کیت آموزشی خیلی خوب دیدم که برای تازه کار ها (البنه سرور ما هستن ) خیلی مفیده حتما تهیه کنید ....
موفق و پیروز باشید
کیا کرباسی
سلام ...
بالاخره از شمال برگشتیم و دوباره کار بلاگیدن شروع کردیم
اول از همه از دوستانی کامنت هاشون به ما خیلی لطف کردن کمال تشکر رو دارم .
جون که دیدم یه عده از دوستان سوال فنی دارن و منم وقت نداشتم برای همه یکی یکی میل بزنم این پست رو گذاشتم. ای میل من :
دوستان می تونین به این آدرس میل یا IM بزنین ... (حتما پاسخ خواهم داد -البته از راه IM )
امیدوارم همیشه پیروز و سر بلند باشید ...
سلام دوستان!
همونطور که اطلاع دارید قرار بود زحمت برنامه نویسی رو سالار بکشه ولی امان از .....
اما من که نمی زارم میت رو زمین بمونه.
به امید خدا از امروز برنامه نویسی رو خودم شروع می کنم ....
امروز می خواهیم برنامه ای بنویسیم که بوسیله اون بشه استپر موتورهامون رو راه اندازی کنیم (عین همین روش رو باید در برنامه اصلی ربات استفاده کنیم) :
$crystal = 1000000 Config Portb = Output Dim A As Byte B = &B10001000 Do Rotate B , Right Waitms 15 End |
خوب حالا خط به خط تحلیل می کنیم. البته خوب یادمه توضیحات کاملی رو در مورد کدهای استفاده شده در چهار خط اول در پست های "آموزش ساخت ربات (میکرو کنترلر 1 - 2 - 3 - 4) دادم. پس اگه یادتون رفته بهشون دوباره سر بزنید.
Dim A As Byte Dim B As Byte |
B = &B10001000 |
استفاده از " مقدار = نام متغیر " که برای همه قابل درکه (یعنی یک مقدار رو داخل متغیر بریزیم) اما در اینجا بجای مقدار از &B10001000 استفاده شده. برای قرار دادن مقادیر به صورت باینری در یک متغیر (در این زبان) باید مقدار باینری رو بعد از B& بنویسم. در اینجا، هم در A و هم در B مقدار باینری ۱۰۰۰۱۰۰۰ معادل دهدهی ۱۳۶ رو قرار دادیم. که دلیلش رو توضیح خواهم داد.
باقیش بمونه برای جلسه بعد !
اینم یه لینک برای کسانی که می خوان سریع یه مسیریاب بسازن :
نظر یادتون نره !
سلام !
قصد داشتم از امروز مباحث مربوط به برنامه نویسی رو شروع کنم .
اما چون یکی از دوستان به نام آقای لیدی قراره از این به بعد بیاد و در این وبلاگ بنویسه بنا به خواسته خودشون مباحث مربوط به برنامه نویسی به ایشان واگذار شد .
امروزم مطالبی در مورد لحیم کاری و بعضی قطعات جمع آوری کردم که امیدوارم براتون مفید باشه :
![]() |
![]() |
![]() |
|
![]() |
![]() |
موفق و پیروز باشید !
سلام به همه!
از امروز می خوایم مباحث مربوط به میکرو کنترلر رو شروع کنیم. اگر از ابتدا با من همراه بودید یا اینکه مقالات قبل رو دنبال می کردید حتما یادتونه که چندتا پست اول مقدمات برنامه نویسی به زبان BASCOM برای میکروی AVR رو گفتم (اگر هم یادتون نیست لینکشون همین سمت راسته!). مدار ایجاد ولتاژ مناسب کار میکرو (۵ولت) با استفاده از رگولاتور رو هم که تو پست قبل به همراه لینک دانلود کامپایلر BASCOM-AVR گذاشتم (کرکش رو هم امروز آوردم ). بنابراین این جلسه می خوام نحوه ساخت پروگرمر برای میکروهای AVR رو آموزش بدم تا براحتی بتونید کدهایی که من میگم یا خودتون دارید رو روی میکرو بار کنید و بتونید به صورت کاملا عملی کار رو تجربه کنید...
ساخت پروگرمر STK200300:
مدار این پروگرمر در چند نوع مختلف توسط آی سی بافر 74HC244 موجود هستش. اما مدلی رو که من الان میخوام آموزش بدم ساده ترین نوع موجود و بدون آی سی بافر هستش. برای ساخت این پروگرمر فقط به وسایل زیر احتیاج دارید:
شکل مقابل پین های سوکت پورت موازی رو با به صورت شماره گذاری از پین ۱ تا ۲۵ و نحوه اتصال پینهای اون به پایه های میکرو نشون میده. توضیح استفاده هرکدوم از این پینها خارج از بحث ماست فقط بدونید که پینهای ۱۸تا۲۵ باید به زمین وصل بشن و پین ۲-۹ هم مربوط به ۸ بیت موازی هستند.
تصویر پایه های میکروی AVR به همراه اسمشون رو قبلا در پست 13 گذاشتم، ببینیدش که در درک شکل بالا خیلی کمکتون می کنه.. با این حال به علت اهمیت بازم میگم: پینهای شماره ۱۸الی۲۵ سوکت رو بهم و سپس به GND میکرو که پایه شماره ۱۱ اون هست وصل کنید و بعد پایه شماره ۱۱ میکرو رو هم به سر منفی منبع وصل کنید به همین ترتیب، پین شماره ۱۰ سوکت به MISO یا پایه ۷ میکرو، پین شماره ۹ سوکت به RESET یا پایه ۹ میکرو، پین شماره ۷ سوکت به MOSI یا پایه ۶ میکرو، پین شماره ۶ سوکت به SCK یا پایه ۸ میکرو وصل کنید و در آخر VCC یا پایه ۱۰ میکرو رو هم به سر مثبت منبع وصل کنید. بخش سخت افزاری پروگرمر شما به همین سادگی آماده شد.
برای استفاده از این پروگرمر باید به روش زیر نوع پروگرمر خودتون رو به کامپایلر BASCOM معرفی کنید:
BASCOM-AVR > Options > Programmer >> Programmer = STK200300 Programmer
بعد از انجام مراحل بالا و تکمیل پروگرمرتان برای اطمینان از صحت کار می توانید در محیط کامپایلر دگمه
را فشار دهید. در صورت ظاهر نشدن پیام مقابل و نمایش صفحه ای جدید که در بالای آن مشخصات میکروی شما نوشته شده بدانید که پروگرمر شما به درستی کار می کند. در غیر این صورت تمام موارد از جملا ترتیب صحیح اتصال سیمها و وصل بودن ولتاژ مناسب و.. را چک کنید. این مرحله یکی از مراحلی است که امکان جواب ندادن در اون خیلی زیاده بنابراین در صورت جواب نگرفتن اصلا عصبانی نشید و بیاید تا با هم مشکل رو حل کنیم
.
اینم لینک دانلود کرک های برنامه BASCOM-AVR که سری پیش گذاشته بودم:
سلام بر دوستان پاک
می خواستم از این پست آموزشهای نرم افزاری و کار با میکروکنترلر رو شروع کنم اما یادم افتاد یه بخش الکتریکی نسبتا مهم رو جا انداختم که البته بهترین زمان رو کردنش همین الان بود:
شاید بدونید که ولتاژهای عملیاتی میکروکنترلر AVR نوع ATmega32 از ۴.۵ تا ۵.۵ ولت و نوع ATmega32L از ۲.۷ تا ۵.۵ هستش، اما ولتاژ کاری موتورهای پله ای موجود در بازار معمولا ۱۲ و همچنین ممکنه منبع تغذیه ای که در اختیار داریم یا در اختیار ما میگذارن (منظورم مسابقاته!) ممکنه اصلا تو این رنج نباشه! برای ایجاد رنج دلخواه خودمون از قطعه ای بنام رگولاتور استفاده می کنیم که فعلا یه توضیح کوچیک از اون داشته باشید:
IC های رگولاتور۱: به تازگی آی-سی هایی عرضه شده که جانشین یک مدار رگولاتور شده و دارای امتیازاتی می باشد، به عنوان نمونه در صورت اتصال کوتاه شدن خروجی یا بار بیش از اندازه آی-سی محافظت شده و همچنین اگر آی-سی بسیار داغ شود مدار حفاظتی داخل آی-سی آن را خاموش خواهد کرد و این قطع ولتاژ خروجی تا زمانی ادامه پیدا خواهد کرد که آی-سی دوباره خنک شود. حجم کم این آی-سی ها نیز از امتیازات آنها به شمار می رود. در واقع وقتی شما از این IC در مدار خود استفاده کنید به میزان زیادی در وقت و پول خود صرفه جویی کرده اید. یک نمونه از این IC ها سری 78xx می باشد که سه پایه داشته و بسیار شبیه به ترانزیستور می باشد. ولتاژهای خروجی آنها نیز ثابت می باشد. بجای XX هر شماره ای روی بدنه IC نوشته شده باشد ولتاژ خروجی آن خواهد بود. جریان خروجی این IC ها یک آمپر می باشد و لازم است در این جریان رادیاتور مناسبی به IC متصل شود. در شکل زیر یک مدار رگولاتور به همراه دو خازن برای از بین بردن نوسانات نشان داده شده است. (در حالت عادی می توان خازن ها را حذف کرد)
البته با توجه به آمپراژ خروجی رگولاتور توجه داشته باشید نباید استپ موتورمون رو به لگولاتور وصل کنیم بلکه باید ولتاژ استپر موتورمون رو به صورت مستقیم از ۱۲-ولت و تغذیه میکروکنترلر و مدار سنسورهامون رو (که قبلا نشون دادیم) از خروجی رگولاتور بگیریم.
راستی پاراگراف ۱ رو عینا از روی کتاب "۵۰ مدار علمی منبع تغذیه" تالیف ناصر بهنوا نوشتم. در این مقاله می خواستم با بستن مدار رگولاتور، از پست بعد که کار با میکرو رو شروع می کنم دیگه مشکل تغذیه میکرو رو نداشته باشید. که البته جلسه بعد دوباره در مورد پایه های میکرو بیشتر توضیح خواهم داد.
اینم لینک کامپایلر BASCOM برای دانلود! پس دیگه تمام مواد لازم برای آموزشهای میکروکنترلر کاملا محیاست:
نظر یادتون نره !
Adapted from E.l.e.B.o.y.s
سلام!
علت تعدد سیمهای استپر موتور رو فهمیدیم و دونستیم چطور باید این سیمها ۰ و ۱ بفرستیم تا باعث حرکت موتور بشیم. همچنین در قسمتهای اولیه آموزش ساخت ربات (میکروکنترلر) فهمیدیم که میکرو دارای تعدادی پورت هستش که هر کدوم از این پورتها از ۸ تا بیت تشکیل شده و میشه این بیتها رو تغییر داد (۰ و ۱ کرد). خوب حالا حتما فکر می کنید میشه چهارتا سیم موتور رو به چهارتا پین از یه پورت (دلخواه) میکرو وصل کنیم و با تغییر متناوب بیتها (۰۰۰۱ ، ۰۰۱۰ و...) می تونیم باعث چرخش موتورمون بشیم.
اما واقعیت اینه که کمتر مصرف کننده ای رو میشه به صورت مستقیم به پایه های میکرو وصل کرد. علتش هم اینه که شایه های میکرو نمی تونن بیشتر از ۲۰ میلی آمپر رو سینک کنند (عبور بدن).
برای مثال فرض کنید یک LED داریم با آمپراژ مصرفی 50mA ، اگر سر مثبت اون رو به ولتاژ وصل کنیم و سر منفی اون رو به یه پین از میکرو وصل کنیم و اون پین رو صفر کنیم (به معنی GND کردن اون) باعث سوختن حداقل همون پین میکرومون میشیم. این بخاطر جریان کشیدن بیش از توان میکرو هستش، برای همین باید بین پین و پایه منفی LED یا پایه LED و سر مثبت منبع یه مقاومت مناسب قرار بدم. همین اتفاق در مورد استپر موتور صادقه فقط با مقیاس بزرگتر که دیگه جای شبه ای باقی نمیزاره به سوسک شدن میکروتون .
برای جلوگیری از این پدیده از آیسی های رابط مخصوصی استفاده می کنند که اصتلاحا درایور نام دارند. باوجود تنوع زیاد درایور ها من از مدل ULN2803 که فکر می کنم یکی از رایجترین نوع برای ساخت ربات مسیریاب هستش استفاده می کنم. این درایور دارای ۱۸ پایه هستش. همونطور که در شماتیک درونی IC مشاهده می کنید پایه ۹ سر gnd و پایه ۱۰ سر vcc هستش و پایه های ۱ تا ۸ ورودی (در اینجا از میکرو) و پایه های ۱۱ تا ۱۸ خروجی (در اینجا به موتور) این آی سی هستند. در شکل نحوه رابط قرار دادن این آی سی بین ۴ پایه میکرو و ۴ سیم موتور رو مشاهده می کنید. راستی در این IC، پایه ۱۸ خروجی پایه ۱، پایه ۱۷ خروجی ۲، ۱۶ خروجی ۳ و... می باشد.
البته همونطور که در قسمت کنترل استپ موتور اشاره کردم بیت های ارائه شده در جدولهای پست قبل باید به صورت نقیض به موتور ارسال بشن. مثلا ۰۰۰۱ که از میکرو میاد باید به صورت ۱۱۱۱۰ به موتور ارسال بشه، چون می خواهیم سیمهای استپر رو به ترتیب ۱ های جدول GND کنیم و صفر به معنی GND هست نه ۱ (قبلا کفته بودم) !!! یکی از کارهای مهم این IC هم همین هستش و خروجی های میکروی مارو که طبق جدول های پست قبل هست نقیض (NOT) میکنه و به موتور میفرسته.در ضمن از اونجایی که این درایور ۸ تا ورودی و ۸ تا خروجی داره، ما میتونیم هر دوتا موتورمون رو (برا مسیریاب ۲ تا استپر موتور لازم داریم) فقط با یه درایور راه بندازیم. ۴ تا ورودی و ۴ تا خروجی برای ۱ موتور و یه جفت ۴ تایی باقی مونده هم برای موتور دوم. مثل شکل قبل.
ایشالله از جلسات بعد با میکرو کار خواهیم کرد. پس فعلا بای
اگر چهار پله d, c ,b ,a رو که هر کدوم به صورت چهار بیت در جدول نشون داده ش
سیم۱ | سیم۲ | سیم ۳ | سیم ۴ | شماره پله |
0 | 0 | 0 | 1 | 1 |
0 | 0 | 1 | 0 | 2 |
0 | 1 | 0 | 0 | 3 |
1 | 0 | 0 | 0 | 4 |
نو دیگری از القا پله به موتور وجود داره که حرکت دوبیتی نام داره. هم
سیم۱ | سیم۲ | سیم ۳ | سیم ۴ | شماره پله |
1 | 0 | 0 | 1 | 1 |
0 | 0 | 1 | 1 | 2 |
0 | 1 | 1 | 0 | 3 |
1 | 1 | 0 | 0 | 4 |
نوع دیگری از القا پله به استپ موتور وجود داره بنام
سیم۱ | سیم۲ | سیم ۳ | سیم ۴ | شماره پله |
0 | 0 | 0 | 1 | 1 |
0 | 0 | 1 | 1 | 2 |
0 | 0 | 1 | 0 | 3 |
0 | 1 | 1 | 0 | 4 |
0 | 1 | 0 | 0 | 5 |
1 | 1 | 0 | 0 | 6 |
1 | 0 | 0 | 0 | 7 |
1 | 0 | 0 | 1 | 8 |
لازم به ذکره که اگر بیت های این سه جدول رو از بالا به پایین القا کنیم موتور در جهت ساعتگرد و اگر از پایین به بالا اجرا کینم در جهت پادساعتگرد خواهد چرخید. نحوه اعمال این بیتها به موتور توسط میکروپروسسور رو در پستهای بعدی شرح خواهم داد.
نظر پیشنهاد و انتقاد (که نمی پذیریم ) یادتون نره! فعلا یا حق.
Adapted From E.l.e.B.o.y.s