برق الکتروتکنیک
برق الکتروتکنیک
برق الکتروتکنیک برق الکتروتکنیک برق الکتروتکنیک برق الکتروتکنیک برق الکتروتکنیک
درباره وبلاگ


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

مدیر وبلاگ : جواد نظرلو
نویسندگان
رجیستر چیست؟ رجیستری‌های PORTx, PINx , DDRx، قسمتی از برنامه‌ی یک ربات مسیریاب بسیار ساده و ...

رجیسترها توعی حافظه هستند که به طور مستقیم با بخشش پردازش‌گر میکروکنترلر در ارتباط هستند. هر رجیستر یک بایت یا 8 بیت است. یکی از ویژگی‌های رجیسترها این است که به خاطر ارتباط نزدیک با پردازنده، سرعت بسیار بالاتری نسبت به سایر خانه‌های حافظه دارند...





به نام خدا

با عرض سلام خدمت همه ی دوستان عزیز

شروع سال جدید تحصیلی را به همه ی دوستان خوبم تبریک عرض می کنم و برای همه ی دوستان سال خوب تحصیلی سرشار از موفقیتی رو آرزو می کنم.

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

خوب، بر می گردیم سر مبحث میکروکنترلرها....

قرار بود این جلسه برنامه ی یک مسیریاب بسیار ساده ی 2 سنسوره را با هم بنویسیم. اما ابتدا باید چندتا نکته ی دیگه هم یاد بگیریم.

همونطور که گفته شد AT Mega16 دارای پایه های متعددی برای تبادل اطلاعات با مدار است. هر 8پایه ی مجاور که این وظیفه را دارند یک پورت نامیده می شوند (به شکل نگاه کنید) . AT Mega16 دارای 4 پورت با نام های A ، B ، C و D می باشد. پایه های هر پورت به این شکل نمایش داده می شود:

شماره ی پایه+"."+نام پورت

مثلاً اولین پایه ی پورت D به این صورت نشان داده می شود: D.0
و پایه ی سوم پورت C به صورت : C.2
حال به ترتیب پایه های ATMEGA16L دقت کنید


دقت کنید که شماره گذاری پایه ها در پورت ها از 0 شروع می شود.
همچنین گفته شد، پایه های میکروکنترلر می توانند به صورت ورودی یا خروجی تنظیم شوند، مثلاً در یک ربات مسیریاب میتوان چند پایه را تنظیم کرد که ورودی باشند و اطلاعات سنسورها را دریافت کنند، یا انها را تنظیم کرد تا خروجی باشند و موتورها را هدایت کنند. این تنظیم به صورت نرم افزاری و با تنظیم رجیستر DDRx انجام می گیرد. اما ابتدا باید رجیستر را تعریف کنیم.

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

رجیستر DDRx:
رجیستر DDRx (Data Direction) برای تنظیم ورودی یا خروجی بودن پایه های میکروکنترلر است. برای تنظیم پایه ها در برنامه، باید به جای x باید آدرس پایه ی مورد نظر(مثل B.3) را بنویسیم. اگر بخواهیم آن پایه خروجی باشد باید بیت رجیستر مربوط به آن را 1 کنیم، و اگر بخواهیم آن پایه ورودی باشد، باید بیت رجیستر مربوط به آن را 0 کنیم. به عنوان مثال اگر بخواهیم پایه17 یعنی D.3 خروجی باشد باید این جمله را بنویسیم: DDRD.3=1;
و اگر بخواهیم این پایه ورودی باشد: DDRD.3=0;

رجیستر PORTx:
در صورتی که پایه ها به صورت خروجی تنظیم شده باشند، هر چه در این رجیستر نوشته شود سطح منطقی پایه ی متناظر را تعیین می کند، مثلاً اگر بنویسیم PORTB.3=1 پایه B.3 یعنی پایه ی 4، 1 منطقی خواهد شد(یعنی ولتاژ 5 ولت بر روی این پایه قرار می گیرد). و اگر بنویسیم PORTC.1=0، پایه ی C.1 یعنی پایه ی 23، 0 منطقی خواهد شد (یعنی ولتاژ این پایه 0 می شود.).

