بررسی و تحلیل پروژه مسیریاب خطی: طراحی، سخت‌افزار و نرم‌افزار

راهنمای جامع طراحی ربات مسیریاب: از مکانیک تا الکترونیک

پروژه رباتیک: طراحی و ساخت ربات مسیریاب خط ساده

همه‌چیز درباره پروژه مسیریاب خطی: سخت‌افزار، نرم‌افزار و مدارها

آموزش ساخت ربات مسیریاب خطی: تحلیل کامل و قدم‌به‌قدم

-پروژه موردنظر يك روبات مسير ياب خط ساده مي باشد . پايان نامة اين پروژه كـه  هم اكنون در حال مطالعه آن هستيد ، متشكل از سه بخش سخت افزار ، نرم افـزار و  مراجع و منابع مي باشد .

– بخش سخت افزار اين پايان نامه به معرفي قسمت هاي مكانيك و الكترونيك ايـن  روبات پرداخته كه در حالت كلي بخش الكترونيك را قسمت هايي چون : AT:MIC  32MEGA) ) جهت پردازش سيگنال ها و فرمان ها ،) IC درايور 298L ) جهت راه  اندازي موتورها ،) مدارات آنالوگي ، چون :SUPPTY POWER) كـه بـراي تغذيـه  كل سيستم مورد استفاده قرار گرفته ) ، مدار تقويت كنندة تـك ترانزيـستوري 942C (جهت روشن شدن LED براي تست سنسورها ) ، سنـسور مـادون قرمـز 70CNY (براي تشخيص خط مورد نظر )، تشكيل داده اند .

بخش مكانيك نيز شامل قسمت هايي چون : دو موتور DC ) با دور RPM600 كـه  همراه با گيربكس براي افزايش قدرت )، دو عدد چرخ سه عدد سنسور ، بـر د MIC و برد 298L و همچنين شاسي كه تمام بخش سـخت افـزار روي آن سـوار شـده را  تشكيل مي دهند .

– بخش نرم افزار اين پايان نامه نيز شامل برنامة كامل روبـات و دسـتورات مـورد  استفاده در اين برنامه مي باشد .

2

 

ان      چكيده  

ا  ار

اول:  !

مقدمه 4…………………………………………………………………………………………………………..   7………………………………………………………………… MEGA AVR ميكروكنترلر – 1-1 – خصوصيات 32 ATMEGA 7……………………………………………………………………..  – فيوز بيت هاي 32ATMEGA 12……………………………………………………………………..   – بررسي پورت هاي ميكرو 32 ATMEGA14……………………………………………………..  25……………………………………………………………………………….L298 درايور IC – 1-2  – معرفي پايه هاي 298L 27…………………………………………………………………………………  1-3 – سنسور مادون قرمز 70CNY29………………………………………………………………..

31………………………………………………………………………….POWER SUPPLY – 1-4 -5-1 بخش مكانيك روبات – موتور هاي DC33………………………………………………….

6-1 – تشريح كامل مدار روبات 37………………………………………………………………………

دوم :  $م ا  ار

-1-2 محيط برنامه نويسي AVR BASCOM 42……………………………………………………  -2-2 ديمانسون تغيير و برخي دستورات محيط AVR BASCOM43……………………..  -3-2 برنامه كامل روبات مسير ياب خط ساده 47…………………………………………………        م : منابع و مراجع 70……………………………………………………………………

3

 

%

– پروژه اي كه پيش روي شماست با عنوان روبات مسير ياب مي باشد ا. ين روبات تشكيل شده از سه بخش الكترونيك ، مكانيك و كامپيوتر كـه بخـش الكترونيـك آن  مربـوط بـه طراحـي و پيـاده سـازي مـدارهاي ، آنـالوگ و ديجيتـال الكترونيكـي و  درايوهاي موتورها و … مي باشد بخش مكانيك آن مربوط به طراحـي و پيـاه سـازي  مدارهاي الكترونيكي ، موتورها و چرخ ها روي شاسـي و بدنـه مـي باشـد و بخـش  كامپيوتر آن نيز مربوط به قسمت نرم افزار وبرنامة روبات مي باشد كه به زبـان C و

توسط برنامة BASCOM داخل ميكروكنترلر AVR نوشته شده است . – تلفيق اين سه بخش با هم ، به طوري كه خوب با هم تركيب شـوند، مـي تواننـد  يك روبات مسير ياب را تش كيل دهند . روبات مسير ياب كه در اين پـروژه اسـتفاده  شده ، يك روبات مسير ياب خط ساده مي باشـد كـه در حالـت كلـي از دوقـسمت  سخت افزار و نرم افزار تشكيل شده است . در اين بخش ، قسمت سخت افـزار آن را  همان مدارات الكترونيكي و هر چند به جز بخش نرم افزار مي ناميم بنـابراين بخـش  سخت افزار آن از قطعات الكترونيكي چون : 298L:IC كـه يـك درايـو بـا حـداكثر  جريان دهي A3 براي موتور هاي DC، 32ATMEGA , IC، كه يك ميكروكنترلر  AVR مي باشد كه در حقيقت مغز اين روبات به شمار مـي رود كـه تمـام عمليـات  پردازش و دستورات خروجي توسط اين ميكروكنترلر ص ورت ميگيرد/ سنـسورهاي

4

70CNY كــه از نــوع سنــسورهاي مــادون قرمــز مــي باشــند ؛ و قطعــاتي چــون  ترانزيستور945C، و دو عدد XY:78IC كـه رگولاتـور از سـري مثبـت مـي باشـد ،  LED ، ديود ، خازن ، كريستال ، و انواع مقاومت ؛ سـلف ، دو عـدد موتـور DC بـا  دور RPM600 ، دو عدد چرخ و همچنين س ه عـدد بـرد مـدارچاپي بـراي قـسمت  سنسورها، ميكروكنترلر AVR، و قسمت هاي درايو و به طور كلي آنالوگ مـدار مـي  باشد .

– قسمت نرم افزار آن نيز در 23 صفحه كه كاملاً در فصل ( ) ارائـه شـده آمـده  است. اين برنامه به زبان C نوشته شده كه روبات كاملاً تحت اين برنامه عمل مي كند  .در فصل هاي اين پايان نامه تمام بخش هاي سخت افزار و نرم افزار بـا توضـيحات  كامل ارائه شده و در فصل آخر نيز منابع و مراجعي كه از آن هـا بـراي تكميـل ايـن  پايان نامه استفاده شده ،ارائه گرديده است. در ضمن ايـن پايـان نامـه در 2 فـصل  تهيه و تنظيم گرديده است .

5

اول:

ا  ار

!

6

MEGA AVR   ‘ وآ    -1-1