رجیستر PINx:
در صورتی که پایه ها به صورت ورودی تنظیم شده باشند، محتویات این رجیستر حاوی اطلاعات دریافتی از پایه های میکروکنترلر است. مثلاً اگر PINB.1=0 باشد، یعنی بر روی پایه شماره ی 2 یا همان B.1 ؛ 0 منطقی اعمال شده است(مثلاً اگر به سنسوری وصل شده است، خروجی سنسور 0 منطقی بوده است). در حقیقت این رجیستر برای خواندن وضعیت پایه های ورودی مورد استفاده قرار می گیرد.

نکته ی بسیار مهم: دقت کنید که در زبان C، باید در انتهای هر خط از برنامه یک علامت ";" گذاشته شود. به این علامت در زبان انگلیسی سِمی کالِن می گویند.

نکته ی مهم:
در حقیقت برای هر پورت 3 رجیستر(حافظه 1 بایتی) در داخل میکروکنترلر وجود دارد که به مجموع این 12 رجیستر، رجیسترهای I/O (Input/Output) می گویند.

بسیار خوب، حالا نوبت نوشتن برنامه ی 1 ربات مسیریاب ساده است که فقط 2 تا سنسور داره!!!

نرم افزاری کمکی به نام Code Wizard در داخل همان Codevision وجود دارد که کار ما را برای انجام تنظیمات اولیه مانند تنظیم ورودی یا خروجی بودن پایه ها آسان می کند. یعنی دیگه نیازی نیست برای هر پایه تک تک با رجیستری DDR سرو کله بزنیم، و به راحتی با چند تا تیک ساده همه ی پایه ها رو تنظیم می کنیم. البته Code wizard همونطور که از اسمش هم معلومه بسیاری امکانات جادویی دیگری هم داره که در جلسات آینده به تدریج با آن ها آشنا خواهیم شد. Code Wizard در حقیقت برای ساده تر کردن و سریع تر کردن برنامه نویسی در فضای Codevision طراحی شده است و کارش این است که قسمت های زیادی از برنامه را به صورت خود کار و طبق خواسته های ما برای ما می نویسد.

پس با این حساب نیازی نیست تنظیمات رجیستری DDRx رو ما در برنامه خودمون انجام بدیم و این کار رو به Code wizard واگذار می کنیم. با Code wizard در جلسه ی آینده آشنا خواهیم شد.

پس در این جلسه فرض می کنیم تنظیمات اولیه مثل رجیستری DDRx و ... انجام شده است. پایه های B.0 و B.1 را به صورت ورودی(برای دریافت اطلاعات سنسورها)، و پایه های B.2 ،B.3 ، B.4 و B.5را به صورت خروجی (برای کنترل حرکت موتورها) تنظیم کرده می کنیم.

B2 و B.3 برای کنترل موتور سمت راست و B.0 برای سنسور سمت راست!

B.4 و B.5 برای کنترل موتور سمت چپ و B.1 برای سنسور سمت چپ!

حال مانند ربات قبلی، یک پایه از هر موتور را 0 می کنیم؛ و روشن و خاموش کردن هر موتور را، با اعمال 0 یا 1 منطقی بر روی پایه ی دیگر کنترل می کنیم.

پایه ی دیگر را هم به صورت هماهنگ با سنسور متناظر آن سمت 0 و 1 می کنیم، یعنی اگر خروجی سنسور 0 بود، پایه ی موتور را 0 می کنیم و اگر 1 بود ، پایه را 1 کرده و موتور را فعال می کنیم.(به شرطی که از مدار گیرنده ی شماره 2 استفاده شود(جلسه ی 15))

در زبان C علامت "=" یک عملگر است که عملوند سمت راست خود را خوانده و در عملوند سمت چپ خود می ریزد. مثلاً وقتی می نویسیم:

PORTB.3=PINB.0;

ابتدا مقداری B.0 خوانده می شود و سپس بر روی B.3 ریخته می شود. یعتی مثلاً اگر روی B.0 ، 1 منطقی اعمال شده باشد، پایه ی B.3 نیز 1 منطقی می شود.

حال با توضیحات داده شده به برنامه ی ربات مسیر یاب ساده دقت کنید:

PORTB.2=0;

PORTB.4=0;

PORTB.3=PINB.0;

PORTB.5=PINB.1;

همانطور که می بینید این برنامه بسیار ساده و کوتاه است.

در جلسات آینده سعی می کنیم شما رو با Code wizard بیشتر آشنا کنیم. منتظر سوالات و نظرات دوستای خوبم هستم.

پیروز باشید.





نوع مطلب :
برچسب ها :
لینک های مرتبط :
جواد نظرلو
چهارشنبه 22 شهریور 1391

 

روبوت دنبال کننده خط سیاه:

این روبوت مدار خیلی ساده ای داره ومن اون رو با تمام فایل هایی که برای پروگرمر لازم داره براتون میذارم حتی یک اماتور هم میتونه به سادگی اون رو بسازه برای موتورها و چرخ  میتونید از موتور های ساده ماشینهای اسباب بازی استفاده کنید در این روبوت دو تا چرخ عقب توسط موتور کنترل میشه ولی چرخ جلو ازاده از چهار تا سنسور هم برای تشخیص نوار سیاه استفاده شده وقتی که سنسورها نوار سیاه رو میبینن خروجی مقایسه کننده low,lm324خواهد شد و در بقیه موارد خروجی highخواهد بود در اینجا برای درایور کردن موتورها از ای سی l293dاستفاده شده که برای کنترل سرعت و جهت موتور استفاده شده اگه نتونستید این ای سی رو توی بازار پیدا کنید پیغام بذارید تا یه مدار دیگه ای که میشه جایگزین کرد رو براتون بفرستم   

توجه:نحوه قرارگیری سنسورها خیلی مهمه

برای پروگرم کردن ۸۹۵۱احتیاج به یک پروگرمر دارید ولی فایل هگز به صورت اماده در دسترس هست امیدوارم که این روبوت رو بسازید و از ساخت اون لذت ببرید اگه در رابطه با ساخت به مشکلی بر خوردید سوال کنید من هم سعی میکنم جواب بدم       از این مدار حتی میتونید به عنوان یه پروژه دانشجویی هم استفاده کنید

فایلها رو با کلیک روی لینکهای زیر میتونید دریافت کنید

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

۱.در مورد مدار چاپی باید بگم زیاد احتیاج به pcbنیست چون می تونید از برد سوراخ دار استفاده كنید و نتیجه بگیرید اگر هم خواستید می تونید با پروتل طراحی كنید ولی من  pcbاین مدار رو به صورت اماده ندارم

۲.در مورد مكانیك این روبوت  همونطور كه گفتم می تونید از اسباب بازی استفاده كنید

جهت اشنایی بیشتر با مكانیك اینگونه روبوت ها می تونید به سایت های زیر مراجعه كنید

چگونه یک روبوت مسیریاب بسازیم:(ایران روباتیک)

http://robotic.farsitools.com/upload/158861833_robotics.zip?PHPSESSID=3569ba0a7903ede243e14cad9164e8d8

http://www.hlachini.com/Projects/robotic/index.htm       فارسی

http://www.leang.com/robotics/info/articles/linesen/index.html     انگلیسی

۳.در مورد مدار جایگزین ای سی هم می تونید منتظر باشید تا روبوت خودم رو اپلود كنم و از درایور اون استفاده كنید و یا از سایتهایی كه در این رابطه معرفی كردم استفاده كنید