در اين فصل بـه معرفـي ميكروكنترلـر 32 MEGA AT از سـري ميكروكنترلرهـاي  AVR شركت ATMEL مي پـردازيم . ميكروكنترلـر 32MEGA نـسبت بـه انـواع  (TINY,S 90AT (داراي قابليت بيشتري مـي باشـد . خـصوصيات و قابليـت ايـن  ميكروكنترلر ، كه از نوع AVR MEGA مي باشد و تشريح كامل آن و در ادامه فيوز  بيت هاي اين ميكروكنترلر به طور كامل بررسي شده است .

فيوز بيت ها قسمتي از حافظه FLASH هستند كه امكاناتي را در اختيار كاربر قـرار  ميدهند . فيوز بيت ها با ERASE ميكرو از بـين نمـي رونـد و مـي تواننـد توسـط  بيتهاي قفل مربوطه قفل شوند .

ت 32 ATMEGA 

– *

از معماري RISC AVR استفاده مي كند .

كارايي بالا و توان مصرفي كم

داراي IBI دستور العمل با كارايي بالا كه اكثراً تنها در يك كلاك سيكل اجـرا مـي  شوند .

8×32 رجيستر كاربردي

سرعتي تا MIPS16 در فركانس MHZ16  

  

 

7

*حافظه ، برنامه و دادة غير فرار  

– 32 بايت حافظه FLASH داخلي قابل برنامه ريزي

– پايـداري حافظــه FLASH : قابليــت 10/000 بـار نوشــتن و پــاك كــردن  (. WRITE/ERASE)

K2 بايت حافظه داخلي SRAM  

– بايت حافظة PROM EE داخلي قابل برنامه ريزي

– پايداري حافظة PROM EE : قابليت 100/000 بار نوشتن و پاك كردن  – قفل برنامه FLASH حفاظت داده EEPROM  

 (IEEE STD) JTAG ارتباط قابليت * 

LOCK BITS , FUSE BITS , EEPROM , برنامـه ريـزي برنامـه – FLASH از طريق ارتباط با JTAG  

 *خصوصيات جانبي  

– دو تايمر – كانتر ( COUNTER/TIMER (8 بيتي با PRESCALER مجزا  داراي حد PARE COM .

– يـك تـايمر – كـانتر 16 بيتـي بـاCALER PRES مجـزا و داراي مـدهاي

CAPTURE , COMPARE 

– 4 كانال مبدل آنالوگ به ديجيتال 10 بيتي

8

– داراي دو كانال تفاضلي با كنترل گين X1 ,X10 , X200  – يك مقايسه كنندةآنالوگ داخلي

– داراي RTC )CLOCK TIME-REAL (با اسيلاتور مجزا – WATCHDOG قابل برنامه ريزي با اسيلاتور داخلي

– ارتبــــاط ســــريال SPI بــــراي برنامــــه ريــــزي داخــــل مــــدار

(IN – SYSTEM PROGRANMING) 

– قابليت ارتباط سريال SPI به صورت MASTER – SLAVE 

– قابليت ارتباط با پروتكل سريال دو سير(WIRE -TWO( – USART سريال قابل برنامه ريزي

  • خصوصيات ويژه ميكروكنترلر  

 POWER- ON RESET CIRCUIT

BROWN- OUT DETECTION

داراي 6 حالت

(ADC NOLSEREDUCTION , EXTENDED STANDBY ,   STAND BY, POWER , SAVE , IDLE , POWER , DOWN) SLEEP  ولتاژهاي عملياتي ( كاري ) 

 (ATMEGA32L) براي 5.5V تا2.7V

(ATMEGA32) براي 5.5V تا 4.5V

9

*فركانس هاي كاري  

 (ATMEGA32L) براي 8MHZ تا 0 MHZ –   (ATMEGA32) براي 16MHZ تا 0 MHZ –  * خطوط O/I و انواع بستر بندي  

 – 32 خط ورودي / خروجي (O/I (قابل برنامه ريزي   – 40 پايه PDIP، 44 پايه TQFP و 44 پايه MLF    

  

  

  

  

  

  

  

  

 

10

U1

RESET 9

XTAL1 13

XTAL2 12

PA0/ADC0 40

PA1/ADC1 39

PA2/ADC2 38

PA3/ADC3 37

PA4/ADC4 36

PA5/ADC5 35

PA6/ADC6 34

PA7/ADC7 33

PB0/XCK/T0 1

PB1/T1 2

PB2/INT2/AIN0 3

PB3/OC0/AIN1 4

PB4/SS 5

PB5/MOSI 6

PB6/MISO 7

PB7/SCK 8

ATMEGA32

 

*تركيب پايه  

PC0/SCL 22

PC1/SDA 23

PC2/TCK 24

PC3/TMS 25

PC4/TDO 26

PC5/TDI 27

PC6/TOSC1 28

PC7/TOSC2 29

PD0/RXD 14

PD1/TXD 15

PD2/INT0 16

PD3/INT1 17

PD4/OC1B 18

PD5/OC1A 19

PD6/ICP 20

PD7/OC2 21

AVCC 30

AREF 32

شكل 11 تركيب بسته بندي 32ATMEGA  

 

11

ي 32ATMEGA 

ه

–    ز  –

32ATMEGA داراي دو بايت فيوز بيت مي باشد كه ذيل به آنها خواهيم پرداخت : OCDEN: در صورتي كه قفل برنامه ريزي نشده باشند برنامه ريـزي ايـن بيـت بـه  همراه بيت JTAGEM باعث مي شود كه سيستم DEBUG CHIP ON فعال شـ ود  . برنامهريزي شدن اين بيت به قسمت هايي از ميكرو امكان مي دهد كـه در مـدهاي  SLEEP كار كند كه اين خود باعث افزايش مصرف تسليم مي شـود . ايـن بيـت بـه  صورت پيش فرض برنامه ريزي نشده است .

JTAGEN: بيتي براي فعال سازي برنامه ريزي ميكرو از طريق اسـتاندارد ارتبـاطي  TEEE ) JTAG (كه در حالت پيش فرض فعال است و ميكـرو مـي توانـد از ايـن  ارتباط براي برنامه ريزي خود استفاده نمايد . پايـه هـاي .5…2PC در ايـن ارتبـاط  استفاده مي شوند .

SPIEN: در حالت پيش فرض برنامه ريـزي شـده و ميكـرو از طريـق سـريال SPI برنامهريزي مي شود .

CROPT: انتخاب كلا ك كه به صـورت پـيش فـرض برنامـه ريـزي نـشده اسـت .  عملكرد اين بيت بستگي به بيت هاي CKSEL دارد .

EESAVE: در حالـت پـيش فـرض برنامـه ريـزي نـشده و در زمـان پـاك شـدن  (ERASE (ميكرو حافظة EEPROM پاك مي شـود ولـي در صـورتي كـه برنامـه  ريزي شود محتويات EEPROM در زمان پاك شدن ميكرو محفوظ مي ماند .

12

1 , 0 BOOTSZ: براي انتخاب مقدار حافظه BOOT برنامه ريزي خواهد شـد و در  زمان برنامه ريزي شدن فيوز بيت RST BOOT اجراي برنامه از ايـن آدرس حافظـه  BOOT آغاز خواهد شد .

BOOTRST: انتخاب برداري ست BOOT كه در حالت پيش فرض برنامـه ريـزي  نشده و آدرس برداري ست 50000 است و در صورت برنامه ريزي اين بيـت آدرس  برداري ست به آدرسي كه فيوز بيت هـاي 0ST BOOT , 1 ST BOOT مـشخص  كرده اند، تغيير مي يابد .

BODLEVEL: زماني كه اين بيت برنامه ريزي نشده ( پيش فرض ) باشد اگر ولتاژ  پايه VCC از V2.7 پايين تر شود ري ست داخلي ميكرو فعا ل شده و سيـستم 8 ري  ست مي كند . زماني كه اين بيت برنامه ريزي شده باشد اگـر ولتـاژ پايـة ??? از ؟؟؟

پايين تر شود ري ست داخلي ميكرو فعال شده و ميكرو را ري ست مي كند . BODEN: براي فعال كردن عملكـرد مـدار OUT – BROWN ايـن بيـت بايـستي  برنامهريزي شده باشد اين بيت به صورت پيش فرض برنامه ريزي نشده است   0 SUT , 1 SUT : براي انتخاب زمان UP – START بكار برده مي شود

0CKSEL 3-CKSEL : مقدار پيش فرض كلاك براي اين ميكـرو INTERNAL . است RC OSCILATOR @ 1MHZ 

 

13

ي     و 32 ATMEGA 

-ر0   /رت ه

– در اين بخش قصد داريم براي آشنايي بيشت ر با عملكرد پورت هـا و رجيـسترهاي  مربوطه به طور نمونه به بررسي پورت هاي ميكرو 32 ATMEGA بپردازيم .  – پورت A :

-پـورت A : يـك O/I دو طرفـه 8 بيتـي اسـت . سـه آدرس از مكـان حافظـه O/I اختـصاص بـه A PORT دارد. يـك آدرس بـراي رجيـستر داده پـورت A PORT  ورودي رجيستر جهت داده DORA و سومي پايـه ورودي پـورت A PINA اسـت

آدرس پايه هاي ورودي پورت A فقط قابل خواندن است . در صورتي كـه رجيـستر  داده و رجيستر جهت داده هم خواندني و هم نوشتني هستند .

تمام پايه هاي پورت داراي مقاومت UP -PULL مجزا هستند بافر خروجي پـورت  A جرياني با MOL 20 & SINK مي كند و در نتيجه مـي توانـد LED را مـستقيماً   راهاندازي كند. هنگامي كه پايه هاي 7PA -PAO با مقاومت هاي DOON – PALL خارجي به عنوان خروجي استفاده مي شـوندن آنهـا SOURCE جريـان مـي شـوند  زماني كه مقاومت هاي UP -PALL داخلي فعال باشند .

– استفاده از پورت Aبه عنوان يك O/I عمومي ديجيتال : 

تمام 8 پايه مربرد (7PA0-PA (زماني كه به عنوان پايه هاي O/I ديجيتـال اسـتفاده   ميشوند داراي عملكرد مساوي هستند . PAN پايه O/I عمومي : بيت ODAN يـك

14

باشد ، PAN بعنوان يك پايه خروجي مورد استفاده قرار مـي گيـرد و اگـر DDAN صفر باشد . PAN بعنوان يك پايه ورودي در نظر گرفته مي شـود اگـر AN PORT يك باشد هنگامي كه پايه به عنوان ورودي تعريف شود ، مقاومت UP PULL فعال   ميشود . براي غير فعال كردن مقاومت بايد AN PORT صفر شود يا اينكه پايـه بـه  عنوان خروجي تعريف شود پايه هاي پورت زماني كه ري ست اتفـاق مـي افتـد بـه  حالت STATE – TRI مي روند .

ديگر كاربردهاي پورت A :

پورت A به عنوان ADC هم استفاده مي شود اين نكته بـسيار مهـم اسـت كـه اگـر  تعدادي از پايه هاي پـورت Aخروجـي تعريـف شـوند در زمـان نمونـه بـرداري از  سيگنال آنالوگ توسط ADC، سوئيچ نشوند . اين كار ممكن اسـت عمليـات تبـديل  ADC ا ر معتبر كند .

پورت B :

پورت B يك O/I دو طرفه 8 بيتي است . سه آدرس از مكان حافظه O/I اختصاص  به B PORT دارد. يك آدرس براي رجيستر داده B PORT دومي رجيـستر جهـت  داده RB DD و سومي پايه ورودي پورت B ، PINB است آدرس پايه هاي ورودي  پورت B فقط قابل خواندن است . در صور تي كه رجيستر داده و رجيـستر داده هـم  خواندني و هم نوشتني هستند پايه هاي پـورت داراي مقاومـت UP -PULL مجـزا

15

هستند. بافر خروجي پروت Bجرياني تا MA20 را SINKكند و در نتيجه مي توانـد  LED را مستقيماًراه اندازي كند . هنگامي كه 7PB-PBO با مقاومت هـاي -PULL DOWN ، به ع نوان خروجي استفاده مي شوند آنهـا SOURCE جريـان مـي شـوند  زماني كه مقاومت هاي UP -PULL داخلي فعال مي باشند .

– استفاده از پورت B به عنوان يك O/I عمومي ديجيتال : 

تمام 8 پايه موجود زماني كه به عنوان پايـه هـاي O/I ديجيتـال اسـتفاده مـي شـوند  داراي عملكرد مساوي هستند .PBN، پايه O/I عمـومي : بيـت DDBN در رجيـستر  DDRB مشخص كنندة جهت پايه است .

اگر DDBN يك باشد ، PBN به عنوان يك پايه خروجي مـورد اسـتفاده قـرار مـي  گيرد و اگر DDBN صفر باشد، PBN به عنوان يك پايه ورودي مورد اسـتفاده قـرار  مي گيرد اگر BN PORT يك باشد ، هنگامي كه پايه به عنوان ورودي تعريف شود

، مقاومت UP -PULL فعال مي شود . براي خاموش كردن مقاومـت UP – PULL بايد BN PORT صفر شود يا اينكه پايه به عنوان خروجي تعريف شـود پايـه هـاي  پورت زماني كه ري ست اتفاق مي افتد به حالت STATE -TRI مي روند .

 

 

16

– ديگر كاربردهاي پورت B :

 

 

PORT B.7-SCK*

SCK: كلاك خروجي MASTER و كلاك ورودي SLAVE براي ارتبـاط SPI است زماني كه SPI به عنوان SLAVE شكل دهي مي شود اين پايه با توجه بـه  تنظيم 6DDB و در حالت SLAVE بعنوان خروجي استفاده مي شود .  PORT B.5-MOSI*

MOSI: ورودي داده SLAVE و خروجــي داده MASTER كــه بــراي ارتبــاط  SPIاستفاده مي شود زماني كه SPI به عنوان MASTER شكل دهـي مـي شـود  اين پايه با توجه به تنظيمات 5DDB خروجي و در حالـت SLAVE بـه عنـوان  ورودي استفاده مي شود .

PORT B.4- SS *

SS :زماني كه SPI به عنوان SLAVE شكل دهي مي شـود . .4PB بـا توجـه بـه  4DDB ورودي تعريف مي شود و در SLAVE با LOW شـدن ايـن پايـه SPI فعال مي شود .اين پايه در MASTER مي تواند خروجي يا ورودي تعريف شود  .

17

PORTB.3-OCO,AIN1*

1AIN– ورودي منفي مقايسه كننده آنالوگ است

OCO– ديگــر كــاربرد ايــن پايــه بــه عنــوان خروجــي مــد مقايــسه اي  COUNTERO/TIMER است پايه 3PB با يك كردن 7 DDB مي تواند بـراي  خروجي مد مقايسه اي COUNTERO / TIMER شكل دهي شو .د

PORT B.2-INT2 , AIN0 

0AIN: ورودي مثبت مقايسه كنندة آنالوگ است

2INT : ديگر كاربرد اين پايه به عنوان منبع وقفة خارجي دو اسـت . پايـة 2PB مي تواند به عنوان منبع وقفه خارجي براي ميكرو استفاده شود .

PORT B.1-T1 

1T: ورودي كلاك براي CONTER /TIMER است .

PORT B.O-XCK , TO 

TO: ورودي كلاك براي 0COUMTER /TIMER است .

XCK: اين پايه نيز مي تواند به عنوان كلاك خـارجي USART اسـتفاده شـود .  اين پايه فقط زماني كه USART درمد آسنكرون كار مي كند فعال مي شود . *پورت C  

 پورت C يك O/I دو طرفـه 8 بيتـي اسـت . سـه آدرس از مكـان حلقطـه O/I اختصاص به C PORT دارد يك آدرس براي رجيستر داده پـورت C PORT،

18

دومي رجيستر جهت داده DDRC و سومي پايه ورودي پـورت رجيـستر جهـت  داده هم خواندني و هم نوشتني هـستند تمـام پايـه هـاي پـورت داراي مقا ومـت  (DOWN-PULL (، خروجي استفاده مـي شـوند آنهـا SOURCE جريـان مـي  شوند .

زماني كه مقاومت هاي UP -PULL داخلي فعال باشند .

استفاده از C PORT به عنوان O/I عمومي ديجيتال :

تمام 8 پايه موجود زماني كه به عنون پايه هـاي O/I ديجيتـال اسـتفاده مـي شـوند ،  داراي عملكرد مساوي هستند .

PCN: پايه O/I عمومي : بيت DDCN در رجيستر DDRC مشخص كننـدة جهـت  پايه است و . PCN به عنوان يك پايه ورودي در نظر گرفته مـي شـود اگـر PORT CN يك باشد ، هنگامي كه پايه به عنوان ورودي تعريف شـود مقاومـت – PULL UP فعال مي شود براي خـاموش كـردن مقاومـت UP – PULL بايـد CN PORT صفر شود يا اينكه پايه به عنوان خروجي تعريف شود پايه هاي پورت در زمـاني كـه  ري ست ، اتفاق مي افتد به حالت STATE -TRI مي روند .

ديگر كاربردهاي پورت C  

 PORT C 7- TOSC2

19

2OSC T :زماني كه تايمر / كانتر 2 در آمد سنكرون كار مي كند. به اين پايه و پايـه   1TOSC كريستال ساعت متصل مي شود . در اين حالت ديگر نميتوان ايـن پايـه را  به عنوان O/Iاستفاده نمود .

PORTC.6-TOSC1*

1TOSC : زماني كه تايمر / كانتر 2 در حد آسنكرون كار مي كند به اين پايه و پايه  1 TOSC كريستال متصل مي شود در اين حالت ديگـر نمـي تـوان ايـن پايـه را بـه  عنوان O/I استفاده نمود .

PORT C.5- TDI*

TDI »در زمان ارتباط JTAG به عنوان ورودي داده سريال عمـل مـي كنـد و ديگـر  نميتوان از آن پايه به عنوان O/I استفاده نمود .

 

 

PORT C.4- TDO *

TDO– در زمان ارتباط JTAG ، به عنوان خروجي داده سريال عمل مي كند و ديگر  نمي توان از اين پايه به عنوان O/I استفاده نمود .

PORT C.3- TMS 

TMS : در زمان ارتباط JTAG استفاده مي شود و ديگر نمي تـوان از ايـن پايـه بـه  عنوان O/I استفاده نمود .

20

PORT C.2-TCK*

TCK: در زمان ارتباط JTAG استفاده مي شود و ديگر نمـي تـوان از ايـن پايـه بـه  عنوان O/I استفاده نم .ود

PORT C.1- SDA*

SDA: در زمان ارتباط WIRE 2- به عنوان خط داده استفاده مي شود .  PORT C.O-SCL *

SCL: در زمان ارتباط WIRE 2- به عنوان خط كلاك استفاده مي شود . ـ پورت D :

پورت D يك O/I دو طرفه 8 بيتي است . سه آدرس از مكان حافظه O/I اختصاص  به O PORT دارد

يك آدرس براي رجيـستر داده D PORT، دومـي رجيـستر جهـت داده DDRD و  سومي پايه ورودي پورت D، PIND است .

آدرس پايه هاي ورودي پورت Dفقط قابل خواندن است در صـورتي كـه رجيـستر  داده جهت داده هم خواندني و هـم نوشـتني هـستند تمـام پايـه هـاي پـورت داراي  مقاومت UP -PULL مجزا هستند .

بافر خروجي D PORT مي توانـد تـا MA20 را SINK كنـد و در نتيجـه LED را  مستقيماً راه اندازي مي كنـد هنگـامي كـه 7PD 0-PD بـا مقاومـت هـاي -PULL

21

DOWN به عنوان خروجي استفاده مي شوند آنهـا SOURCE جريـان مـي شـوند ،  زماني كه مقاومت هاي UP -PULL داخلي فعال باشند .

– استفاده از پورت D به عنوان O/I عمومي ديجيتال  

تمام 8 پايه موجود زماني كه به عنوان پايـه هـاي O/I ديجيتـال اسـتفاده مـي شـوند  داراي عملكرد مساوي هستند .

PDN: پاية O/I عمومي : بيت DDDN در رجيستر DDRD مشخص كنندة جهت  پايه است .

اگر DDDN يك باشد، PDN به عنوان يك پايه خروجـي مـورد اسـتفاده قـرار مـي  گيرد و اگر DDDN صفر باشد ، PDN به عنوان يك پايه ورودي در نظر گرفته مـي  شود اگر DN PORT يك باشد هنگامي كه به عنوان ورودي تعريف شـود، مقاومـت  UP-PULL فعـال مـي شـود . بـراي خـاموش كـردن مقاومـت UP -PULL بايـد  DN -PORT صفر شود يا اينكه پايه به عنوان خروجـي تعريـف شـود . پايـه هـاي

پورت در زماني كه ري ست اتفاق مي افتد به حالت STATE – TRI مي روند  – ديگر كاربردهاي پورت D  

  

 

22

 

PORT S.7- OC2* 

2OC: خروجي در مقايسه اي تايمر / كانتر 2 7PD بــا يــك شــدن  7DDD مي تواند به عنوان پايه خروجي مد مقايـسه اي 2 COUNTER / TIMER شكل دهي شود . اين پايه همچنين براي خروجي PWM تايمر استفاده مي شود .  PORT D.6-ICP*

ICP6:PD مي تواند به عنوان پايه ورودي CAPTURE تايمر / كانتر 1 عمل كند .

: PORTD.5- OC1A*

A1OC: خروجي مد مقايسه اي 1 COONTER/ TIMER پايه PDSبا يـك شـدن  5DDD مي تواند براي خروجي مد مقاسه اي COUNTER /TIMER شكل دهـي  شود . اين پايه همچنين براي خروجي PWM تايمر 1 استفاده مي شود .

 

 

PORTD.4-OC1B

B1OC : خروجي مد مقايسه اي 1COUNTER /TIMER 

23

پايــه 4PD بــا يــك شــدن 4DDD مــي تواننــد بــراي خروجــي مــد مقايــسه اي  COUNTROL/TIMER شكل دهي شود . اين پايه همچن ين براي خروجي PWM تايمر استفاده مي شود .

PORTD.3-INT1

1INT : منبع وقفه خارجي يك

پايه 3PD مي تواند به عنوان منبع وقفه خارجي براي ميكرو استفاده شود .  ORTD.2-INT0*

0INT منبع وقفه خارجي صفر

پايه 2PD مي تواند به عنوان منبع وقفه خارجي براي ميكرو استفاده شود   ORT D.1-TXD*

TXD: ارسال داده (پايه خروجي داده براي USART(

زماني كه ارسال USART فعال مي شود بايد با توجه به 1DDD به عنوان خروجـي  شكل دهي مي شود .

ORT D.0-RXD*

RXD: دريافت داده ( پايه ورودي داده براي USART(

زماني كه دريافت USART فعال مي شود پايه با توجه به 0DDD به عنـوان ورودي  شكل دهي مي شود .

24

-2-1 LC درا 1ر 298L 

يكي از قطعات مناسب جهت راه اندازي موتور است كه بـا توجـه بـه جريـان دهـي  مناسب (تا يك آمپر درهر كانال ) مي تواند نياز بسياري 298L درايو را از پروژه هـا  مرتفع سازد . اين قطعه با مدار ارائه شـده ميتوانـد و موتـو ر را بـه صـورت مجـزا راه  اندازي كرده و جهت گردش آنها را كنترل نمايد . اين كنترل توسط اعمال ولتاژ بـه  4 ورودي منطقي كه قطعه صورت مي گيرد .( براي هـر موتـو دو ورودي ) كـه مـي  توان خروجي ميكرو كنترلر يا مدارات حسگر را بصورت مستقيم بـه ايـن 4 ورودي  متصل نمود و به راحتي موتور را كنترل كرد . در صورتي كه از ايـن قطعـه بـراي راه  اندازي موتور هاي روبات خود بهره مـي گيريـد دقـت كنيـد كـه حتمـاً بـرروي آن  حرارت گيري مناسب وصل نماييد .

 

 

 

 

 

 

 

25

+5 V

R1

10k

+5 v

R2

10k

VS

9 U1 4

 

9 V 9 V

D2

1N4001

D1

1N4001

D4

1N4001

D3

1N4001

IN1 5IN2 7 IN3 10IN4 12 ENA 6

VCC

VS

OUT1 2 OUT2 3

9 v 9 V

ENB 11 OUT3 13

SENSA 1SENSB 15 GND 8

OUT4 14

L298

شكل –21IC درايور 298L  

D8

1N4001

D5

1N4001

 

  

  

 

D6

1N4001

D7

1N4001

26

ي 298L 

1 ه

ـ  3 4 /

L248 PIN DESCRIPTION 

 PIN 1- CUROENT SENSINGA 

 اين پايه جهت كنترل جريان موتور Aاستفاده مي گردد . همچنين مي توان ايـن پايـه  را به صورت مستقيم به خط منفي مدار (GND (وصل كرد كه در اين صورت كنترل  برروي جريان وجود ندارد .

PIN2- OUT PUT 1-  

اين پايه به يكي از ترمينال هاي موتور Aمتصل مي گردد همچنين ديود هـائي جهـت  حفاظت به همين پايه متصل مي شود .

PIN3-OUT PUT 2

اين پين به ترمينال ديگر موتور Aمتصل شده و ديودهائي نيز به آن متصل مي شود .  (PIN4- SUPPLY VOLTAGE)SV

به اين پايه بايد ولتاژ مورد نظر خود جهت اعمال بـه موتورهـا را وصـل نمـود . ايـن  ولتاژ با توجه به موتورها ي مورد استفاده حداكثر تا 46 ولت مي تواند افزايش يابـد (  براي ساخت روبات هاي كوچك به طور معمول بين 6 تا 12 وات مي باشد )  PIN5.INPUT2 TTL COMPATIBLE 1 TO DRIVE MOTOR A

27

اين پايه بايد به صفر يا 3 ولت وصل شود كه همراه با پين 7 مي تواند جهت گردش  موتور را مشخص نماي .د

PIN 6 .ENABLE A TTL COMPATIBLE ENABLE IN PUT FOR   MOTOR A-  

اين پايه جهت روشن و خاموش كردن موتـور A و در بيـشتر مواقـع جهـت اعمـال  فركانس PWM به موتور استفاده مي گردد . ( V3 مـواور را روشـن و V0 موتـور را  خاموش مي كند )

PIN 7.INPUT 2 TTL COMPATIBLE IN PUTS2 TO DRIVE MOTOR A- اين پايه بايد به صفر يا 5 ولت متصل گردد كه همـراه بـا پـين 5 مـي توانـد جهـت

گردش موتور رامشخص نمايد .

PIN 8 .GND 

اتصال به خط منفي مدار GND  

 PIN 9.(LOGIC SUPPLY VOLTAGE)VSS 

اتصال به 5 تا 7 ولت

PIN 10 – INPUT 3 TTL COMPATIBLE INPUTS 1 TO DRIVE MOTOR B– اين پايه بايد به صفر يا 3 ولت متصل گردد كه همراه با پـين 12 مـي تواننـد جهـت  گردش موتور B را مشخص نمايئد .

PIN 11.ENABLE B TTL COMPATIBLE IN PUT FOR MOTOR B-

28

اين پايه جهت روشن و خاموش كـردن موتـور Bو در بيـشتر مواقـع جهـت اعمـال  فركانس PWM به موتور استفاده مي گردد . پنج ولت موتور را روشـن وصـفر ولـت  موتور را خاموش مي كند .

PIN 12- INPUT 4TTL COMPATIBLE IN PUTS 2 TO DRIVE MOTOR B- اين پايه بايد به صفر يا پنج ولت متصل گردد كه همراه با پين 10 مي تواننـد جهـت

گردش موتور B را مشخص نمايند .

PIN 13- OUTPUT3-  

اين پايه به يكي از ترمينال هاي موتور Bمنتقـل مـي گـردد همچنـين ديودهـائي نيـز  جهت حفاظت به همين پايه متصل مي گردد .

PIN 14 .OUT POT 4-  

اين ترمينال به ديگر موتور Bمتصل مي گردد . همچنين ديودهاي جهت حفاظـت بـه  اين پايه متصل مي گردد .

PIN15.CURRENT SENSINGB- 

اين پايه جهت كنترل جريان موتور Bاستفاده مي گردد همچنين مي توان اين پايـه را  به صورت مستقيم به خط منفي دار GNDاتصال داد كه در اين صـورت كنترلـي بـر  روي جريان وجود ندارد .

دون  5  70CNY:

6  –31ر

29

اين سنسور يكي از رايج ترين سنسورهاي استفاده شده در روبـات مـسير يـاب مـي  باشد . اين سنسور داراي بردي حداكثر تا CM2.5 مي باشد كه مدار آن بصورت زير  ارائه گرديده است .

 

+5 v

+5 V

 

 

A

K

R1 220

E

C

RV1

20 k

R2

47 k

شكل –31 مدار70CNY 

برنامة مربط به اين سنسور براي سيستم روبات : به صورت زير است

CONFIG ADC  

START ADC  

DO  

A=GET ADC(0)  

IF A > 696 THEM 

30

SET PORT D.6  

ELSE  

RESET PORT D.6  

END IF  

LOOP  

END  

POWER SUPPLY-4-1

از اين مدار براي تغذية كل سيستم ( روبات ) استفاده مي شود كه بصورت زير ارائـه   ميگردد .

U1

78xx

VI 1VO 3

DC:9_15 V

BR1

C1

10uf

GND

2

C2

100nf

 

 

POWER SUPPLY 41 شكل 

  

 

31

-IC رگولاتور XX:76 اين IC از سري مثبت رگولاتور ها است كه براي ثبيت ولتـاژ  استفاده شده است

براي اين مدار از دو ICرگولاتور استفاده شده كه يكي از آنها براي خروجـي V12 طراحي شده كه به قسمت هائي چون درايور (298L (و برخي از قسمت هائي ديگر  مدار مي باشد (7812 )

IC رگولاتور :7805 اين IC نيز همانند قبلي از سري مثبـت مـي باشـد كـه بـراي  تغذية قسمت هائي چون ميكرو كنترلر AVR است فاده شده است . بنابراين اين سيستم  داراي دو IC رگولاتور است كه هر كدام براي منظوري خاص استفاده شده اند . – خازن ((v−16 ∝F10(: براي حذف نويز مي باشد .

– خازن (V-16NF100 (: اين خازن نيز براي حذف نويز مـي باشـد امـا نويزهـاي  فركانس بالا مي باشد .

پل د يودي : اين پل به اين منظور مورد استفاده قرار گرفته كه براي وصل تغذيه به  ورودي مدار ، مثبت يا منفي بودن ورودي مهم نباشند . يعني براي اتـصال نيـازي بـه  دانستن پلاريتة تغذية ورودي نيست .

 

 

 

32

ي DC 

ت –   : ر ه

7 $ رو-

-5-1 89

اين قسمت شامل سيستم حركتي روبات م ي شود . حركت روباتها با اسـتفاده از پـا،  چرخ يا ريل انجام مي شود . چرخها يا پاها را مي توان با موتورها ، سـولنوئيدها يـا  آلياژهاي حافظه دار (SMA (به حركت در آورد .

كه معمولاً در روباتهاي ابتدايي از موتور و چرخ استفاده مي شود .  در يـك پـروژه مكاترونيـك يـا ربوتيـك عـلاوه بـر قطعـات لازم جهـت سـاخت  قسمتهاي ذكر شده به يك يا چند منبع تغذيه هم نياز داريم .

 

قسمتهاي مختلف يك روبات كه نياز به منبع تغذيه دارد : 

 قسمتهاي الكتريكي ، مكانيكي شامل : موتورها و بخشهايي كه به صورت هيدروليك  و پنوماتيك كار مي كنند .

اگر روبات متحرك ب اشد بايد از باطري استفاده شود . اگر روبـات ثابـت باشـد مـي  توان از برق AC استفاده كرد چون تغذيه روباتها اكثراً برق DC ، مي باشـد بنـابراين  بايد برق AC را بوسيله يكسوساز و فيلتر به DC تبديل كرد .

33

يكي از مهمترين اجزاي يك روبوت نيروي محركه آن است براي حركت دادن سـاز ه  اي كه ساخته ايد نياز به انرژي مكانيكي داريد .اين انرژي معمولاً توسط يـك موتـور  الكتريكي تأمين مي شود . موتور الكتريكي يا اصطلاحĤً آرميچرها در واقع مبدل هاي  انرژي هستند موتورهاي الكتريكي مي توانند انـرژي الكتريكـي كـه ازترمينالهـاي آن  وارد مي شود رابه انرژي مكا نيكي تبيدل كنند انـرژي مكـانيكي معمـولاً بـه صـورت  دوران در شافت (محور ) موتور ظـاهر مـي شـود .دوران ايـن محـور ( شـافت ) دو  مشخصه اساسي دارد . يكي سرعت دوران آن و ديگري قدرت آن . از ضرب سرعت  خطي ( متر بر ثانيه ) در نيروي موتور مي توانيد توان نهـايي خروجـي آن را محاسـبه  كنيد .

همان طور كه گفته شد يك موتور الكتريكي ، الكتريسته رابه حركت مكانيكي تبديل  مي كند عمل عكس آن تبديل حركت مكانيكي به الكتريسيته اسـت توسـط ژنراتـور  انجام مي شود اين دو وسيله بـه جـز در عملكـرد ، مـشابه يكـديگر هـستند . اكثـر  موتورهاي الكتريكي توسط الكترومغناطيس ك ار مي كنند . اما موتورهايي كه بر اساس  پديده هاي ديگري نظير نيروي الكترواستاتيك و اثر پيزوالكتريك كار مي كننـد، هـم  وجود دارند .

ايده كلي اين است كه وقتي يك ماده حامل جريان الكتريسيته تحت اثر يـك ميـدان  مغناطيسي قرار مي گيرد ، نيرويي برروي آن ماده از سوي ميدان ا عمال مـي شـود در

34

يك موتور استوانه اي ، روتور به علت گشتاوري كه ناشـي از نيرويـي اسـت كـه بـه  فاصلهاي معين از محور روتور به روتور اعمال مي شود مي گردد .  همان طور كه گفته شد اغلب موتورهاي الكتريكي دوارنـد، امـا موتـور خطـي هـم  وجود دارند . در يك موتور دوار بخش متحرك كـ ( ه معمـولاً درون موتـور اسـت )  روتور و بخش ثابت استاتور خوانده مي شود . موتـور شـامل آهنرباهـاي الكتريكـي  است كه روي يك قابل سيم پيچي شده است گرچه اين قاب اغلب آرميچر خوانـده  مي شود اما اين واژه عموماً به غلط به كار برده مي شود . در واقع آرميچر آن بخـش  از موتور است كه به آن ولتاژ ورودي اعمال مي شود يا آن بخش از ژنراتـور اسـت  كه در آن ولتاژ خروجي ايجاد مي شـود بـا توجـه بـه طراحـي ماشـين ، هركـدام از  بخشهاي روتور يـا اسـتاتور مـي تواننـد بـه عنـوان آرميچـر باشـندو بـراي سـاختن  موتورهايي بسيار ساده كيتهايي را در مدارس استفاده مي كنند .

باتوجه به اينكه گفتيم موتور يك مبدل است ، اگر موتور شما ايـده آل باشـد تـوان  خروجي كه بدست مي آوريد با توان ورودي يعني انـرژي الكتريكـي مـصرف شـده  برابر خواهد بود . موتورهاي الكتريكي انواع مختلفي دارند از جمله استپ موتورها ،  سرور موتورها ، موتورهاي دي سي DC، موتورهاي …و AC 

 هريك از موتورهاي نام برده شده ويژگي خاصـي دارد مـثلاً اسـتپ موتورهـا داراي  دقت بالايي هستند و با توجه به نوع موتور مي توان دقت گردش موتور در حد چند

35

درجه كنترل نمود . از ويژگي هاي اساسي موتورهاي DC اين است كه جهت حركت  و سرعت حركت آنها به راحتي قابل كنترل است . با تغيير متوسط ولتاژ ورودي مـي  توانيد سرعت موتور را تغيير دهيد و بـا تغييـر پلاريتـه ( جهـت اتـصالي تغذيـه بـه  موتور) جهت دوران شافت تغيير خواهد نمود .

توان خروجي از ضرب سرعت در قـدرت و بااسـتفاده از فرمـول D.F=W بدسـت   ميآيد .بسته به كاركرد روبات ، توان مصرفي ، دقت لازم و پارامترهايي از ايـن نـوع  موتور روبات انتخاب مي شود .

بي شك يكي از مشخصه هاي اصلي موفقيت يـك روبـات انتخـاب صـحيح موتـور  محرك روبات مي باشد .

هنگام انتخاب موتور بايد به چه چيزهايي توجه داشت : 

-1 در دست بودن منبع تغذيه

-2 شرط يا عوامل راه اندازي

-3 مشخصه هاي راه اندازي ( گشتاور – سرعت ) مناسب

-4 سرعت عملكرد كار مطلوب

-5 قابليت كاركردن به جلووعقب

-6 مشخصه هاي شتاب ( وابسته به بار )

-7 بازده مناسب در بار اسمي

36

-8 توانايي تحمل اضافه بار

-9 اطمينان الكتريكي و حرارتي

-10 قابليت نگهداري و عمر مفيد

-11 ظاهر مكانيكي مناسب (اندازه ، وزن ، ميزان صدا ، محيط اطراف ) -12 پيچيدگي كنترل و هزينه

-13 ولتاژ 5 -8-4-1,V 

MA-2A50 جريان -14

ت :

ار رو-

:-61>1 ; آ

-1 پورت A)7PA.0-PA (اين پورت به عنوان ورودي ميكرو مـورد اسـتفاده قـرار  گرفته ورودي اين پورت ADC) تبديل سيگنال آنا لوگ بـه ديجيتـال ) مـي باشـد بـه  طوري كه هريك از سنسورها (8عدد ) و هريك از 7PA – 0PA وصل مي شوند.بـه  اين معني كه با فعال شدن هر سنسور خروجي آن بـه پـورت A رفتـه ودر آنجـا بـه  سـينگنال ديجيتـال تبـديل شـده و پـردازش لازم روي سنـسورمورد نظـر در MIC صورت مي گيرد و سپس توسط پور ت( -7PC.0-PC (كه به عنوان خروجي مد نظر

قرار گرفته ، به 8 عدد LED براي تستس عمل فعال بودن سنسورها مي رود . 2) پورت B).3PB.0-PB ( :اين پورت به عنوان خروجي مورد اسـتفاده قـرار گرفتـه  بطــوري كــه فرمــان لازم را از MIC) ميكــرو 32ATMEGA (بــه پايــه هــاي

37

4IN 1-IN) 4 -PUTT IN (درايور 296L برد و اين درايو را تحت كنترل خـود در  مي آورد .

3) همان طور كه از روي شكل هم مشخص مي باشد پورت هاي .7PC.0-PC به عنـوان  خروجي استفاده مي شوند .

بنابراين همانطور كه ملاحظه مي شود خروجي پورت C).7PC.0-PC (هر كدام بـه يـك  ترانزيستور 945C مي روند در كلكتور ايـن ترانزيـستور يـك LED قـرار گرفتـه ( بـراي  تقويت جريان و حفاظت از پورت C براي روشن شدن LED از اين مدار تقويـت كننـدة

يك ترانزيستوري ساده استفاده شده است ) در واقع پورت C، هر كـدام از .7PC – .0PC براي يك سنسور 70CNY قرارداده شده اند كه روشن شدن LED ها به اين معنـي اسـت  كه كدام سنسور در حال كار مي باشد .

يعني اگر .0PC خروجي (1) شد و LED را روشن كرد ، به اين معني است كـه سنـسور  اولي از سمت راست فعال است .

4) پورت D).5PD.4-PD (نيز به عنوان خروجي مورد استفاده مي باشند كه به پايـه هـاي  ENABLE) ENA , ENB (درايور 1298 مي روند و دستور فعال يا غير فعال بـودن ايـن  درايور را مشخص مي كند

بنابراين همان طور كه از شكل نيز ملاحظه مي شود . ،؛ سيستم اينگونه عمل ميكنـد كـه  ابتدا سنسورها خط مورد نظر را حس كرده ، بـه پـورت ورودي يعنـي PA كـه ADC مـي  باشد ، رفته و بعد از پردازش مد نظر به سه پورت خروجي (PD,PC,PB (رفتـه كـه B.P

38

به منظور فرمان دادن به 1298 C.P به منظور تست كار سنسور ها و D.P نيز جهت فعـال  كردن يا غير فعال كردن درايور 298L مورد استفاده قرار مي گيرند .

39

MOTOR1

D3

+

VS=15

D4

MOTOR2

D7

VS=15

D8

E

Vo(sensor 1) C

47K

VCC

VS=15

D2

D1

2

3

13

14

VS=15

D5

L298

D6

220

VCC

CNY70 A

K

1000UF Vs=15

VCC=5

4 9

OUT1

VS

VCC

OUT2

OUT3

OUT4

GND

SENSA

U2 8

IN1

IN2

IN3

ENA

ENB

SENSB

10

IN4

5

12

11

15

To Vo(Sensor5)

To Vo(Sensor2) To Vo(Sensor3) To Vo(Sensor4)

40

To Vo(Sensor6)

To Vo(Sensor7)

7

To Vo(Sensor8)

6

1

9

13

12

39

38

37

36

35

34

33

3

5

2

1

4

6

8

PA0/ADC0

PA1/ADC1

PA2/ADC2

PA3/ADC3

PA4/ADC4

PA5/ADC5

PA6/ADC6

PA7/ADC7

PB0/XCK/T0

PB2/INT2/AIN0

7

PB5/MOSI

RESET

XTAL1

XTAL2

PC6/TOSC1

PC7/TOSC2

PD4/OC1B

PB1/T1

PB3/OC0/AIN1

PB4/SS

PB7/SCK

PB6/MISO

PC0/SCL

PC1/SDA

PC3/TMS

PC4/TDO

PD0/RXD

PD2/INT0

PD3/INT1

PD5/OC1A

PD7/OC2

ATMEGA32

U1

22

23

PC2/TCK

PC5/TDI

PD1/TXD

PD6/ICP

AVCC

AREF

0.1UF

220

VCC=5

680

14

15

16

17

18

19

20

21

VCC

LED1

C945

220

24

25

26

27

28

29

To LED4

To LED5

To LED6

To LED7

To LED8

30

32

10UH

VCC=5

680

LED2 VCC=5

C945

680

220

C945

LED3

 

شكل 1 – 5 – مدار كامل روبات

40

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

شكل 61 PCB مدار روبات

41

دوم :  $م ا  ار

42

BASCON AUR 061 $   $ – = > -1-2

انواع متنوعي از كامپايلرهاي AVR عرضه شـده انـد كـه در ايـن ميـان كامپايلرهـاي   اعتبار و اهميت از AVR STUDIO , FASTAVR , CODVISION , BASCOM بيشتري برخوردار هستند . در اين فصل قصد داريم يكي از قديمي تـرين آنهـا را بـا  نــام AVR BASCOM ويــراينش 1.11.7.4 معرفــي كــرده و بــه آن بپــردازيم .  BASCOM تمــام ميكروهــاي AVR را حمايــت كــرده و از زبــان BASIC بــراي  برنامهنويسي AVR ها استفاده مي نمايد در اين فصل برحي منوهاي BASCOM بـه  طور كامل تشريح شده اند از قابليت هاي بسيار ارزنده محـيط BASCOM داشـتن  تحليـل گـر يـا بـه عبـارتي SIMULATOR داخلـي اسـت . كـه بـراي يـادگيري  برنامهنويسي AVR بسيار كار آمد است .

ورودي سيگنال آنالوگ ADC و مقايسه كنندة آنالوگ ، ايجاد پالس بر روي پايه اي  خاص ، صفحه كليد 4×4 و LCD ايجاد تمام وقفه ها بصورت اختياري ، نوشـتن و  خواندن ،حافظه هاي EEPROM , SRAM ، رويت تمـام رجيـسترها و متغيرهـاي  محلي و سراسري برنامه ؛ اجراي برنامه به صورت خط به خط ، رويت صفر يا يـك  بودن تمام پايه ها توسط LED تغيير منطق پايه دلخواه و بسياري از امكانـات ديگـر  توسط محيط تحليل گر SIMOLATOR و از همه مهمتر برنامه نويسي ساده باعـث

43

شده است كه اين كامپايلر در كنار ديگر كامپايلرهـاي معـروف مـورد تأييـد اسـتفاده  برنامه نويسان قرار گيرد .

 

6$ن :A  @و  -*0 د ? رات <ـ = BAS 

-2-2 دB :COM AVR 

اين دستور بعد يك متغير را نشان مي دهد با اين دستور مي توانيد متغيرهايي كه در  برنامه به كاربرده مي شود .تعريف كرد .

دستور CONST :

براي تعريف يك ثابت از اين دستور استفاده مي شود .

-دستور :ALIAS

از اين دستور براي تغيير نام استفاده مي شود .

-دستور CHR

از اين دستور براي تبديل متغيير عددي يا يك ثابت به كاراكتر اسـتفاده مـي شـود از  اين دستور ميتوان يد زماني كه قصدداريد يك كـاراكتر بـرروي LCD نمـايش دهيـد ،  استفاده نماييد . در صورتي كه از ايـن دسـتور بـه صـورت (VAR (CHR PRINT استفاده نماييد ، كاراكتر اسكي VAR به پورت سريال ارسال مي شود . – دستور INSTR

 اين دستور محل و موقعيت يك زير نوشته را دررشتة ديگر مشخص مي كند .

44

– دستورINCR

اين دستور يك واحد به متغيير عددي VAR مي افزايد

– دستور DECR

اين دستور متغير VAR را يك واحد كم مي كند .

-دستور CHECKSUM

اين دستور مجموع كد ؟؟ اسكي رشـته VAR را بـر مـي گردانـد كـه البتـه اگـر  مجموع كد اسكي رشته از عدد 255 بيشتر شـود ، مقـدار 256 از مجمـوع كـم   ميشود .

– دستور LOW

ايــن دســتور LSB)BYTE SIGNIFICANT LEAST (يــك متغييــر را بــر   ميگرداند .

– دستور HIGH

– اين دستور پر ارزش ترين بايت (MSB (يك متغيير را بر مي گرداند .(مقـدار  MSB متغيير S در VAR جاي مي گيرد )

– دستور LCASE

اين دستور تمام حروف رشتة مور دنظر را تبديل به حـروف كوچـك مـي كنـد (  تمام رشته SOARCE كوچك شده و در رشتة TARGET جاي داده مي شود )

45

– دستور UCASE

اين دستور تمام حروف رشته مورد نظر را تبديل به حروف بزرگ مي كند . – دستور RIGHT :  

با اين دستور قسمتي از يك رشته جدا مي كنيم .

-دستور :LEFT

 اين د ستور كاراكترهاي سمت چپ يـك رشـته را بـه تعـداد تعيـين شـده جـدا   مي .كند

-دستور LEN

اين دتسور طول يا به عبارتي تعداد كاراكترهاي يك رشته را بر مي گرداند . – دستور LTRIM

اين دستور فضاي خالي رشته را حذف مي كند .

-دستور SWAP

با اجراي اين دستور محتواي متغيير 1VAR در متغيـر 2 VAR و محتـواي متغيـر   2VAR در متغير 1 VAR قرار مي گيرد .

1 VAR , 2 VAR مي توانند داده هائي از نوع WORD , LONG – STRING . باشند , INTEGER , BYTE , BIT 

 

46

– دستور MID

 با اين دستور مي توان قسمتي از يك رشته را برداشت و يا قسمتي از يك رشـته  را با قسمتي از يك رشته ديگر عوض كرد .

-دستور ROTATE

با اين دستور مي توان تمام بيت ها را به چپ يا راست منتقـل كـرد ولـي تمـام  بيتها محفوظ هستند و هيج بيتي بيرون فرستاده نمي شود .

– دستور SPACE

براي ايجاد فضاي خالي از اين دستور استفاده مي شود

– تابع FORMAT

 اين دستور يك رشتة عددي را شكل دهي (FORMAT (مي كند . – تابع FUSING

اين دستور براي روند كردن رشته هاي عددي استفاده مي شود .

 

 

 

 

47

– برنامه كامل روبات  

” regfile = “m32def.dat$

crystal = 8000000$

 

Config Adc = Single , Prescaler = Auto , Reference = Avcc

Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down , Compare B   Pwm = Clear Down , Prescale = 64

 

Dim S0 As Word , S1 As Word , S2 As Word , S3 As Word , S4 As Word , S5 As  Word , S6 As Word , S7 As Word , Sensor As Byte , Mr As Word , Ml As Word ,  Mrf&Mlf As Byte , Mrf&Mlb As Byte , Mrb&Mlf As Byte , Mrb&Mlb As Byte ,

Mrs&Mlf As Byte , Mrf&Mls As Byte , Meshki As Bit , Sefid As Word  Config Portb = Output

Config Portd = Output

Config Portc = Output

Reset Portc

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&’  &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&ÊÚÇÑíÝ  Mrf&Mlf = &B00000101

Mrf&Mlb = &B00000110

Mrb&Mlf = &B00001001

Mrb&Mlb = &B00001010

Mrs&Mlf = &B00000001

Mrf&Mls = &B00000100

Mr = 0

Ml = 0

Sensor = 0

Meshki = 0

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&’  ÔÑæÚ ÈÑäÇãå

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

: Star

Start Adc

Do

Pwm1a = Ml + 25

Pwm1b = Mr + 25

 

( S0 = Getadc(0

If S0 > 360 Then

Set Portc.0

Set Sensor.7

Else

Reset Portc.0

Reset Sensor.7

End If

 

( S1 = Getadc(1

If S1 > 360 Then

48

Set Portc.1

Set Sensor.6

Else

Reset Portc.1   Reset Sensor.6   End If

 

( S2 = Getadc(2  If S2 > 360 Then  Set Portc.2

Set Sensor.5

Else

Reset Portc.2  Reset Sensor.5   End If

 

( S3 = Getadc(3  If S3 > 360 Then  Set Portc.3

Set Sensor.4

Else

Reset Portc.3   Reset Sensor.4   End If

 

 

( S4 = Getadc(4  If S4 > 360 Then  Set Portc.7

Set Sensor.3

Else

Reset Portc.7   Reset Sensor.3   End If

 

( S5 = Getadc(5  If S5 > 360 Then   Set Portc.6

Set Sensor.2

Else

Reset Portc.6   Reset Sensor.2   End If

 

( S6 = Getadc(6  If S6 > 360then   Set Portc.4

Set Sensor.1

Else

Reset Portc.4

49

Reset Sensor.1

End If

 

( S7 = Getadc(7

If S7 > 360 Then

Set Portc.5

Set Sensor.0

Else

Reset Portc.5

Reset Sensor.0

End If

If Meshki = 1 Then

Goto Meshki

End If

If Meshki = 0 Then

Goto Sefid

End If

 

 

 

******code*********************************************************’  ******************************************************

 

 

ÎØ ÑÇÓÊ Öãíäå ‘

ÓÝíÏ***************************************************************  ###############******##### OK

: Sefid

If Sensor = &B00011000 Then

Mr = 250

Ml = 250

Portb = Mrf&Mlf

Meshki = 0

Goto Star

End If

************************************’

If Sensor = &B00001000 Then

Mr = 200

Ml = 220

Portb = Mrf&Mlf

Meshki = 0

Goto Star

End If

************************************’

If Sensor = &B00010000 Then

Mr = 220

Ml = 200

Portb = Mrf&Mlf

50

Meshki = 0

Goto Star

End If

************************************’  If Sensor = &B00000001 Then

Mr = 200

Ml = 200

Portb = Mrb&Mlf

Meshki = 0

Goto Star

End If

************************************’  If Sensor = &B00000010 Then

Mr = 135

Ml = 150

Portb = Mrb&Mlf

Meshki = 0

Goto Star

End If

************************************’  If Sensor = &B00000100 Then

Mr = 190

Ml = 220

Portb = Mrf&Mlf

Meshki = 0

Goto Star

End If

************************************’  If Sensor = &B00100000 Then

Mr = 220

Ml = 190

Portb = Mrf&Mlf

Meshki = 0

Goto Star

End If

************************************’  If Sensor = &B01000000 Then

Mr = 165

Ml = 120

Portb = Mrf&Mlb

Meshki = 0

Goto Star

End If

************************************’  If Sensor = &B10000000 Then

Mr = 200

Ml = 180

Portb = Mrf&Mlb

Meshki = 0

Goto Star

51

End If

ÒÇæíå 90ÏÑÌå Öãíäå ÓÝíÏ1-;’

*******************************************************************  #########***###########OK

If Sensor = &B00011111 Then

Mr = 215

Ml = 200

Portb = Mrb&Mlf

Meshki = 0

Goto Star

End If

************************************’

If Sensor = &B00011110 Then

Mr = 215

Ml = 200

Portb = Mrb&Mlf

Meshki = 0

Goto Star

End If

************************************’

If Sensor = &B00011100 Then

Mr = 150

Ml = 150

Portb = Mrb&Mlf

Meshki = 0

Goto Star

End If

************************************’

If Sensor = &B00001111 Then

Mr = 215

Ml = 200

Portb = Mrb&Mlf

Meshki = 0

Goto Star

End If

************************************’

If Sensor = &B00000111 Then

Mr = 215

Ml = 200

Portb = Mrb&Mlf

Meshki = 0

Goto Star

End If

************************************’

If Sensor = &B00001100 Then

Mr = 110

Ml = 200

Portb = Mrb&Mlf

Meshki = 0

Goto Star

52

End If

 

ÒÇæíå 90ÏÑÌå Öãíäå ÓÝíÏ ;’

ÍÇáÊ2***********************************************************###  ############OK

If Sensor = &B11111000 Then

Mr = 265

Ml = 250

Portb = Mrf&Mlb

Meshki = 0

Goto Star

End If

************************************’

If Sensor = &B11110000 Then

Mr = 265

Ml = 250

Portb = Mrf&Mlb

Meshki = 0

Goto Star

End If

************************************’

If Sensor = &B11111000 Then

Mr = 265

Ml = 250

Portb = Mrf&Mlb

Meshki = 0

Goto Star

End If

************************************’

If Sensor = &B00111000 Then

Mr = 215

Ml = 200

Portb = Mrf&Mlb

Meshki = 0

Goto Star

End If

************************************’

If Sensor = &B00110000 Then

Mr = 250

Ml = 80

Portb = Mrf&Mlb

Meshki = 0

Goto Star

End If

 

 

ÈÑæÇäå-;’

*******************************************************************  ##########**********************##########OK

If Sensor = &B01111110 Then

53

Mr = 200

Ml = 200

Portb = Mrf&Mlf

Meshki = 0

Goto Star

End If

************************************’  If Sensor = &B00111100 Then

Mr = 200

Ml = 200

Portb = Mrf&Mlf

Meshki = 0

Goto Star

End If

************************************’  If Sensor = &B00111000 Then

Mr = 200

Ml = 200

Portb = Mrf&Mlb

Meshki = 0

Goto Star

End If

************************************’  If Sensor = &B00111110 Then

Mr = 135

Ml = 120

Portb = Mrb&Mlf

Meshki = 0

Goto Star

End If

************************************’  If Sensor = &B01111000 Then

Mr = 300

Ml = 150

Portb = Mrf&Mlb

Meshki = 0

Goto Star

End If

************************************’  If Sensor = &B01111100 Then

Mr = 200

Ml = 150

Portb = Mrf&Mlb

Meshki = 0

Goto Star

End If

************************************’  If Sensor = &B00110000 Then

Mr = 300

Ml = 100

54

Portb = Mrf&Mlf

Meshki = 0

Goto Star

End If

–äíã ÏÇíÑå ÍÇáÊ1;’

*******************************************************************  **********

If Sensor = &B00011100 Then

Mr = 180

Ml = 180

Portb = Mrf&Mlf

Meshki = 0

Goto Star

End If

************************************’

If Sensor = &B00011110 Then

Mr = 250

Ml = 250

Portb = Mrb&Mlf

Meshki = 0

Goto Star

End If

************************************’

If Sensor = &B00100000 Then

Mr = 250

Ml = 110

Portb = Mrf&Mlf

Meshki = 0

Goto Star

End If

************************************’

If Sensor = &B01000000 Then

Mr = 260

Ml = 100

Portb = Mrf&Mlb

Goto Star

End If

************************************”

If Sensor = &B10000000 Then

Mr = 200

Ml = 180

Portb = Mrf&Mlb

Meshki = 0

Goto Star

End If

************************************’

If Sensor = &B00001000 Then

Mr = 165

Ml = 300

Portb = Mrf&Mlf

55

Meshki = 0

Goto Star

End If

************************************’  If Sensor = &B00000100 Then

Mr = 160

Ml = 300

Portb = Mrf&Mlf

Meshki = 0

Goto Star

End If

************************************’  If Sensor = &B00000010 Then

Mr = 100

Ml = 300

Portb = Mrb&Mlf

Meshki = 0

Goto Star

End If

************************************’  If Sensor = &B00000001 Then

Mr = 200

Ml = 200

Portb = Mrb&Mlf

Meshki = 0

Goto Star

End If

***********************************’;’  If Sensor = &B00111111 Then

Mr = 200

Ml = 180

Portb = Mrf&Mlf

Meshki = 0

Goto Star

End If

************************************’  If Sensor = &B00111110 Then

Mr = 165

Ml = 250

Portb = Mrf&Mlf

Meshki = 0

Goto Star

End If

************************************’  If Sensor = &B00011110 Then

Mr = 165

Ml = 250

Portb = Mrf&Mlf

Meshki = 0

Goto Star

56

End If

äíã ÏÇíÑå ÍÇáÊ ;’

2’******************************************************************  ########***************#######OK

If Sensor = &B00111000 Then

Mr = 250

Ml = 100

Portb = Mrf&Mlb

Meshki = 0

Goto Star

End If

************************************”

: A59

If Sensor = &B01111000 Then

Mr = 315

Ml = 200

Portb = Mrf&Mlf

Meshki = 0

Goto Star

End If

************************************’;’

If Sensor = &B11111000 Then

Mr = 265

Ml = 250

Portb = Mrf&Mlb

Meshki = 0

Goto Star

End If

************************************’;’

If Sensor = &B00010000 Then

Mr = 250

Ml = 120

Portb = Mrf&Mlf

Meshki = 0

Goto Star

End If

************************************’;’

If Sensor = &B00110000 Then

Mr = 250

Ml = 100

Portb = Mrf&Mlf

Meshki = 0

Goto Star

End If

************************************’;’

If Sensor = &B01110000 Then

Mr = 300

Ml = 150

Portb = Mrf&Mlf

Meshki = 0

57

Goto Star

End If

************************************’;’ : A64

If Sensor = &B00000100 Then

Mr = 110

Ml = 250

Portb = Mrf&Mlf

Meshki = 0

Goto Star

End If

************************************’;’

If Sensor = &B00001100 Then

Mr = 120

Ml = 350

Portb = Mrf&Mlf

Meshki = 0

Goto Star

End If

************************************’;’  If Sensor = &B00001110 Then

Mr = 120

Ml = 350

Portb = Mrf&Mlf

Meshki = 0

Goto Star

End If

************************************’;’  If Sensor = &B00001111 Then

Mr = 265

Ml = 180

Portb = Mrb&Mlf

Meshki = 0

Goto Star

End If

************************************’;’ : A68

If Sensor = &B11000000 Then

Mr = 265

Ml = 250

Portb = Mrf&Mlb

Meshki = 0

Goto Star

End If

************************************’;’  If Sensor = &B00000111 Then

Mr = 265

Ml = 220

Portb = Mrf&Mlf

58

Meshki = 0

Goto Star

End If

************************************’;’

If Sensor = &B00000001 Then

Mr = 200

Ml = 200

Portb = Mrb&Mlf

Meshki = 0

Goto Star

End If

************************************’;’

If Sensor = &B10000000 Then

Mr = 200

Ml = 180

Portb = Mrf&Mlb

Meshki = 0

Goto Star

End If

 

-ãÇÑ;’

*******************************************************************’  ************************

If Sensor = &B00110000 Then

Mr = 250

Ml = 180

Portb = Mrf&Mlf

Meshki = 0

Goto Star

End If

************************************’;’

: A76

If Sensor = &B00011001 Then

Mr = 140

Ml = 200

Portb = Mrf&Mlf

Meshki = 0

Goto Star

End If

************************************’;’

If Sensor = &B10011000 Then

Mr = 250

Ml = 180

Portb = Mrf&Mlf

Meshki = 0

Goto Star

End If

?????????????????************************************ ((‘ LOoP 90 ;’))

If Sensor = &B11111111 Then

59

Mr = 250

Ml = 250

Portb = Mrf&Mlf

Goto Star

End If

************************************’;’  If Sensor = &B01111111 Then

Mr = 180

Ml = 180

Portb = Mrf&Mlf

Goto Star

End If

************************************’;’  If Sensor = &B00111111 Then

Mr = 180

Ml = 180

Portb = Mrf&Mlf

Goto Star

End If

************************************’;’  If Sensor = &B11111110 Then

Mr = 180

Ml = 180

Portb = Mrf&Mlf

Goto Star

End If

************************************’;’  If Sensor = &B11111100 Then

Mr = 180

Ml = 180

Portb = Mrf&Mlf

Goto Star

End If

************************************ ((‘ LOo0p 45 ;’))  If Sensor = &B00011001 Then

Mr = 150

Ml = 180

Portb = Mrf&Mlf

Goto Star

End If

************************************’;’  If Sensor = &B00011011 Then

Mr = 160

Ml = 160

Portb = Mrf&Mlf

Goto Star

End If

************************************’;’  If Sensor = &B00001101 Then

Mr = 180

60

Ml = 200

Portb = Mrf&Mlf

Goto Star

End If

*************************************’  If Sensor = &B00000011 Then

Mr = 250

Ml = 200

Portb = Mrb&Mlf

Goto Star

End If

*************************************’  If Sensor = &B00110011 Then

Mr = 180

Ml = 180

Portb = Mrf&Mlf

Goto Star

End If

*************************************’  If Sensor = &B00100011 Then

Mr = 150

Ml = 150

Portb = Mrf&Mlf

Goto Star

End If

*************************************’  If Sensor = &B00010001 Then

Mr = 150

Ml = 180

Portb = Mrf&Mlf

Goto Star

End If

*************************************’  If Sensor = &B00110011 Then

Mr = 180

Ml = 180

Portb = Mrf&Mlf

Goto Star

End If

*************************************’  If Sensor = &B00001001 Then

Mr = 350

Ml = 300

Portb = Mrb&Mlf

Goto Star

End If

*************************************’  If Sensor = &B00001011 Then

Mr = 350

Ml = 300

61

Portb = Mrb&Mlf

Goto Star

End If

 

*************************************’  If Sensor = &B00100001 Then

Mr = 180

Ml = 200

Portb = Mrf&Mlf

Goto Star

End If

*************************************’  If Sensor = &B00010110 Then

Mr = 150

Ml = 180

Portb = Mrf&Mlf

Goto Star

End If

************************************’  If Sensor = &B10011000 Then

Mr = 180

Ml = 150

Portb = Mrf&Mlf

Goto Star

End If

************************************’  If Sensor = &B11011000 Then

Mr = 180

Ml = 150

Portb = Mrf&Mlf

Goto Star

End If

************************************’  If Sensor = &B10110000 Then

Mr = 180

Ml = 150

Portb = Mrf&Mlf

Goto Star

End If

************************************’  If Sensor = &B11000000 Then

Mr = 180

Ml = 180

Portb = Mrf&Mlb

Goto Star

End If

************************************’  If Sensor = &B11001100 Then

Mr = 180

Ml = 150

62

Portb = Mrf&Mlf

Goto Star

End If

************************************’

If Sensor = &B11000100 Then

Mr = 180

Ml = 150

Portb = Mrf&Mlf

Goto Star

End If

************************************’

If Sensor = &B10001000 Then

Mr = 180

Ml = 150

Portb = Mrf&Mlf

Goto Star

End If

 

ÎØ ÑÇÓÊ Öãíäå ‘

***************************************************************ãÔ˜í  ************

: Meshki

If Sensor = &B11100111 Then

Mr = 200

Ml = 200

Portb = Mrf&Mlf

Meshki = 1

Goto Star

End If

************************************’

If Sensor = &B11110111 Then

Mr = 190

Ml = 200

Portb = Mrf&Mlf

Meshki = 1

Goto Star

End If

************************************’

If Sensor = &B11101111 Then

Mr = 200

Ml = 190

Portb = Mrf&Mlf

Meshki = 1

Goto Star

End If

***********************************’

If Sensor = &B11011111 Then

Mr = 200

Ml = 160

Portb = Mrf&Mlf

63

Meshki = 1

Goto Star

End If

***********************************’

If Sensor = &B11111011 Then

Mr = 160

Ml = 200

Portb = Mrf&Mlf

Meshki = 1

Goto Star

End If

***********************************’

If Sensor = &B11111101 Then

Mr = 160

Ml = 160

Portb = Mrb&Mlf

Meshki = 1

Goto Star

End If

***********************************’

If Sensor = &B10111111 Then

Mr = 160

Ml = 160

Portb = Mrf&Mlb

Meshki = 1

Goto Star

End If

mrb200***********************************’

If Sensor = &B11111110 Then

Mr = 130

Ml = 180

Portb = Mrb&Mlf

Meshki = 1

Goto Star

End If

mlb 180***********************************’

If Sensor = &B01111111 Then

Mr = 200

Ml = 150

Portb = Mrf&Mlb

Meshki = 1

Goto Star

End If

 

ÒÇæíå 90ÏÑÌå Öãíäå ‘

**************************************************************ãÔ˜í1  *******

If Sensor = &B00000111 Then

Mr = 200

Ml = 200

64

Portb = Mrf&Mlb

Meshki = 1

Goto Star

End If

************************************’   If Sensor = &B00001111 Then

Mr = 200

Ml = 200

Portb = Mrf&Mlb

Meshki = 1

Goto Star

End If

************************************’   If Sensor = &B00111011 Then

Mr = 200

Ml = 200

Portb = Mrf&Mlb

Meshki = 1

Goto Star

End If

 

************************************’  If Sensor = &B00000011 Then

Mr = 200

Ml = 220

Portb = Mrf&Mlb

Meshki = 1

Goto Star

End If

************************************’  If Sensor = &B10000011 Then

Mr = 180

Ml = 150

Portb = Mrf&Mlb

Meshki = 1

Goto Star

End If

************************************’  If Sensor = &B00001111 Then

Mr = 200

Ml = 200

Portb = Mrf&Mlb

Meshki = 1

Goto Star

End If

************************************’  If Sensor = &B11000011 Then

Mr = 180

Ml = 150

Portb = Mrf&Mlb

65

Meshki = 1

Goto Star

End If

************************************’  If Sensor = &B10000111 Then

Mr = 180

Ml = 150

Portb = Mrf&Mlb

Meshki = 1

Goto Star

End If

************************************’  If Sensor = &B11001111 Then

Mr = 180

Ml = 150

Portb = Mrf&Mlb

Meshki = 1

Goto Star

End If

************************************’  If Sensor = &B00000011 Then

Mr = 200

Ml = 200

Portb = Mrf&Mlb

Meshki = 1

Goto Star

End If

************************************’  If Sensor = &B10000011 Then

Mr = 180

Ml = 150

Portb = Mrf&Mlb

Meshki = 1

Goto Star

End If

************************************’  If Sensor = &B11000111 Then

Mr = 180

Ml = 150

Portb = Mrf&Mlb

Meshki = 1

Goto Star

End If

************************************’  If Sensor = &B00010111 Then

Mr = 180

Ml = 150

Portb = Mrf&Mlb

Meshki = 1

Goto Star

66

End If

**************************************************************ÍÇáÊ2′  ****************************

 

If Sensor = &B11100000 Then

Mr = 180

Ml = 200

Portb = Mrb&Mlf

Meshki = 1

Goto Star

End If

************************************’

If Sensor = &B11110011 Then

Mr = 180

Ml = 200

Portb = Mrb&Mlf

Meshki = 1

Goto Star

End If

 

************************************’

If Sensor = &B11101000 Then

Mr = 200

Ml = 200

Portb = Mrb&Mlf

Meshki = 1

Goto Star

End If

************************************’

If Sensor = &B11011100 Then

Mr = 180

Ml = 200

Portb = Mrb&Mlf

Meshki = 1

Goto Star

End If

************************************’

If Sensor = &B11100011 Then

Mr = 180

Ml = 200

Portb = Mrb&Mlf

Meshki = 1

Goto Star

End If

************************************’

If Sensor = &B11110000 Then

Mr = 250

Ml = 250

Portb = Mrb&Mlf

Meshki = 1

67

Goto Star

End If

************************************’  If Sensor = &B11100001 Then

Mr = 200

Ml = 250

Portb = Mrb&Mlf

Meshki = 1

Goto Star

End If

************************************’  If Sensor = &B11000111 Then

Mr = 100

Ml = 200

Portb = Mrf&Mlf

Meshki = 1

Goto Star

End If

************************************’  If Sensor = &B11000000 Then

Mr = 200

Ml = 200

Portb = Mrb&Mlf

Meshki = 1

Goto Star

End If

************************************’  If Sensor = &B11000001 Then

Mr = 150

Ml = 200

Portb = Mrb&Mlf

Meshki = 1

Goto Star

End If

************************************;’  If Sensor = &B11111000 Then

Mr = 200

Ml = 200

Portb = Mrb&Mlf

Meshki = 1

Goto Star

End If

*************************************’  If Sensor = &B00000111 Then

Mr = 200

Ml = 200

Portb = Mrf&Mlb

Meshki = 1

Goto Star

End If

68

ÎØ ÑÇÓÊ Öãíäå ‘

ÓÝíÏ***************************************************************  ###############******##### OK

If Sensor = &B00011000 Then

Mr = 250

Ml = 250

Portb = Mrf&Mlf

Meshki = 0

Goto Star

End If

************************************’

If Sensor = &B00001000 Then

Mr = 180

Ml = 220

Portb = Mrf&Mlf

Meshki = 0

Goto Star

End If

************************************’

If Sensor = &B00010000 Then

Mr = 220

Ml = 180

Portb = Mrf&Mlf

Meshki = 0

Goto Star

End If

************************************’

If Sensor = &B00000001 Then

Mr = 200

Ml = 200

Portb = Mrb&Mlf

Meshki = 0

Goto Star

End If

************************************’

If Sensor = &B00000010 Then

Mr = 135

Ml = 150

Portb = Mrb&Mlf

Meshki = 0

Goto Star

End If

************************************’

If Sensor = &B00000100 Then

Mr = 150

Ml = 200

Portb = Mrf&Mlf

Meshki = 0

Goto Star

End If

69

************************************’

If Sensor = &B00100000 Then

Mr = 200

Ml = 150

Portb = Mrf&Mlf

Meshki = 0

Goto Star

End If

************************************’

If Sensor = &B01000000 Then

Mr = 165

Ml = 120

Portb = Mrf&Mlb

Meshki = 0

Goto Star

End If

************************************’

If Sensor = &B10000000 Then

Mr = 165

Ml = 150

Portb = Mrf&Mlb

Meshki = 0

Goto Star

End If

Loop

 

70

مشاهده بیشتر

نوشته های مشابه

دیدگاهتان را بنویسید

دکمه بازگشت به بالا