robot c

robot-hex

robot-asm

 

 





نوع مطلب :
برچسب ها :
لینک های مرتبط :
جواد نظرلو
چهارشنبه 22 شهریور 1391

اداپتور cd playerبرای استفاده در ماشین:

با به کار بردن مدار زیر شما می توانید بدون نگرانی از تمام شدن باتری ساعت ها از دیسک من در ماشین استفاده کنید

این مدار یک رگولاتور فوق العاده ساده می باشد که ۱۲ ولت را از باتری ماشین گرفته و به ۹ ولت قابل استفاده برای دیسک من تبدیل می کند !

شماتیک مدار:

لیست قطعات:

c1=1000uf     25v electrolytic

c2=10 uf 25v electrolytic

c3= 1uf 15v electrolytic

c4=0.1uf 15v electrolytic

u1=78009 or other regulator

heat sink(خنک کننده)برای u1

فیش sigarette lighterبرای دیسک من

توجه:

۱.اگر احتیاج به خروجی ۶ ولت دارید به جای ۷۸۰۹ میتوانید از۷۸۰۶ استفاده کنید

اگر ۵ ولت می خواهید می توانید از ۷۸۰۵ استفاده کنید

۲.مواظب باشید کانکتورها معکوس نباشند چون دیسک من اسیب خواهد دید

                                      شارژر باتری ماشین

این شارژر هر باتری اسیدی را به سرعت و اسانی شارژ خواهد کرد.شارژر جریان زیادی را در باتری رها می  کند تا زمانیکه جریان باتری به مقدار ۱۵۰میلی امپر می رسد .در این موقع ولتاژ کم می شود تا از شارژ زیاد باتری جلوگیری شود.وقتی شارژ باتری کامل می شود مدار خاموش شده و یک LEDرا روشن می کند و نشان دهنده پایان سیکل است.       

شماتیک مدار:

لیست قطعات:

r1=500 ohm                             c1=0.1uf 25v       

r2=3 kohm                                c2=1uf 25v

r3=1k                          c3=1000pf 25v

r4=15 ohm                                d1=in457                         

r5=230 ohm           q1=2n2905  pnp transistor

 r6=15k                 u1=lm350 regulator

r7= 0.2 ohm (10w                   u2=lm301A opamp 

s1=normally open push botton switch

heat sink for u1          ,alligator clips for out put

  نکات مهم:۱.برای تغذیه مدار از منبع تغذیه زیر استفاده می شود که شامل خازن فیلترینگ و ترانسفورمر است:

 

لیست قطعات:

c1=6800uf 25v                  t1=3A 15v transformer

br1=5A 50v bridge                        s1=5Aspst switch

f1=4A 250v fuse

۲..یک HEATSINKبرای U1احتیاج خواهد شد   ۳.برای استفاده مدار خروجی منبع تغذیه را به پایه INاز U1وصل کنید و خروجی دیگر را به زمین مشترک مدار سپس سوئیچ S1را فشار دهید۴.بار اول که مدار را استفاده می کنید کاملا  بررسی کرده و از عملکردش مطمئن شوید همچنین مطمئن شوید که شارژ باتری کم است





نوع مطلب :
برچسب ها :
لینک های مرتبط :
جواد نظرلو
چهارشنبه 22 شهریور 1391




آمار وبلاگ
  • کل بازدید :
  • بازدید امروز :
  • بازدید دیروز :
  • بازدید این ماه :
  • بازدید ماه قبل :
  • تعداد نویسندگان :
  • تعداد کل پست ها :
  • آخرین بازدید :
  • آخرین بروز رسانی :
امکانات جانبی



جاوا اسكریپت

آپلود نامحدود عکس و فایل

آپلود عکس



فال حافظ



..

.


کد آهنگ
شبکه اجتماعی فارسی کلوب | Buy Website Traffic | Buy Targeted Website Traffic