Robo-PICA Thai Manual

Page 1

àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC l 1

àÃÕ¹ÃÙ áÅÐÊà ҧËØ ¹Â¹µ Íѵâ¹ÁÑµÔ ¡ÑºäÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC

¡ÄÉ´Ò ã¨àÂç¹ ªÑÂÇѲ¹ ÅÔÁé ¾Ã¨ÔµÃÇÔäÅ (C) Innovative Experiment Co.,Ltd.


2 l àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

PIC

àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC (©ºÑº»ÃѺ»Ãا¤ÃÑ§é ·Õè 3) ¡ÄÉ´Ò ã¨àÂç¹ ªÑÂÇѲ¹ ÅÔÁé ¾Ã¨ÔµÃÇÔäŠʧǹÅÔ¢ÊÔ·¸Ôµì ÒÁ ¾.Ã.º. ÅÔ¢ÊÔ·¸Ôì ¾.È. 2521 Ë ÒÁ¡ÒÃÅÍ¡àÅÕ¹äÁ ÇÒ Ê Ç¹Ë¹Ö§è Ê Ç¹ã´¢Í§Ë¹Ñ§Ê×ÍàÅ Á¹Õé ¹Í¡¨Ò¡¨Ðä´ ÃºÑ Í¹Ø­Òµ ã¤Ã¤ÇÃ㪠˹ѧÊ×ÍàÅ Á¹Õé 1.¹Ñ¡àÃÕ¹ ¹ÔÊÔµ ¹Ñ¡ÈÖ¡ÉÒ áÅкؤ¤Å·ÑèÇä»·ÕèÁÕ¤ÇÒÁʹã¨ã¹¡ÒÃÊà ҧËØ ¹Â¹µ Íѵâ¹ÁѵԢ¹Ò´àÅç¡´ ÇÂäÁâ¤Ã ¤Í¹â·ÃÅàÅÍà PIC 2. ʶҺѹ¡ÒÃÈÖ¡ÉÒ âçàÃÕ¹ ÇÔ·ÂÒÅÑ ÁËÒÇÔ·ÂÒÅÑ ·ÕÁè ¡Õ ÒÃà» ´¡ÒÃàÃÕ¹¡ÒÃÊ͹ÇÔªÒÍÔàÅç¡·ÃÍ¹Ô¡Ê ËÃ×ÍÀÒ¤ ÇÔªÒÇÔÈÇ¡ÃÃÁÍÔàÅç¡·ÃÍ¹Ô¡Ê áÅФÍÁ¾ÔÇàµÍà 3. ¤³Ò¨Òà·ÁÕè ¤Õ ÇÒÁµ ͧ¡ÒÃÈÖ¡ÉÒ áÅÐàµÃÕÂÁ¡ÒÃàÃÕ¹¡ÒÃÊ͹ÇÔªÒäÁâ¤Ãâ»Ãà«Êà«Íà - äÁâ¤Ã¤Í¹â·ÃÅàÅÍà ã¹ÃдѺ¡ÅÒ§·Õµè Í §¡ÒÃ㪠§Ò¹â»Ãá¡ÃÁ¤ÍÁ¾ÔÇàµÍà ÀÒÉÒÊÙ§ 4. ˹ ǧҹàÍ¡ª¹·ÕÁè ¡Õ ÒþѲ¹Ò¼ÅÔµÀѳ± ´Ò ¹ÍÔàÅç¡·ÃÍ¹Ô¡Ê áÅФÍÁ¾ÔÇàµÍà ´íÒà¹Ô¹¡ÒèѴ¾ÔÁ¾ áÅШíÒ˹ ÒÂâ´Â ºÃÔÉ·Ñ ÍÔ¹â¹àǵտ àÍç¡à¾ÍÃÔàÁ¹µ ¨íÒ¡Ñ´ 3133/53 «.ÊØ¢ÁØ ÇÔ· 101/2 ¶.ÊØ¢ÁØ ÇÔ· á¢Ç§ºÒ§¹Ò ࢵºÒ§¹Ò ¡ÃØ§à·¾Ï 10260 â·ÃÈѾ· 0-2747-7001-4 â·ÃÊÒà 0-2747-7005 ÃÒÂÅÐàÍÕ´·Õ»è ÃÒ¡¯ã¹Ë¹Ñ§Ê×ÍàÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC (©ºÑº»ÃѺ»Ãا¤ÃÑ§é ·Õè 3) ä´ ¼Ò ¹¡ÒõÃǨ·Ò¹Í ҧÅÐàÍÕ´ à¾×Íè ãË Á¤Õ ÇÒÁÊÁºÙó áÅж١µ ͧÁÒ¡·ÕÊè ´Ø ÀÒÂãµ à§×Íè ¹ä¢áÅÐàÇÅÒ·Õ¾è §Ö ÁÕ ¡ ͹¡ÒèѴ¾ÔÁ¾ à¼Âá¾Ã ¤ÇÒÁàÊÕÂËÒÂÍѹÍÒ¨à¡Ô´¨Ò¡¡ÒùíÒ¢ ÍÁÙÅã¹Ë¹Ñ§Ê×ÍàÅ Á¹Õäé »ãª ºÃÔÉ·Ñ ÍÔ¹â¹àǵտ àÍç¡ à¾ÍÃÔàÁ¹µ ¨íÒ¡Ñ´ ÁÔä´ ÁÀÕ ÒÃÐ㹡ÒÃÃѺ¼Ô´ªÍºáµ »ÃСÒÃã´ ¤ÇÒÁ¼Ô´¾ÅÒ´¤ÅÒ´à¤Å×Íè ¹·ÕÍè Ò¨ÁÕáÅÐä´ ÃºÑ ¡Òà ¨Ñ´¾ÔÁ¾ à¼Âá¾Ã ÍÍ¡ä»¹Ñ¹é ·Ò§ºÃÔÉ·Ñ Ï ¨Ð¾ÂÒÂÒÁªÕáé ¨§áÅÐá¡ ä¢ã¹¡ÒèѴ¾ÔÁ¾ ¤ÃÑ§é µ Íä»


àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC l 3

¤íÒ¹íÒ Íա˹֧è á¹Ç·Ò§¢Í§¡ÒÃàÃÕ¹ÃÙá ÅÐ㪠§Ò¹äÁâ¤Ã¤Í¹â·ÃÅàÅÍà ¤Í× ¡Ò÷´ÅͧÊà ҧáÅÐà¢Õ¹ â»Ãá¡ÃÁà¾×Íè ¤Çº¤ØÁËع ¹µ 굄 â¹Áѵ¢Ô ¹Ò´àÅç¡ ¹Ñºà» ¹¡ÒÃà»ÅÕè¹á»Å§ÍÕ¡¤ÃÑé§ÊíÒËÃѺ¡ÒþѲ¹ÒÊ×èÍ¡ÒÃàÃÕ¹ÃÙ ÃкºÊÁͧ¡Å½ §µÑÇËÃ×Í Embedded System ·ÕÊè ÒÁÒöࢠҶ֧¡ÅØÁ àÂÒǪ¹áÅмÙÊ ¹ã¨ã¹Ç§¡Ç 񤊫 §Ò Â¢Ö¹é ¼ Ò¹ÊÔ§è »ÃдÔÉ° ·ãÕè Ë ·§Ñé ¤ÇÒÁʹءʹҹáÅÐ ¤ÇÒÁÃÙ ÃÇÁ¶Ö§¡ÒÃÊ §àÊÃÔÁ¾Ñ²¹Ò¡Òô Ò¹¡Ãкǹ¡ÒäԴáÅСÒþѲ¹ÒÍÒÃÁ³ ¹Õ¤è Í× àʹ Ë¢ ͧÊ×Íè ¡ÒÃàÃÕ¹ÃÙ· Õè àÃÕÂ¡Ç Ò Ëع ¹µ (Robotic kit) Robo-PICA à» ¹ªØ´àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¢Ô ¹Ò´àÅç¡·Õ¤è Ǻ¤ØÁ´ ÇÂäÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC ·ÕÁè ¨Õ ´Ø Áا ËÁÒÂà¾×Íè ¹íÒàʹÍá¹Ç·Ò§ã¹¡ÒùíÒäÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC ÁÒÊà ҧ໠¹Ëع ¹µ 굄 â¹Áѵ·Ô ÁÕè ¤Õ ÇÒÁ ÊÒÁÒöÊÙ§ à¾×è͹íÒÁÒ㪠㹡ÒÃàÃÕ¹¡ÒÃÊ͹Ãкº¤Çº¤ØÁÍѵâ¹ÁѵÔÍ ҧ§ Ò â´Â㹪ش¨ÐÁÕἧǧ¨Ã¤Çº¤ØÁ, ªØ´â»Ãá¡ÃÁäÁâ¤Ã¤Í¹â·ÃÅàÅÍà ·µÕè Í ¡Ñº¾Íà µ USB ¢Í§¤ÍÁ¾ÔÇàµÍà ·íÒãË ÊÒÁÒö㪠§Ò¹¡Ñº¤ÍÁ¾ÔÇàµÍÃ ä´ ã¹·Ø¡ÃдѺ·Ñ§é à¤Ã×Íè §µÑ§é âµ ÐáÅÐâ¹ µºØ¡ , ÁÕἧǧ¨ÃµÃǨ¨Ñº·Õ¨è Òí à» ¹µ ͧ㪠㹡ÒÃàÃÕ¹ÃÙ äÁ ÇÒ ¨Ðà» ¹á¼§Ç§¨ÃµÑÇ µ Ò¹·Ò¹»ÃѺ¤ Òä´ «Ö觹íÒÁÒ㪠㹡ÒÃàÃÕ¹ÃÙ áÅз´Êͺ¡ÒõԴ¡ÑºµÑǵÃǨ¨ÑºáººÍйÒÅÍ¡Í ҧ§ Ò·ÕèÊØ´ ἧǧ¨ÃµÃǨ¨ÑºáʧÊз ͹ÍÔ¹¿ÃÒàô«Ö觹íÒÁÒ㪠㹡ÒõÃǨ¨ÑºàÊ ¹áÅо×é¹¼ÔÇ âÁ´ÙÅÇÑ´ÃÐÂзҧẺ ÍÔ¹¿ÃÒàôà¾×Íè ·´ÅͧÊà ҧËع ¹µ ·ÊÕè ÒÁÒöËźËÅÕ¡ÊÔ§è ¡Õ´¢Ç񤊫 â´ÂäÁ µÍ §ÊÑÁ¼ÑÊ áÅзÕàè » ¹¾ÔàÈɤ×Í ¡Ò÷íÒ §Ò¹¢Í§ËØ ¹Â¹µ à ÇÁ¡ÑºµÑǤǺ¤ØÁÃÐÂÐä¡ÅËÃ×ÍÃÕâÁµ¤Í¹â·ÃÅ â´Â㪠¡ÒÃÊ×èÍÊÒâ ÍÁÙÅ͹ءÃÁ (Serail data communication) «Ö§è 㹪ش¨ÐÁÕÃâÕ Áµ¤Í¹â·ÃÅÍÔ¹¿ÃÒàô áÅÐâÁ´ÙÅÃѺáʧÍÔ¹¿ÃÒàô¨Ñ´ÁÒãË ´Ç  à¾×Íè ãË ¡Òà àÃÕ¹ÃÙÊ ÒÁÒö¡ÃзíÒä´ Í ҧµ Íà¹×Íè §áÅÐÊÁºÙó ẺÁÒ¡·ÕÊè ´Ø à· Ò·Õ¨è Ðà» ¹ä»ä´ Robo-PICA ¹ Ò¨Ðà» ¹¤íҵͺ˹֧è ÊíÒËÃѺ¡ÒèѴËÒÊ×Íè ¡ÒÃàÃÕ¹ÃÙá ÅÐ㪠§Ò¹äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC ¼ Ò¹ ªØ´»ÃСͺËع ¹µ 굄 â¹ÁÑµÔ à¹×Íè §¨Ò¡ã¹ªØ´ä´ ¨´Ñ àµÃÕÂÁÍØ»¡Ã³ áÅÐÊ×Íè ʹѺʹعµ Ò§æ äÇ Í ҧ¤Ãº¶ ǹ äÁ ÇÒ ¨Ðà» ¹ ªØ´«Í¿µ áÇà áÅеÑÇÍ ҧâ»Ãá¡ÃÁ·Õºè ÃèØÍÂÙã ¹«Õ´ÃÕ ÍÁ ˹ѧÊ×ͤÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺäÁâ¤Ã ¤Í¹â·ÃÅàÅÍà PIC ˹ѧÊ×͵ÑÇÍ ҧ¡ÒÃÊà ҧËع ¹µ áÅÐʹÒÁÊíÒËÃѺ·´Êͺ¡ÒÃà¤Å×Íè ¹·Õàè º×Íé §µ ¹ ÂѧÁÕÍ¡Õ ÊÔ§è Ë¹Ö§è ·Õ¼è àÙ ÃÕ¹¨Ðä´ ¤Í× ¡ÒþѲ¹ÒàªÔ§ÍÒÃÁ³ à¹×Íè §¨Ò¡ã¹ÃÐËÇ Ò§¡ÒÃàÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ ¼Ùà ÃÕ¹¨Ð¾º¡Ñºº··´Êͺ·Õ·è §Ñé ¤Ò´ËÁÒÂä´ áÅÐà˵ءÒó ·äÕè Á ÍҨŠǧÃÙ Ê §¼ÅãË ä´ ãª »¯ÔÀÒ³ äËǾÃÔº áÅÐ »ÃÐʺ¡Òó ¼¹Ç¡¡Ñº¤ÇÒÁáÁ ¹ÂíÒã¹à¹×Íé ËÒ·ÄÉ®Õ à¢ ÒÁÒà ÇÁ¡Ñ¹à¾×Íè ᡠ䢻 ­ËÒ «Ö§è ÊÔ§è àËÅ Ò¹Õ¨é Ðà¡Ô´¢Ö¹é äÁ ä´ àÅ ËÒ¡¼Ùà ÃÕ¹¢Ò´ÊÁÒ¸Ô ¡Ò÷íÒ§Ò¹·Õáè µ¡µ Ò§¡Ñ¹ä»ã¹·Ø¡ª ǧàÇÅҢͧËع ¹µ Íѹà¹×Íè §ÁÒ¨Ò¡ÊÀÒ¾áÇ´Å ÍÁ ·Õ¤è Ǻ¤ØÁãË ¤§·Õäè Á ä´ ËÃ×ÍÃдѺ¾Åѧ§Ò¹¢Í§Ëع ¹µ ·ÅÕè ´Å§ËÃ×Íà»ÅÕÂè ¹á»Å§ä»µÅÍ´àÇÅÒ·Õàè ¤Å×Íè ¹·Õè ÊÔ§è àËÅ Ò ¹Õ¨é Ðà» ¹Íա˹֧è ˹ Ңͧº·àÃÕ¹·Õ¼è àÙ ÃÕ¹¨Ðµ ͧ¾ºáÅÐ༪ԭ˹ ÒÍ ҧÁÕÊµÔ´Ç ÂÍÒÃÁ³ ·ÁÕè ¹Ñè ¤§ Ëع ¹µ ¨ÐÂѧ໠¹µÑÇá·¹Ê×Íè ¡ÒÃàÃÕ¹ÃÙ· Ò§ÇÔ·ÂÒÈÒʵà áÅÐà·¤â¹âÅÂÕ·¼Õè ¤Ù ¹ã¹ÈµÇÃÃɹÕÁé ÍÔ Ò¨»¯ÔàÊ¸ä´ ªÑÂÇѲ¹ ÅÔÁé ¾Ã¨ÔµÃÇÔäÅ


4 l àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

PIC

ÊÒúѭ º··Õè 1 á¹Ð¹íÒªÔ¹é Ê Ç¹/ÍØ»¡Ã³ 㹡ÒÃÊà ҧËع ¹µ áÅÐ «Í¿µ áÇà ÊÒí ËÃѺ¾Ñ²¹Òâ»Ãá¡ÃÁ .........................................................................7 1.1 ªÔ¹é Ê Ç¹¢Í§Ëع ¹µ Robo-PICA 1.2 à¤Ã×Íè §Á×Í·Õãè ª 㹡ÒÃÊà ҧËع ¹µ 1.3 «Í¿µ áÇà ÊÒí ËÃѺ¾Ñ²¹Òâ»Ãá¡ÃÁ¤Çº¤ØÁËع ¹µ Robo-PICA

º··Õè 2 Êà ҧËع ¹µ Robo-PICA .........................................................................................15 ¡Ô¨¡ÃÃÁ·Õè 1 : Êà ҧËع ¹µ Robo-PICA

º··Õè 3 ºÍà ´¤Çº¤ØÁËÅÑ¡¢Í§Ëع ¹µ Robo-PICA áÅСÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C à¾×Íè ·´Êͺ¡Ò÷íÒ§Ò¹.......................................25 3.1 ¤Ø³ÊÁºÑµ·Ô ҧ෤¹Ô¤¢Í§ºÍà ´¤Çº¤ØÁ 3.2 ¡Ò÷íÒ§Ò¹¢Í§Ç§¨Ãã¹Ê ǹµ Ò§æ ¢Í§ºÍà ´¤Çº¤ØÁ 3.3 ÃÒÂÅÐàÍÕ´¢Í§ÊÒÂÊÑ­­Ò³·Õãè ª 㹪ش Robo-PICA 3.4 ¢Ñ¹é µÍ¹¡ÒþѲ¹Òâ»Ãá¡ÃÁÊíÒËÃѺËع ¹µ Robo-PICA 3.5 µÑÇÍ ҧ¡ÒþѲ¹Òâ»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺËع ¹µ Robo-PICA ´ Ç mikroC IDE ¡Ô¨¡ÃÃÁ·Õè 2 : ·´ÊͺºÍà ´ RBX-877

º··Õè 4 ¢Ñºà¤Å×Íè ¹Ëع ¹µ Robo-PICA .................................................................................53 4.1 ǧ¨Ã¢ÑºÁÍàµÍà ¢Í§Ëع ¹µ Robo-PICA 4.2 ¡ÒäǺ¤ØÁ·ÔÈ·Ò§¡ÒÃà¤Å×Íè ¹·Õ¢è ͧËع ¹µ Robo-PICA ¡Ô¨¡ÃÃÁ·Õè 3 : ·´Êͺ¡ÒÃà¤Å×Íè ¹·Õ¢è ͧËع ¹µ Robo-PICA 4.3 ¡ÒäǺ¤ØÁ¤ÇÒÁàÃçǢͧÁÍàµÍà 4.4 äźÃÒÃÕ PWM ¡Ô¨¡ÃÃÁ·Õè 4 : ¤Çº¤ØÁ¤ÇÒÁàÃçǢͧËع ¹µ Robo-PICA 4.5 Êà ҧä¿Å äźÃÒÃÕ motor.h ¡Ô¨¡ÃÃÁ·Õè 5 : Ëع ¹µ Robo-PICA à¤Å×Íè ¹·Õµè ÒÁÃٻẺ·Õ¡è Òí ˹´


àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC l 5

ÊÒúѭ º··Õè 5 Robo-PICA ¡ÑºµÑǵÃǨ¨ÑºáººÍйÒÅÍ¡...........................................................73 5.1 ÃÕ¨ÊÔ àµÍà ·àÕè ¡ÕÂè Ç¢ ͧ¡Ñº¡Ò÷íÒ§Ò¹¢Í§âÁ´ÙÅ ADC ¢Í§ PIC16F887 ¡Ô¨¡ÃÃÁ·Õè 6 : Í Ò¹¤ ÒµÑǵÃǨ¨ÑºÍйÒÅÍ¡

º··Õè 6 Robo-PICA ¡Ñº¡ÒõÃǨ¨ÑºÊÔ§è ¡Õ´¢ÇҧẺäÁ ÊÁÑ ¼ÑÊ ..........................................81 6.1 ¤Ø³ÊÁºÑµ¢Ô ͧ GP2D120 âÁ´ÙÅÇÑ´ÃÐÂзҧ´ ÇÂáʧÍÔ¹¿ÃÒàô 6.2 ËÅÑ¡¡Ò÷íÒ§Ò¹¢Í§âÁ´ÙÅÇÑ´ÃÐÂзҧ´ ÇÂáʧÍÔ¹¿ÃÒàô ¡Ô¨¡ÃÃÁ·Õè 7 : ·´Êͺ㪧 Ò¹âÁ´ÙÅÇÑ´ÃÐÂзҧ GP2D120 ¡Ô¨¡ÃÃÁ·Õè 8 : Ëع ¹µ Robo-PICA ËźËÅÕ¡ÊÔ§è ¡Õ´¢ÇҧẺäÁ ÊÁÑ ¼ÑÊ

º··Õè 7 Ëع ¹µ Robo-PICA à¤Å×Íè ¹·Õµè ÒÁàÊ ¹.....................................................................89 7.1 ËÑÇã¨ÊíҤѭ¤×Í á¼§Ç§¨ÃµÃǨ¨Ñº¡ÒÃÊз ͹áʧÍÔ¹¿ÃÒàô ¡Ô¨¡ÃÃÁ·Õè 9 : Í Ò¹¤ Ҩҡἧǧ¨ÃµÃǨ¨Ñº¡ÒÃÊз ͹áʧÍÔ¹¿ÃÒàô ¡Ô¨¡ÃÃÁ·Õè 10 : Ëع ¹µ Robo-PICA à¤Å×Íè ¹·Õäè Á µ¡âµ Ð ¡Ô¨¡ÃÃÁ·Õè 11 : Ëع ¹µ Robo-PICA à¤Å×Íè ¹·Õµè ÒÁàÊ ¹´íÒ

º··Õè 8 Robo-PICA ¡Ñº¡ÒäǺ¤ØÁÃÐÂÐä¡Å´ ÇÂáʧÍÔ¹¿ÃÒàô...................................103 8.1 ÃÕâÁµ¤Í¹â·ÃÅ ER-4 8.2 ἧǧ¨ÃâÁ´ÙÅÃѺáʧÍÔ¹¿ÃÒàô 38kHz : ZX-IRM 8.3 ÃÙ¨ ¡Ñ ¡Ñº¡ÒÃÍÔ¹àµÍÃ Ã»Ñ µ 8.4 ÍÔ¹àµÍÃ Ã»Ñ µ ã¹ PIC16F887 ·Õàè ¡ÕÂè Ç¢ ͧ¡Ñº¡ÒäǺ¤ØÁËع ¹µ Robo-PICA ¡Ô¨¡ÃÃÁ·Õè 12 : ·´Íʺ¡ÒÃÍÔ¹àµÍÃ Ã»Ñ µ 8.5 ¡ÒÃÊ×Íè ÊÒâ ÍÁÙÅ͹ءÃÁẺÍЫԧâ¤Ã¹ÑÊ 8.6 â»Ãá¡ÃÁ ÍºÃÔ¡ÒÃÍÔ¹àµÍÃ Ã»Ñ µ à¾×Íè Ò ¹¤ Ò¨Ò¡ÃÕâÁµ¤Í¹â·ÃÅ ¡Ô¨¡ÃÃÁ·Õè 13 : ·´Êͺ¡ÒÃÃѺ¢ ÍÁÙŨҡÃÕâÁµ¤Í¹â·ÃÅ ¡Ô¨¡ÃÃÁ·Õè 14 : ËØè¹Â¹µì Robo-PICA ¤Çº¤ØÁ´ ÇÂÃÕâÁµ¤Í¹â·ÃÅ


6 l àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

PIC


àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC l 7

º··Õè 1

á¹Ð¹íÒªÔ¹é Ê Ç¹/ÍØ»¡Ã³ 㹡ÒÃÊà ҧËع ¹µ áÅЫͿµ áÇà ÊÒí ËÃѺ¾Ñ²¹Òâ»Ãá¡ÃÁ 㹺·¹Õ¨é йíÒàʹͶ֧¢ ÍÁÙÅã¹àº×Íé §µ ¹¢Í§ªÔ¹é Ê Ç¹µ Ò§æ µÅÍ´¨¹à¤Ã×Íè §Á×Í·Õ¹è Òí ÁÒ㪠㹡Òà Êà ҧËع ¹µ 굄 â¹Áѵ¢Ô ¹Ò´àÅç¡·Õ¤è Ǻ¤ØÁ¡Ò÷íÒ§Ò¹´ ÇÂäÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC «Ö§è µÑ§é ª×Íè Ç Ò RoboPICA â´ÂẠ§ÍÍ¡à» ¹ 3 Ê Ç¹¤×Í 1. ªÔ¹é Ê Ç¹¢Í§Ëع ¹µ Robo-PICA 2. à¤Ã×Íè §Á×Í·Õãè ª 㹡ÒÃÊà ҧËع ¹µ 3. á¹Ð¹íÒ«Í¿µ áÇà ·Õè㪠㹡ÒþѲ¹Òâ»Ãá¡ÃÁ¤Çº¤ØÁ¡Ò÷íÒ§Ò¹¢Í§ËØ ¹Â¹µ

1.1 ªÔ¹é Ê Ç¹¢Í§Ëع ¹µ Robo-PICA ÁÕ·§Ñé ÊÔ¹é 3 ¡ÅØÁ ËÅÑ¡ ´Ñ§¹Õé

1.1.1 ªÔ¹é Ê Ç¹·Ò§¡Å

ªØ´à¿ ͧ¢Ñº¾Ã ÍÁÁÍàµÍà 㪠ÁÍàµÍà 4.5V (ÊÙ§ÊØ´ 9V) 180mA ÁÕ굄 ÃÒ·´ 48:1 áç ºÔ´ÊÙ§ÊØ´ 4kg.cm

ªØ´»ÃСͺŠÍÊÒ¾ҹ »ÃСͺ ´ ÇÂÊÒ¾ҹ 3 ¢¹Ò´ (8/10/30 ¢ ͵ Í), Å Í ¢ÑºËÅÑ¡, Å Í»ÃФͧÊÒ¾ҹ áÅдØÁÅ Í ªØ´»ÃСͺ°Ò¹ »ÃСͺ´ Ç ἠ¹°Ò¹, ©Ò¡Âִ᡹ŠÍ, ªÔé¹ µ ;ÅÒʵԡÁØÁ©Ò¡/á¹ÇµÃ§/ ÁØÁ» Ò¹ áÅÐá· §µ Í 3/5/12 ÃÙ

ªØ´¹Íµ-Ê¡ÃÙ, àÊÒÃͧ, ᡹âÅËÐ »ÃСͺ´ Ç ʡÃÙà¡ÅÕÂǻŠÍ 2 ÁÁ., Ê¡ÃÙ 3x7/3x9/3x10/3x15/3x25/3x40 ÁÁ., ¹Íµ 3 ÁÁ., Ê¡ÃÙÁÍ× ËÁع 3 ÁÁ., àÊÒÃͧ¾ÅÒʵԡ 3/10/15/25 ÁÁ., àÊÒÃͧâÅËÐË¡àËÅÕèÂÁ 3x30 ÁÁ. áÅÐ᡹âÅËÐ


8 l àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

PIC

1.1.2 ªÔ¹é Ê Ç¹·Ò§ÍÔàÅç¡·ÃÍ¹Ô¡Ê GP2D120

âÁ´ÙÅÇÑ´ÃÐÂзҧ´ ÇÂáʧ ÍÔ¹¿ÃÒàô 4 ¶Ö§ 30 «Á. RBX-877V2.0

ἧǧ¨Ã¤Çº¤ØÁËÅÑ¡ PIC16F887 ZX-03

ER-4

ἧǧ¨ÃµÃǨ¨Ñº¡ÒÃÊз ͹ áʧÍÔ¹¿ÃÒàô (x 2)

ÃÕâÁµ¤Í¹â·ÃÅ ÍÔ¹¿ÃÒàô

ZX-IRM

âÁ´ÙÅÃѺáʧÍÔ¹¿ÃÒàô 38kHz

ÊÒ USB ºÍà ´ â»Ãá¡ÃÁäÁâ¤Ã ¤Í¹â·ÃÅàÅÍà ¼Ò ¹¾Íà µ USB ¾Ã ÍÁÊÒ ICD2

ZX-POTH

ẵàµÍÃÕè AA 4 ¡ ͹

ἧǧ¨ÃµÑǵ Ò¹·Ò¹»ÃѺ¤ Ò ä´ (x 1)

1.2 à¤Ã×Íè §Á×Í·Õãè ª 㹡ÒÃÊà ҧËع ¹µ

¤ÕÁµÑ´»Í¡ÊÒÂä¿

ÁÕ´¤ÑµàµÍà 䢤ǧ»ÅÒÂá©¡

¤ÍÁ¾ÔÇàµÍà µÔ´µÑ§é Ãкº»¯ÔºµÑ ¡Ô ÒÃÇÔ¹â´ÇÊ ME ¢Ö¹é ä» (á¹Ð¹íÒ XP à«Íà ÇÊÔ á¾ç¡ 2) ÁÕ¾Íà µ USB Ç Ò§ 1 ¾Íà µ


àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC l 9

1.3 «Í¿µ áÇà ÊÒí ËÃѺ¾Ñ²¹Òâ»Ãá¡ÃÁ¤Çº¤ØÁËع ¹µ Robo-PICA ã¹Ëع ¹µ Robo-PICA ·Õ¨è зíÒ¡Ò÷´ÅͧÊà ҧã¹Ë¹Ñ§Ê×ÍàÅ Á¹Õ¤é Ǻ¤ØÁ¡Ò÷íÒ§Ò¹´ ÇÂäÁâ¤Ã ¤Í¹â·ÃÅàÅÍà PIC16F887 ´Ñ§¹Ñ¹é ¨Ö§ÊÒÁÒöà¢Õ¹â»Ãá¡ÃÁ¤Çº¤ØÁä´ ´Ç ÂÀÒÉÒáÍÊà«ÁºÅÕ ÀÒÉÒ àºÊÔ¡â´Â㪠«Í¿µ áÇà àºÊÔ¡¤ÍÁä¾àÅÍà ªÇ  áÅÐÀÒÉÒ C «Ö§è ¡çµÍ §¾Ö§è C ¤ÍÁä¾àÅÍà ઠ¹¡Ñ¹ ÊíÒËÃѺã¹Ëع ¹µ Robo-PICA ¨Ð㪠â»Ãá¡ÃÁÀÒÉÒ C à» ¹ËÅÑ¡ â´Â«Í¿µ áÇà ·ãÕè ª ÁÕ 2 ªØ´¤×Í ªØ´«Í¿µ áÇà mikroC «Ö§è à» ¹«Í¿µ áÇà C ¤ÍÁä¾àÅÍà ·ÁÕè Ҿà ÍÁ¡Ñºâ»Ãá¡ÃÁª ǾѲ¹Òã¹ÃٻẺ IDE à¾×è Í ÊÃ Ò §ä¿Å ¹ ÒÁÊ¡Ø Å .hex Êí Ò ËÃÑ º à¢Õ  ¹Å§ã¹Ë¹ Ç Â¤ÇÒÁ¨í Ò â»Ãá¡ÃÁ¢Í§äÁâ¤Ã ¤Í¹â·ÃÅàÅÍà ã¹Ëع ¹µ Robo-PICA áÅЫͿµ áÇà PICkit2TM programming «Ö§è 㪠㹡ÒôÒǹ âËÅ´â»Ãá¡ÃÁŧÊÙä Áâ¤Ã¤Í¹â·ÃÅàÅÍà PIC16F887 Íѹ໠¹ÍØ»¡Ã³ ËÅÑ¡·Õãè ª 㹡ÒäǺ¤ØÁ¡Òà ·íÒ§Ò¹¢Í§Ëع ¹µ Robo-PICA ¼ Ò¹·Ò§ºÍà ´â»Ãá¡ÃÁäÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

1.3.1 mikroC Compiler (Ãع ÊÒ¸Ôµ) 1.3.1.1 ¢ ÍÁÙÅàº×Íé §µ ¹¢Í§ mikroC ÊíÒËÃѺ㹪ش Robo-PICA ¹Õàé Å×͡㪠ª´Ø «Í¿µ áÇà ¾² Ñ ¹Òâ»Ãá¡ÃÁäÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC ´ ÇÂÀÒÉÒ C ·Õªè Í×è Ç Ò mikroC ¢Í§ mikroElektronika (mikroE : www.mikroe.com).ã¹Ãع ÊÒ¸Ôµ (demo version) ÁÕ¢Í ¨íÒ¡Ñ´´ Ò¹¢¹Ò´¢Í§ä¿Å ËÅѧ¨Ò¡¤ÍÁä¾Å ËÃ×Íá»Å§à» ¹ÃËÑÊà¤Ã×Íè § (ä¿Å ¹ÒÁ Ê¡ØÅ .hex) µ ͧäÁ à¡Ô¹ 2 ¡ÔâÅàÇÔô «Ö§è ÁÒ¡à¾Õ§¾ÍÊíÒËÃѺ¡ÒþѲ¹Òâ»Ãá¡ÃÁÊíÒËÃѺ¤Çº¤ØÁ¡Ò÷íÒ §Ò¹¢Í§ËØ ¹Â¹µ Íѵâ¹ÁѵԢ¹Ò´àÅç¡ä´ à» ¹Í ҧ´Õ ÊíÒËÃѺ¼Ù 㪠§Ò¹·Õè·´Åͧ㪠mikroC áÅ ÇÁÕ¤ÇÒÁʹ㨵 ͧ¡ÒÃÃØ ¹ÊÁºÙó ÊÒÁÒöµÔ´µ ÍÊÑè§ «×éÍä´ ·ÕèàǺ䫵 ¢Í§¼Ù ¼ÅÔµ http://www.mikroe.com mikroC ä´ ºÃèØà¤Ã×Íè §Á×Íà¾×Íè ÍíҹǤÇÒÁÊдǡ㹡ÒþѲ¹Òâ»Ãá¡ÃÁäÇ ÁÒ¡ÁÒ µÑÇá»Å â»Ãá¡ÃÁÀÒÉÒ C ËÃ×Í C compiler ÁÕû٠Ẻ¡Ò÷íÒ§Ò¹·Õàè ¢ Ò¡Ñ¹ä´ ¡ºÑ ANSI C Áҵðҹ ÁÕäźÃÒÃÕ ÃͧÃѺ¡ÒõԴµ ͡ѺÍØ»¡Ã³ ÀÒ¹͡¨íҹǹÁÒ¡ ¾Ã ÍÁ·Ñ駵ÑÇÍ ҧâ»Ãá¡ÃÁ·Õèª ÇÂÅ´àÇÅÒ㹡Òà ¾Ñ²¹Òâ»Ãá¡ÃÁ ¼Ù ¾Ñ²¹Òâ»Ãá¡ÃÁÊÒÁÒöµÃǨÊͺ·ÃѾÂҡâͧäÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ ä´ µÅÍ´àÇÅÒ «Öè§ à» ¹»ÃÐ⪹ Áҡ㹡óշÕè㪠ÃØ ¹ÊÒ¸Ôµ ·Ñ駹Õéà¾×èͪ Ç» ͧ¡Ñ¹äÁ ãË à¢Õ¹â»Ãá¡ÃÁÂÒÇà¡Ô¹¡Ç Ò¢ ͨíÒ ¡Ñ´ mikroC ÊÒÁÒöãË ä¿Å ¼ÅÅѾ¸ .hex ´ Ç¡ÒäÅÔ¡à¾Õ§»Ø Áà´ÕÂÇ ·íÒãË Å´¢Ñ鹵͹㹡Ò÷íÒ§Ò¹ Å§ä´ Í ҧÁÒ¡ áÅÐä¿Å .hex ÊÒÁÒö¹íÒä»ãª §Ò¹¡Ñºà¤Ã×èͧâ»Ãá¡ÃÁäÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC ÁÒµÃ°Ò¹ä´ ·Ø¡ÃØ ¹


10 l àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

PIC

1.3.1.2 ¡ÒõԴµÑ§é mikroC compiler Ãع ÊÒ¸Ôµ ¡ÒÃä´ ÁÒ«Ö§è ä¿Å µ´Ô µÑ§é ¢Í§ mikroC ã¹Ãع ÊÒ¸Ôµ¹Õé ÁÕ 2 ·Ò§¤×Í 1. ¨Ò¡á¼ ¹«Õ´ÃÕ ÍÁ·Õ¨è ´Ñ ÁÒ㹪ش Robo-PICA 2. ´Òǹ âËÅ´àÇÍà ª¹Ñè ãËÁ ÅÒ ÊØ´·ÕÍè Ò¨ÁÕ·Õè www.mikroe.com ¨Ò¡¹Ñé¹·íÒ¡ÒõԴµÑé§àËÁ×͹¡Ñºâ»Ãá¡ÃÁ»ÃÐÂØ¡µ ¢Í§ÇÔ¹â´ÇÊ ã¹Ë¹Ñ§Ê×ÍàÅ Á¹Õ¨é Ð͸ԺÒÂ੾ÒÐÊ Ç¹·Õãè ª 㹡ÒþѲ¹Òâ»Ãá¡ÃÁ à¾×Íè ¤Çº¤ØÁËع ¹µ ෠ҹѹé ÊíÒËÃѺ¡ÒÃà¢Õ¹â»Ãá¡ÃÁ ÃٻẺ¤íÒÊÑè§ áÅÐÇÔ¸Õ㪠§Ò¹ mikroC ÊÒÁÒÃ¶Í Ò¹ä´ ¨Ò¡ä¿Å ¤Ù Á×Í·Õè ÊÒÁÒö´Òǹ âËÅ´ä´ ¨Ò¡ www.mikroe.com ËÃ×ͨҡ¤ÙÁ Í× ¡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺäÁâ¤Ã ¤Í¹â·ÃÅàÅÍà PIC ´ Ç mikroC «Ö§è ¾ÔÁ¾ ᡵ Ò§ËÒ¡ áÅШѴÁÒ㹪ش¢Í§ Robo-PICA áÅ Ç »ØÁ ¤ÍÁä¾Å â»Ãá¡ÃÁ

äÁâ¤Ã¤Í¹â·ÃÅàÅÍà ·ãÕè ª

ª Í § ¡í Ò Ë ¹ ´ ¤ Ç Ò Á ¶Õè ÊÑ ­ ­ Ò ³ ¹ Ò Ì ¡ Ò Êí Ò Ë ÃÑ º ä Á â ¤ à ¤Í¹â·ÃÅàÅÍÃ

¾×¹é ·Õ¾ è ² Ñ ¹Òâ»Ãá¡ÃÁ

˹ Òµ Ò§¼ÅÅѾ¸

ÃÙ»·Õè 1-1 áÊ´§Ë¹ Òµ Ò§ËÅÑ¡¢Í§ mikroC IDE áÅÐÊ Ç¹»ÃСͺ·ÕÊè Òí ¤Ñ­


àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC l 11

1.3.2 PICkit2TM Programming software à» ¹«Í¿µ áÇà ÊÒí ËÃѺâ»Ãá¡ÃÁäÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC áÅÐ dsPIC Ẻá¿Åª·Õµè Í §·íÒ§Ò¹ à ÇÁ¡Ñºà¤Ã×Íè §â»Ãá¡ÃÁ PICkit2TM ¢Í§ Microchip ËÃ×Íà¤Ã×Íè §â»Ãá¡ÃÁÍ×¹è ·ÕÁè ¡Õ Ò÷íÒ§Ò¹µÃ§¡Ñ¹ ÊíÒËÃѺ 㹪ش Robo-PICA ä´ àµÃÕÂÁºÍà ´â»Ãá¡ÃÁ PICkit2TM Ẻ OEM ·Õ¾è ² Ñ ¹Ò¢Ö¹é â´ÂºÃÔÉ·Ñ ÍÔ¹â¹àǵտ àÍç¡à¾ÍÃÔàÁ¹µ ¨íÒ¡Ñ´ ¨Ò¡¢ ÍÁÙÅ·Õàè ¼Âá¾Ã ÊÊÙ Ò¸ÒóТͧ Microchipâ´Â¡ÒÃâ»Ãá¡ÃÁ¢ ÍÁÙÅŧã¹Ë¹ Ç ¤ÇÒÁ¨íÒâ»Ãá¡ÃÁ¢Í§äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC ¨Ðà» ¹áººâ»Ãá¡ÃÁã¹Ç§¨Ã¼ Ò¹·Ò§á¨ ¡ ICD2 àÁ¹Ù¤Òí Êѧè ᶺáÊ´§¡Ò÷íÒ§Ò¹

»ØÁ ª ÇÂ㹡Òà ·íÒ§Ò¹

¡Ãͺ Configuration ª ͧáÊ´§Ê¶Ò¹Ð

˹ Òµ Ò§ºÑ¿à¿Íà ¢Í ÁÙŢͧ˹ ǤÇÒÁ¨íÒâ»Ãá¡ÃÁ

ᨠ§ ·Õè Á Ңͧ ä¿Å .hex ·ÕÃè ºÑ à¢ ÒÁÒà¡çºäÇ ã¹ ºÑ¿à¿Íà »ØÁ ª ÇÂ㹡Òà ·íÒ§Ò¹

˹ Òµ Ò§ºÑ¿à¿Íà ¢Í ÁÙŢͧ˹ ǤÇÒÁ¨íÒÍÕ; Õ ÃÍÁ

ÃÙ»·Õè 1-2 ˹ Òµ Ò§ËÅÑ¡¢Í§â»Ãá¡ÃÁ Pickiit2TM Programming Software «Ö§è 㪠´Òǹ âËÅ´â»Ãá¡ÃÁ ¤Çº¤ØÁŧã¹äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC16F887 Íѹ໠¹äÁâ¤Ã¤Í¹â·ÃÅàÅÍà ËÅÑ¡¢Í§Ëع ¹µ RoboPICA ¼ Ò¹·Ò§ºÍà ´â»Ãá¡ÃÁäÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ


12 l àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

PIC

1.3.2.1 ¡ÒõԴµÑ§é «Í¿µ áÇà 1.3.2.1.1 µÔ´µÑ§é ¨Ò¡á¼ ¹«Õ´ÃÕ ÍÁ·ÕÁè ҡѺªØ´ PX-200 «Í¿µ áÇà ·ãÕè ª ¡ºÑ PX-200 ¤×Í PICkit2TM Programming Software â´Âã¹àÇÍà ª¹Ñ ãËÁ æ ¹Ñ¹é ¾Ñ²¹ÒÁÒ¨Ò¡ Microsoft .NET ´Ñ§¹Ñ¹é ¡ÒõԴµÑ§é â»Ãá¡ÃÁà¾×Íè 㪠§Ò¹ ¼Ùã ª §Ò¹µ ͧÁÕ¡ÒõԴµÑ§é Microsoft .NET Framework àÊÕ¡ ͹ (¡) ¡Ã³Õ·¤Õè ÍÁ¾ÔÇàµÍà äÁ Á¡Õ ÒõԴµÑ§é Microsoft .NET Framework ÁÒ¡ ͹

µÔ´µÑ§é Microsoft .NET Framework â´ÂàÅ×Í¡µÔ´µÑ§é ¨Ò¡â¿Åà´Íà PICkit 2 Setup v2.01 dotNET à dotnetfx ã¹á¼ ¹«Õ´ÃÕ ÍÁ ´ÑºàºÔŤÅÔ¡·Õäè ¿Å dotnetfx.exe ¨Ð㪠àÇÅÒ㹡ÒõԴµÑ§é ¤ÃÙË ¹Ö§è ¨Ò¡¹Ñ¹é ¨Ö§·íÒ¡ÒõԴµÑ§é â»Ãá¡ÃÁ PICkit2TM Programming Software â´ÂàÅ×Í¡ä¿Å PICkit2Setup.msi (¢) ¡Ã³Õ·¤Õè ÍÁ¾ÔÇàµÍà Á¡Õ ÒõԴµÑ§é Microsoft .NET Framework áÅ Ç

µÔ´µÑ§é â»Ãá¡ÃÁ PICkit2TM Programming Software â´ÂࢠÒä»·Õâè ¿Åà´Íà PICkit 2 Setup v2.01 ã¹á¼ ¹«Õ´ÃÕ ÍÁ ´ÑºàºÔŤÅÔ¡·Õäè ¿Å PICkit2Setup.msi 1.3.2.1.2 µÔ´µÑ§é ¨Ò¡ä¿Å ·´Õè Òǹ âËÅ´¨Ò¡àǺ䫵 ¢Í§ Microchip ࢠÒä»ÂѧàǺ䫵 ¢Í§ Microchip ·Õè www.microchip.com àÅ×Í¡ËÑÇ¢ Í Development tools à Pickit 2 Programmer/Debugger (¡) ¡Ã³Õ·¤Õè ÍÁ¾ÔÇàµÍà äÁ Á¡Õ ÒõԴµÑ§é Microsoft .NET Framework ÁÒ¡ ͹

ãË ´Òǹ âËÅ´ä¿Å ¨Ò¡ËÑÇ¢ Í PICkit2V2.01 Install with .NET Framework ¨Ðä´ ä¿Å PICkit 2 Setup v2.01 dotNET.zip (µÑÇàÅ¢àÇÍà ª¹Ñ ÍÒ¨à»ÅÕÂè ¹á»Å§µÒÁÃع ·ÕÁè ¡Õ ÒûÃѺ»ÃاŠÒÊØ´) áÅ Ç ·íÒ¡ÒâÂÒÂä¿Å ·Õè´Òǹ âËÅ´ÁÒ à¡çºäÇ ã¹â¿Åà´Íà PICkit 2 Setup v2.01 dotNET ¨Ò¡¹Ñé¹à¢ Òä» ã¹â¿Åà´Íà PICkit 2 Setup v2.01 dotNET à dotnetfx àÅ×Í¡´ÑºàºÔŤÅÔ¡·Õäè ¿Å dotnetfx.exe ¨Ð㪠àÇÅÒ㹡ÒõԴµÑ§é ¤ÃÙË ¹Ö§è ¨Ò¡¹Ñ¹é ¨Ö§·íÒ¡ÒõԴµÑ§é â»Ãá¡ÃÁ Pickiit2TM Programming Software â´Â ࢠÒä»áŠǴѺàºÔŤÅÔ¡·Õäè ¿Å PICkit2Setup.msi (¢) ¡Ã³Õ·¤Õè ÍÁ¾ÔÇàµÍà Á¡Õ ÒõԴµÑ§é Microsoft .NET Framework áÅ Ç

ãË ´Òǹ âËÅ´ä¿Å ¨Ò¡ËÑÇ¢ Í PICkit2V2.01 Install ¨Ðä´ ä¿Å PICkit 2 Setup v2.01.zip (µÑÇàÅ¢àÇÍà ª¹Ñ ÍÒ¨à»ÅÕÂè ¹á»Å§µÒÁÃع ·ÕÁè ¡Õ ÒûÃѺ»ÃاŠÒÊØ´) áÅ Ç·íÒ¡ÒâÂÒÂä¿Å ·´Õè Òǹ âËÅ´ÁÒ à¡çº äÇ ã¹â¿Åà´Íà PICkit 2 Setup v2.01 ¨Ò¡¹Ñ¹é ࢠÒä»ã¹â¿Åà´Íà àÅ×Í¡´ÑºàºÔŤÅÔ¡·Õäè ¿Å PICkit2Setup.msi à¾×Íè àÃÔÁè µ ¹µÔ´µÑ§é â»Ãá¡ÃÁ


àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC l 13

1.3.2.2 ¢Ñ¹é µÍ¹¡ÒõԴµÑ§é â»Ãá¡ÃÁ (1) ´ÑºàºÔŤÅÔ¡ä¿Å µ´Ô µÑ§é PICkit2Setup.msi ¨Ð»ÃÒ¡¯Ë¹ Òµ Ò§àÃÔÁè ¡ÒõԴµÑ§é ¤ÅÔ¡»ØÁ Next

(2) ¨Ð»ÃÒ¡¯Ë¹ Òµ ҧᨠ§µíÒá˹ §â¿Åà´Íà ·¨Õè зíÒ¡ÒõԴµÑ§é ËÒ¡äÁ µÍ §¡ÒÃà»ÅÕÂè ¹á»Å§µíÒ á˹ §â¿Åà´Íà ãË ¤ÅÔ¡»ØÁ Next à¾×Íè ¼ Ò¹¢Ñ¹é µÍ¹¹Õäé »

(3) ¨Ð»ÃÒ¡¯Ë¹ Òµ ҧᨠ§Â×¹Âѹ¡ÒõԴµÑ§é â»Ãá¡ÃÁ ¤ÅÔ¡»ØÁ Next à¾×Íè µÍºµ¡Å§


14 l àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

PIC

(4) ˹ Òµ ҧᨠ§ÅÔ¢ÊÔ·¸ «Í¿µ áÇà »ÃÒ¡¯¢Ö¹é ¤ÅÔ¡ I agree à¾×Íè µÍºÃѺ ¨Ò¡¹Ñ¹é ¤ÅÔ¡»ØÁ Next

(5) ˹ Òµ ҧᨠ§Ê¶Ò¹Ð¡ÒõԴµÑ§é â»Ãá¡ÃÁ»ÃÒ¡¯¢Ö¹é Ãͨ¹¡ÃÐ·Ñ§è ¡ÒõԴµÑ§é àÊÃç¨ÊÁºÙó

ËÅѧ¨Ò¡·ÕèµÔ´µÑé§à¤Ã×èͧÁ×;Ѳ¹Òâ»Ãá¡ÃÁàÊÃç¨ÊÁºÙó ·Ñé§ËÁ´áÅ Ç ã¹º·µ Í仨Ðà» ¹¡Òà Êà ҧËع ¹µ Robo-PICA áÅÐࢠÒÊÙ¡ ÒþѲ¹Òâ»Ãá¡ÃÁÀÒÉÒ C à¾×Íè ·´Êͺ¡Ò÷íÒ§Ò¹¢Í§á¼§Ç§¨Ã äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC16F887 áÅФǺ¤ØÁ¡Ò÷íÒ§Ò¹¢Í§Ëع ¹µ Robo-PICA 㹡Ԩ¡ÃÃÁµ Ò§æ

INNOVATIVE EXPERIMENT


àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC l 15

º··Õè 2

Êà ҧËع ¹µ Robo-PICA º·¹Õàé » ¹¡ÒùíÒàʹ͡ÒÃÊà ҧËع ¹µ Robo-PICA Íѹ໠¹Ëع ¹µ 굄 â¹Áѵ¢Ô ¹Ò´àÅç¡·Õ¤è Ǻ¤ØÁ ´ ÇÂäÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC àºÍà PIC16F887 ´Ñ§ÁÕ¤³ Ø ÊÁºÑµ·Ô ҧ෤¹Ô¤·Õ¹è Ò Ê¹ã¨â´ÂÊÃØ»µ Í仹Õé l

¢Ñºà¤Å×Íè ¹´ ÇÂ࿠ͧ¢ÑºÁÍàµÍÃ ÍµÑ ÃÒ·´ 48:1 ¨íҹǹ 2 ªØ´áÅЪشŠÍÊÒ¾ҹ

¤Çº¤ØÁ´ ÇÂäÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC16F887 â»Ãá¡ÃÁä´ ã¹µÑÇ´ ǺÍà ´ â»Ãá¡ÃÁ·Õàè ª×Íè Áµ ͡Ѻ¤ÍÁ¾ÔÇàµÍà ¼Ò ¹¾Íà µ USB l

l

µÔ´µÑ§é ἧǧ¨ÃµÃǨ¨Ñº¡ÒÃÊз ͹áʧÍÔ¹¿ÃÒàôà¾×Íè µÃǨ¨ÑºàÊ ¹

µÔ´µÑé§âÁ´ÙÅÇÑ´ÃÐÂзҧ´ ÇÂáʧÍÔ¹¿ÃÒàôà¾×è͵ÃǨ¨ÑºÇѵ¶ØáÅÐËźËÅÕ¡ÊÔ觡մ ¢ÇҧẺäÁ ÊÑÁ¼ÑÊ l

l

ἧǧ¨ÃÃѺáʧÍÔ¹¿ÃÒàôà¾×Íè ¤Çº¤ØÁ¨Ò¡ÃÐÂÐä¡Å

l

ÁÕâÁ´ÙÅ LCD ¢¹Ò´ 16 µÑÇÍÑ¡Éà 2 ºÃ÷ѴáÅÐ LED ÊíÒËÃѺáÊ´§¼Å¡Ò÷íÒ§Ò¹

ÁÕǧ¨Ã¢Ñº RC à«Íà âÇÁÍàµÍà 3 ª ͧ ¨Ö§ÊÒÁÒö»ÃѺà»ÅÕÂè ¹Ãкº¢Ñºà¤Å×Íè ¹ áÅÐ ÊÒÁÒö·íÒ¡ÒõԴµÑ駡Åä¡à¤Å×è͹äËÇà¾ÔèÁàµÔÁä´ l

l

ÁÕǧ¨Ã¢Ñº RC à«Íà âÇÁÍàµÍà 3 ª ͧ


16 l àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

PIC

¡Ô¨¡ÃÃÁ·Õè 1

Êà ҧËع ¹µ Robo-PICA ©Ò¡Âִ᡹ŠÍÊѹé x 2 á¼ ¹°Ò¹¾ÅÒʵԡ x 1 RBX-877V2.0 ºÍà ´¤Çº¤ØÁËÅÑ¡ ´ØÁÅ Í x 6 ᡹¡ÅÁ x 3

Š͢ѺÊÒ¾ҹ x 2

àÊÒÃͧâÅËÐ 30 ÁÁ. x 3 Å Í»ÃФͧÊÒ¾ҹãË­ x 2

©Ò¡Âִ᡹ŠÍÂÒÇ x 2

Å Í»ÃФͧÊÒ¾ҹ¡ÅÒ§ x 2

àÊÒÃͧ 3 ÁÁ. x 2 ÊÒ¾ҹ 30 ¢ ͵ Í x 2 ÊÒ¾ҹ 10 ¢ ͵ Í x 4

Ê¡ÃÙ 3x7 ÁÁ. (4), 3x9 ÁÁ. (1) áÅÐ 3x10 ÁÁ. (15)

Ê¡ÃÙÁÍ× ËÁع x 3

ªÔ¹é µ ÍÁØÁ©Ò¡ x 3 á· §µ Í 3 ÃÙ x 2

Ê¡ÃÙà¡ÅÕÂǻŠÍ 2 ÁÁ. x 2 Ê¡ÃÙ 3x15 ÁÁ. x 1

ἧǧ¨ÃµÃǨ¨Ñ º ¡Òà ªØ´à¿ ͧ¢ÑºÁÍàµÍà x 2 Êз ͹áʧÍÔ¹¿ÃÒàô x 2

¹Íµ 3 ÁÁ. x 11

âÁ´ÙÅ GP2D120

ÃÙ»·Õè 2-1 áÊ´§ªÔ¹é Ê Ç¹·Ñ§é ËÁ´·Õãè ª 㹡ÒÃÊà ҧËع ¹µ Robo-PICA

ªÔ¹é µ ÍÁØÁ» Ò¹ x 3

ªÔ¹é µ ͵ç x 1

ἧǧ¨ÃâÁ´ÙÅÃѺáʧ ÍÔ¹¿ÃÒàô x 1


àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC l 17

A1.1 ¹íҪش࿠ͧ¢ÑºÁÍàµÍÃ Â´Ö à¢ Ò¡Ñºá¼ ¹°Ò¹¾ÅÒʵԡ â´ÂÁÍàµÍà µÇÑ ¢ÇÒÁ×ÍãË Ë¹Ñ ´ Ò¹·ÕÁè »Õ ¡ ÍÍ¡ÁÒ´ Ò¹¹Í¡ áÅ Ç㪠ʡÃÙ 3x10 ÁÁ. ¢Ñ¹ÂÖ´¨Ò¡´ ҹŠҧ㹵íÒá˹ §´Ñ§áÊ´§ã¹ÃÙ» â´ÂàÇ ¹ÃÙ嫅 ´ ҹ㹢ͧÁÍàµÍà µÇÑ « ÒÂÁ×ÍäÇ ¡ ͹ àÇ ¹äÇ Â§Ñ äÁ Â´Ö Ê¡ÃÙ ´ Ò¹º¹

Ê¡ÃÙ 3x10 ÁÁ.

´ ҹŠҧ

Ëѹ´ Ò¹·ÕÁè »Õ ¡ ÍÍ¡´ Ò¹¹Í¡ ÂÖ´´ ÇÂÊ¡ÃÙ¨Ò¡´ ҹŠҧ

Ê¡ÃÙ 3x10 ÁÁ.

A1.2 ¹íÒŠ͢ѺÊÒ¾ҹËÅÑ¡ÊÇÁࢠҡѺ᡹¢Í§ªØ´à¿ ͧ¢ÑºÁÍàµÍà 㪠ʡÃÙà¡ÅÕÂǻŠÍ 2 ÁÁ. ¢Ñ¹ÂÖ´ ·íÒàËÁ×͹ ¡Ñ¹·Ñ§é Êͧ´ Ò¹

´ Ò¹º¹ Š͢ѺÊÒ¾ҹ Ê¡ÃÙà¡ÅÕÂǻŠÍ 2 ÁÁ. A1.3 ¤ÇèÒí á¼ ¹°Ò¹Å§ ¹íÒ©Ò¡Âִ᡹ŠÍÂÒÇ»ÃСºà¢ ҡѺἠ¹°Ò¹ã¹µíÒá˹ §µÒÁÃÙ» 㪠ʡÃÙ 3x10 ÁÁ. ¢Ñ¹ÂÖ´ ÂÖ´¡ÑºÃÙ·àÕè ËÅ×ͧ͢» ¡¢Í§ªØ´à¿ ͧ¢ÑºÁÍàµÍà ¨Ò¡¢Ñ¹é µÍ¹·Õè A1.1 ¨Ò¡¹Ñ¹é 㪠ʡÃÙ 3x10 ÁÁ. áÅй͵ 3 ÁÁ. ¢Ñ¹ÂÖ´ ©Ò¡Âִ᡹ŠÍÂÒÇÍÕ¡Ë¹Ö§è µíÒá˹ § â´ÂÂִࢠҷÕÃè ·Ù Õè 2 ¢Í§©Ò¡Âִ᡹ŠÍÂÒÇ ´Ñ§áÊ´§µíÒá˹ §µÒÁÃÙ» µíÒá˹ §ÃÙÂ´Ö Ê¡ÃÙ 3x10 ÁÁ. áÅй͵ 3 ÁÁ.

´ ҹŠҧ

Ê¡ÃÙ 3x10 ÁÁ. ©Ò¡Âִ᡹ŠÍÂÒÇ


18 l àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

PIC

A1.4 ¹íÒ©Ò¡Âִ᡹ŠÍÂÒÇ·Õàè ËÅ×ÍÂִࢠҡѺἠ¹°Ò¹ áÅ Ç㪠ʡÃÙ 3x10 ÁÁ. ¢Ñ¹ÂÖ´¨Ò¡´ Ò¹º¹ áÅÐÂÖ´´ ҹŠҧ ´ ǹ͵ 3 ÁÁ. 2 µíÒá˹ § ´Ñ§áÊ´§ã¹ÃÙ» ¹Íµ 3 ÁÁ.

¹Íµ 3 ÁÁ. ©Ò¡Âִ᡹ŠÍÂÒÇ ´ ҹŠҧ

¹Íµ 3 ÁÁ. A1.5 ¾ÅÔ¡á¼ ¹°Ò¹¡ÅѺÁÒ´ Ò¹º¹ ÂÖ´©Ò¡Âִ᡹ŠÍÊѹé ࢠҡѺ´ ҹ˹ Ңͧἠ¹°Ò¹ã¹µíÒá˹ §µÒÁ·Õáè Ê´§ã¹ ÃÙ» ¢Ñ¹Ê¡ÃÙÂ´Ö à©¾ÒеíÒá˹ §´ ҹ㹠ÃÙ´Ò ¹¹Í¡àÇ ¹äÇ ¹Íµ 3 ÁÁ. àÇ ¹äÇ

´ Ò¹º¹

´ Ò¹º¹

¹Íµ 3 ÁÁ.

©Ò¡Âִ᡹ŠÍÊѹé

A1.6 µÔ´µÑ§é àÊÒâÅËÐË¡àËÅÕÂè Á·Õ´è Ò ¹ËÅѧ¢Í§á¼ ¹°Ò¹ ¤ÇèÒí á¼ ¹°Ò¹Å§ ¢Ñ¹Ê¡ÃÙ 3x10 ÁÁ. ࢠҷÕÃè ãÙ ¹µíÒá˹ §ÁØÁ « Ò¼ ҹἠ¹°Ò¹áÅÐªÔ¹é µ ÍÁØÁ©Ò¡ à¾×Íè ¢Ñ¹ÂÖ´¡ÑºàÊÒâÅËÐË¡àËÅÕÂè Á

Ê¡ÃÙ 3x10 ÁÁ.

´ ҹŠҧ

ªÔ¹é µ ÍÁØÁ©Ò¡ àÊÒâÅËÐË¡àËÅÕÂè Á 30 ÁÁ.

Ê¡ÃÙ 3x10 ÁÁ. ¼ÅÔ¡á¼ ¹°Ò¹´ ҹŠҧ¢Öé¹ ªØ´à¿ ͧ¢Ñº ÁÍàµÍà ¢ÇÒ

á¼ ¹°Ò¹ ´ Ò¹º¹

àÊÒâÅËÐË¡àËÅÕèÂÁ

ÃÙ·ÕèÁØÁ« Ò´ Ò¹ËÅѧ ¢Í§á¼ ¹°Ò¹ ªÔé¹µ ÍÁØÁ©Ò¡


àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC l 19

A1.7 ·Õ´è Ò ¹Ë¹ ÒãË ·Òí ¡ÒõԴµÑ§é àÊÒâËÅÐË¡ààËÅÕÂè Áઠ¹¡Ñ¹ â´Âà ÍÂÊ¡ÃÙ 3x10 ÁÁ. ¼ ҹᷠ§µ Í 3 ÃÙ áÅ Ç¢Ñ¹à¢ Ò ä»ã¹ÃÙ·àÕè Ç ¹äÇ ¢Í§©Ò¡Âִ᡹ŠÍÊÑ¹é ¨Ò¡¢Ñ¹é µÍ¹·Õè A1.5 ¢Ñ¹¼ ҹἠ¹°Ò¹ä»ÂִࢠҡѺàÊÒâÅËÐË¡àËÅÕÂè Á 30 ÁÁ. ·íÒઠ¹¹Õ·é §Ñé Êͧ¢ Ò§ â´Âá· §µ Í·Õ¹è Òí ÁÒÂÖ´´ ǹըé Ð㪠µ´Ô µÑ§é ἧǧ¨ÃµÃǨ¨ÑºáʧÊз ͹ÍÔ¹¿ÃÒàôµ Íä» á· §µ Í 3 ÃÙ ´ ҹŠҧ Ê¡ÃÙ 3x10 ÁÁ. ©Ò¡Âִ᡹ŠÍÊѹé àÊÒâÅËÐË¡àËÅÕÂè Á 30 ÁÁ. A1.8 Âѧ¤§¤ÇèÒí á¼ ¹°Ò¹ÍÂÙ ¹íÒ᡹âÅËСÅÁàÊÕºࢠҷթè Ò¡Âִ᡹ŠÍÂÒÇã¹µíÒá˹ §ÃÙ·Õè 2 áÅÐ 6 ´Ñ§ÃÙ» ¡ ͹ ¹íÒÅ Í»ÃФͧÊÒ¾ҹ¡ÅÒ§àÊÕºµÒÁ´ Ç´ØÁÅ Íà¾×Íè ÂÖ´ãË á¹ ¹ ¨Ò¡¹Ñ¹é ¾ÅÔ¡á¼ ¹°Ò¹ãË ¡ÅѺ仴 Ò¹º¹ áŠǹíÒ á¡¹âÅËСÅÁàÊ ¹·Õè 3 àÊÕºࢠҷթè Ò¡Âִ᡹ŠÍÊÑ¹é µ Í´ ǹíÒÅ Í»ÃФͧÊÒ¾ҹãË­ ÊÇÁࢠÒÁÒ áÅ ÇÂÖ´ãË á¹ ¹´ Ç´ØÁÅ Í á¡¹âÅËСÅÁ ´ØÁÅ Í

´ØÁÅ Í

Å Í»ÃФͧÊÒ¾ҹ¡ÅÒ§

Å Í»ÃФͧÊÒ¾ҹãË­ ´ØÁÅ Í á¡¹âÅËСÅÁ

ÃÙ·Õè 6

´ØÁÅ Í ÃÙ·Õè 2


20 l àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

PIC

A1.9 »ÃСͺŠÍÊÒ¾ҹ¨íҹǹ 2 àÊ ¹ ã¹áµ ÅÐàÊ ¹ »ÃСͺ´ Ç ÊÒ¾ҹ 30 ¢ ͵ Í 1 àÊ ¹ ÊÒ¾ҹ 10 ¢ ͵ Í 2 àÊ ¹ ¡Òõ ÍÊÒ¾ҹ¨Ðµ ͧ¡ÅÑ´ÊÒ¾ҹᵠÅд ҹࢠҴ Ç¡ѹÍ ҧÃÐÁÑ´ÃÐÇѧ

A1.10 ¹íÒÊÒ¾ҹ·Õ»è ÃСͺáÅ ÇÊÇÁࢠҡѺŠ͢ѺÊÒ¾ҹáÅÐÅ Í»ÃФͧÊÒ¾ҹ ·íҷѧé Êͧ´ Ò¹


àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC l 21

A1.11 ¹íÒẵàµÍÃÕ¢è ¹Ò´ AA ¨íҹǹ 4 ¡ ͹ ºÃèØ㹡кж Ò¹¢Í§ºÍà ´ RBX-877 ¨Ò¡¹Ñ¹é ¹íÒºÍà ´ RBX-877 µÔ´µÑ§é ŧº¹ªØ´°Ò¹Ëع ¹µ â´ÂµÔ´µÑ§é ãË ´Ò ¹·ÕÁè ÊÕ ÇÔµª à» ´» ´ÍÂÙ´ Ò ¹à´ÕÂǡѺÁÍàµÍà ¨Ò¡¹Ñ¹é 㪠ʡÃÙÁÍ× ËÁع 3 µÑǢѹÂÖ´ºÍà ´¡Ñºâ¤Ã§Ëع ¹µ Ê¡ÃÙÁÍ× ËÁع

Ê¡ÃÙÁÍ× ËÁع ẵàµÍÃÕè AA 4 ¡ ͹ A1.12 ¹íÒἧǧ¨ÃâÁ´ÙÅÃѺáʧÍÔ¹¿ÃÒàô ZX-IRM ÂִࢠҡѺªÔ¹é µ ÍÁØÁ» Ò¹ ¢Ñ¹ÂÖ´´ ÇÂÊ¡ÃÙ 3x15 ÁÁ. áÅй͵ 3 ÁÁ. ¹íÒªÔ¹é µ ͵çÁÒàÊÕºࢠҡѺ»ÅÒ´ Ò¹Ë¹Ö§è ¢Í§ªÔ¹é µ ÍÁØÁ» Ò¹ Ê¡ÃÙ 3x15 ÁÁ.

ªÔ¹é µ ÍÁØÁ» Ò¹

ÊÒÂÊÑ­­Ò³ JST3AA-8

ªÔ¹é µ ͵ç

A1.13 µÔ´µÑ§é ªÔ¹é µ ÍÁØÁ©Ò¡à¢ Ò·ÕÃè ãÙ ¹µíÒá˹ §¡Ö§è ¡ÅÒ§¢Í§ºÍà ´ RBX-877 ·Ò§´ Ò¹ÊÇÔµª à» ´» ´ ËÃ×Í´ Ò¹ËÅѧ¢Í§â¤Ã§ Ëع ¹µ Robo-PICA â´Â㪠ʡÃÙ 3x10 ÁÁ. ¢Ñ¹ÂÖ´¡Ñº¹Íµ 3 ÁÁ. à¾×Íè 㪠໠¹·ÕÂè ´Ö á¼§Ç§¨ÃâÁ´ÙÅÃѺáʧÍÔ¹¿ÃÒàô ªÔ¹é µ ÍÁØÁ©Ò¡

Ê¡ÃÙ 3x10 ÁÁ.


22 l àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

PIC

A1.14 ¹íÒἧǧ¨ÃâÁ´ÙÅÃѺáʧÍÔ¹¿ÃÒàô ZX-IRM ·Õµè ´Ô µÑ§é ªÔ¹é µ ÍÁØÁ» Ò¹áÅÐªÔ¹é µ Íá¹ÇµÃ§¨Ò¡¢Ñ¹é µÍ¹·Õè A1.11 àÊÕºࢠҡѺªÔ¹é µ ÍÁØÁ©Ò¡ã¹¢Ñ¹é µÍ¹·Õè A1.12 Íѹ໠¹¡ÒõԴµÑ§é ἧǧ¨Ã ZX-IRM ࢠҡѺËع ¹µ Robo-PICA ¨Ò¡¹Ñ¹é àÊÕºÊÒÂÊÑ­­Ò³¢Í§ ZX-IRM à¢ Ò·Õ¨è ´Ø µ Í RB0/INT

ZX-IRM

RB0

A1.15 àÊÕºÊÒÂÁÍàµÍà ࢠҡѺ¨Ø´µ ÍÁÍàµÍà â´Âµ ÍÁÍàµÍà ¢ÇÒà¢ Ò·Õ¨è ´Ø µ Í M-2 ÊÕ¢ÒÇ áÅÐÁÍàµÍà «Ò ÂࢠҷÕè ¨Ø´µ Í M-1 ÊÕ´Òí Í ҧäáçµÒÁÊÒÁÒöà»ÅÕÂè ¹á»Å§ä´ ËÒ¡¡ÒÃà¤Å×Íè ¹·Õ¢è ͧËع ¹µ äÁ ¶¡Ù µ ͧ ÁÍàµÍà M-1

ÁÍàµÍà M-2


àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC l 23

A1.16 µÔ´µÑ§é ἧ¨ÃµÃǨ¨Ñº¡ÒÃÊз ͹áʧÍÔ¹¿ÃÒàô«Ö§è ¹íÒÁÒ㪠㹡ÒõÃǨ¨ÑºàÊ ¹à¢ Ò·Õ´è Ò ¹Ë¹ ҢͧËع ¹µ â´ÂµÔ´µÑ§é ࢠҡѺ»ÅÒ¢ͧᷠ§µ Í 3 Ã٠㹡ÒõԴµÑ§é à¾×Íè Âִἧǧ¨ÃµÃǨ¨Ñº¡ÒÃÊз ͹áʧÍÔ¹¿ÃÒàô·Ñ§é ÊͧªØ´ ãË ãª àÊÒÃͧ¾ÅÒʵԡ 3 ÁÁ. Ãͧ¡ ͹¢Ñ¹ÂÖ´´ ÇÂÊ¡ÃÙ 3x10 ÁÁ.áÅй͵ 3 ÁÁ. µÔ´µÑ§é ·Ñ§é Êͧ´ Ò¹ ´Ñ§ÃÙ»

ἧǧ¨ÃµÃǨ¨ÑºáʧÊз ͹ÍÔ¹¿ÃÒàô ¹Íµ 3 ÁÁ. àÊÒÃͧ 3 ÁÁ. A1.17 ¹íÒâÁ´ÙÅÇÑ´ÃÐÂзҧ GP2D120 µÔ´µÑ§é ࢠҡѺªÔ¹é µ ÍÁØÁ©Ò¡ã¹ÅѡɳдѧáÊ´§ã¹ÀÒ¾ â´Â㪠ʡÃÙ¢¹Ò´ 3x10 ÁÁ. áÅй͵ 3 ÁÁ. ¢Ñ¹ÂÖ´ ªÔ¹é µ ÍÁØÁ©Ò¡ GP2D120 ¢Ñ¹Ê¡ÃÙ 3x10 ÁÁ. áÅй͵ 3 ÁÁ. A1.18 ·Õ´è Ò ¹Ë¹ Ңͧâ¤Ã§Ëع ¹µ ¹Òí Ê¡ÃÙ 3x10 ÁÁ. áÅй͵ 3 ÁÁ. à ÍÂàÍÒäÇ ÂѧäÁ µÍ §¢Ñ¹ãË á¹ ¹ ¨Ò¡¹Ñ¹é ¹íÒ â¤Ã§Êà ҧ¢Í§ GP2D120 ·ÕÊè à ҧäÇ ã¹¢Ñ¹é µÍ¹·Õè A1.17 ÁÒàÊÕºࢠÒä»ÃÐËÇ Ò§ËÑÇÊ¡ÃÙ¡ºÑ ºÍà ´¤Çº¤ØÁ áŠǢѹ Ê¡ÃÙ嫅 ãË á¹ ¹ àÊÕº»ÅÒ¢ͧ ªÔé ¹ µ Í ÁØ Á ©Ò¡ ÃÐËÇ Ò §ËÑ Ç Ê¡ÃÙ ¡ÑººÍà ´


24 l àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

PIC

A1.19 µ ÍÊÒÂÊÑ­­Ò³¢Í§âÁ´ÙÅ GP2D120 ࢠҡѺª ͧ RA2 áÅе ÍÊÒÂÊÑ­­Ò³¢Í§á¼§Ç§¨ÃµÃǨ¨Ñºáʧ Êз ͹ÍÔ¹¿ÃÒàô (ZX-03) ´ Ò¹« ÒÂࢠҷժè Í § RA0 Ê Ç¹´ Ò¹¢ÇÒµ ͡Ѻª ͧ RA1

ZX-IRM

ZX-03 ¢ÇÒ

GP2D120 ZX-03 « ÒÂ

A1.20 ¨Ñ´à¡çºÊÒÂÊÑ­­Ò³·Ñ§é ËÁ´ãË àÃÕºà Í ¨Ðä´ Ë¹Ø Â¹µ Robo-PICA ·Õ¾ è à ÍÁÊíÒËÃѺ¡ÒÃà¢Õ¹â»Ãá¡ÃÁ à¾×Íè ·´Êͺ¡Ò÷íÒ§Ò¹µ Íä»

INNOVATIVE EXPERIMENT


àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC l 25

º··Õè 3

ºÍà ´¤Çº¤ØÁËÅÑ¡¢Í§Ëع ¹µ Robo-PICA áÅСÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C à¾×Íè ·´Êͺ¡Ò÷íÒ§Ò¹ ËØ ¹Â¹µ ROBO-PICA ·íÒ§Ò¹ä´ ´ Ç¡ÒäǺ¤ØÁ¨Ò¡ºÍà ´ RBX-877 V2.0 Íѹ»ÃСͺ ´ Ç äÁâ¤Ã¤Í¹â·ÃÅàÅÍà ·Õè·íÒ˹ Ò·Õè»ÃÐÁÇżÅËÅÑ¡ ǧ¨Ã¢ÑºÁÍàµÍÃ Ê Ç¹áÊ´§¼Å LCD Ê Ç¹ àª×Íè Áµ ͡Ѻà¤Ã×Íè §â»Ãá¡ÃÁÀÒ¹͡ â´ÂÃÒÂÅÐàÍÕ´ Ê Ç¹»ÃСͺµ Ò§æ áÊ´§à» ¹ºÅçÍ¡ä´ÍÐá¡ÃÁ ´Ñ§ÃÙ»·Õè 3-1

ÃÙ»·Õè 3-1 ä´ÍÐá¡ÃÁ¡Ò÷íÒ§Ò¹¢Í§ RBX-877 V2.0 ºÍà ´¤Çº¤ØÁËÅÑ¡¢Í§Ëع ¹µ Robo-PICA


26 l àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

PIC

¨Ø´µ ÍÊ×Íè ÊÒÃ͹ءÃÁ

ÊÇÔµª à» ´/» ´

¨Ø´µ Íà¤Ã×Íè §â»Ãá¡ÃÁ (µ Í¢Ò RC6 áÅÐ RC7) ¨Ø´µ ÍâÁ´ÙÅ LCD ¨Ø´µ ÍÃкººÑÊ I2C (µ Í¢Ò RD2-RD7)

¨Ø´µ ÍẵàµÍÃÕè

(µ Í¢Ò RC3 áÅÐ RC4)

äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

(µ Í¢Ò RC0)

21+ $.&&%

LED áÊ´§¼Å

¨Ø´µ Íà«Íà âÇÁÍàµÍà (µ Í¢Ò RB4,RB5,RC5)

ÅíÒ⾧໠Ââ«

¾Íà µÍÔ¹àµÍÃ Ã»Ñ µ

¨Ø´µ ÍÁÍàµÍà 俵ç

(µ Í¢Ò RB0)

ÊÇÔµª ¡´ (µ Í¢Ò RD0, RD1, RC2 áÅÐ RB1, RB2, RC1) (µ Í¢Ò RA4 áÅÐ RB0)

¾Íà µÍÔ¹¾ØµàÍÒµ ¾µØ

(µ Í¢Ò RB3)

(µ Í¢Ò RA0-RA3, RA5, RE0-RE2)

ÃÙ»·Õè 3-2 áÊ´§Ê ǹ»ÃСͺ·ÕÊè Òí ¤Ñ­¢Í§ RBX-877 V2.0 ºÍà ´¤Çº¤ØÁËÅÑ¡¢Í§Ëع ¹µ Robo-PICA

3.1 ¤Ø³ÊÁºÑµ·Ô ҧ෤¹Ô¤ 㪠äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC16F887 ¤Çº¤ØÁ¡Ò÷íÒ§Ò¹·Ñ§é ËÁ´ l ´Òǹ âËÅ´â»Ãá¡ÃÁ¨Ò¡¤ÍÁ¾ÔÇàµÍà ´Ç Âà¤Ã×Íè §â»Ãá¡ÃÁÀÒ¹͡¼ Ò¹·Ò§á¨ ¡ ICD2 l ÁÕǧ¨Ã¢ÑºÁÍàµÍà 俵ç 2 ªØ´¾Ã ÍÁä¿áÊ´§·ÔÈ·Ò§¡ÒÃËÁع l ¢Ñº RC à«Íà âÇÁÍàµÍà ¢¹Ò´àÅç¡ 4.8 ¶Ö§ 6V ä´ 3 µÑÇ l ÁÕÅÒ í ⾧໠Ââ«ÊíÒËÃѺ¢ÑºàÊÕ§ l ÁÕ LED áÊ´§¼Åµ ͵ç¡Ñº¢Ò¾Íà µ¢Í§äÁâ¤Ã¤Í¹â·ÃÅàÅÍà l âÁ´ÙÅ LCD 16 µÑÇÍÑ¡Éà 2 ºÃ÷Ѵ ẺÁÕä¿Ê ͧËÅѧ l ¨Ø´µ ÍÊíÒËÃѺàª×Í è Áµ ͡ѺÍØ»¡Ã³ ·ÁÕè ¡Õ ÒÃÊ×Íè ÊÒâ ÍÁÙÅẺ͹ءÃÁáÅÐÃкººÑÊ I2C l ÁÕ¨´ Ø µ ÍÍÔ¹¾ØµàÍÒµ ¾µØ Ẻ´Ô¨µÔ ÍÅáÅÐÍÔ¹¾ØµÍйÒÅÍ¡ 9 ª ͧ l ·íÒ§Ò¹´ ÇÂẵàµÍÃÕè AA 4 ¡ ͹ ãª ä´ ·§ Ñé ẺÍÑŤÒäŹ áÅÐẺ»ÃШØä´ l ¢¹Ò´ 2.38 x 6.25 ¹ÔÇ é l


àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC l 27

SW1 ON

+Vm

L1 10uH

D1 1N4001

R1 0.47

D2 1N5819 +5V

K1 BATT. 4.5-6V

C1 100µF 10V

C2 100µF 10V

ZD1 5.1V

IC1 NCP1450 5.0

Q1 FDS6680A

5 4

K2 ISP

CE OUT

GND

C3 1000µF 6.3V

1 2

LED1 ON

ZD2 5.6V

C4 0.01µF 50V

Switching Power Supply

PGC PGD

+5V

R2 1k

+5V

+5V Vpp

11

PGD

40

J1 ICD2

39

PGC GND

32

C5 0.1µF 50V

RB7 RB6

Vpp

+5V

RD2 21

4

22

6

RD3 IC2 PIC16F887

R3 4k7

1 R4 1k

SW2 RESET

MCLR

RD7 RD6 RD5

+5V 23

K3 SDA/RC4

18

K4 SCL/RC3

RD4

RB3

K6 RxD/RC7

26

RC6/TxD RB5

R6 4k7

+5V R8 150

K7 INT/RB0

S2 RB0

+5V

6 33

RB1 RB2 RC1/CCP2

+5V

K15 AN5/RE0

8

K14 AN4/RA5

7

K9 AN3/RA3

5

K13 AN2/RA2

4

K12 AN1/RA1

3

K11 AN0/RA0

2

CR1 Ceramic Resonator 20MHz

BRIGHTNESS

27

36

LED2 RB3

R5 510

37 +Vm

K8 SERVO1

+Vm

K9 SERVO2

+Vm

K10 SERVO3

38

24

K18A-K18B Motor M-1 C7 0.1µF 50V

+5V +Vm

19

2

20

7 2A

RC2/CCP1 17

9

VR1 10k

3

BLK GND 15 2

28

16

RD1

K16 AN6/RE1

1

29

RB0/INT RD0

10

BACK LIGHT ON

1A

1

15 4A

35

10

16

9

RE2/AN7

RC0

15

RE0/AN5

31 RA1/AN1

13

INVERT

+ +

K19A-K19B Motor M-2

DIRECT

Motor Driver +Vm

R9 47k

1 +V RESET GND 2

RA0/AN0

R10 2k2 C8 0.1µF 50V

4

C6 10µF 50V

R8 1k 12

LED4 DIR. #B

3A

RA3/AN3 RA2/AN2

DIRECT LED3 DIR. #A

34EN

SP1 PIEZO

RA5/AN4

+

R9 2k2

6

14 IC3 4Y L293D 11 3Y

13 12 5

RE1/AN6

1Y 3 2Y

12EN

34

8

Vcc1

INVERT

+

RA4

S1 RA4

K17 AN7/RE2

+V Vo

RC7/RxD RC5

R7 4k7

E

R5 16 47

RC3/SCL RB4

25

BLA

DSP1 LCD 16x2 (back light option)

RS

D7 D6 D5 D4 D3 D2 D1 D0 R/W 14 13 12 11 10 9 8 7 5

30

RC4/SDA

+5V K5 TxD/RC6

+5V JP1

3

LED5 LOW-BAT

Battery Indicator 14

ÃÙ»·Õè 3-2 áÊ´§Ç§¨ÃÊÁºÙó ¢Í§ RBX-877 V2.0 ºÍà ´¤Çº¤ØÁËÅÑ¡¢Í§Ëع ¹µ Robo-PICA


28 l àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

PIC

3.2 ¡Ò÷íÒ§Ò¹¢Í§Ç§¨Ã

3.2.1 Ê Ç¹äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

ËÑÇã¨ÊíҤѭ¤×Í äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC16F887 ÁÕ¢Ò¾Íà µÍÔ¹¾ØµàÍÒµ ¾µØ ãË µÍ 㪠§Ò¹ä´ ÁÒ¡¶Ö§ 35 ¢Ò ÀÒÂã¹äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ Â§Ñ »ÃСͺ仴 ÇÂâÁ´Ùŵ Ò§ æ ÁÒ¡ÁÒ ઠ¹âÁ´ÙÅ PWM à¾×è Í ãË Ê ÒÁÒö»ÃÑ º ¤ÇÒÁàÃç Ç ÁÍàµÍÃ ä ´ µ ÒÁµ Í §¡Òà âÁ´Ù Å á»Å§ÊÑ ­ ­Ò³ÍйÒÅÍ¡à» ¹ ´Ô¨µÔ ÍÅ(ADC) «Ö§è PIC16F887 ä´ àµÃÕÂÁ ADC ¤ÇÒÁÅÐàÍÕ´ 10 ºÔµäÇ ÁÒ¡¶Ö§ 14 ª ͧ ´Ñ§¹Ñ¹é ´ ÇÂäÁâ¤Ã ¤Í¹â·ÃÅàÅÍà à¾Õ§µÑÇà´ÕÂǨ֧µ ͡ѺÍØ»¡Ã³ ÍÔ¹¾ØµàÍÒµ ¾Øµà¾×èÍÊà ҧ໠¹ËØ ¹Â¹µ ä´ Í ҧ§ Ò´Ò â´ÂÁÕà«ÃÒÁÔ¡àÃâ«à¹àµÍà 20MHz ¡íÒà¹Ô´¤ÇÒÁ¶ÕÊè ­ Ñ ­Ò³¹ÒÌ ¡Òà¾×Íè ãË äÁâ¤Ã¤Í¹â·ÃÅàÅÍà ·Òí §Ò¹ ä´ ·¤Õè ÇÒÁàÃçǶ֧ 5 Å Ò¹¤íÒÊÑ§è µ ÍÇÔ¹Ò·Õ

3.2.2 ÀÒ¤¨ ÒÂä¿ ºÍà ´ RBX-877 µ ͧ¡ÒÃáç´Ñ¹ä¿àÅÕÂé §ÍÔ¹¾Øµà» ¹áç´Ñ¹ä¿¿ Ò¡ÃÐáʵç 4.8 ¶Ö§ 6V (äÁ ¤ÇÃà¡Ô¹ +6V) â´Âº¹ºÍà ´ÁÕ¡ÒõԴµÑ§é ¡ÐºÐ¶ Ò¹ AA ¢¹Ò´ 4 ¡ ͹ áÅе ÍÊÒÂÁÒÂѧ¨Ø´µ Íä¿àÅÕÂé § Ẻà·Íà Á¹Ô ÍźÅçÍ¡ 2 ¢ÒµÑÇàÅç¡ àÁ×Íè µ ͧ¡ÒÃ㪠§Ò¹¡çà¾Õ§ºÃèØẵàµÍÃÕ¢è ¹Ò´ AA ¨íҹǹ 4 ¡ ͹ ŧ㹡кж Ò¹


àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC l 29

º¹ºÍà ´ä´ ºÃèØǧ¨ÃÀÒ¤¨ ÒÂä¿ÊÇÔµª ªÔè§áºº»ÃѺ¢Öé¹ (step up) à¾×èÍ¡íÒ˹´ÃдѺáç´Ñ¹ ä¿àÅÕé§ǧ¨Ã·Ñé§ËÁ´äÇ ·Õè +5V ·Ñ駹Õéà¹×èͧ¨Ò¡àÁ×èÍàÃÔèÁµ ¹¨ ÒÂä¿ãË á¡ Ç§¨Ã ÃдѺ¢Í§áç´Ñ¹·Õè ẵàµÍÃÕ¨è Ф ÍÂæ Ŵŧ ´ Ç¡ÒÃ㪠ǧ¨Ã¨ ÒÂä¿ÊÇÔµª ª§Ôè Ẻ»ÃѺ¢Ö¹é ¹Õ·é Òí ãË áç´Ñ¹ä¿àÅÕÂé §Ç§¨ÃÃÇÁ Âѧ¤§ÃÑ¡ÉÒÃдѺÍÂÙ· Õè +5V ÍÂÙä ´ ¨¹¡Ç ÒÃдѺáç´Ñ¹¢Í§áºµàµÍÃÕ¨è ÐŴŧµèÒí ÁÒ¡¨ÃÔ§æ (»ÃÐÁÒ³ 1.5V) ¨Ö§äÁ ÊÒÁÒöÃÑ¡ÉÒÃдѺáç´Ñ¹äÇ ä´ ÊíÒËÃѺ㹡óշáÕè ç´Ñ¹¨Ò¡áºµàµÍÃÕÅè ´µèÒí ¡Ç Ò 4V ǧ¨ÃµÃǨ¨Ñºáç´Ñ¹áºµàµÍÃÕ¨è зíÒ§Ò¹ áÅÐᨠ§àµ×͹ÍÍ¡ÁÒ·Õè LED ÊÕàËÅ×ͧµíÒá˹ § BATT. ¼Ùã ª §Ò¹¤ÇÃà»ÅÕÂè ¹áºµàµÍÃÕãè ËÁ ·¹Ñ ·Õ LED áÊ´§Ê¶Ò¹ÐẵàµÍÃÕè

ÊÇÔµª à» ´/» ´

3.2.3 Ê Ç¹áÊ´§¼Å ÁÕ´Ç Â¡Ñ¹ 3 Ê Ç¹ »ÃСͺ´ Ç (1) âÁ´ÙÅ LCD ÊíÒËÃѺáÊ´§¼Å¢ ͤÇÒÁ ºÍà ´ RBX-877 ÁÕâÁ´ÙÅ LCD 16 µÑÇÍÑ¡Éà 2 ºÃ÷Ѵàª×Íè Áµ ͡ѺäÁâ¤Ã¤Í¹â·ÃÅàÅÍà â´Âµ Í¢Ò RD4 ¶Ö§ RD7 ¢Í§ PIC16F887 ࢠҡѺ¢Ò D4 ¶Ö§ D7 ¢Í§âÁ´ÙÅ LCD à¾×Íè à¢Õ¹¢ ÍÁÙÅáÊ´§¼ÅáÅФíÒÊѧè , µ Í¢Ò RD3 ¡Ñº¢Ò E à¾×Íè » ͹ÊÑ­­Ò³¾ÑÅÊ ÊíÒËÃѺàÍç¹àÍàºÔÅ¡Ò÷íÒ§Ò¹¢Í§âÁ´ÙÅ LCD áÅе Í¢Ò RD2 ࢠҡѺ¢Ò RS ¢Í§âÁ´ÙÅ LCD à¾×Íè àÅ×Í¡ ¡ÒÃà¢Õ¹¢ ÍÁÙÅËÃ×ͤíÒÊѧè ä»ÂѧâÁ´ÙÅ LCD ÁÕµÇÑ µ Ò¹·Ò¹»ÃѺ¤ Òä´ VR1 ¤ Ò 10kΩ ·íÒ˹ Ò·Õ»è ÃѺ¤ÇÒÁ ࢠÁ¢Í§¨ÍáÊ´§¼Å ¶ ÒËÒ¡µ ͧ¡ÒÃãË à» ´ä¿Ê ͧËÅѧ¢Í§âÁ´ÙÅ LCD ãË ·Òí ¡Òõ ͨÑÁê à»Íà ·ÍÕè ÂÙ´ Ò ¹ ¢ÇÒÁ×ͧ͢âÁ´ÙÅ LCD (»¡µÔ¨Ðµ ÍäÇ áÅ Ç) ¶ Òµ ͧ¡Òû ´à¾×Íè »ÃÐËÂÑ´¾Åѧ§Ò¹ãË »Å´¨ÑÁê à»Íà ¹ÍÕé Í¡


30 l àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

PIC

(2) LED 㪠áÊ´§Ê¶Ò¹Ðàº×Íé §µ ¹ºÍà ´ RBX-877 â´Âµ Í LED äÇ 1 ´Ç§à¢ ҡѺ¢Ò ¾Íà µ RB3 ¢Í§äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC16F887

(3) ÅíÒ⾧ 㪠áÊ´§¼Å¡Ò÷íÒ§Ò¹´ ÇÂÊÑ­­Ò³àÊÕ§ â´Âµ ÍÅíÒ⾧໠Ââ«à¢ Ò·Õ¢è Ò¾Íà µ RC0 ¤ÇÒÁ¶Õàè Ãâ«á¹¹« ¢Í§ÅíÒ⾧໠Â⫹ÕÍé ÂÙà ÐËÇ Ò§ 1 ¶Ö§ 3kHz

3.2.4 Ê Ç¹¾Íà µÍÔ¹¾ØµàÍÒµ ¾µØ ¡ÒÃÃѺÊÑ­­Ò³ÍÔ¹¾ØµËÃ×͢ѺÍØ»¡Ã³ àÍÒµ ¾µØ ÀÒ¹͡ÊÒÁÒö¡ÃзíÒä´ â´ÂµÃ§¼ Ò¹¢Ò RB0 , RA0 ¶Ö§ RA3, RA5, RE0 ¶Ö§ RE2 áÅÐ RC3 ¶Ö§ RC7 ¢Ò¾Íà µàËÅ Ò¹ÕÊé ÒÁÒö¡íÒ˹´¡Ò÷íÒ§Ò¹ä´ ËÅÒÂÃٻẺ ´Ñ§¹Õé

(1) RB0 , RA0 ¶Ö§ RA3, RA5 áÅÐ RE0 ¶Ö§ RE2

¡ÒèѴ¢Ò¢Í§ ¨Ø´µ Í 3 ¢Ò

(1.1) ÍÔ¹¾ØµÍйÒÅÍ¡ à¾×Íè ÃѺÊÑ­­Ò³ÍÔ¹¾ØµáººÍйÒÅÍ¡Ê §à¢ Òä»»ÃÐÁÇżÅÂѧ ǧ¨Ãá»Å§ÊÑ­­Ò³ÍйÒÅÍ¡à» ¹´Ô¨µÔ ÍÅ¢¹Ò´ 10 ºÔµÀÒÂã¹äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC16F887


àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC l 31

(1.2) ÍÔ¹¾Øµ´Ô¨µÔ ÍÅ à¾×Íè ÃѺÊÑ­­Ò³Åͨԡ 0 áÅÐ 1 ¨Ò¡ÍØ»¡Ã³ ÀÒ¹͡ (1.3) àÍÒµ ¾µØ ´Ô¨µÔ ÍÅ à¾×Íè Ê §ÊÑ­­Ò³Åͨԡ 0 áÅÐ 1 ä»ÂѧÍØ»¡Ã³ ÀÒ¹͡ (1.4) ÍÔ¹¾ØµÍÔ¹àµÍÃ Ã»Ñ µ ÊíÒËÃѺ¡Ò÷íҧҹẺ¹Õ¨é ÐÃͧÃѺ੾ÒТҾÍà µ RB0/INT ෠ҹѹé àÁ×Íè àÍç¹àÍàºÔÅ¡ÒõͺʹͧÍÔ¹àµÍÃ Ã»Ñ µ ¨Ò¡ÀÒ¹͡ áÅÐÁÕ¡ÒÃà»ÅÕÂè ¹á»Å§Ê¶Ò¹Ð·ÕÅè ͨԡ à¡Ô´¢Ö¹é ·Õ¢è Ò¾Íà µ RB0 ¹Õé «Õ¾ÂÕ ¨Ù СÃÐâ´´ä»·íÒ§Ò¹·Õâè »Ãá¡ÃÁ ÍºÃÔ¡ÒÃÍÔ¹àµÍÃ Ã»Ñ µ ·¹Ñ ·Õ â´Â¤ ÒµÑ§é µ ¹¨Ð¡íÒ˹´ãË ¢Ò¾Íà µ·Ñ§é 9 ¢Ò¹Õ·é Òí §Ò¹à» ¹ÍÔ¹¾ØµÍйÒÅÍ¡

(2) RC3 áÅÐ RC4

(2.1) ÍÔ¹¾Øµ´Ô¨µÔ ÍÅ à¾×Íè ÃѺÊÑ­­Ò³Åͨԡ 0 áÅÐ 1 ¨Ò¡ÍØ»¡Ã³ ÀÒ¹͡ (2.2) àÍÒµ ¾µØ ´Ô¨µÔ ÍÅ à¾×Íè Ê §ÊÑ­­Ò³Åͨԡ 0 áÅÐ 1 ä»ÂѧÍØ»¡Ã³ ÀÒ¹͡ (2.3) ¢Òàª×Íè Áµ ÍÃкººÑÊ I2C â´Â¡íÒ˹´ãË RC3 à» ¹¢ÒÊÑ­­Ò³¹ÒÌ Í¡Ò͹ءÃÁ (SCL) áÅÐ¢Ò RC4 à» ¹¢Ò¢ ÍÁÙÅ͹ءÃÁ (SDA) ÊíÒËÃѺàª×Íè Áµ ͡ѺÍØ»¡Ã³ ÀÒ¹͡¼ Ò¹ÃкººÑÊ I2C µÑÇÍ ҧ¢Í§ÍØ»¡Ã³ ÃкººÑÊ I2C ä´ á¡ CMPS03 âÁ´ÙÅà¢çÁ·ÔÈÍÔàÅç¡·ÃÍ¹Ô¡Ê , DS1307 äÍ«Õ °Ò¹àÇÅÒ¹ÒÌ ¡Ò¨ÃÔ§ (ÃÕÅä·Á ¤ÅçÍ¡), 24Cxx äÍ«Õ˹ ǤÇÒÁ¨íÒ¢ ÍÁÙÅÍÕÍ¾Õ ÃÍÁ, ZX-RELAY16 ºÍà ´ ¢ÑºÃÕàÅ 16 ª ͧ , DS1621 äÍ«ÕÇ´Ñ ÍسËÀÙÁ,Ô SHT11 âÁ´ÙÅÇÑ´¤ÇÒÁª×¹é ÊÑÁ¾Ñ·¸ à» ¹µ ¹

ZX-RELAY16 ºÍà ´¢ÑºÃÕàÅ 16 ª ͧ¼ Ò¹ÃкººÑÊ I2C CMPS03 âÁ´ÙÅà¢çÁ·ÔÈ´Ô¨µÔ ÍÅ


32 l àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

PIC

(3) RC6 áÅÐ RC7

(3.1) ÍÔ¹¾Øµ´Ô¨µÔ ÍÅ à¾×Íè ÃѺÊÑ­­Ò³Åͨԡ 0 áÅÐ 1 ¨Ò¡ÍØ»¡Ã³ ÀÒ¹͡ (3.2) àÍÒµ ¾µØ ´Ô¨µÔ ÍÅ à¾×Íè Ê §ÊÑ­­Ò³Åͨԡ 0 áÅÐ 1 ä»ÂѧÍØ»¡Ã³ ÀÒ¹͡ (3.3) ¢ÒÊíÒËÃѺÊ×èÍÊÒâ ÍÁÙÅ͹ءÃÁ â´Â¢Ò¾Íà µ¹Õéàª×èÍÁµ ͡ѺâÁ´ÙÅÊ×èÍÊÒâ ÍÁÙŠ͹ءÃÁËÃ×Í USART ÀÒÂã¹ PIC16F887 ´Ñ§¹Ñ¹é ¨Ö§ÊÒÁÒö¹íÒä»ãª àª×Íè Áµ ͡ѺÍØ»¡Ã³ ÀÒ¹͡ÃÇÁ ·Ñ駾Íà µÍ¹Ø¡ÃÁ¢Í§¤ÍÁ¾ÔÇàµÍà à¾×èÍÊ×èÍÊÒâ ÍÁÙÅ͹ءÃÁÃÐËÇ Ò§¡Ñ¹áÅСѹ â´Â¢Ò RC6 à» ¹¢Ò ÃѺ¢ ÍÁÙÅ͹ءÃÁ (RxD) áÅÐ¢Ò RC7 à» ¹¢ÒÊ §¢ ÍÁÙÅ͹ءÃÁ (TxD) 㹡óշÕèµ Í§¡ÒÃàª×èÍÁµ ͡Ѻ ¾Íà µÍ¹Ø¡ÃÁ¢Í§¤ÍÁ¾ÔÇàµÍà ¨Ðµ ͧµ ͢ҷѧé Êͧ¹Õ¼é Ò ¹Ç§¨Ãá»Å§ÃдѺÊÑ­­Ò³´ ÇÂäÍ«Õ·ÃÒ¹«Õ¿ àÇÍà àºÍà MAX232 à» ¹µ ¹ ¹Í¡¨Ò¡¹Ñé¹ÂѧÊÒÁÒöµ Í¢Ò¾Íà µ·Ñé§Êͧ¹Õé¡ÑºÍØ»¡Ã³ Ê×èÍÊÒâ ÍÁÙŠ͹ءÃÁẺäà ÊÒ ÍÒ·Ô ZX-BLUETOOTH à¾×èÍÃÑºÊ §¢ ÍÁÙÅ͹ءÃÁ¡Ñº¤ÍÁ¾ÔÇàµÍà ËÃ×Íâ·ÃÈѾ· à¤Å×Íè ¹·Õ¼è Ò ¹ÃкººÅÙ·¸Ù , âÁ´ÙÅ XBee áÅÐ XBee PRO ¾×Íè ÃÑºÊ §¢ ÍÁÙÅ͹ءÃÁ¼ Ò¹Ãкº ZIGBEE, ZX-SERVO16 ºÍà ´¢Ñºà«Íà âÇàµÍà 16 ª ͧ, ZX-17 ºÍà ´°Ò¹àÇÅÒ¹ÒÌ ¡Ò¨ÃԧẺ͹ءÃÁ, ZX-19 ºÍà ´ºÑ¹·Ñ¡áÅÐàÅ ¹¡ÅѺàÊÕ§Ẻ͹ءÃÁ, ZX-44 ºÍà ´ÊÇÔµª àÁµÃÔ¡« 4x4 ¨Ø´ à» ¹µ ¹

ZX-BLUETOOTH âÁ´ÙÅÊ×Íè ÊÒà ¢ ÍÁÙÅäà ÊÒ¼ Ò¹ºÅÙ·¸Ù ZX-44 ºÍà ´ÊÇÔµª àÁµÃÔ¡« 4x4 ¨Ø´ XBee-PRO

ZX-SERVO16ºÍà ´ ¢Ñ º à«Íà âÇÁÍàµÍà 16 ª ͧ


àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC l 33

3.2.5 ǧ¨Ã¢ÑºÁÍàµÍà 俵ç

¡ÒâѺÁÍàµÍà 俵ç¢Í§ºÍà ´ RBX-877 㪠äÍ«ÕàºÍà L293D ÊÒÁÒö¢ÑºÁÍàµÍÃ ä¿µÃ§ä´ 2 ª ͧ â´Â¡íÒ˹´à» ¹ª ͧ M-1 áÅÐ M-2 â´Âǧ¨Ã¢ÑºÁÍàµÍà ªÍ § M-1 ä´ ÃºÑ ¡ÒäǺ¤ØÁ¨Ò¡¢Ò RD0 ¡Ñº RD1 áÅÐàÍç¹àÍàºÔÅ¡Ò÷íÒ§Ò¹´ ÇÂ¢Ò RC2 ã¹¢³Ð·Õªè Í § M-2 ä´ ÃºÑ ¡ÒäǺ¤ØÁ¨Ò¡¢Ò¾Íà µ RB1 ¡Ñº RB2 áÅÐàÍç¹àÍàºÔÅ¡Ò÷íÒ§Ò¹´ Ç¢ҾÍà µ RC1 ·Õàè ÍÒµ ¾µØ ¢Í§Ç§¨Ã¢ÑºÁÍàµÍà ·§Ñé Êͧª ͧÁÕ LED 2 ÊÕ áÊ´§¼Å¡Ò÷íÒ§Ò¹¢Í§ÁÍàµÍà (ÊÕà¢ÕÂÇᨠ§¡Òè ÒÂ俵ç¢ÑÇé áÅÐÊÕᴧᨠ§¡Òè Ò¡ÅѺ¢ÑÇé ) ÊíÒËÃѺ¢ÒàÍç¹àÍàºÔÅ¹Ñ¹é ¹Í¡¨Ò¡¹íÒÁÒ㪠àÍç¹àÍàºÔÅËÃ×Íà» ´» ´¡Ò÷íÒ§Ò¹¢Í§Ç§¨Ã¢ÑºÁÍàµÍà ᵠÅеÑÇáÅ Ç Âѧ㪠¤Çº¤ØÁ¤ÇÒÁàÃçÇ㹡ÒÃËÁع¢Í§ÁÍàµÍÃ ä´ ´Ç  â´Â» ͹ÊÑ­­Ò³ PWM ࢠҷբè ÒàÍç¹àÍ àºÔŹÕáé ·¹ ´Ñ§ÃÙ»


34 l àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

PIC

3.2.6 Ê Ç¹¢Ñºà«Íà âÇÁÍàµÍÃ

¢Ò RB4, RB5 áÅÐ RC5 㪠ÊÒí ËÃѺ¢Ñºà«Íà âÇÁÍàµÍà â´Âä¿àÅÕÂé §¢Í§à«Íà âÇÁÍàµÍÃ ä´ ÁÒ â´ÂµÃ§¨Ò¡áºµàµÍÃÕè à¾×Íè ãË Á¡Õ ÃÐáÊÁÒ¡¾Í·Õãè ª ¢ºÑ ÁÍàµÍà ઠ¹à´ÕÂǡѺÁÍàµÍà 俵ç ¡ÒÃÊÑ§è §Ò¹ ¨Ò¡äÁâ¤Ã¤Í¹â·ÃÅàÅÍà 㪠¡Òû ͹ÊÑ­­Ò³¾ÑÅÊ à¾×èͤǺ¤ØÁ¡ÒÃËÁع¢Í§á¡¹à«Íà âÇÁÍàµÍÃ

3.2.7 ǧ¨ÃÊÇÔµª à¾×èÍãË ºÍà ´ RBX-877 à» ¹ºÍà ´¤Çº¤ØÁ·ÕèÊÁºÙó ¾Ã ÍÁ ´Ñ§¹Ñé¹ ¹Í¡¨Ò¡¨ÐÁÕâÁ´ÙÅ LCD à¾×Íè áÊ´§¢ ͤÇÒÁµ Ò§æ áÅ Ç ¡ÒÃÃѺ¢ ÍÁÙŨҡ¼Ùã ª ¡¨ç СÃзíÒ¼ Ò¹ÊÇÔµª â´Âº¹ºÍà ´ÁÕǧ¨ÃÊÇÔµª ¡´µÔ´»Å Í´Ѻ 2 ª ͧ «Ö§è µ ÍࢠҡѺ¢Ò¾Íà µ RA4 áÅÐ RB0 ¢Í§äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC16F887 ÊíÒËÃѺ¢Ò RB0 ¹Ñ¹é ¨Ðà» ¹µíÒá˹ §¢Òà´ÕÂǡѺ¢Ò¾Íà µÍÔ¹¾ØµÍÔ¹àµÍÃ Ã»Ñ µ ¨Ö§·íÒãË ÊÇÔµª ·¢Õè Ò RB0 ÊÒÁÒö㪠Êà ҧÊÑ­­Ò³ÍÔ¹àµÍà ÃÑ»µ àÁ×èÍ¡´ÊÇÔµª ä´ ´ Ç º¹ºÍà ´ RBX-877 ÂѧÁÕÊÇÔµª ¡´µÔ´»Å Í´ѺÍÕ¡Ë¹Ö§è µÑÇ ¹Ñ¹è ¤×Í ÊÇÔµª RESET «Ö§è µ ÍࢠҡѺ ¢Ò RE3/MCLR â´Â»¡µÔ¨Ð㪠§Ò¹à» ¹¢ÒÃÕ૵¡Ò÷íÒ§Ò¹¢Í§äÁâ¤Ã¤Í¹â·ÃÅàÅÍà ᵠ¼Ù 㪠§Ò¹ ÊÒÁÒö¡íÒ˹´¤ Ҥ͹¿ ¡ãËÁ à¾×Íè 㪠§Ò¹¢Ò¹Õàé » ¹¢ÒÍÔ¹¾Øµ´Ô¨µÔ ÍÅä´ â´Â¢Ò¹Õ¨é СÅÒÂà» ¹¢Ò¾Íà µ RE3 á·¹ ÊÇÔµª RESET ËÃ×Í RE3


àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC l 35

3.2.8 ᨠ¡ ICD2 : ¨Ø´µ Íà¤Ã×Íè §â»Ãá¡ÃÁäÁâ¤Ã¤Í¹â·ÃÅàÅÍà ÀÒ¹͡ 㹡ÒÃ㪠§Ò¹ºÍà ´ RBX-877 ¨Ðµ ͧÁÕ¡ÒþѲ¹Òâ»Ãá¡ÃÁº¹¤ÍÁ¾ÔÇàµÍà à¾×Íè ãË ä´ ä¿Å ¼ÅÅѾ¸ ¹ÒÁÊ¡ØÅ .hex ¨Ò¡¹Ñé¹¹íÒä¿Å .hex ä»·íÒ¡ÒÃâ»Ãá¡ÃÁŧã¹Ë¹ ǤÇÒÁ¨íÒâ»Ãá¡ÃÁ¢Í§ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC16F887 㹪ش Robo-PICA ä´ àµÃÕÂÁºÍà ´ÊíÒËÃѺâ»Ãá¡ÃÁäÇ ¾Ã ÍÁ â´ÂºÍà ´â»Ãá¡ÃÁ¹Ñé¹µ ͧ·íÒ§Ò¹¡Ñº¤ÍÁ¾ÔÇàµÍà â´Âµ ÍࢠҡѺ¾Íà µ USB áÅ Ç㪠«Í¿µ áÇà PICkit2 Programming 㹡ÒÃâ»Ãá¡ÃÁ¢ ÍÁÙÅŧã¹äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC16F887 â´Â¡ÒõԴµ ÍÃÐËÇ Ò§ºÍà ´â»Ãá¡ÃÁ¡ÑººÍà ´ RBX-877 ¹Ñ¹é ¨Ð¡ÃзíÒ¼ ҹᨠ¡ ICD2 ´Ñ§ÃÙ» ºÍà ´â»Ãá¡ÃÁ PIC

ÊÒÂ ICD2

4.8-6V

RC7 RxD DOWNLOAD

POWER

RC6 TxD

RC4 SDA

RC3 SCL LCD back light

ICD2

ON ON

M-1 M-2

S+

SERVO #1 #2

#3

µ ͡Ѻ¾Íà µ USB ¢Í§¤ÍÁ¾ÔÇàµÍÃ

Sound RC0

LCD

BATT

RA4

RESET

RB0

Robo - PICARRobotR PICRMicroRobotic RB3 RB0/INT

RA0

RA1

RA2

RA3

RA5

RE0

RE1

RE2


36 l àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

PIC

3.3 ÃÒÂÅÐàÍÕ´ÊÒÂÊÑ­­Ò³·Õãè ª 㹪ش Robo-PICA 3.3.1 ÊÒ ICD2 㪠㹡ÒÃàª×Íè Áµ ͺÍà ´â»Ãá¡ÃÁ¡ÑººÍà ´à» ÒËÁÒÂ ã¹·Õ¹è ¤Õé Í× ºÍà ´ RBX-877 ÁÕ¡ÒèѴÊÒ ÊÑ­­Ò³´Ñ§¹Õé ᨠ¡ ICD2 Vdd

~ ~

µ Íä»ÂѧºÍà ´ RBX-877

PGC

PGM PGD

$

GND

Vdd

~ ~

PGM PGD

ÊÒÂ ICD2

Vpp

º¹ºÍà ´â»Ãá¡ÃÁ

PGM PGD

PGC GND Vpp

PGM PGC PGD GND Vdd Vpp

¡ÒèѴ¢Ò¢Í§á¨ ¡ ICD2 ·ÕèºÍà ´ RBX-877 ¡ÒèѴ¢Ò¢Í§á¨ ¡áÅлÅÑê¡·Ñé§ËÁ´Áͧ¨Ò¡´ Ò¹º¹ (top view) PGC

GND Vpp

Vdd

3.3.2 ÊÒ JST3AA-8 㪠àª×Íè Áµ ÍÃÐËÇ Ò§ºÍà ´ RBX-877 ¡Ñºá¼§Ç§¨ÃµÃǨ¨ÑºáÅÐἧǧ¨ÃÍØ»¡Ã³ µÒ §æ à» ¹ÊÒ ᾠ3 àÊ ¹ ÂÒÇ 8 ¹ÔÇé »ÅÒÂÊÒ·ѧé Êͧ´ Ò¹µÔ´µÑ§é ¤Í¹à¹ç¡àµÍà Ẻ JST 3 ¢Ò µÑÇàÁÕ ÃÐÂÐË Ò§ÃÐËÇ Ò§¢Ò 2 ÁÔÅÅÔàÁµÃ ÁÕ¡ÒèѴ¢Ò´Ñ§¹Õé ÃÐÂÐË Ò§ÃÐËÇ Ò§¢Ò 2 ÁÁ. GND S +5V

ÃÐÂÐË Ò§ÃÐËÇ Ò§¢Ò 2 ÁÁ.


àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC l 37

3.4 ¢Ñ¹é µÍ¹¡ÒþѲ¹Òâ»Ãá¡ÃÁÊíÒËÃѺËع ¹µ Robo-PICA ã¹ÃÙ»·Õè 3-3 áÊ´§¼Ñ§§Ò¹¢Í§¢Ñ鹵͹㹡ÒþѲ¹Òâ»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ¤Çº¤ØÁáÅÐ ·´Êͺ¡Ò÷íÒ§Ò¹¢Í§ºÍà ´ RBX-877 áÅÐËع ¹µ Robo-PICA ¨ÐàËç¹ä´ ÇÒ ÁÕ«Í¿µ áÇà ·àÕè ¡ÕÂè Ç¢ ͧ 2 µÑǤ×Í mikroC IDE áÅÐ PICkit2TM Programming ÊÒÁÒöÊÃػ໠¹¢Ñ¹é µÍ¹ä´ ´§Ñ ¹Õé àÃÔèÁµ ¹ à¢Õ¹«Íà Êâ»Ãá¡ÃÁÀÒÉÒ C ´ Ç mikroC IDE

¤ÍÁä¾Å â»Ãá¡ÃÁ

á¡ ä¢â»Ãá¡ÃÁ

µÃǨÊͺäÇ¡ó ¢Í§â»Ãá¡ÃÁ

äÇ¡ó ¼Ô´¾ÅÒ´

äÁ ÁÕ¢ ͼԴ¾ÅÒ´ ä´ ä¿Å ¼ÅÅѾ¸ à» ¹ä¿Å ¹ÒÁÊ¡ØÅ .hex àª×èÍÁµ ͺÍà ´ RBX-877 ࢠҡѺºÍà ´â»Ãá¡ÃÁ ´Òǹ âËÅ´ä¿Å .hex ä»Âѧ ºÍà ´ RBX-877 ´ Ç«Ϳµ áÇà PICkit2

Ãѹâ»Ãá¡ÃÁ

¡Ò÷íÒ§Ò¹¶Ù¡µ ͧËÃ×ÍäÁ ?

·íÒ§Ò¹äÁ ¶Ù¡µ ͧ

·íÒ§Ò¹¶Ù¡µ ͧ àÊÃç¨ÊÔ鹡ÒþѲ¹Òâ»Ãá¡ÃÁ

ÃÙ»·Õè 3-3 áÊ´§¢Ñ¹é µÍ¹ã¹¡ÒþѲ¹Òâ»Ãá¡ÃÁÀÒÉÒ C ¢Í§ Robo-PICA


38 l àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

PIC

(1) à¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C º¹¤ÍÁ¾ÔÇàµÍà ´Ç  mikroC IDE (2) ¤ÍÁä¾Å â»Ãá¡ÃÁ µÃǨÊͺ¢ ͼԴ¾ÅÒ´·Ò§äÇ¡ó µÒ § æ (3) ¶ ÒÁÕ¢Í ¼Ô´¾ÅÒ´ãË ·Òí ¡ÒÃᡠ䢢 ͼԴ¾ÅÒ´áÅ Ç·íÒµÒÁ¢ Í 2 ÍÕ¡¤Ãѧé (4) ËÅѧ¨Ò¡¤ÍÁä¾Å áÅÐäÁ Á¢Õ Í ¼Ô´¾ÅÒ´áÅ Ç mikroC IDE ¨ÐÊà ҧä¿Å ¼ÅÅѾ¸ ¹ÒÁÊ¡ØÅ .hex «Öè§à» ¹â»Ãá¡ÃÁÀÒÉÒà¤Ã×èͧ (5) à» ´â»Ãá¡ÃÁ PICkit2TM Programming Software (6) àª×Íè Áµ ÍÊÒÂÊÑ­­Ò³ ICD2 ÃÐËÇ Ò§ºÍà ´â»Ãá¡ÃÁ¡Ñº RBX-877 ºÍà ´¤Çº¤ØÁËÅÑ¡¢Í§ Ëع ¹µ Robo-PICA ¼ Ò¹·Ò§á¨ ¡ ICD2 (7) ´Òǹ âËÅ´â»Ãá¡ÃÁä»Âѧ Robo-PICA áŠǵÃǨÊͺ¼Å¡Ò÷íÒ§Ò¹Ç Ò ¶Ù¡µ ͧµÒÁµ ͧ¡Òà ËÃ×ÍäÁ ¶ ÒäÁ ãË ¡ÅѺä»á¡ ä¢â»Ãá¡ÃÁ áŠǤÍÁä¾Å â»Ãá¡ÃÁµÒÁ¢Ñ¹é µÍ¹·Õè (2) ÍÕ¡¤Ãѧé

3.5 µÑÇÍ ҧ¡ÒþѲ¹Òâ»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺËع ¹µ Robo-PICA ´ Ç mikroC IDE (1) à» ´â»Ãá¡ÃÁ mikroC IDE ¨Ð»ÃÒ¡¯Ë¹ Òµ Ò§ËÅÑ¡¢Í§â»Ãá¡ÃÁ´Ñ§ÃÙ»

˹ Òµ Ò§ÊíÒËÃѺà¢Õ¹â»Ãá¡ÃÁ àºÍà ª»Ô ·Õàè Å×Í¡ãª

¤ÇÒÁ¶ÕÍè ÍÊ«ÔÅàÅàµÍà ·àÕè Å×Í¡ãª


àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC l 39

(2) Êà ҧâ»Ãà¨ç¡µ ãËÁ â´Âä»·Õàè Á¹Ù Project àÅ×Í¡ New Project...

¨Ð»ÃÒ¡¯Ë¹ Òµ Ò§ New Project ¢Ö¹é ÁÒ â´Â¨Ðµ ͧ¡íÒ˹´ÃÒÂÅÐàÍÕ´µ Ò§ æ ´Ñ§¹Õé

(2.1) Project Name ¡íÒ˹´ª×Íè â»Ãà¨ç¡µ «Ö§è â»Ãá¡ÃÁ¨ÐÊà ҧâ¿Åà´Íà 㹪×Íè ¹Õ¢é ¹Öé ÁҾà ÍÁ·Ñ§é ª×Íè ä¿Å «Íà Ê⤠´¨Ðà» ¹ª×Íè à´ÕÂǡѺ Project name ã¹·Õ¹è ¡Õé Òí ˹´ª×Íè Ç Ò Blink_LED (2.2) Project Path à» ¹¡ÒáíÒ˹´µíÒá˹ §â¿Åà´Íà ÊÒí ËÃѺà¡çºâ»Ãá¡ÃÁ ÊÒÁÒö ¡´»ØÁ Browse à¾×Íè àÅ×Í¡µíÒá˹ §·Õµè Í §¡ÒÃä´ ¨Ò¡µÑÇÍ ҧ¡íÒ˹´à» ¹ D:\Robo-PICA\


40 l àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

PIC

(2.3) Description à» ¹¾×¹é ·ÕÊè Òí ËÃѺÃкØÃÒÂÅÐàÍÕ´à¡ÕÂè ǡѺâ»Ãà¨ç¡µ ·ÊÕè à ҧ¢Ö¹é ¨ÐÃÐºØ ËÃ×ÍäÁ ¡äç ´ ã¹·Õ¹è ãÕé Ê ¢Í ¤ÇÒÁÇ Ò Robo PICA Code Blinking LED on RB3 (2.4) Device à» ¹ª ͧÊíÒËÃѺ¡íÒ˹´àºÍà äÁâ¤Ã¤Í¹â·ÃÅàÅÍà ·àÕè Å×͡㪠§Ò¹ à¹×Íè § ¨Ò¡äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC áµ ÅÐàºÍà ÁդسÊÁºÑµÔäÁ àËÁ×͹¡Ñ¹ ¨Ö§µ ͧàÅ×Í¡àºÍà ¢Í§äÁâ¤Ã ¤Í¹â·ÃÅàÅÍà PIC ãË ¶Ù¡µ ͧ ÊíÒËÃѺºÍà ´ RBX-877 áÅÐËØ ¹Â¹µ Robo-PICA àÅ×͡㪠äÁâ¤Ã ¤Í¹â·ÃÅàÅÍà àºÍà PIC16F887 ¨Ö§¡íÒ˹´à» ¹ PIC16F887 (2.5) Clock 㪠¡Òí ˹´¤ Ò¤ÇÒÁ¶ÕÊè ­ Ñ ­Ò³¹ÒÌ ¡Ò·Õãè ª ¡ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC â´Âº¹ºÍà ´ RBX-877 㪠à«ÃÒÁÔ¡àÃâ«à¹àµÍà 20MHz ¨Ö§¡íÒ˹´¤ÇÒÁ¶ÕÊè ­Ñ ­Ò³¹ÒÌ ¡Òà» ¹ 020.000000 (2.6) Device Flags à» ¹ª ͧÊíÒËÃѺ¡íÒ˹´¤ ҤسÊÁºÑµÔ·Ò§ÎÒà ´áÇà ËÃ×ͤ͹¿ ¡Ù àêÑè¹ (configuration) ¢Í§äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC àºÍà ·ÕèàÅ×͡㪠§Ò¹ ã¹·Õè¹Õé¨Ð㪠¤ ÒÁҵðҹ «Ö§è ¡íÒ˹´ä´ §Ò Âæ à¾Õ§¤ÅÔ¡·Õ»è ÁØ Default «Ö§è ¡íÒ˹´¤Ø³ÊÁºÑµËÔ ÅÑ¡æ à¾Õ§ 3 µÑǤ×Í (2.6.1) HS_OSC àÅ×Í¡ª¹Ô´¢Í§Ç§¨Ã¡íÒà¹Ô´ÊÑ­­Ò³¹ÒÌ ¡Òà» ¹áºº HS ËÃ×Í High Speed Oscillator (2.6.2) WDT_OFF à» ¹¡ÒÃàÅ×Í¡´ÔÊàÍàºÔÅËÃ×Í¡àÅÔ¡¡Ò÷íÒ§Ò¹¢Í§ Ç͵ª ´çÍ¡ä·àÁÍà (2.6.3) LVP_OFF à» ¹¡ÒÃàÅ×Í¡´ÔÊàÍàºÔÅËÃ×Í¡àÅÔ¡¤ÇÒÁÊÒÁÒö㹡Òà â»Ãá¡ÃÁ˹ ǤÇÒÁ¨íÒâ»Ãá¡ÃÁ´ ÇÂáç´Ñ¹µèÒí ËÃ×Í Low Voltage Programming àÁ×èÍ¡íÒ˹´¤ ÒàÃÕºà ÍÂáÅ ÇãË ¡´»Ø Á OK â»Ãá¡ÃÁ¨Ð» ´Ë¹ Òµ Ò§ New Project áÅÐÊà ҧä¿Å Blink_LED.C ¾Ã ÍÁ¾×¹é ·ÕÇè Ò § æ ÊíÒËÃѺ¡ÒÃà¢Õ¹â»Ãá¡ÃÁ (3) à¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C ´Ñ§¹Õé void main() { TRISB.F3=0; while(1) { PORTB.F3=0; Delay_ms(500); PORTB.F3=1; Delay_ms(500); } }

// Set RB3 ==> Output // Infinite Loop // LED_ON // LED_OFF


àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC l 41

(4) ¤ÅÔ¡»ØÁ Build Project ËÃ×Í¡´¤ÕÂÅ ´Ñ Ctrl+F9 à¾×Íè ¤ÍÁä¾Å â»Ãá¡ÃÁ

(5) Êѧࡵ¢ ͼԴ¾ÅÒ´·Õè˹ Òµ Ò§ Message ´ ҹŠҧ ¶ ÒäÁ ÁÕ¢ ͼԴ¾ÅÒ´ ˹ Òµ Ò§ Message ¨Ðᨠ§¢¹Ò´¢Í§Ë¹ ǤÇÒÁ¨íÒâ»Ãá¡ÃÁ·Õãè ª áÅÐáÊ´§¢ ͤÇÒÁ Success à¾×Íè ºÍ¡Ç Ò äÇ¡ó ·àÕè ¢Õ¹ ¢Öé¹¹Ñ鹶١µ ͧ

(6) àª×Íè Áµ ͺÍà ´â»Ãá¡ÃÁäÁâ¤Ã¤Í¹â·ÃšѺ RBX-877 ºÍà ´¤Çº¤ØÁ¢Í§Ëع ¹µ RoboPICA ´ ÇÂÊÒ ICD2 áÅе ÍÊÒ¨ҡºÍà â»Ãá¡ÃÁࢠҡѺ¤ÍÁ¾ÔÇàµÍà ¼Ò ¹¾Íà µ USB à» ´ä¿àÅÕÂé § ¨ ÒÂä¿ãË ¡ºÑ Robo-PICA ºÍà ´â»Ãá¡ÃÁ PIC

ÊÒÂ ICD2

4.8-6V

Sound RC0

LCD

BATT

RC7 RxD

RC6 TxD

RC4 SDA

RC3 SCL

DOWNLOAD

POWER

ON ON

M-1 M-2

S+

SERVO #1 #2

#3

µ ͡Ѻ¾Íà µ USB ¢Í§¤ÍÁ¾ÔÇàµÍÃ

LCD back light

ICD2

RA4

RESET

RB0

Robo - PICARRobotR PICRMicroRobotic RB3 RB0/INT

RA0

RA1

RA2

RA3

RA5

RE0

RE1

RE2


42 l àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

PIC

(7) à» ´â»Ãá¡ÃÁ PICkit2TM Programming «Í¿µ áÇà ¨ÐµÃǨÊͺ¡ÒÃàª×èÍÁµ ÍáÅÐàºÍà ¢Í§äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC ·Õàè ª×Íè Áµ Í´ ÇÂÍ ҧÍѵâ¹ÁÑµÔ áŠǨÐᨠ§àºÍà ·¾Õè ºà» ¹ PIC16F887

(8) àÅ×Í¡ä¿Å .hex ·Õèµ Í§¡ÒÃâ»Ãá¡ÃÁ â´Âä»·ÕèàÁ¹Ù File àÅ×Í¡ Import Hex ¨ÐÁÕ˹ Òµ Ò§ ÊíÒËÃѺ໠´ä¿Å *.hex ·Õµè Í §¡ÒÃâ»Ãá¡ÃÁŧäÁâ¤Ã¤Í¹â·ÃÅàÅÍà 㹷չè àÕé Å×Í¡ä»·Õäè ´Ã¿ D:\RoboPICA\Blink_LED àÅ×Í¡ä¿Å ªÍ×è Blink_LED.hex


àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC l 43

(9) ¤ÅÔ¡»ØÁ Write à¾×Íè ´Òǹ âËÅ´â»Ãá¡ÃÁä»ÂѧºÍà ´ RBX-877 ¢Í§Ëع ¹µ Robo-PICA

(10) Êѧࡵ¼Å·Õàè ¡Ô´¢Ö¹é LED ·Õµè Òí á˹ § RB3 º¹ºÍà ´ RBX-877 ¢Í§Ëع ¹µ Robo-PICA ¨ÐµÔ´áÅдѺÊÅѺ¡Ñ¹Í ҧµ Íà¹×èͧ

¡Ô¨¡ÃÃÁ·Õè 2

·´ÊͺºÍà ´¤Çº¤ØÁ

㹡Ԩ¡ÃÃÁ¹Õ¹é Òí àʹͶ֧¡ÒÃàÃÔÁè µ ¹¾Ñ²¹Òâ»Ãá¡ÃÁÀÒÉÒ C à¾×Íè ¤Çº¤ØÁ¡Ò÷íÒ§Ò¹¢Í§äÁâ¤Ã ¤Í¹â·ÃÅàÅÍà PIC16F887 㹡ÒõԴµ ͡ѺÍØ»¡Ã³ ÀÒ¹͡·ÕèÁÕÍÂÙ º¹ºÍà ´ RBX-877 ·Ñ駹Õéà¾×èÍ ·´Êͺ¡Ò÷íÒ§Ò¹ã¹Ê ǹµ Ò§æ ¢Í§ºÍà ´¤Çº¤ØÁ RBX-877 áÅÐà¾×Íè àµÃÕÂÁ¤ÇÒÁ¾Ã ÍÁ¡ ͹ࢠÒÊÙ¡ Òà ¾Ñ²¹Òâ»Ãá¡ÃÁà¾×Íè »¯ÔºµÑ ÀÔ ÒÃСԨ·Õ«è ºÑ « ͹¢Ö¹é ã¹áµ ÅСԨ¡ÃÃÁ¢Í§Ëع ¹µ Robo-PICA

¡Ô¨¡ÃÃÁ·Õè 2-1 áÊ´§¼Å´ Ç LED ¨Ò¡ÃÙ»·Õè A2-1 äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC16F887 µ ͡Ѻ LED ·Õè¢Ò¾Íà µ RB3 ã¹áºº¡ÃÐáÊ«ÍÃ Ê (¢Ñº¡ÃÐáÊÍÍ¡¨Ò¡¢Ò¾Íà µ) â´ÂÁÕµÇÑ µ Ò¹·Ò¹ 510Ω ·íÒ˹ Ò·Õ¨è Òí ¡Ñ´¡ÃÐáÊãË ¡ºÑ LED ´Ñ§¹Ñ¹é ¡ÒâѺãË LED µÔ´ÊÇ Ò§¨Ö§µ Í§Ê §ÊÑ­­Ò³Åͨԡ 1 ÍÍ¡ä»·Ò§¢Ò RB3 áÅж Ò» ͹ÊÑ­­Ò³Åͨԡ 0 LED ¨Ð´Ñº ¢Ò¾Íà µ RB3 ÊÒÁÒö¡íÒ˹´ãË ·Òí §Ò¹à» ¹ä´ ·§Ñé ÍÔ¹¾ØµÍйÒÅÍ¡ ÍÔ¹¾Øµ´Ô¨µÔ ÍÅ áÅÐàÍÒµ ¾µØ ´Ô¨µÔ ÍŠ㹡Ԩ¡ÃÃÁ¹Õµé Í §¡ÒÃãË ¢Ò¹Õàé » ¹¢Ò¾Íà µàÍÒµ ¾µØ ´Ô¨µÔ ÍŠ㹡ÒÃà¢Õ¹â»Ãá¡ÃÁ¨Ö§µ ͧà¢Õ¹¢ ÍÁÙÅ 0 ãË ¡ºÑ ºÔµ 3 ¢Í§ÃÕ¨ÊÔ àµÍà TRISB Íѹ໠¹¡ÒáíÒ˹´ÃٻẺ¡Ò÷íÒ§Ò¹¢Í§¢Ò¾Íà µ RB3 A2.1.1 à¢Õ¹â»Ãá¡ÃÁ·Õè A2-1 ´ Ç mikroC IDE ·íÒ¡ÒäÍÁä¾Å ãË ä´ ä¿Å ¼ÅÅѾ¸ .hex A2.1.2 àª×Íè Áµ ͺÍà ´â»Ãá¡ÃÁࢠҡѺºÍà ´ RBX-877 ¢Í§Ëع ¹µ Robo-PICA áÅоÍà µ USB ¢Í§¤ÍÁ¾ÔÇàµÍà A2.1.3 ´Òǹ âËÅ´â»Ãá¡ÃÁä»ÂѧºÍà ´ RBX-877 Êѧࡵ¼Å¡Ò÷íÒ§Ò¹ LED ·Õµè Òí á˹ § RB3 µÔ´¤ Ò§


44 l àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

PIC

+5V 11

32

C6 0.1µF 50V

+5V

1+! 21+ $.&&%

R5 4k7 SW2 4-5-6

1 R6 1k

MCLR RB3

LED3 4*! 36 12 31

CR1 Ceramic Resonator 20MHz

13

R10 510

14

ÃÙ»·Õè A2-1áÊ´§Ç§¨ÃáÅеíÒá˹ §¡Òõ Í LED º¹ RBX-877 ºÍà ´¤Çº¤ØÁËÅÑ¡¢Í§Ëع ¹µ Robo-PICA void main() { TRISA.F1=0; PORTA.F1=1; }

// Set RB3 ==> Output // Turn on RB3

¡Ò÷íÒ§Ò¹¢Í§â»Ãá¡ÃÁ â»Ãá¡ÃÁ¹Õ·é Òí §Ò¹ 2 ¢Ñ¹é µÍ¹¤×Í ¢Ñ¹é µÍ¹áá¡íÒ˹´ãË ¢Ò RB3 à» ¹àÍÒµ ¾µØ ´Ô¨µÔ ÍÅ¡ ͹ ¨Ò¡¹Ñ¹é ¨Ö§ ¡íÒ˹´ãË ¢Ò RB3 ÁÕÅͨԡ໠¹ 1

â»Ãá¡ÃÁ·Õè A2-1 ä¿Å rb3_led01.c ¡íÒ˹´ãË LED ·Õµè Í ÍÂÙ¡ ºÑ ¢Ò RB3 ¢Í§ PIC16F887 µÔ´ÊÇ Ò§

Programming Note ã¹â»Ãá¡ÃÁÀÒÉÒ C ¢Í§ mikroC ÊÒÁÒöࢠҶ֧¢ ÍÁÙÅã¹ÃдѺºÔµä´ â´Â¡Òõ Í· Òª×Íè ¢Í§ÃÕ¨ÊÔ àµÍà ´Ç Âà¤Ã×Íè §ËÁÒ . áŠǵÒÁ´ Ç F0 ¶Ö§ F7 «Ö§è ËÁÒ¶֧ ºÔµ 0 ¶Ö§ºÔµ 7 ઠ¹ PORTB.F0=1 ;

ËÁÒ¶֧ ¡íÒ˹´ãË ºµÔ 0 ¢Í§ÃÕ¨ÊÔ àµÍà PORTB à» ¹ 1 ËÃ×Í RB0 à» ¹ 1


àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC l 45 void main() { TRISB.F3=0; while(1) { PORTB.F3=1; Delay_ms(500); PORTB.F3=0; Delay_ms(500); } }

// RB3==> Output // Infinite Loop // // // //

"1" ==> RB3 Delay "0" ==> RB3 Delay

¡Ò÷íÒ§Ò¹¢Í§â»Ãá¡ÃÁ â»Ãá¡ÃÁ¹Õãé ª ¤Òí Êѧè while à¾×Íè ǹÅÙ»Êѧè ãË LED µÔ´áÅдѺÊÅѺ¡Ñ¹ â´ÂÁÕ¡ÒÃ˹ ǧàÇÅÒÃËÇ Ò§¡Òà µÔ´´Ñº 500 ÁÔÅÅÔÇ¹Ô Ò·Õ ËÃ×Í 0.5 ÇÔ¹Ò·Õ

â»Ãá¡ÃÁ·Õè A2-2 ä¿Å rb3_led02.c ÊíÒËÃѺ¤Çº¤ØÁãË LED ·Õµè Í ÍÂÙ¡ ºÑ ¢Ò RB3 ¢Í§ PIC16F887 ¡Ð¾ÃÔº A2.1.4 á¡ ä¢â»Ãá¡ÃÁãË à» ¹ä»µÒÁâ»Ãá¡ÃÁ·Õè A2-2 ¨Ò¡¹Ñ¹é ·íÒ¡ÒäÍÁä¾Å áÅ Ç´Òǹ âËÅ´â»Ãá¡ÃÁä»ÂѧºÍà ´ RBX-877 ÍÕ¡¤Ãѧé à¾×Íè ·´Êͺ¡Ò÷íÒ§Ò¹ àÁ×Íè Ãѹâ»Ãá¡ÃÁ LED ·Õ¢è Ò RB3 µÔ´áÅдѺÊÅѺ¡Ñ¹ã¹ÍѵÃÒ 0.5 ÇÔ¹Ò·Õ

¡Ô¨¡ÃÃÁ·Õè 2-2 Í Ò¹¤ ÒÍÔ¹¾Øµ´Ô¨µÔ ÍŨҡ¡ÒõÃǨÊͺ¡Òá´ÊÇÔµª

º¹ºÍà ´ RBX-877 ÁÕÊÇÔµª ¡´µÔ´»Å Í´ѺµÔ´µÑ§é ÍÂÙ 3 µÑÇ µÑÇË¹Ö§è ¡íÒ˹´ãË à» ¹ÊÇÔµª RESET Ê Ç¹ 2 µÑÇ·Õàè ËÅ×Íà» ¹ÊÇÔµª à͹¡»ÃÐʧ¤ ¢¹Öé ÍÂÙ¡ ºÑ ¡ÒáíÒ˹´¨Ò¡¼Ùã ª §Ò¹ ÃÙ»·Õè A2-2 áÊ´§Ç§¨Ãàª×Íè Áµ ÍÊÇÔµª ࢠҡѺ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC16F887 áÅеíÒá˹ §·Õµè ´Ô µÑ§é ÊÇÔµª º¹ºÍà ´ RBX-877 ÊÇÔµª ¡´µÔ´»Å Í´Ѻã¹ÊÀÒÇл¡µÔ¨ÐÁÕÅͨԡ 1 ¨Ò¡µÑǵ Ò¹·Ò¹¾ÙÅÍÑ» àÁ×Íè ÁÕ¡Òá´ÊÇÔµª ¢Ò RB0 áÅÐ RA4 ¨Ð¶Ù¡µ Íŧ¡ÃÒÇ´ ·Òí ãË PIC16F887 ä´ ÃºÑ Åͨԡ 0 ·Õ¢è Ò¾Íà µ·Ñ§é Êͧ ¨¹¡Ç Ò¨ÐÁÕ¡ÒûŠÍÂÊÇÔµª

+5V +5V

R6 4k7

21+ $.&&% R7 4k7

6 33

K7 INT/RB0

R8 150

RESET RB0

RA4 RB0/INT

RA4 4)"

ÃÙ»·Õè A2-2 áÊ´§Ç§¨Ãàª×Íè Áµ ÍÊÇÔµª ࢠҡѺäÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC16F887 áÅеíÒá˹ §¢Í§ÊÇÔµª


46 l àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

void main() { ANSELH.F4=0; TRISB.F3=0; while(1) { if(PORTB.F0==0) { PORTB.F3=1; } if(PORTA.F4==0) { PORTB.F3=0; } } }

PIC

// RB0 ==> Digital input // RB3 ==> Digital Output // Infinite Loop // Check RB0 Press ? // ON ==> RB3 // Check RA4 Press ? // OFF ==> RB3

¡Ò÷íÒ§Ò¹¢Í§â»Ãá¡ÃÁ â»Ãá¡ÃÁ¨Ð¡íÒ˹´ãË ¢Ò RB0 áÅÐ ¢Ò RA4 à» ¹¢ÒÍÔ¹¾Øµ´Ô¨µÔ ÍÅ Ê Ç¹¢Ò RB3 à» ¹¢ÒàÍÒµ ¾µØ ´Ô¨µÔ ÍÅ ¨Ò¡¹Ñ¹é ǹµÃǨÊͺ¡Òá´ÊÇÔµª àÁ×Íè ÊÇÔµª ·¢Õè Ò RB0 ¶Ù¡¡´ â»Ãá¡ÃÁ¨ÐÊ §¢ ÍÁÙÅ 1 ä»Âѧ¢Ò¾Íà µ RB3 ·íÒãË LED ·Õè RB3 µÔ´ÊÇ Ò§ àÁ×Íè ÊÇÔµª ·¢Õè Ò RA4 ¶Ù¡¡´ (¡ÅÒÂà» ¹ 0 ) â»Ãá¡ÃÁ¨ÐÊ §¢ ÍÁÙÅ 0 ä»Âѧ¢Ò ¾Íà µ RB3 ·íÒãË LED ·Õ¢è Ò RB3 ´Ñº

â»Ãá¡ÃÁ·Õè A2-3 ä¿Å SwitchTest.c â»Ãá¡ÃÁÊѧè à» ´» ´ LED ´ ÇÂÊÇÔµª RB0 áÅÐ RA4

à¢Õ¹â»Ãá¡ÃÁà¾×èÍÍ Ò¹¤ ÒÊÇÔµª ¡ÒõÃǨÊͺ¡Òá´ÊÇÔµª ¹¹Ñé à¹×Íè §¨Ò¡äÁ Á·Õ Ò§·ÃÒºÇ Ò ¨ÐÁÕ¡Òá´ÊÇÔµª àÁ×Íè 㴠㹡ÒþѲ¹Òâ»Ãá¡ÃÁ ¨Ö§µ ͧà¢Õ¹â»Ãá¡ÃÁã¹ÅѡɳÐǹÅÙ»ÃÍ áÅеÃǨÊͺ¡Òá´ÊÇÔµª â´Â㪠à§×Íè ¹ä¢ if àÁ×Íè à§×Íè ¹ä¢à» ¹¨ÃÔ§¡çãË â»Ãá¡ÃÁ·íÒ§Ò¹µÒÁà§×Íè ¹ä¢¹Ñ¹é æ â´Ââ»Ãá¡ÃÁµÑÇÍ ҧáÊ´§ã¹â»Ãá¡ÃÁ·Õè A2-3

¢Ñ鹵͹»¯ÔºÑµÔ¡Òà A2.2.1 à¢Õ¹â»Ãá¡ÃÁ·Õè A2-3 ´ Ç mikroC IDE ·íÒ¡ÒäÍÁä¾Å ãË ä´ ä¿Å ¼ÅÅѾ¸ .hex A2.2.2 àª×Íè Áµ ͺÍà ´â»Ãá¡ÃÁࢠҡѺºÍà ´ RBX-877 ¢Í§Ëع ¹µ Robo-PICA áÅоÍà µ USB ¢Í§¤ÍÁ¾ÔÇàµÍà A2.2.3 ´Òǹ âËÅ´â»Ãá¡ÃÁä»ÂѧºÍà ´ RBX-877 ¨Ò¡¹Ñ¹é ·´Åͧ¡´ÊÇÔµª RA4 áÅÐ RB0 áÅ ÇÊѧࡵ¼Å¢Í§ ¡Ò÷íÒ§Ò¹·Õàè ¡Ô´¢Ö¹é àÁ×Íè Ãѹâ»Ãá¡ÃÁ LED ·Õµè Òí á˹ § RB3 ¨Ð´Ñº àÁ×Íè ¡´ÊÇÔµª RB0 ¨Ð·íÒãË LED·Õµè Òí á˹ § RB3 µÔ´ÊÇ Ò§ ¤ Ò§äÇ áÅдѺŧàÁ×Íè ¡´ÊÇÔµª RA4

Programming Note ÃÕ¨ÊÔ àµÍà ANSEL áÅÐ ANSELH 㪠㹡ÒÃàÅ×Í¡¡Ò÷íÒ§Ò¹¢Í§¢Ò¾Íà µãË à» ¹ÍÔ¹¾ØµÍйÒÅÍ¡´Ô¨µÔ ÍÅ ÊíÒËÃѺ¡Ã³Õà» ¹àÍÒµ ¾µØ ´Ô¨µÔ ÍÅäÁ µÍ §¡íÒ˹´¤ Ò àª ¹ µ ͧ¡ÒÃãË ¢Ò RB0 à» ¹ÍÔ¹¾Øµ´Ô¨µÔ ÍÅ µ ͧ¡íÒ˹´¤ Òà» ¹ ANSELH.F4=0; à» ¹µ ¹


àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC l 47

¡Ô¨¡ÃÃÁ·Õè 2-3 áÊ´§¼ÅµÑÇàÅ¢áÅТ ͤÇÒÁ·Õâè Á´ÙÅ LCD âÁ´ÙÅ LCD à» ¹ÍØ»¡Ã³ ÊíÒËÃѺáÊ´§¼ÅµÑÇÍÑ¡ÉÃẺ¼ÅÖ¡àËÅÇ ÊíÒËÃѺ·Õè㪠ã¹ËØ ¹Â¹µ Robo-PICA ÊÒÁÒöáÊ´§¼Åä´ 16 µÑÇÍÑ¡Éà 2 ºÃ÷Ѵ ǧ¨Ã¡ÒÃàª×Íè Áµ ͡ѺäÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC16F887 áÊ´§ã¹ÃÙ»·Õè A2-3 â´Â¡ÒÃàª×Íè Áµ Íà» ¹áºº 4 ºÔµ áÅÐÁÕ¡ÒáíÒ˹´µíÒá˹ §¢Í§¢Ò¾Íà µ·Õãè ª 㹡ÒÃàª×Íè Áµ ͵ç¡Ñº¤ ÒµÑ§é µ ¹ ·Õ¡è Òí ˹´äÇ ã¹äźÃÒÃÕ LCD ¢Í§ mikroC ¨Ö§·íÒãË ¡ÒÃà¢Õ¹â»Ãá¡ÃÁ·íÒä´ Í ÒÊдǡ¢Ö¹é ÁÒ¡ â´Â¡ ͹àÃÕ¡㪠§Ò¹âÁ´ÙÅ LCD à¾Õ§àÅ×Í¡µíÒá˹ §¾Íà µ·Õãè ª à· Ò¹Ñ¹é ´ ǤíÒÊѧè Lcd_Init(&PORTD); à¹×Íè §¨Ò¡ºÍà ´ RBX877 àÅ×͡㪠¾ Íà µ D 㹡ÒÃàª×Íè Áµ ͡ѺâÁ´ÙÅ LCD ¹Ñ¹è àͧ

â»Ãá¡ÃÁÊíÒËÃѺ·´Êͺ¡ÒÃáÊ´§¼Å¢ ͤÇÒÁáÅеÑÇàÅ¢ â»Ãá¡ÃÁ·Õè A2-4 à» ¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ mikroC â´Â¨ÐáÊ´§¢ ͤÇÒÁÍÍ¡·Õâè Á´ÙÅ LCD Ê Ç¹¡ÒÃáÊ´§¤ ÒµÑÇàÅ¢¹Ñ¹é äÁ ÊÒÁÒÃ¶Ê §¤ ÒÍÍ¡ä»ÂѧâÁ´ÙÅ LCD ä´ ·¹Ñ ·Õ à¹×Íè §¨Ò¡âÁ´ÙÅ LCD µ ͧ¡Òà ¢ ÍÁÙÅáÊ´§¼Åà» ¹ÃËÑÊáÍÊ¡Õé ¨Ö§¨íÒà» ¹µ ͧá»Å§¤ ҢͧµÑÇàÅ¢ãË ÍÂÙ ã¹ÃÙ»¢Í§ÃËÑÊáÍÊ¡Õé¡ Í¹ â´Â㪠¿ §¡ ªÑè¹ WordToStr à¾×Íè à»ÅÕÂè ¹¤ Ò¢ ÍÁÙÅ 16 ºÔµ ¨Ò¡ª¹Ô´µÑÇá»Ã Int ä»à» ¹¢ ÍÁÙÅÍÑ¡¢ÃÐ ÁÕ¤Ò ÃÐËÇ Ò§ 0 ¶Ö§ 65,535 ÃÒÂÅÐàÍÕ´¢Í§â»Ãá¡ÃáÊ´§ã¹â»Ãá¡ÃÁ·Õè A2-5

+5V 11

32

C6 0.1µF 50V

+5V

1+! 21+ $.&&% RD2

+5V

RD3

R5 4k7 SW2 RESET

1 R6 1k

MCLR

RD7 RD6 RD5 RD4

JP1

21

4

22

6

30

RS E

DSP1 LCD 16x2

D7 D6 D5 D4 D3 D2 D1 D0 R/W 14 13 12 11 10 9 8 7 5

BLA +V Vo BLK GND 15 2

R13 16 47

BACK LIGHT ON

1 3 VR1 10k

BRIGHTNESS

29 28 27 12 31

CR1 Ceramic Resonator 20MHz

13

14

ÃÙ»·Õè A2-3 ǧ¨ÃáÊ´§¡ÒÃàª×Íè Áµ ͡ѺâÁ´ÙÅ LCD ¢Íº PIC16F887 º¹ºÍà ´ RBX-877 V2.0


48 l àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

char *text1 = "Innovative"; char *text2 = "Experiment"; void main() { Lcd_Init(&PORTD); Lcd_Cmd(LCD_CURSOR_OFF); while(1) { Lcd_Out(1,4,text1); Lcd_Out(2,4,text2); Delay_ms(5000); Lcd_Cmd(LCD_CLEAR); Delay_ms(500); } }

PIC

// Save Text

// Config PORTD connect LCD // Setting cursor of LCD off

// Show "Innovative" in Line 1 // Show "Experiment" int Line 2 // Blink LCD

¡Ò÷íÒ§Ò¹¢Í§â»Ãá¡ÃÁ â»Ãá¡ÃÁ¹Õ¨é Ðà¡çº¤ Ò¢ ͤÇÒÁäÇ ·µÕè ÇÑ á»Ã text1 áÅÐ text2 ¡ ͹ ¨Ò¡¹Ñ¹é ¡íÒ˹´ãË ¾Íà µ D à» ¹¾Íà µ ÊíÒËÃѺµÔ´µ ͡ѺâÁ´ÙÅ LCD áÅ ÇÊÑ§è » ´¡ÒÃáÊ´§¼Åà¤Íà à«Íà µ Í´ Ç·íÒ¡ÒùíÒ¢ ͤÇÒÁÁÒáÊ´§·Õ¨è ÍáÊ´§ ¼Åà» ¹àÇÅÒ 5 ÇÔ¹Ò·ÕÊÅѺ¡Ñº¡Òû ´¨ÍáÊ´§¼Å 0.5 ÇÔ¹Ò·Õ

â»Ãá¡ÃÁ·Õè A2-4 ä¿Å lcdchar_test.c â»Ãá¡ÃÁáÊ´§¢ ͤÇÒÁ·ÕËè ¹ Ò¨Í LCD ¢Í§ºÍà ´ RBX-877

¢Ñ鹵͹»¯ÔºÑµÔ¡Òà A2.3.1 à¢Õ¹â»Ãá¡ÃÁ·Õè A2-4 ´ Ç mikroC IDE ·íÒ¡ÒäÍÁä¾Å ãË ä´ ä¿Å ¼ÅÅѾ¸ .hex A2.3.2 àª×Íè Áµ ͺÍà ´â»Ãá¡ÃÁࢠҡѺºÍà ´ RBX-877 ¢Í§Ëع ¹µ Robo-PICA áÅоÍà µ USB ¢Í§¤ÍÁ¾ÔÇàµÍà A2.3.3 ´Òǹ âËÅ´â»Ãá¡ÃÁä»ÂѧºÍà ´ RBX-877 Êѧࡵ¼Å¢Í§¡Ò÷íÒ§Ò¹·Õàè ¡Ô´¢Ö¹é àÁ×Íè Ãѹâ»Ãá¡ÃÁ ·Õâè Á´ÙÅ LCD º¹ºÍà ´ RBX-877 ¨ÐáÊ´§¢ ͤÇÒÁµ Í仹աé ÅÒ§¨ÍáÊ´§¼Å Innovative Experiment


àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC l 49 int i=0; char txt[6]; void main() { Lcd_Init(&PORTD); Lcd_Cmd(LCD_CURSOR_OFF); Lcd_Cmd(LCD_CLEAR); Lcd_Out(1,1,"Counter= "); while(1) { i++; WordToStr(i,txt); Lcd_Out(1,10,txt); Delay_ms(100); }

// Save 16 bit 0-65535

// // // //

Config PORTD connect LCD Setting cursor of LCD off Clear Screen First Show Text

// Count // Convert to String // Show Counter ==> LCD

}

¡Ò÷íÒ§Ò¹¢Í§â»Ãá¡ÃÁ â»Ãá¡ÃÁ¹Õ¨é йѺ¤ ÒµÑÇàÅ¢áÅÐà¾ÔÁè ¤ ÒµÑÇàÅ¢¢Ö¹é ·ÕÅÐË¹Ö§è ¾Ã ÍÁ·Ñ§é ¹íÒ¤ ÒµÑÇàÅ¢á»Å§ãË à» ¹ÃËÑÊáÍÊ¡Õé à¾×Íè ¹íÒ¤ Ò¹Õäé »áÊ´§·Õâè Á´ÙÅ LCD â´Â¤ ÒµÑÇàŢ໠¹¤ ÒµÑÇàŢẺ 16 ºÔµ ÁÕ¤Ò ÃÐËÇ Ò§ 0 ¶Ö§ 65,535

â»Ãá¡ÃÁ·Õè A2-5 ä¿Å lcdnum_test.c â»Ãá¡ÃÁáÊ´§¤ ÒµÑÇàÅ¢·ÕËè ¹ Ò¨Í LCD ¢Í§ºÍà ´ RBX-877 A2.3.4 à¢Õ¹â»Ãá¡ÃÁ·Õè A2-5 ´ Ç mikroC IDE ·íÒ¡ÒäÍÁä¾Å ãË ä´ ä¿Å ¼ÅÅѾ¸ .hex A2.3.5 ´Òǹ âËÅ´â»Ãá¡ÃÁä»ÂѧºÍà ´ RBX-877 Êѧࡵ¼Å¢Í§¡Ò÷íÒ§Ò¹·Õàè ¡Ô´¢Ö¹é àÁ×Íè Ãѹâ»Ãá¡ÃÁ ·Õâè Á´ÙÅ LCD º¹ºÍà ´ RBX-877 ¨ÐáÊ´§¼Å´Ñ§ÃÙ»


50 l àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

PIC

¡Ô¨¡ÃÃÁ·Õè 2-3 ¢ÑºàÊÕ§¼ Ò¹·Ò§ÅíÒ⾧໠Ââ« º¹ºÍà ´ RBX-877 ä´ ·íÒ¡ÒÃàª×èÍÁµ ÍÅíÒ⾧໠Ââ«à¢ ҡѺ¢Ò¾Íà µ RC0 ¢Í§äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC16F887 ·Ò§´ Ò¹«Í¿µ Çáà 㹠mikroC ÁÕ¤íÒÊÑè§ÊíÒËÃѺ¡ÒâѺÊÑ­­Ò³àÊÕ§ÍÍ¡ÅíÒ⾧ â´Âµ ͧ¡íÒ˹´ µíÒá˹ §¢Ò¾Íà µ¢Í§äÁâ¤Ã¤Í¹â·ÃÅàÅÍà ·ãÕè ª ´Ç  ¿ §¡ ª¹Ñè ·Õàè ÃÕ¡㪠¤Í× Sound_Init() áÅÐ Sound_Play() +5V 11

32

C6 0.1µF 50V

+5V R5 4k7

1 R6 1k

SW2 RESET

MCLR

1+! 21+ $.&&% R7 4k7

+5V R8 4k7

6 33

S2 RB0

RA4

RC0

15

C7 10µF 50V

RB0/INT

SP1 PIEZO

S1 RA4

12 31

CR1 Ceramic Resonator 20MHz

13

14

ÃÙ»·Õè A2-4 ǧ¨Ã¡ÒÃàª×Íè Áµ ÍÊÇÔµª áÅÐÅíÒ⾧໠Â⫺¹ºÍà ´ RBX-877 V2.0 void main() { Sound_Init(&PORTC, 0); while(1) { if (!PORTA.F4) sound_play(250,50); } }

// Init Sound

// Test RA4 keypress // 2 kHz sound ON RC0

â»Ãá¡ÃÁ·Õè A2-6 ä¿Å soundtest.c â»Ãá¡ÃÁµÑÇÍ ҧ¡ÒáíÒà¹Ô´ÊÑ­­Ò³àÊÕ§ â´Â㪠¿§ ¡ ª¹Ñè sound_play ¢Í§ mikroC


àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC l 51

¡ÒÃ㪠§Ò¹¿ §¡ ª¹Ñè Sound_Play() ÃٻẺ void Sound_Play(unsigned short period_div_10, unsigned num_of_periods);

¾ÒÃÒÁÔàµÍà ¤×ͤ Ò¨íҹǹ¤ÒºàÇÅҢͧÊÑ­­Ò³¹ÒÌ ¡Ò·Õãè ª 㹡ÒÃÊà ҧ¤ÇÒÁ¶ÕËè Òô Ç 10 ÁÕ ¤ ÒÃÐËÇ Ò§ 0 ¶Ö§ 255 ઠ¹ µ ͧ¡ÒÃÊà ҧ¤ÇÒÁ¶Õè 2kHz ¤ Ңͧ¤ÒºàÇÅÒ = 1/2000 = 500 äÁâ¤ÃÇÔ¹Ò·Õ ¶ Ò㪠ÊÑ­­Ò³¹ÒÌ ¡Ò 20MHz ¨Ðä´ ¤Ò ¢Í§¤ÒºàÇÅҢͧÊÑ­­Ò³¹ÒÌ ¡Òà» ¹ 0.2 äÁâ¤ÃÇÔ¹Ò·Õ ´Ñ§¹Ñ¹é ¤ Ңͧ¤ÒºàÇÅÒ ·Õãè ª 㹡ÒÃÊà ҧÊÑ­­Ò³¤ÇÒÁ¶Õè 2kHz ¨Ö§à· ҡѺ (500/0.2) / 10 = 250 Period_div_10

Ê Ç¹¤ Ò¤ÇÒÁ¶Õµè Òèí ÊØ´·ÕÊè Ã Ò§ä´ = 1/((255x10)x0.2) = 1.96kHz ¤×ÍÃÐÂÐàÇÅÒ㹡ÒáíÒà¹Ô´àÊÕ§ ÁÕ¤ ÒÃÐËÇ Ò§ 1 ¶Ö§ 65,535 ¢Öé¹ÍÂÙ ¡Ñº¤ÇÒÁ¶Õè ÊÑ­­Ò³¹ÒÌ ¡Ò·Õãè ª ´Ç  ઠ ¶ Ò㪠ʭ Ñ ­Ò³¹ÒÌ ¡Ò 20MHz ¤ÒºàÇÅÒ෠ҡѺ 0.2 äÁâ¤ÃÇÔ¹Ò·Õ ¶ Òµ ͧ¡íÒà¹Ô´ àÊÕ§¹Ò¹ 1 ÇÔ¹Ò·Õ ¨Ðµ ͧ¡íÒ˹´¤ Ò෠ҡѺ 2500 num_of_periods

¢Ñ鹵͹»¯ÔºÑµÔ¡Òà A2.4.1 à¢Õ¹â»Ãá¡ÃÁ·Õè A2-6 ´ Ç mikroC IDE ·íÒ¡ÒäÍÁä¾Å ãË ä´ ä¿Å ¼ÅÅѾ¸ .hex A2.4.2 àª×Íè Áµ ͺÍà ´â»Ãá¡ÃÁࢠҡѺºÍà ´ RBX-877 ¢Í§Ëع ¹µ Robo-PICA áÅоÍà µ USB ¢Í§¤ÍÁ¾ÔÇàµÍà A2.4.3 ´Òǹ âËÅ´â»Ãá¡ÃÁä»ÂѧºÍà ´ RBX-877 ¨Ò¡¹Ñ¹é ¡´ÊÇÔµª áÅ ÇÊѧࡵ¼Å¡Ò÷íÒ§Ò¹·Õàè ¡Ô´¢Ö¹é àÁ×Íè ¡´ÊÇÔµª ·¢Õè Ò RA4 äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC16F887 ¨Ð¡íÒà¹Ô´ÊÑ­­Ò³àÊÕ§¤ÇÒÁ¶Õè 2kHz ¢Ñº ÍÍ¡ÅíÒ⾧໠Ââ«ãË ä´ Â¹Ô Í ҧµ Íà¹×Íè § ¨¹¡Ç ҨлŠÍÂÊÇÔµª

INNOVATIVE EXPERIMENT


52 l àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

PIC


àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC l 53

º··Õè 4

¢Ñºà¤Å×Í è ¹Ëع ¹µ Robo-PICA

ÊÔè§áá·Õè·íÒãË ·ÃÒºÇ Ò ÊÒÁÒö¤Çº¤ØÁ¡Ò÷íÒ§Ò¹¢Í§ËØ ¹Â¹µ ä´ ¤×Í ¡íÒ˹´ãË ËØ ¹Â¹µ à¤Å×Íè ¹·Õäè »ã¹·ÔÈ·Ò§·Õµè Í §¡ÒÃä´ ´Ñ§¹Ñ¹é Ê Ç¹áá·Õµè Í §·íÒ¤ÇÒÁࢠÒ㨤×Í Ê Ç¹¢Í§¡ÒâѺà¤Å×Íè ¹ «Ö§è ËÑÇã¨ÊíҤѭ¤×Í Ç§¨Ã¢ÑºÁÍàµÍÃ

4.1 ǧ¨Ã¢ÑºÁÍàµÍà ¢Í§Ëع ¹µ Robo-PICA ã¹Ëع ¹µ Robo-PICA 㪠ÁÍàµÍà 俵ç·íҧҹà ÇÁ¡ÑºªØ´à¿ ͧ㹡ÒâѺà¤Å×Íè ¹ ÍØ»¡Ã³ ËÅÑ¡ ·Õãè ª ã¹Ç§¨Ã¢ÑºÁÍàµÍà 俵ç¤×Í äÍ«ÕàºÍà L293D «Ö§è ÊÒÁÒö¢ÑºÁÍàµÍÃ ä¿µÃ§ä´ 2 µÑÇ â´Â㪠¢Ò¤Çº¤ØÁ¨Ò¡äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC16F887 ·Ñ§é ËÁ´ 6 ¢Ò áÊ´§¡ÒÃàª×Íè Áµ Íã¹ÃÙ»·Õè 4-1 K18A-K18B Motor M-1

1+ 21+ $.&&%

16 RD0 RD1

19

2

20

7 2A

RC2/CCP1 17 RB1 RB2 RC1/CCP2

C7 0.1µF 50V

+5V +Vm

1

1A

Vcc1

12EN

34

15 4A

35

10

16

9

8 1Y 3 2Y

+ +

R9 2k2

DIRECT LED3 DIR. #A

6

14 IC3 4Y L293D 11 3Y

LED4 DIR. #B

R10 2k2

3A 34EN

13 12 5

4

INVERT

INVERT

+

C8 0.1µF 50V

+

K19A-K19B Motor M-2

DIRECT

Motor Driver

ÃÙ»·Õè 4-1 áÊ´§Ç§¨Ã¢ÑºÁÍàµÍà ¢Í§ºÍà ´ RBX-877 ã¹Ëع ¹µ Robo-PICA


54 l àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

PIC

¡ÒâѺÁÍàµÍà ᵠÅеÑÇ㪠ÊÒÂÊÑ­­Ò³ 3 àÊ ¹ à¹×Íè §¨Ò¡µ ͧ¡ÒäǺ¤ØÁ·ÔÈ·Ò§¢Í§ÁÍàµÍà 仾à ÍÁæ ¡Ñº¡ÒäǺ¤ØÁ¤ÇÒÁàÃçǢͧÁÍàµÍà ´Ç ÂÊÑ­­Ò³ PWM ÊíÒËÃѺÁÍàµÍà M-1 㪠¢Ò¾Íà µ RD0 áÅÐ RD1 ·íÒ˹ Ò·Õè¤Çº¤ØÁ·ÔÈ·Ò§¡ÒÃËÁع Ê Ç¹¢Ò¾Íà µ RC2/CCP1 ãª Ê §ÊÑ­­Ò³ PWM à¾×Íè ¤Çº¤ØÁ¤ÇÒÁàÃçǢͧÁÍàµÍÃ Ê Ç¹ÁÍàµÍà M-2 㪠¢Ò¾Íà µ RB1 áÅÐ RB2 㹡ÒäǺ¤ØÁ·ÔÈ·Ò§ Ê Ç¹¢Ò RC1/CCP2 Ê §ÊÑ­­Ò³ PWM à¾×Íè ¤Çº¤ØÁ¤ÇÒÁàÃçÇ ·ÕèàÍÒµ ¾Øµ¢Í§Ç§¨Ã¢ÑºÁÍàµÍà M-1 áÅÐ M-2 ÁÕ LED ÊͧÊÕáÊ´§¢ÑéÇ¡Òè ÒÂáç´Ñ¹ãË ¡Ñº ÁÍàµÍà ¶ ÒËÒ¡ LED µÔ´à» ¹ÊÕà¢ÕÂÇ ËÁÒ¶֧¡Òè ÒÂáç´Ñ¹µÃ§¢ÑÇé ãË ¡ºÑ ÁÍàµÍà ¶ Òáç´Ñ¹·Õ¨è Ò Â ãË ¡ÅѺ¢ÑÇé LED ¨ÐµÔ´à» ¹ÊÕá´§ ÊíÒËÃѺ¨Ø´µ ÍÁÍàµÍà ÁÕ 2 ¨Ø´µ ͪ ͧâ´Â¨Ø´µ ÍÊÕ¢ÒÇà» ¹¡ÒÃàª×èÍÁ µ ͵ç Ê Ç¹¨Ø´µ ÍÊÕ´Òí à» ¹¡ÒáÅѺ¢ÑÇé

4.2 ¡ÒäǺ¤ØÁ·ÔÈ·Ò§¡ÒÃà¤Å×Íè ¹·Õ¢è ͧËع ¹µ Robo-PICA ã¹ÃÙ»·Õè 4-2 áÊ´§ãË àË繶֧¡ÒäǺ¤ØÁ·ÔÈ·Ò§¡ÒÃËÁع¢Í§ÁÍàµÍà ¢Í§ºÍà ´ RBX-877 Íѹ à» ¹ºÍà ´¤Çº¤ØÁËÅÑ¡¢Í§Ëع ¹µ Robo-PICA ¡µÑÇÍ ҧ ǧ¨Ã¢ÑºÁÍàµÍà ªÍ § M-1 㪠¢Ò¾Íà µ RD0 (PORTD.F0) áÅÐ ¢Ò RD1 (PORTD.F1) 㹡ÒäǺ¤ØÁ·ÔÈ·Ò§¡ÒÃËÁع â´Â RD0 = 0, RD1 = 1 ÁÍàµÍà ¨ÐËÁع·Ç¹à¢çÁ¹ÒÌ ¡Ò RD0 = 1, RD1 = 0 ÁÍàµÍà ¨ÐËÁعµÒÁà¢çÁ¹ÒÌ ¡Ò â´Âǧ¨Ã¢ÑºÁÍàµÍà ¨ÐÊÒÁÒö·íÒ§Ò¹ä´ àÁ×Íè ÁÕÊ­ Ñ ­Ò³àÍç¹àÍàºÔÅÁÒ¨Ò¡¢Ò¾Íà µ RC2 Ê Ç¹ã¹ª ͧ M-2 ¡ç¨Ðà» ¹àª ¹à´ÕÂǡѹ à¾Õ§à»ÅÕÂè ¹¢Ò¾Íà µ·Õãè ª 㹡ÒäǺ¤ØÁ·ÔÈ·Ò§ ( RB1 ¡Ñº RB2) áÅÐàÍç¹àÍàºÔÅǧ¨Ã¢ÑºÁÍàµÍà (RC1) ෠ҹѹé

ÃÙ»·Õè 4-2 áÊ´§¡ÒÃ㪠§Ò¹¢Ò¾Íà µ¢Í§ PIC16F887 ¤Çº¤ØÁ·ÔÈ·Ò§¡ÒÃËÁع¢Í§ÁÍàµÍÃ


àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC l 55

¡Ô¨¡ÃÃÁ·Õè 3

·´Êͺ¡ÒÃà¤Å×Íè ¹·Õ¢è ͧ Robo-PICA

㹡Ԩ¡ÃÃÁ¹Õ¨é йíÒµÑÇÍ ҧ¡Ò÷´Êͺ¢Ñºà¤Å×Íè ¹Ëع ¹µ Robo-PICA ¢Ñ¹é ¾×¹é °Ò¹ â´ÂàÃÔÁè µ ¹ ¨Ò¡¡ÒâѺà¤Å×Íè ¹µÃ§ä»¢ ҧ˹ Ò áÅÐÁÕ¡ÒÃà»ÅÕÂè ¹·ÔÈ·Ò§¡ÒÃà¤Å×Íè ¹·Õè ·Ñ§é ¹Õàé ¾×Íè Êà ҧ¤ÇÒÁࢠÒã¨¾×¹é °Ò¹ã¹¡ÒäǺ¤ØÁ¡ÒÃà¤Å×Íè ¹·Õ¢è ͧËع ¹µ Robo-PICA ¡ ͹¨ÐࢠÒÊÙ¡ Òû¯ÔºµÑ ¡Ô ÒÃã¹ÀÒÃСԨ·Õ«è ºÑ « ͹¢Ö¹é 㹡Ԩ¡ÃÃÁµ Íæ ä»

á¹Ç¤Ô´ ¨Ò¡¡ÒÃÊà ҧËع ¹µ Robo-PICA 㹡Ԩ¡ÃÃÁ·Õè 1 ÁÕ¡Òõ¡Å§ã¹àº×Íé §µ ¹Ç Ò ÁÍàµÍà ·µÕè Í ¡Ñºª ͧ M-1 ¨Ðà» ¹ÁÍàµÍà ¢ºÑ à¤Å×Íè ¹·Ò§« Ò áÅÐÁÍàµÍà ·µÕè Í ¡Ñºª ͧ M-2 à» ¹ÁÍàµÍà ¢ºÑ à¤Å×Íè ¹·Ò§¢ÇÒ ´Ñ§¹Ñ¹é ¡ÒÃà¤Å×Íè ¹·Õàè º×Íé §µ ¹¢Í§Ëع ¹µ Robo-PICA ¨Ðà¡Ô´¢Ö¹é ä´ 4 ÃٻẺ¤×Í

RB3 M-1

RE0 RA5 RA3 RA2 RA1 RA0 RB0 M-2

RA4

ICD2

RESET

RB0/ INT

DOWNLOAD

RE1

Robo - PICARRobotR PICRMicroRobotic

RC3 SCL RC4 SDA RC6 TxD RC7 RxD LCD

RE2

LCD back light

Sound RC0

ÁÍàµÍà ·§Ñé Êͧª Í§ä´ ÃºÑ áç´Ñ¹µÃ§¢ÑÇé (DIRECT) LED à» ¹ÊÕà¢ÕÂÇ·Ñ§é ¤Ù

SERVO #1 ON

BATT

#2 #3

4.8-6V

ON

(1) à¤Å×Íè ¹·Õµè ç仢 ҧ˹ Ò

S+

POWER

M-1

M-2

DIRECT

DIRECT


56 l àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

PIC

RB3 M-1

RE0 RA5 RA3 RA2 RA1 RA0 RB0 RA4

ICD2

RESET

RB0/ INT

DOWNLOAD

RE1

Robo - PICARRobotR PICRMicroRobotic

RC3 SCL RC4 SDA RC6 TxD RC7 RxD LCD

RE2

LCD back light

Sound RC0

(2) à¤Å×Íè ¹·Õ¶è ÍÂËÅѧ ÁÍàµÍà ·§Ñé Êͧª Í§ä´ ÃºÑ áç´Ñ¹¡ÅѺ¢ÑÇé (INVERT) LED à» ¹ÊÕá´§·Ñ§é ¤Ù

M-2

SERVO ON

BATT

#1 #2 #3 S+

ON

4.8-6V

POWER

M-1

M-2

INVERT

INVERT

RB3

RA1 RA0 / RB0 INT RA4

RE S

ET

RB0

D LOA WN DO

LCD

RC7 RxD

RC6 TxD

RA2

RC4 SDA

R

tR bo ic Ro t R o A ob IC R P ro RE1 bo ic RE0 Ro RM C RA5 PI A3

LCD k bac t ligh RC3 SCL

nd Sou 0 RC

RE2

(3) àÅÕÂé Ç« Ò ÁÍàµÍà ªÍ § M-1 äÁ ä´ ÃºÑ áç´Ñ¹ LED àÍÒµ ¾µØ ´Ñº Ê Ç¹ÁÍàµÍà ªÍ § M-2 ä´ ÃºÑ áç´Ñ¹µÃ§¢ÑÇé (DIRECT) LED àÍÒµ ¾µØ à» ¹ÊÕà¢ÕÂÇ

2 ICD

M-1

M-2

VO SER #1

#3

S+

4.8

M-1

-6V

ON

BAT

T

ON

#2

ER POW

M-2 INVERT


àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC l 57

2 RE 1 RE 0 RE

0 RB

1

M-

2

ON

-6V

4

M-

BA 4.8

RA

TT

RE

ICD 2

SE

T

RB 0 INT /

RA

0

PI

Ro

bo

DO WN LO AD

A3

LCD

RA

5

RC SD 4 A RC 6 TxD RC RxD7

SC L CR - PI Mi CA cr R oR Rob ob o RA 1 ot tR RA 2 ic R

RC

RB

3

3

LCD bac ligh k t

So u RC nd 0

(4) àÅÕÂé Ç¢ÇÒ ÁÍàµÍà ªÍ § M-1 áç´Ñ¹µÃ§¢ÑÇé (DIRECT) LED àÍÒµ ¾µØ à» ¹ÊÕà¢ÕÂÇ Ê Ç¹ÁÍàµÍà ª ͧ M-2 äÁ ä´ ÃºÑ áç´Ñ¹ LED àÍÒµ ¾µØ ´Ñº

ON

#1 SERV O #2

PO WE R

#3

S+

M-1

M-2

DIRECT

RB3

RE2

LCD back light

RE1

S+ #3

#2

#1

M-2 RC7 RxD LCD

RC6 TxD

RC4 SDA

RC3 SCL Sound RC0

RA4

RB0

4.8-6V

M-1

#2 S+

POWER

M-1

M-2

INVERT

DIRECT

POWER

RA2 RA1

M-1

DOWNLOAD

RA0

LCD back light

ICD2 BATT

RB0/ INT

RESET

RESET

ON ON

ON

SERVO

RE0 RA5 RA3

RB3

Robo - PICARRobotR PICRMicroRobotic

RC3 SCL

Robo - PICARRobotR PICRMicroRobotic

RE2

DOWNLOAD

RE1

ICD2

RE0

ON

RA5

RC4 SDA

RA3

RC6 TxD

RA2

RC7 RxD

RA1

SERVO #1

BATT

RA0

M-2

#3 4.8-6V

RB0/ INT

M-1

RB0

LCD

M-2

RA4

Sound RC0

(5) ËÁع« Ò ÁÍàµÍà ªÍ § M-1 ä´ ÃºÑ áç´Ñ¹¡ÅѺ¢ÑÇé (INVERT) LED àÍÒµ ¾µØ à» ¹ÊÕá´§ Ê Ç¹ ÁÍàµÍà ªÍ § M-2 ä´ ÃºÑ áç´Ñ¹µÃ§¢ÑÇé (DIRECT) LED àÍÒµ ¾µØ à» ¹ÊÕà¢ÕÂÇ


58 l àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

PIC

RB3

RE0

RE1

Robo - PICARRobotR PICRMicroRobotic

RA5 RA3 RA2

M-1

RA1

ON

RB0/ INT

SERVO

RC3 SCL LCD back light

Robo - PICARRobotR PICRMicroRobotic

RESET

RA4

RB0

RB0/ INT

RB3 RA0

RA1

RA2

RA3

RA5

RE0

RE1

RE2

RA4

RB0

RESET

#1

S+

M-2

M-2

SERVO ON

RC4 SDA

M-2

#2

ICD2

RC6 TxD

ICD2

RA0

RC3 SCL RC4 SDA RC6 TxD RC7 RxD

DOWNLOAD

#1

BATT

RC7 RxD

ON

#3

M-1

Sound RC0

LCD BATT

POWER

LCD

M-1

4.8-6V

DOWNLOAD

RE2

LCD back light

Sound RC0

(6) ËÁع¢ÇÒ ÁÍàµÍà ªÍ § M-1 ä´ ÃºÑ áç´Ñ¹µÃ§¢ÑÇé (DIRECT) LED àÍÒµ ¾µØ à» ¹ÊÕà¢ÕÂÇ Ê Ç¹ ÁÍàµÍà ªÍ § M-2 ä´ ÃºÑ áç´Ñ¹¡ÅѺ¢ÑÇé (INVERT) LED àÍÒµ ¾µØ à» ¹ÊÕá´§

#2

4.8-6V

ON

#3 S+

POWER

M-1

M-2

DIRECT

INVERT

»¯ÔºµÑ ¡Ô Òà A3.1 à¢Õ¹â»Ãá¡ÃÁ·Õè A3-1 ´ Ç mikroC IDE ·íÒ¡ÒäÍÁä¾Å ãË ä´ ä¿Å ¼ÅÅѾ¸ .hex A3.2 àª×Íè Áµ ͺÍà ´â»Ãá¡ÃÁࢠҡѺËع ¹µ Robo-PICA áÅоÍà µ USB ¢Í§¤ÍÁ¾ÔÇàµÍà A3.3 ´Òǹ âËÅ´â»Ãá¡ÃÁä»ÂѧËع ¹µ Robo-PICA áÅ Ç» ´ÊÇÔµª POWER A3.4 »Å´ÊÒ´Òǹ âËÅ´·Ñ§é ËÁ´ÍÍ¡¨Ò¡Ëع ¹µ Robo-PICA A3.5 ¹íÒËع ¹µ Robo-PICA ÇÒ§º¹¾×¹é à» ´ÊÇÔµª POWER Êѧࡵ¡Ò÷íÒ§Ò¹¢Í§Ëع ¹µ à·Õº¡Ñºâ»Ãá¡ÃÁ·Õè à¢Õ¹¢Ö¹é Ëع ¹µ Robo-PICA ¨Ðµ ͧà¤Å×Íè ¹·Õäè »¢ ҧ˹ ÒÊÅѺ¡Ñº¡ÒÃàÅÕÂé Ç¢ÇÒ ÁÕÅ¡Ñ É³Ð¡ÒÃà¤Å×Íè ¹·Õ¤è Å ÒÂÃÙ» ÊÒÁàËÅÕÂè Á ËÒ¡äÁ à» ¹àª ¹¹Õé ãË µÃǨÊͺ¡ÒÃàª×Íè Áµ ÍÊÒÂÁÍàµÍà ࢠҡѺºÍà ´ RBX-877 ãË ÊÅѺÊÒ¢ͧÁÍàµÍà ¨¹¡ÃзÑè§ËØ ¹Â¹µ à¤Å×è͹·Õèä´ ¶Ù¡µ ͧ


àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC l 59 void main() { /* Initial port for control motor */ ANSELH=0x00 ; // TRISB.F1=0;TRISB.F2=0; // TRISD.F0=0;TRISD.F1=0; // TRISC.F1=0;TRISC.F2=0; // PORTC.F1=1;PORTC.F2=1; // /* Triangle running robot while(1) { PORTD.F0 =0;PORTD.F1 PORTB.F1 =0;PORTB.F2 Delay_ms(2000); PORTB.F1 =1;PORTB.F2 Delay_ms(800); } }

Set PORTB => Digital Motor M-2 2A,Motor M-2 2B Motor M-1 1A,MOtor M-1 1B Motor M-2 2E,Motor M-1 1E Enable Motor M-2,Enable Motor M-1

*/

=1; =1;

// Motor M-1 Forward // Motor M-2 Forward

=0;

// Motor M-2 Backward

¡Ò÷íÒ§Ò¹¢Í§â»Ãá¡ÃÁ â»Ãá¡ÃÁ¨ÐẠ§à» ¹ 2 ª ǧ ª ǧáá໠¹¡ÒáíÒ˹´¢Ò¾Íà µ·Õè㪠¢ÑºÁÍàµÍà ãË à» ¹¢ÒàÍÒµ ¾Øµ áÅ Ç àÍç¹àÍàºÔÅ¡ÒäǺ¤ØÁÁÍàµÍà M-1 áÅÐÁÍàµÍà M-2 ª ǧ·Õè 2 à» ¹¡ÒÃÊÑ§è §Ò¹¢Ñºà¤Å×Íè ¹ÁÍàµÍà â´Âà» ¹¡ÒÃÊѧè ãË ÁÍàµÍà M-1 áÅÐ M-2 à¤Å×Íè ¹·Õäè »¢ ҧ˹ Ò·Ñ§é ¤Ù à» ¹àÇÅÒ 2 ÇÔ¹Ò·Õ ¨Ò¡¹Ñ¹é ¢ÑºãË ÁÍàµÍà M-2 ÁÕ·ÈÔ ·Ò§ËÁع ¡ÅѺËÅѧ Íѹ໠¹¡Ò÷íÒãË Ë¹Ø Â¹µ ËÁعµÑÇà¾×Íè àÅÕÂé Ç¢ÇÒ à» ¹àÇÅÒ 0.8 ÇÔ¹Ò·Õ ·íÒÊÅѺ¡Ñ¹ä»Í ҧµ Íà¹×Íè §

â»Ãá¡ÃÁ·Õè A3-1 ä¿Å movetest01.c â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ¤Çº¤ØÁ¡ÒÃà¤Å×Íè ¹·Õ¢è ͧËع ¹µ RoboPICA Í ҧ§ ÒÂ


60 l àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

PIC

4.3 ¤Çº¤ØÁ¤ÇÒÁàÃçǢͧÁÍàµÍà Ëع ¹µ Robo-PICA ä´ àµÃÕÂÁ¤ÇÒÁ¾Ã ÍÁ㹡ÒûÃѺ¤ÇÒÁàÃçÇÁÍàµÍà äÇ áÅ Ç â´Â» ͹ÊÑ­­Ò³ ࢠҷբè ÒàÍç¹àÍàºÔÅ¡Ò÷íÒ§Ò¹¢Í§äÍ«Õ¢ºÑ ÁÍàµÍà (EN) ¨Ò¡Ç§¨Ãã¹ÃÙ»·Õè 4-1 ¨ÐàËç¹Ç Ò¢ÒàÍç¹àÍàºÔŶ١µ Í äÇ ¡Ñº¢Ò¾Íà µ RC2/CCP1 áÅÐ RC1/CCP2 «Ö觢ҾÍà µ·Ñé§Êͧ¢Í§äÁâ¤Ã¤Í¹â·ÃÅàÅÍà ÊÒÁÒö ¡íÒ˹´ãË à» ¹¢ÒÊà ҧÊÑ­­Ò³ PWM (¾ÑÅÊ Ç´Ô ¸ ÁÍ´ÙàÅàµÍà ) à¾×Íè »ÃѺ¤ÇÒÁàÃçǢͧÁÍàµÍÃ ä´ ã¹¡ÒäǺ¤ØÁÁÍàµÍà â´Â»¡µÔ¹¹Ñé ¨Ð» ͹áç´Ñ¹ä¿µÃ§ãË ¡ºÑ ÁÍàµÍà ÁÍàµÍà ¡¨ç зíÒ§Ò¹àµçÁ ¡íÒÅѧ «Ö§è ÍÒ¨¨ÐÁÕ¤ÇÒÁàÃçÇÁÒ¡à¡Ô¹ä» ´Ñ§¹Ñ¹é ¡ÒûÃѺ¤ÇÒÁàÃçǢͧÁÍàµÍà ¨§Ö ãª Ç¸Ô ÅÕ ´áç´Ñ¹ä¿¿ Ò·Õ»è Í ¹ ãË ¡ºÑ ÁÍàµÍà ÇÔ¸·Õ ¹Õè ÂÔ Á¤×Í ¡Òû ͹¾ÑÅÊ ä»¢ÑºÁÍàµÍà ᷹ áÅ Ç»ÃѺ¤ÇÒÁ¡Ç Ò§¾ÑÅÊ ªÇ §ºÇ¡ à¾×Íè ãË ä´ ¤Ò áç´Ñ¹à©ÅÕÂè µÒÁµ ͧ¡Òà ÇÔ¸¡Õ ÒùÕàé ÃÕÂ¡Ç Ò ¾ÑÅÊ Ç´Ô ¸ ÁÍ´ÙàÅàµÍà (PWM) â´Â¤ÇÒÁ¡Ç Ò§¾ÑÅÊ ªÇ §ºÇ¡ àÁ×Íè à·Õº¡Ñº¤ÇÒÁ¡Ç Ò§¾ÑÅÊ ·§Ñé ËÁ´àÃÕÂ¡Ç Ò ´ÔǵÕäé «à¡ÔÅ â´Â¨Ð¤Ô´¤ Ò´ÔǵÕäé «à¡ÔÅà» ¹à»Íà à«ç¹µ ¢Í§¤ Ò¤ÇÒÁ ¡Ç Ò§¾ÑÅÊ ·§Ñé ËÁ´ µÑÇÍ ҧ¨Ò¡ÃÙ»·Õè 4-3 (¢) ÁÕ¤Ò ´ÔǵÕäé «à¡ÔÅ 50% ËÁÒ¶֧ ¤ÇÒÁ¡Ç Ò§¢Í§¾ÑÅÊ ªÇ §ºÇ¡ÁÕ¤ÇÒÁ ¡Ç ҧ໠¹ 50% ¢Í§¤ÇÒÁ¡Ç Ò§·Ñ§é ËÁ´ ´Ñ§¹Ñ¹é áç´Ñ¹à©ÅÕÂè ·Õäè ´ ෠ҡѺ (50 x 4.8) /100 = 2.4V ÊíÒËÃѺ ÃÙ»·Õè 4-3 (¤) áÅÐ (§) à» ¹¡ÒáíÒ˹´¤ Ò´ÔǵÕäé «à¡ÔÅ 75% áÅÐ 25% µÒÁÅíҴѺ áç´Ñ¹ (V)

áç´Ñ¹ (V)

4.8V

4.8V

áç´Ñ¹à©ÅÕÂè

´ÔǵÕäé «à¡ÔÅ 50%

2.4V

(¡) áç´Ñ¹ (V)

áç´Ñ¹à©ÅÕÂè

àÇÅÒ

´ÔǵÕäé «à¡ÔÅ 75%

4 .8 V

(¢) áç´Ñ¹ (V)

àÇÅÒ

áç´Ñ¹à©ÅÕÂè ´ÔǵÕäé «à¡ÔÅ 25 %

4 .8 V

3 .6 V 1 .2 V

(¤)

àÇÅÒ

(§)

ÃÙ»·Õè 4-3 áÊ´§¡ÒÃà»ÃÕºà·Õº¤ Òáç´Ñ¹·Õàè ¡Ô´¢Ö¹é àÁ×Íè 㪠PWM (¡) » ͹ÊÑ­­Ò³ä¿µÃ§ (¢) PWM ÁÕ´ÇÔ µÕäé «à¡ÔÅ 50% (¤) PWM ÁÕ´ÇÔ µÕäé «à¡ÔÅ 75% (§) PWM ÁÕ´ÇÔ µÕäé «à¡ÔÅ 25%

àÇÅÒ


àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC l 61

4.4 äźÃÒÃÕè PWM 㹡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C à¾×Íè ¤Çº¤ØÁ¡ÒäÇÒÁàÃçÇ㹡ÒÃà¤Å×Íè ¹·Õ¢è ͧËع ¹µ Robo-PICA µÑǪ ÇÂË¹Ö§è ·Õè mikroC ¤ÍÁä¾àÅÍà àµÃÕÂÁäÇ ãË ãª ¤Í× ä¿Å äźÃÒÃÕ PWM Íѹ໠¹ä¿Å äźÃÒÃÕÊÒí ËÃѺ àÃÕ¡㪠§Ò¹âÁ´ÙÅ PWM ÀÒÂã¹äÁâ¤Ã¹¤Í¹â·ÃÅàÅÍà PIC à¾×Íè Êà ҧÊÑ­­Ò³ PWM â´Â¿ §¡ ª¹Ñè ÀÒÂã¹äźÃÒÃÕ PWM ¹Õé¨Ðª ÇÂ㹡ÒáíÒ˹´¤ Ò¤ÇÒÁ¡Ç Ò§¢Í§ÊÑ­­Ò³ PWM à¾×èÍ㪠㹡ÒÃÊà ҧ ÊÑ­­Ò³ PWM ÊíÒËÃÑºÊ §ä»Âѧǧ¨Ã¢ÑºÁÍàµÍà ¡ÒûÃѺ¤ Ò¤ÇÒÁ¡Ç Ò§¢Í§¾ÑÅÊ ªÇ §ºÇ¡ãË ÁÒ¡ËÃ×Í ¹ Í ¨Ð·íÒãË à¡Ô´áç´Ñ¹·Õàè ÍÒµ ¾µØ ¢Í§Ç§¨Ã¢ÑºÁÍàµÍà ÁÒ¡¹ ͵ÒÁ¤ÇÒÁ¡Ç Ò§¢Í§ÊÑ­­Ò³ PWM ¶ Ò¤ÇÒÁ¡Ç Ò§¾ÑÅÊ ªÇ §ºÇ¡ÁÒ¡ áç´Ñ¹àÍÒµ ¾µØ ·ÕÁè ÍàµÍà ¡¨ç ÐÊÙ§ ·íÒãË Ë¹Ø Â¹µ à¤Å×Íè ¹·Õäè ´ àÃçÇ ¶ Ò¤ÇÒÁ¡Ç Ò§¾ÑÅÊ ªÇ §ºÇ¡¹ Í áç´Ñ¹àÍÒµ ¾µØ ·ÕÁè ÍàµÍà ¡¨ç еèÒí ·íÒãË Ë¹Ø Â¹µ à¤Å×Íè ¹·Õäè ´ ªÒ ä¿Å äźÃÒÃÕ·ÕèÊà ҧ¢Öé¹¹Õéª×èÍ PWM â´Â¨ÐàÃÕ¡㪠§Ò¹âÁ´ÙÅ¡íÒà¹Ô´ÊÑ­­Ò³ PWM ÀÒÂã¹ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC16F887 «Öè§ÁÕ´ Ç¡ѹ 2 ªØ´ ¨Ö§ÊÒÁÒöᡡѹ¤Çº¤ØÁ¤ÇÒÁàÃçÇÁÍàµÍà ÃÐËÇ Ò§ÁÍàµÍà ·ªÕè Í § M-1 áÅÐ M-2 ä´

4.4.1 ¡ÒÃ㪠§Ò¹¤íÒÊÑ§è µ Ò§æ ÀÒÂã¹äźÃÒÃÕ PWM Pwm_Init

ÃٻẺ void Pwm_Init(unsigned long freq);

¾ÒÃÒÁÔàµÍà freq

- à» ¹¤ Ò¤ÇÒÁ¶Õ¢è ͧÊÑ­­Ò³ PWM ÁÕ˹ ÇÂà» ¹ àÎÔõ« (Hz)

à» ¹¡ÒáíÒ˹´¤ ÒàÃÔÁè µ ¹ãË ¡ºÑ âÁ´ÙÅ PWM â´Â¡íÒ˹´¤ Ò´ÔǵÕäé «à¡ÔŢͧÊÑ­­Ò³ PWM à» ¹ 0 ¤íÒÊÑ§è ¹Õ¨é е ͧ¶Ù¡àÃÕ¡㪠§Ò¹¡ ͹㪠§Ò¹âÁ´ÙÅ PWM µÑÇÍ ҧ Pwm1_Init(5000);

ËÁÒ¶֧ ¡íÒ˹´¤ ÒàÃÔÁè µ ¹ãË ¡ºÑ âÁ´ÙÅ PWM µÑÇ·Õè 1 (ÊíÒËÃѺäÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC ·ÕÁè âÕ Á´ÙÅ PWM


62 l àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

PIC

ÁÒ¡¡Ç Ò 1 µÑÇ) ·íÒ§Ò¹·Õ¤è ÇÒÁ¶Õè 5kHz Pwm_Change_Duty

ÃٻẺ void Pwm_Change_Duty(unsigned short duty_ratio);

¾ÒÃÒÁÔàµÍà duty_ratio

- ÁÕ¤Ò ÃÐËÇ Ò§ 0 ¶Ö§ 255

à» ¹¤íÒÊѧè à¾×Íè à»ÅÕÂè ¹¤ Ò´ÔǵÕäé «à¡ÔŢͧâÁ´ÙÅ PWM ¶ Ò¤ Ңͧ duty_ratio à» ¹ 0 ËÁÒ¶֧ ¤ Ò´ÔǵÕäé «à¡ÔÅ 0%, 127 ËÁÒ¶֧ 50% áÅÐ 255 ËÁÒ¶֧ ¤ Ò´ÔǵÕäé «à¡ÔÅ 100% µÑÇÍ ҧ Pwm1_Change_Duty(190);

à»ÅÕÂè ¹¤ Ò´ÔǵÕäé «à¡ÔŢͧâÁ´ÙÅ PWM1 à» ¹ 75% Pwm_Start

ÃٻẺ void Pwm_Start(void);

à» ¹¤íÒÊѧè à¾×Íè àÃÔÁè µ ¹Êѧè ãË âÁ´ÙÅ PWM ·íÒ§Ò¹ µÑÇÍ ҧ Pwm1_Start();

àÃÔÁè µ ¹¡Ò÷íÒ§Ò¹¢Í§âÁ´ÙÅ PWM1 Pwm_Stop

ÃٻẺ void Pwm_Stop(void);

à» ¹¤íÒÊѧè à¾×Íè ËÂØ´¡Ò÷íÒ§Ò¹¢Í§âÁ´ÙÅ PWM µÑÇÍ ҧ Pwm1_Stop();

ËÂØ´¡Ò÷íÒ§Ò¹¢Í§âÁ´ÙÅ PWM1


àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC l 63

¡Ô¨¡ÃÃÁ·Õè 4

¤Çº¤ØÁ¤ÇÒÁàÃçǢͧ Robo-PICA

㹡Ԩ¡ÃÃÁ¹Õ¹é Òí àÊ¹Í 2 µÑÇÍ ҧ¡Ò÷´Êͺ¤Çº¤ØÁ¤ÇÒÁàÃçÇ㹡ÒÃà¤Å×Íè ¹·Õ¢è ͧËع ¹µ RoboPICA â´Â㪠ʭ Ñ ­Ò³ PWM

¡Ô¨¡ÃÃÁ·Õè 4-1 à¤Å×Íè ¹·Õàè » ¹ÃÙ»ÊÒÁàËÅÕÂè ÁáÅлÃѺ¤ÇÒÁàÃçÇä´ A4.1.1 à¢Õ¹â»Ãá¡ÃÁ·Õè A4-1 ´ Ç mikroC IDE ·íÒ¡ÒäÍÁä¾Å ãË ä´ ä¿Å ¼ÅÅѾ¸ .hex void main() { /* Initial port for control motor */ ANSELH.F0=0; // ANSELH.F2=0; // TRISB.F1=0; // TRISB.F2=0; // TRISD.F0=0; // TRISD.F1=0; //

RB1 ==> Digital IO RB2 ==> Digital IO Motor M-2 2A Motor M-2 2B Motor M-1 1A MOtor M-1 1B

/* Initial PWM module freq = 5 kHz */ Pwm1_Init(5000); // Initail PWM 1E Pwm2_Init(5000); // Initail PWM 2E /* Start PWM and set duty cycle 100% */ Pwm1_Start(); Pwm2_Start(); Pwm1_Change_Duty(190); // Motor M-1 75% Speed Pwm2_Change_Duty(190); // Motor M-2 75% Speed /* Triangle running robot while(1) { PORTD.F0 =0;PORTD.F1 PORTB.F1 =0;PORTB.F2 Delay_ms(2000); PORTB.F1 =1;PORTB.F2 Delay_ms(800); } }

*/ =1; =1;

// Motor M-1 Forward // Motor M-2 Forward

=0;

// Motor M-2 Backward

¡Ò÷íÒ§Ò¹¢Í§â»Ãá¡ÃÁ

â»Ãá¡ÃÁ¹Õ¡é Òí ˹´¤ÇÒÁ¶Õ¢è ͧ PWM äÇ ·Õè 5kHz ¼ Ò¹¤íÒÊѧè Pwm_Init() ¨Ò¡¹Ñ¹é àÃÔÁè µ ¹¡ÒÃÊà ҧÊÑ­­Ò³ PWM ´ Ç¡ÒÃÊ §¤íÒÊѧè Pwm_Start() áÅСíÒ˹´¤ Ò¤ÇÒÁ¡Ç Ò§¾ÑÅÊ ´Ç ¤íÒÊѧè Pwm_Chage_Duty() ã¹·Õ¹è ¡Õé Òí ˹´ ¤ Òà» ¹ 190 àÁ×Íè ¤íҹdz¤ ÒÍÍ¡à» ¹à»Íà ૹµ ¨Ðä´ 75% Ê Ç¹¡ÒâѺà¤Å×Íè ¹Ëع ¹µ àËÁ×͹¡Ñºâ»Ãá¡ÃÁ·Õè A3-1

â»Ãá¡ÃÁ·Õè A4-1 ä¿Å pwmtest01.c â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ¤Çº¤ØÁ¤ÇÒÁàÃçÇ㹡ÒÃà¤Å×Íè ¹·Õ¢è ͧ Ëع ¹µ Robo-PICA


64 l àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

PIC

A4.1.2 àª×Íè Áµ ͺÍà ´â»Ãá¡ÃÁࢠҡѺËع ¹µ Robo-PICA áÅоÍà µ USB ¢Í§¤ÍÁ¾ÔÇàµÍà A4.1.3 ´Òǹ âËÅ´â»Ãá¡ÃÁä»ÂѧËع ¹µ Robo-PICA áÅ Ç» ´ÊÇÔµª POWER A4.1.4 »Å´ÊÒ´Òǹ âËÅ´·Ñ§é ËÁ´ÍÍ¡¨Ò¡Ëع ¹µ Robo-PICA A4.1.5 ¹íÒËع ¹µ Robo-PICA ÇÒ§º¹¾×¹é à» ´ÊÇÔµª POWER Êѧࡵ¡Ò÷íÒ§Ò¹¢Í§Ëع ¹µ Ëع ¹µ Robo-PICA ¨Ðµ ͧà¤Å×Íè ¹·Õäè »¢ ҧ˹ ÒÊÅѺ¡Ñº¡ÒÃàÅÕÂé Ç¢ÇÒ ÁÕÅ¡Ñ É³Ð¡ÒÃà¤Å×Íè ¹·Õ¤è Å ÒÂÃÙ» ÊÒÁàËÅÕÂè Á ¡ÒÃà¤Å×Íè ¹·Õ¨è ÐàËÁ×͹¡Ñºã¹¡Ô¨¡ÃÃÁ·Õè 3 ¨Ø´·Õàè ¾ÔÁè àµÔÁࢠÒÁÒ¤×Í ÊÒÁÒö»ÃѺà»ÅÕÂè ¹¤ÇÒÁàÃçÇ㹡Òà à¤Å×Íè ¹·Õäè ´ â´Âᡠ䢷դè Òí Êѧè Pwm1_Change_Duty(190);

// Motor M-1 75% Speed

Pwm2_Change_Duty(190);

// Motor M-2 75% Speed

¡Ô¨¡ÃÃÁ·Õè 4-2 à¤Å×Íè ¹·Õàè » ¹Ãٻǧ¡ÅÁ´ Ç¡ÒäǺ¤ØÁ¤ÇÒÁàÃçÇ A4.2.1 à¢Õ¹â»Ãá¡ÃÁ·Õè A4-2 ´ Ç mikroC IDE ·íÒ¡ÒäÍÁä¾Å ãË ä´ ä¿Å ¼ÅÅѾ¸ .hex

A4.2.2 àª×Íè Áµ ͺÍà ´â»Ãá¡ÃÁࢠҡѺËع ¹µ Robo-PICA áÅоÍà µ USB ¢Í§¤ÍÁ¾ÔÇàµÍà A4.2.3 ´Òǹ âËÅ´â»Ãá¡ÃÁä»ÂѧËع ¹µ Robo-PICA áÅ Ç» ´ÊÇÔµª POWER A4.2.4 »Å´ÊÒ´Òǹ âËÅ´·Ñ§é ËÁ´ÍÍ¡¨Ò¡Ëع ¹µ Robo-PICA A4.2.5 ¹íÒËع ¹µ Robo-PICA ÇÒ§º¹¾×¹é à» ´ÊÇÔµª POWER Êѧࡵ¡Ò÷íÒ§Ò¹¢Í§Ëع ¹µ Ëع ¹µ Robo-PICA ¨Ðà¤Å×Íè ¹·Õàè » ¹Ãٻǧ¡ÅÁ â´ÂÍÒÈÑÂÇÔ¸¡Õ ÒûÃѺà»ÅÕÂè ¹¤ÇÒÁàÃçÇ㹡ÒâѺà¤Å×Íè ¹ ¢Í§ÁÍàµÍà ·§Ñé ÊͧµÑÇãË áµ¡µ Ò§¡Ñ¹ ã¹·Õ¹è ¤Õé Í× 100% ¡Ñº 86%


àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC l 65

void main() { /* Initial port for control motor */ ANSELH=0x00; // TRISB.F1=0; // TRISB.F2=0; // TRISD.F0=0; // TRISD.F1=0; //

PORTB ==> Digital IO Motor M-2 2A Motor M-2 2B Motor M-1 1A MOtor M-1 1B

/* Initial PWM module freq = 5 kHz */ Pwm1_Init(5000); // Initail PWM 1E Pwm2_Init(5000); // Initail PWM 2E /* Start PWM and set duty cycle 100% */ Pwm1_Start(); Pwm2_Start(); Pwm1_Change_Duty(255); // Motor Pwm2_Change_Duty(220); // Motor while(PORTB.F0==1); /* Oval running robot */ PORTD.F0 =0;PORTD.F1 =1; // Motor PORTB.F1 =0;PORTB.F2 =1; // Motor }

M-1 100% Speed M-2 86% Speed M-1 Forward M-2 Forward

¡Ò÷íÒ§Ò¹¢Í§â»Ãá¡ÃÁ â»Ãá¡ÃÁ¹Õ¡é Òí ˹´¤ Ò´ÔǵÕäé «à¡ÔÅ·Õ»è Í ¹ãË ÁÍàµÍà ·§Ñé ÊͧµÑÇäÁ ෠ҡѹ ÁÍàµÍà M-1 ෠ҡѺ 255 (¨ Ò ä¿ãË ¡ºÑ ÁÍàµÍà àµçÁ¡íÒÅѧ) ã¹¢³·ÕÁè ÍàµÍà M-2 ෠ҡѺ 220 Íѹ໠¹¡Òè ÒÂä¿ãË ¡ºÑ ÁÍàµÍà 86% ´Ñ§¹Ñ¹é ÁÍàµÍà M-2 ¨Ö§à¤Å×Íè ¹·Õªè Ò ¡Ç ÒÁÍàµÍà M-1 while(PORTB.F0==1); à» ¹¤íÒÊÑ§è ª ÇÂãË Ë¹ Ø Â¹µ äÁ à¤Å×Íè ¹·Õ·è ¹Ñ ·ÕËÅѧ¨Ò¡´Òǹ âËÅ´â»Ãá¡ÃÁ àÊÃç¨ÊÔ¹é áµ ¨Ðµ ͧÁÕ¡Òá´ÊÇÔµª RB0 ¡ ͹ àÁ×Íè ¡´ÊÇÔµª à§×Íè ¹ä¢¨Ðà» ¹à·ç¨áÅÐâ»Ãá¡ÃÁ¨ÐËÅØ´¨Ò¡ÅÙ» while ä»·íÒ¤íÒÊÑ§è ¶Ñ´ä»ä´

â»Ãá¡ÃÁ·Õè A4-2 ä¿Å pwmtest02.c â»Ãá¡ÃÁ¤Çº¤ØÁËع ¹µ Robo-PICA à¤Å×Íè ¹·Õàè » ¹Ç§¡ÅÁ


66 l àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

PIC

4.5 Êà ҧä¿Å äźÃÒÃÕ motor.h ¨Ò¡ËÑÇ¢ Í 4.4 áÅСԨ¡ÃÃÁ·Õè 4 㹡ÒÃà¢Õ¹â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺËع ¹µ Robo-PICA àÃÔèÁÁÕ¡ÒÃàÃÕ¡㪠äźÃÒÃÕ«Ö觺ÃèØÁҾà ÍÁ¡Ñº mikroC ¤ÍÁä¾àÅÍà Í ҧäáçµÒÁ ¼Ù 㪠§Ò¹ÊÒÁÒö Êà ҧ¿ §¡ ªÑè¹áÅÐä¿Å äźÃÒÃÕ¢Öé¹àÍ§ä´ ´ Ç¡ÒÃÃÇÁàÍÒ¤íÒÊÑ觷Õè㪠§Ò¹º ÍÂæ ÁÒÊà ҧ໠¹¿ §¡ ªÑè¹ áÅÐÃÇÁËÅÒÂæ ¿ §¡ ªÑè¹à¢ Ò´ Ç¡ѹà¾×èÍÊà ҧ໠¹ä¿Å äźÃÒÃÕ ·Ñ駹Õéà¾×èÍ»ÃÐ⪹ 㹡ÒþѲ¹Ò â»Ãá¡ÃÁã¹Í¹Ò¤µ ´ Ç¡ÒÃàÃÕ¡㪠ä¿Å äźÃÒÃÕ ¨Ð·íÒãË Å´àÇÅÒ㹡ÒþѲ¹Òâ»Ãá¡ÃÁ áÅФÇÒÁ «Ñº« ͹¢Í§â»Ãá¡ÃÁÅ§ä´ Í ҧÁÒ¡ ÊíÒËÃѺä¿Å äźÃÒÃÕ·ÊÕè à ҧ¢Ö¹é àͧà¾×Íè 㪠§Ò¹¡Ñº¡ÒâѺÁÍàµÍà ¢Í§ Robo-PICA ¤×Í motor.h â´ÂÁÕÃÒÂÅÐàÍÕ´«Íà Êâ»Ãá¡ÃÁáÊ´§´Ñ§â»Ãá¡ÃÁ·Õè 4-1 char motor_duty_= 127; char motor_init_=0; //

Motor M-1 : PD0 ====>

// Motor M-2 : PB1 ====>

// Defalt PWM 50% // Status initial 1A

PD1 ====>

2A PB2 ====>

2B

1B

PC2 ====> PC1 ====>

1E (PWM1) 2E (PWM2)

//********** Initial Motor Function ****************** void Motor_Init() { if (motor_init_==0) // First time ? { motor_init_=1; // Status ANSELH.F0=0; // RB1 ==> Digital IO ANSELH.F2=0; // RB2 ==> Digital IO TRISB.F1=0; // Motor B 2A TRISB.F2=0; // Motor B 2B TRISD.F0=0; // Motor A 1A TRISD.F1=0; // MOtor A 1B Pwm1_Init(5000); // Initail PWM 1E Pwm2_Init(5000); // Initail PWM 2E } } //********** Control Duty Cycle *********************/ void Change_Duty(char speed) { if (speed != motor_duty_) // Check Same old speed { motor_duty_=speed; // Save for old speed Pwm1_Change_Duty(speed); // Motor A Pwm2_Change_Duty(speed); // Motor B } } //********** Motor A Forward ******** void Motor_A_FWD() { Pwm1_Start(); PORTD.F0 =0; PORTD.F1 =1; } /********** Motor B Forward ********/ void Motor_B_FWD() { Pwm2_Start(); PORTB.F1 =0; PORTB.F2 =1; }

â»Ãá¡ÃÁ·Õè 4-1 ä¿Å äźÃÒÃÕ motor.h ÊíÒËÃѺ㪠¡ºÑ Ëع ¹µ Robo-PICA (ÁÕµÍ )


àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC l 67

/********** Motor A Backward void Motor_A_BWD() { Pwm1_Start(); PORTD.F0 =1; PORTD.F1 =0; }

*******/

/********** Motor B Backward void Motor_B_BWD() { Pwm2_Start(); PORTB.F1 =1; PORTB.F2 =0; }

*******/

/********** Motor A Off ************/ void Motor_A_Off() { Pwm1_Stop(); PORTD.F0 =0; PORTD.F1 =0; } /********** Motor B Off ************/ void Motor_B_Off() { Pwm2_Stop(); PORTB.F1 =0; PORTB.F2 =0; } /********** Go Forward ************/ void Forward(char speed) { Motor_Init(); Change_Duty(speed); Motor_A_FWD(); Motor_B_FWD(); } /********** Go Backward ************/ void Backward(char speed) { Motor_Init(); Change_Duty(speed); Motor_A_BWD(); Motor_B_BWD(); } /********** Spin Left *************/ void S_Right(char speed) { Motor_Init(); Change_Duty(speed); Motor_A_FWD(); Motor_B_BWD(); } /********** Spin Right void S_Left(char speed) { Motor_Init(); Change_Duty(speed); Motor_A_BWD(); Motor_B_FWD(); }

************/

/********** Stop Motor void Motor_Stop() { Motor_Init(); Change_Duty(0); Motor_A_Off(); Motor_B_Off(); }

************/

â»Ãá¡ÃÁ·Õè 4-1 ä¿Å äźÃÒÃÕ motor.h ÊíÒËÃѺ㪠¡ºÑ Ëع ¹µ Robo-PICA (¨º)


68 l àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

PIC

4.5.1 ¡ÒÃàÃÕ¡㪠§Ò¹äźÃÒÃÕ motor.h (1) Êà ҧä¿Å äźÃÒÃÕ motor.h â´Âà» ´â»Ãá¡ÃÁà·ç¡« àÍ´ÔàµÍà ã´æ ÍÒ·Ô Notepad ËÃ×Í㪠àÍ ´ÔàµÍà 㹠mikroC áŠǾÔÁ¾ â»Ãá¡ÃÁµÒÁ·Õáè Ê´§ã¹â»Ãá¡ÃÁ·Õè 4-1 áŠǺѹ·Ö¡ã¹ª×Íè motor.h ËÃ×Í ¤Ñ´ÅÍ¡ÁÒ¨Ò¡á¼ ¹«Õ´ÃÕ ÍÁâ»Ãá¡ÃÁ¢Í§ªØ´Ëع ¹µ Robo-PICA (2) ºÑ¹·Ö¡ËÃ×ͤѴÅÍ¡ä»à¡çºäÇ ·Õè C:\Program Files\Mikroelektronika\mikroC\include

4.5.2 ¡ÒÃ㪠§Ò¹¤íÒÊѧè ÀÒÂã¹äźÃÒÃÕ motor.h Forward

à» ¹¤íÒÊÑè§à¾×èÍÊÑè§ãË ËØ ¹Â¹µ à¤Å×è͹·Õèä»´ ҹ˹ Ò ÃٻẺ¤íÒÊÑè§ void Forward(char speed)

¾ÒÃÒÁÔàµÍà speed

à» ¹¤ Ò´ÔǵÕäé «à¡ÔÅà¾×Íè ¡íÒ˹´¤ÇÒÁàÃçÇ㹡ÒÃà¤Å×Íè ¹·Õè ÁÕ¤Ò µÑ§é áµ 0 ¶Ö§ 255

Backward

à» ¹¤íÒÊÑè§à¾×èÍÊÑè§ãË ËØ ¹Â¹µ à¤Å×è͹·Õè¶ÍÂËÅѧ ÃٻẺ¤íÒÊÑè§ void backward(char speed)

¾ÒÃÒÁÔàµÍà speed

à» ¹¤ Ò´ÔǵÕäé «à¡ÔÅà¾×Íè ¡íÒ˹´¤ÇÒÁàÃçÇ㹡ÒÃà¤Å×Íè ¹·Õè ÁÕ¤Ò µÑ§é áµ 0 ¶Ö§ 255


àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC l 69

S_Left

à» ¹¤íÒÊÑè§à¾×èÍÊÑè§ãË ËØ ¹Â¹µ ËÁعµÑÇ·Ò§« Ò ÃٻẺ¤íÒÊÑè§ void S_Left(char speed)

¾ÒÃÒÁÔàµÍà speed

à» ¹¤ Ò´ÔǵÕäé «à¡ÔÅà¾×Íè ¡íÒ˹´¤ÇÒÁàÃçÇ㹡ÒÃà¤Å×Íè ¹·Õè ÁÕ¤Ò µÑ§é áµ 0 ¶Ö§ 255

S_Right

à» ¹¤íÒÊÑè§à¾×èÍÊÑè§ãË ËØ ¹Â¹µ ËÁعµÑÇ·Ò§¢ÇÒ ÃٻẺ¤íÒÊÑè§ void S_Left(char speed)

¾ÒÃÒÁÔàµÍà speed

à» ¹¤ Ò´ÔǵÕäé «à¡ÔÅà¾×Íè ¡íÒ˹´¤ÇÒÁàÃçÇ㹡ÒÃà¤Å×Íè ¹·Õè ÁÕ¤Ò µÑ§é áµ 0 ¶Ö§ 255


70 l àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

PIC

¡Ô¨¡ÃÃÁ·Õè 5

Robo-PICA à¤Å×Íè ¹·Õµè ÒÁÃٻẺ·Õ¡è Òí ˹´ A5.1 à¢Õ¹â»Ãá¡ÃÁ·Õè A5-1 ´ Ç mikroC IDE ·íÒ¡ÒäÍÁä¾Å ãË ä´ ä¿Å ¼ÅÅѾ¸ .hex A5.2 àª×Íè Áµ ͺÍà ´â»Ãá¡ÃÁࢠҡѺËع ¹µ Robo-PICA áÅоÍà µ USB ¢Í§¤ÍÁ¾ÔÇàµÍà A5.3 ´Òǹ âËÅ´â»Ãá¡ÃÁä»ÂѧËع ¹µ Robo-PICA áÅ Ç» ´ÊÇÔµª POWER A5.4 »Å´ÊÒ´Òǹ âËÅ´·Ñ§é ËÁ´ÍÍ¡¨Ò¡Ëع ¹µ Robo-PICA #include <motor.h> void main() { Sound_Init(&PORTC, 0); while(PORTA.F4==1); Sound_Play(250,50); Forward(255); Delay_ms(2000);

// Init Sound // 2kHz sound ON RC0 // Call Forward

Sound_Play(250,50); S_Left(255); Delay_ms(800);

// 2kHz sound ON RC0 // Call Spin Left

Sound_Play(250,50); Forward(255); Delay_ms(2000);

// 2kHz sound ON RC0 // Call Forward

Sound_Play(250,50); S_Right(255); Delay_ms(800);

// 2kHz sound ON RC0 // Call Spin Right

Sound_Play(250,50); Forward(255); Delay_ms(2000);

// 2kHz sound ON RC0 // Call Forward

Sound_Play(250,50); S_Left(255); Delay_ms(800);

// 2kHz sound ON RC0 // Call Spin Left

Sound_Play(250,50); Backward(255); Delay_ms(1000);

// 2kHz sound ON RC0 // Call Backward

Sound_Play(250,50); Motor_Stop();

// 2kHz sound ON RC0 // Stop all

}

â»Ãá¡ÃÁ·Õè A5-1 ä¿Å movement.c â»Ãá¡ÃÁ¤Çº¤ØÁ¡ÒÃà¤Å×Íè ¹·Õ¢è ͧËع ¹µ â´Â㪠ä¿Å äźÃÒÃÕè motor.h


àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC l 71

A5.5 ¹íÒËع ¹µ Robo-PICA ÇÒ§º¹¾×¹é à» ´ÊÇÔµª POWER Êѧࡵ¡Ò÷íÒ§Ò¹¢Í§Ëع ¹µ ËØ ¹Â¹µ Robo-PICA ¢ÑºàÊÕ§¤ÇÒÁ¶Õè 2kHz áÅ Çà¤Å×è͹·ÕèµÃ§ä»¢ ҧ˹ Ò ¨Ò¡¹Ñé¹ËÁعµÑÇä»·Ò§« Ò áÅ Çà¤Å×Íè ¹·Õäè »¢ ҧ˹ Ò ã¹·Ø¡¨Ñ§ËÇзÕÁè ¡Õ ÒÃà»ÅÕÂè ¹á»Å§¡ÒÃà¤Å×Íè ¹·Õè ÊÑ­­Ò³àÊÕ§¤ÇÒÁ¶Õè 2kHz ¨Ð¶Ù¡¢Ñº ãË ä´ ÂÔ¹¼ Ò¹·Ò§ÅíÒ⾧໠Ââ« µ ͨҡ¹Ñ¹é Ëع ¹µ Robo-PICA ¨Ðà¤Å×Íè ¹·Õµè ç໠¹àÇÅÒ 2 ÇÔ¹Ò·Õ áÅ ÇËÁعµÑÇä»·Ò§¢ÇÒ µÒÁ´ ÇÂà¤Å×Íè ¹ ·Õµè çÍÕ¡ 2 ÇÔ¹Ò·Õ áÅ ÇËÁعµÑÇä»·Ò§« Ò ¨Ò¡¹Ñ¹é ¨Ðà¤Å×Íè ¹·Õ¶è ÍÂËÅѧ໠¹àÇÅÒ 1 ÇÔ¹Ò·Õ áŠǨ֧ËÂØ´à¤Å×Íè ¹·Õè ã¹·Ø¡¨Ñ§ËÇзÕÁè ¡Õ ÒÃà»ÅÕÂè ¹á»Å§¡ÒÃà¤Å×Íè ¹·Õè ÊÑ­­Ò³àÊÕ§¤ÇÒÁ¶Õè 2kHz ¨Ð¶Ù¡¢ÑºãË ä´ Â¹Ô ¼ Ò¹·Ò§ÅíÒ⾧໠Ââ«

INNOVATIVE EXPERIMENT


72 l àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

PIC


àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC l 73

º··Õè 5

Robo-PICA ¡ÑºµÑǵÃǨ¨ÑºáººÍйÒÅÍ¡

ËØ ¹Â¹µ Robo-PICA 㪠äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC16F887 㹡ÒäǺ¤ØÁ¡Ò÷íÒ§Ò¹ â´Â PIC16F887 ÁÕ¢Ò¾Íà µÊíÒËÃѺµÔ´µ ͡ѺµÑǵÃǨ¨ÑºáººÍйÒÅÍ¡ÁÒ¡¶Ö§ 14 ¢Ò ¤×Í RA0 ¶Ö§ RA3, RA5, RB0 ¶Ö§ RB5 áÅÐ RE0 ¶Ö§ RE2 áµ ¹Òí ÁҨѴÊÃú¹ºÍà ´¤Çº¤ØÁ¢Í§Ëع ¹µ Robo-PICA ÃÇÁ 9 ª ͧ ¤×Í RA0 ¶Ö§ RA3, RB0 áÅÐ RE0 ¶Ö§ RE2 㹡ÒèѴ¡ÒáѺÊÑ­­Ò³ÍйÒÅÍ¡¹Ñ¹é PIC16F887 ÁÕâÁ´ÙÅá»Å§ÊÑ­­Ò³ÍйÒÅÍ¡à» ¹´Ô¨ÔµÍÅ (ADC) ¤ÇÒÁÅÐàÍÕ´ 10 ºÔµ ÃͧÃѺáç´Ñ¹ÍйÒÅÍ¡ ÍÔ¹¾Øµä´ ã¹Â Ò¹ 0 ¶Ö§ +5V àÁ×Íè ¼ Ò¹¡Ò÷íÒ§Ò¹¢Í§âÁ´ÙÅ ADC áÅ Ç ¨Ðä´ ¼ÅÅѾ¸ à» ¹¢ ÍÁÙÅ´Ô¨µÔ ÍÅ ã¹Â Ò¹ 0 ¶Ö§ 1,023 (àÅ¢°Ò¹ÊÔº) ËÃ×Í 0000000000 ¶Ö§ 1111111111 (àÅ¢°Ò¹Êͧ) ËÃ×Í 0x0000 ¶Ö§ 0x03FF (àÅ¢°Ò¹ÊԺˡ)

5.1 ÃÕ¨ÊÔ àµÍà ·àÕè ¡ÕÂè Ç¢ ͧ¡Ñº¡Ò÷íÒ§Ò¹¢Í§âÁ´ÙÅ ADC ã¹ PIC16F887 5.1.1 ADCON0 à» ¹ÃÕ¨ÊÔ àµÍà ÊÒí ËÃѺàÅ×Í¡ª ͧÊÑ­­Ò³ÍйÒÅÍ¡ áÅÐà» ´¡Ò÷íÒ§Ò¹¢Í§âÁ´ÙÅá»Å§ÊÑ­­Ò³ ÍйÒÅÍ¡à» ¹´Ô¨µÔ ÍÅ (ADC) ã¹ÃÙ»·Õè 5-1 áÊ´§¼Ñ§¡ÒÃàÅ×Í¡¡íÒ˹´¤ Òã¹ÃÕ¨ÊÔ àµÍà ADCON0 Ê Ç¹ ÃÒÂÅÐàÍÕ´ã¹áµ ÅкԵ¢Í§ÃÕ¨ÊÔ àµÍà ADCON0 ÁÕ´§Ñ ¹Õé

ºÔµ 7 ºÔµ 6 ºÔµ 5 ºÔµ 4

ºÔµ 3 ºÔµ 2 ºÔµ 1 ºÔµ 0

ADCS1 ADCS0 CHS3

CHS2

CHS1

CHS0

R/W-0

R/W-0

R/W-0

R/W-0

R/W-0

R/W-0

GO/ DONE R/W-0

ºÔµ 7 áÅÐ 6 - ADCS1 áÅÐ ADCS0 : ºÔµàÅ×Í¡ÊÑ­­Ò³¹ÒÌ ¡Ò·Õãè ª ¡ºÑ âÁ´ÙÅ ADC 00 = ÊÑ­­Ò³¹ÒÌ ¡ÒÀÒÂã¹ËÒà 2 (FOSC/2) 01 = ÊÑ­­Ò³¹ÒÌ ¡ÒÀÒÂã¹ËÒà 8 (FOSC/8) 10 = ÊÑ­­Ò³¹ÒÌ ¡ÒÀÒÂã¹ËÒà 32 (FOSC/32) 11 = ÊÑ­­Ò³¹ÒÌ ¡Ò¨Ò¡Ç§¨Ã RC ÀÒÂã¹ (FRC) ¤ ÒÊÙ§ÊØ´ 500kHz

ADON R/W-0


74 l àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

PIC

ºÔµ 5 ¶Ö§ 2 - CHS3 ¶Ö§ CHS0 : ºÔµàÅ×Í¡ª ͧÍÔ¹¾ØµÍйÒÅÍ¡·Õµè Í §¡ÒÃÍ Ò¹¤ Ò 0000 = AN0 (¢Ò¾Íà µ RA0) 0001 = AN1 (¢Ò¾Íà µ RA1) 0010 = AN2 (¢Ò¾Íà µ RA2) 0011 = AN3 (¢Ò¾Íà µ RA3) 0100 = AN4 (¢Ò¾Íà µ RA5) 0101 = AN5 (¢Ò¾Íà µ RE0) 0110 = AN6 (¢Ò¾Íà µ RE1) 0111 = AN7 (¢Ò¾Íà µ RE2) 1000 = AN8 (¢Ò¾Íà µ RB2) 1001 = AN9 (¢Ò¾Íà µ RB3) 1010 = AN10 (¢Ò¾Íà µ RB1) 1011 = AN11 (¢Ò¾Íà µ RB4) 1100 = AN12 (¢Ò¾Íà µ RB0) 1101 = AN13 (¢Ò¾Íà µ RB5) 1110 = CVREF (áç´Ñ¹Í Ò§ÍԧẺâ»Ãá¡ÃÁä´ ÊÒí ËÃѺâÁ´ÙÅà»ÃÕºà·Õºáç´Ñ¹ÍйÒÅÍ¡) 1111 = áç´Ñ¹Í Ò§ÍÔ§¤§·Õè (0.6V)

ºÔµ 1 - GO/DONE : ºÔµàÃÔÁè µ ¹¡Ò÷íÒ§Ò¹¢Í§âÁ´ÙÅ ADC 0 = ¡ÒÃá»Å§¢ ÍÁÙÅàÊÃç¨ÊÔ¹é 1 = àÃÔÁè µ ¹¡ÒÃá»Å§ÊÑ­­Ò³ áÅШдíÒçʶҹйÕãé ¹ÃÐËÇ Ò§¡ÒÃá»Å§ÊÑ­­Ò³ ¨¹¡Ãзѧè àÊÃç¨ÊÁºÙó ºÔµ¹Õ¨é СÅÒÂà» ¹ 0 â´ÂÍѵâÁÁѵÔ

ºÔµ 0 - ADON : ºÔµàÍç¹àÍàºÔÅâÁ´ÙÅá»Å§ÊÑ­­Ò³ÍйÒÅÍ¡à» ¹´Ô¨µÔ ÍÅ 0 = ´ÔÊàÍàºÔÅËÃ×Í» ´¡Ò÷íÒ§Ò¹¢Í§âÁ´ÙÅ ADC 1 = àÍç¹àÍàºÔÅ¡Ò÷íÒ§Ò¹¢Í§âÁ´ÙÅ ADC


àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC l 75

AVSS

VCFG1 = 0 VCFG1 = 1

VREF-

AVDD

VREF+

AN0/RA0

0000

AN1/RA1

0001

AN2/RA2

0010

AN3/RA3

0011

AN4/RA5

0100

AN5/RE0

0101

AN6/RE1

0110

AN7/RE2

0111

AN8/RB2

1000

AN9/RB3

1001

AN10/RB1

1010

AN11/RB4

1011

AN12/RB0

1100

AN13/RB5

1101

CVREF

1110

Fixed Ref

1111

VCFG0 = 0 VCFG0 = 1

ADC 10 ºÔµ GO/DONE

ADFM

0 : ºÔµ¢ ÍÁÙŪԴ« Ò 1 : ºÔµ¢ ÍÁÙŪԴ¢ÇÒ 10 ºÔµ

ADON

ADRESH

ADRESL

CHS3-CHS0

ÃÙ»·Õè 5-1 áÊ´§¡Åä¡ã¹¡ÒáíÒ˹´¤ ҢͧºÔµµ Ò§æ ã¹ÃÕ¨ÊÔ àµÍà ¤Çº¤ØÁ·Õàè ¡ÕÂè Ç¢ ͧ¡Ñº¡Ò÷íÒ§Ò¹¢Í§ âÁ´ÙÅ ADC ÀÒÂã¹ PIC16F887 â´ÂºÔµ CHS3 ¶Ö§ CHS0, GO/DONE áÅÐ ADON à» ¹ºÔµ¤Çº¤ØÁã¹ÃÕ¨ÊÔ àµÍà ADCON0 Ê Ç¹ ADFM, VCFG0 áÅÐ VCFG1 à» ¹ºÔµ¤Çº¤ØÁã¹ÃÕ¨ÊÔ àµÍà ADCON1


76 l àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

PIC

5.1.2 ÃÕ¨ÊÔ àµÍà ADCON1 à» ¹ÃÕ¨ÊÔ àµÍà ·ãÕè ª ¡Òí ˹´¤ Òáç´Ñ¹Í Ò§ÍÔ§ãË ¡ºÑ âÁ´ÙÅ ADC áÅСíÒ˹´ÃٻẺ¢Í§¼ÅÅѾ¸ àÍÒµ ¾µØ ·ÕÃè ¨Õ ÊÔ àµÍà ADRESH áÅÐ ADRESL

ºÔµ 7 ºÔµ 6 ºÔµ 5 ºÔµ 4 ADFM

-

R/W-0

U-0

VCFG1 VCFG0 R/W-0

R/W-0

ºÔµ 3 ºÔµ 2 ºÔµ 1 ºÔµ 0 -

-

-

-

U-0

U-0

U-0

U-0

ºÔµ 7 - ADFM : ºÔµ¡íÒ˹´ÃٻẺ¼ÅÅѾ¸ ·ÃÕè ¨Õ ÊÔ àµÍà ADRESH áÅÐ ADRESL 0 = ¢ ÍÁÙŪԴ价ҧ« Ò (ddddddddddxxxxxx) 1 = ¢ ÍÁÙŪԴ价ҧ¢ÇÒ (xxxxxxdddddddddd)

ºÔµ 6 - äÁ 㪠§Ò¹ Í Ò¹ä´ à» ¹ 0 ºÔµ 5 - VCFG1: ¢ÒàÅ×Í¡áç´Ñ¹Í Ò§Íԧź 0 = VSS 1 = ¢Ò V REF-

bit 4 VCFG0: ¢ÒàÅ×Í¡áç´Ñ¹Í Ò§ÍÔ§ (ºÇ¡) 0 = VDD 1 = ¢Ò VREF+

ºÔµ 3 ¶Ö§ 0 - äÁ 㪠§Ò¹ Í Ò¹ä´ à» ¹ 0

5.1.3 ÃÕ¨ÊÔ àµÍà ADRESL áÅÐ ADRESL à» ¹ÃÕ¨ÊÔ àµÍà ÊÒí ËÃѺà¡çº¢ ÍÁÙÅ·ÕÍè Ò ¹¤ Òä´ ¨Ò¡âÁ´ÙÅ ADC â´ÂÃÕ¨ÊÔ àµÍà ADRESL à¡çº¢ ÍÁÙŠ亵 ÅÒ § (ËÃ×Í亵 µÒèí ) Ê Ç¹ ADRESH à¡çº¢ ÍÁÙÅ亵 º¹ (ËÃ×Í亵 ʧ٠)


àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC l 77

5.1.4 ÃÕ¨ÊÔ àµÍà ANSEL à» ¹ÃÕ¨ÊÔ àµÍà ÊÒí ËÃѺàÅ×͡˹ Ò·Õãè ¹¡Ò÷íÒ§Ò¹¢Í§¢Ò¾Íà µ RA0 ¶Ö§ RA3, RA5 áÅÐ RE0 ¶Ö§ RE2 Ç Òµ ͧ¡ÒÃãË à» ¹¢ÒÍÔ¹¾ØµÍйÒÅÍ¡ËÃ×ÍÍÔ¹¾ØµàÍÒµ ¾Øµ´Ô¨ÔµÍÅ â´Â¤ ÒµÑ駵 ¹ËÃ×ͤ Ò»¡µÔ¨Ð ¡íÒ˹´ãË ¢Ò¾Íà µàËÅ Ò¹Õé·íҧҹ໠¹¢Ò¾Íà µÍÔ¹¾ØµÍйÒÅÍ¡

ºÔµ 7 ºÔµ 6 ºÔµ 5 ºÔµ 4 ºÔµ 3 ºÔµ 2 ºÔµ 1 ºÔµ 0 ANS7

ANS6

ANS5

ANS4

ANS3

ANS2

ANS1

ANS0

R/W-1

R/W-1

R/W-1

R/W-1

R/W-1

R/W-1

R/W-1

R/W-1

ºÔµ 7 ¶Ö§ 0 - ANS7 ¶Ö§ ANS0 : ºÔµàÅ×Í¡¡Ò÷íҧҹ໠¹ÍÔ¹¾ØµÍйÒÅÍ¡ 0 = ¡íÒ˹´à» ¹¢Ò¾Íà µ´Ô¨µÔ ÍÅ â´ÂÊÒÁÒö¡íÒ˹´à» ¹ÍÔ¹¾ØµËÃ×ÍàÍÒµ ¾µØ ¡çä´ 1 = ¡íÒ˹´à» ¹¢Ò¾Íà µÍÔ¹¾ØµÍйÒÅÍ¡ (à» ¹¤ ÒàÃÔÁè µ ¹àÁ×Íè ÃÕ૵) àÁ×èÍàÅ×Í¡ãË ¢ÒàËÅ Ò¹Õéà» ¹ÍÔ¹¾ØµÍйÒÅÍ¡ ¨Ðà» ¹¡ÒáàÅÔ¡¡Ò÷íÒ§Ò¹ã¹Ê ǹ´Ô¨ÔµÍÅ·Ñé§ËÁ´ ઠ¹ ¡ÒÃÍÔ¹àµÍÃ Ã»Ñ µ àÁ×Íè à¡Ô´¡ÒÃà»ÅÕÂè ¹á»Å§Åͨԡ·Õ¢è Ò¾Íà µËÃ×Í¡ÒþÙÅÍÑ»¨Ò¡ÀÒÂã¹ ¹Í¡¨Ò¡¹Ñ¹é µ ͧ¡íÒ˹´¤ Ңͧ ÃÕ¨ÊÔ àµÍà TRIS ãË à» ¹¢ÒÍÔ¹¾Øµ´ Ç à¾×Íè ãË áç´Ñ¹·Õäè ´ à» ¹áç´Ñ¹·Õáè · ¨ÃÔ§¨Ò¡ÍØ»¡Ã³ ÍйÒÅÍ¡ÀÒ¹͡

5.1.5 ÃÕ¨ÊÔ àµÍà ANSELH à» ¹ÃÕ¨ÊÔ àµÍà ÊÒí ËÃѺàÅ×͡˹ Ò·Õãè ¹¡Ò÷íÒ§Ò¹¢Í§¢Ò¾Íà µ RB0 ¶Ö§ RB5 Ç Òµ ͧ¡ÒÃãË à» ¹ ¢ÒÍÔ¹¾ØµÍйÒÅÍ¡ËÃ×ÍÍÔ¹¾ØµàÍÒµ ¾µØ ´Ô¨µÔ ÍÅ â´Â¤ ÒµÑ§é µ ¹ËÃ×ͤ Ò»¡µÔ¨Ð¡íÒ˹´ãË ¢Ò¾Íà µàËÅ Ò¹Õé ·íҧҹ໠¹¢Ò¾Íà µÍÔ¹¾ØµÍйÒÅÍ¡

ºÔµ 7 ºÔµ 6 ºÔµ 5 ºÔµ 4 ºÔµ 3 ºÔµ 2 ºÔµ 1 ºÔµ 0 -

-

U-0

U-0

ºÔµ 7 áÅÐ 6 - äÁ 㪠§Ò¹

ANS13 ANS12 ANS11 ANS10 ANS9

ANS8

R/W-1

R/W-1

R/W-1

R/W-1

R/W-1

R/W-1

Í Ò¹¤ Òä´ à» ¹ 0

ºÔµ 5 ¶Ö§ 0 - ANS13 ¶Ö§ ANS8 : ºÔµàÅ×Í¡¡Ò÷íҧҹ໠¹ÍÔ¹¾ØµÍйÒÅÍ¡ª ͧ AN13 ¶Ö§ AN8 0 = ¡íÒ˹´à» ¹¢Ò¾Íà µ´Ô¨µÔ ÍÅ â´ÂÊÒÁÒö¡íÒ˹´à» ¹ÍÔ¹¾ØµËÃ×ÍàÍÒµ ¾µØ ¡çä´ 1 = ¡íÒ˹´à» ¹¢Ò¾Íà µÍÔ¹¾ØµÍйÒÅÍ¡ (à» ¹¤ ÒàÃÔÁè µ ¹àÁ×Íè ÃÕ૵) àÁ×èÍàÅ×Í¡ãË ¢ÒàËÅ Ò¹Õéà» ¹ÍÔ¹¾ØµÍйÒÅÍ¡ ¨Ðà» ¹¡ÒáàÅÔ¡¡Ò÷íÒ§Ò¹ã¹Ê ǹ´Ô¨ÔµÍÅ·Ñé§ËÁ´ ઠ¹ ¡ÒÃÍÔ¹àµÍÃ Ã»Ñ µ àÁ×Íè à¡Ô´¡ÒÃà»ÅÕÂè ¹á»Å§Åͨԡ·Õ¢è Ò¾Íà µËÃ×Í¡ÒþÙÅÍÑ»¨Ò¡ÀÒÂã¹ ¹Í¡¨Ò¡¹Ñ¹é µ ͧ¡íÒ˹´¤ Ңͧ ÃÕ¨ÊÔ àµÍà TRIS ãË à» ¹¢ÒÍÔ¹¾Øµ´ Ç à¾×Íè ãË áç´Ñ¹·Õäè ´ à» ¹áç´Ñ¹·Õáè · ¨ÃÔ§¨Ò¡ÍØ»¡Ã³ ÍйÒÅÍ¡ÀÒ¹͡


78 l àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

PIC

5.2 ¡ÒõԴµ ͡ѺâÁ´ÙÅá»Å§ÊÑ­­Ò³ÍйÒÅÍ¡à» ¹´Ô¨µÔ ÍÅ (ADC) â´Â»¡µÔ mikroC ¤ÍÁä¾àÅÍà ÁäÕ ¿Å äźÃÒÃÕÊÒí ËÃѺ¡ÒõԴµ ͡ѺâÁ´ÙÅá»Å§ÊÑ­­Ò³ÍÐ¹Ò ÅÍ¡à» ¹´Ô¨ÔµÍŢͧäÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC äÇ ¾Ã ÍÁ㪠§Ò¹ áµ ÊíÒËÃѺäÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC16F887 à» ¹àºÍà ãËÁ ·ÕèÁÕʶһ µÂ¡ÃÃÁᵡµ Ò§¨Ò¡äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC àºÍà ¡ ͹˹ Ò ¹Õé ¨Ö§¨íÒà» ¹µ ͧà¢Õ¹â»Ãá¡ÃÁËÃ×ÍÊà ҧä¿Å äźÃÒÃÕà¾×Íè µÔ´µ ͡ѺâÁ´ÙÅ ADC ÀÒÂã¹ POIC16F887 ¢Öé¹àͧ ËÁÒÂà赯 ¢³Ð·Õ¼è àÙ ¢Õ¹¡íÒÅѧà¢Õ¹˹ѧÊ×ÍàÅ Á¹Õé mikroC ¤ÍÁä¾àÅÍà ໠¹àÇÍà ª¹Ñ 7.0.0.3 ã¹àÇÍà ª¹Ñ ·Õãè ËÁ ¡Ç Ò¹ÕÍé Ò¨ÁÕ¡ÒÃá¡ ä¢ä¿Å äźÃÒÃբͧâÁ´ÙÅ ADC ãË ÊÒÁÒÃ¶ãª ä´ ¡ºÑ PIC16F887 ä´ Í ҧ äáçµÒÁ¡ÒÃà¢Õ¹â»Ãá¡ÃÁµÔ´µ ͡ѺâÁ´ÙÅ ADC â´ÂµÃ§´ ÇÂÇÔ¸¡Õ ÒÃã¹Ë¹Ñ§Ê×ÍàÅ Á¹Õ¡é Âç §Ñ ¤§ãª ä´

5.2.1 ¢Ñ¹é µÍ¹¡ÒÃà¢Õ¹â»Ãá¡ÃÁà¾×Íè µÔ´µ ͡ѺâÁ´ÙÅ ADC ¢Í§ PIC16F887 (1) ¡íÒ˹´¢Ò¾Íà µ·Õµè Í §¡ÒÃ㪠§Ò¹¡ÑºâÁ´ÙÅ ADC ãË à» ¹ÍÔ¹¾Øµ â´Â¡íÒ˹´·ÕÃè ¨Õ ÊÔ àµÍà TRIS (2) ¡íÒ˹´¤ ÒãË ¡ºÑ ÃÕ¨ÊÔ àµÍà ANSEL áÅÐ ANSELH à¾×Íè àÅ×Í¡¡Ò÷íÒ§Ò¹¢Í§¢Ò¾Íà µ·Õµè Í § ¡ÒÃ㪠§Ò¹à» ¹ÍÔ¹¾ØµÍйÒÅÍ¡ (3) àÅ×Í¡ª ͧÍÔ¹¾ØµÍйÒÅÍ¡·Õµè Í §¡ÒÃÍ Ò¹¤ Ò áÅ ÇàÍç¹àÍàºÔÅ¡Ò÷íÒ§Ò¹¢Í§âÁ´ÙÅ ADC â´Â ¡íÒ˹´¤ Ò·ÕÃè ¨Õ ÊÔ àµÍà ADCON0 (4) ૵ºÔµ GO/DONE ã¹ÃÕ¨ÊÔ àµÍà ADCON0 à¾×Íè àÃÔÁè µ ¹¡ÒÃá»Å§¢ ÍÁÙÅ (5) Ãͨ¹ºÔµ GO/DONE à» ¹ 0 «Ö§è ËÁÒ¶֧¡ÒÃá»Å§¢ ÍÁÙÅÍйÒÅÍ¡àÊÃç¨ÊÔ¹é ·íÒ¡ÒÃÍ Ò¹ ¤ Ò¢ ÍÁÙÅÍÍ¡ÁÒ¨Ò¡ÃÕ¨ÊÔ àµÍà ADRESL áÅÐ ADRESH

5.2.2 ä¿Å äźÃÒÃÕ adc.h ¨Ò¡¢Ñ¹é µÍ¹¡ÒÃà¢Õ¹â»Ãá¡ÃÁ·Ñ§é ËÁ´ã¹ËÑÇ¢ Í 5.2.1 ÊÒÁÒö¹íÒÁÒà¢Õ¹໠¹â»Ãá¡ÃÁÀÒÉÒ C à¾×Íè Êà ҧ໠¹ä¿Å äźÃÒÃÕ adc.h ÊíÒËÃѺ㪠§Ò¹âÁ´ÙÅ ADC ¢Í§ PIC16F887 ´Ñ§áÊ´§ÃÒÂÐÅàÍÕ´ ¢Í§ä¿Å äźÃÒÃÕ adc.h ã¹â»Ãá¡ÃÁ·Õè 5-1 Í ҧäáçµÒÁäźÃÒÃÕ adc.h ·ÕèÊà ҧ¢Öé¹¹Õé¨ÐÃͧÃѺ¡Ñº¡Ò÷íÒ§Ò¹¢Í§¾Íà µÍÔ¹¾ØµÍйÒÅÍ¡ à¾Õ§ 8 ª ͧŠҧ¤×Í AN0 ¶Ö§ AN7 ËÃ×Í RA0 ¶Ö§ RA3, RA5 áÅÐ RE0 ¶Ö§ RE2 ෠ҹѹé


àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC l 79 int Adc_Rd(char ch) { int dat=0; if ((ch>=0) && (ch<=3)) TRISA |= (1<<ch); else if (ch==4) TRISA |= 0x20; else if ((ch>=5) && (ch<=7)) TRISE |= (1<<(ch-5)); ANSEL |=(1<<ch); ADCON0 = (0xC1 + (ch*4)); Delay_us(10); ADCON0.GO=1; while(ADCON0.GO); dat = (ADRESH*4)+(ADRESL/64); return dat; }

// Low 8 Channel ADC read // Save ADC // CH0-CH3 // CH4 // CH5-CH7 // // // // // // //

Set channel to analog Select ADC Channel Acquisiton delay Start conversion Conversion done? Sum highbyte and lowbyte Return value

â»Ãá¡Ã·Õè 5-1 ä¿Å äźÃÒÃÕ adc.h ÊíÒËÃѺ㪠§Ò¹ÍÔ¹¾ØµÍйÒÅÍ¡¢Í§äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC16F887 ã¹Ëع ¹µ Robo-PICA áÅÐ mikroC ¤ÍÁä¾àÅÍÃ

¡Ô¨¡ÃÃÁ·Õè 6

Í Ò¹¤ ÒµÑǵÃǨ¨ÑºÍйÒÅÍ¡

A6.1 à¢Õ¹â»Ãá¡ÃÁ·Õè A6-1 ´ Ç mikroC IDE ·íÒ¡ÒäÍÁä¾Å ãË ä´ ä¿Å ¼ÅÅѾ¸ .hex A6.2 àª×Íè Áµ ͺÍà ´â»Ãá¡ÃÁࢠҡѺËع ¹µ Robo-PICA áÅоÍà µ USB ¢Í§¤ÍÁ¾ÔÇàµÍà A6.3 ´Òǹ âËÅ´â»Ãá¡ÃÁä»ÂѧËع ¹µ Robo-PICA A6.4 µ ÍÊÒ¨ҡàÍÒµ ¾µØ (àÍÒµ ¾µØ Ẻáç´Ñ¹ÁÒ¡¢Ö¹é àÁ×Íè ËÁع᡹µÒÁà¢çÁ¹ÒÌ ¡Ò) ¢Í§á¼§Ç§¨ÃµÑǵ Ò¹ ·Ò¹»ÃѺ¤ Òä´ áººá¡¹ËÁØ¹à¢ Ò·Õ¨è ´Ø µ Í RA0 ¢Í§Ëع ¹µ Robo-PICA ẺµÑǵÑé§

)

POTENTIOMETER

A

POTENTIOMETER

ẺµÑǹ͹

A

S +

S

àÁ×Íè ËÁع·Ç¹à¢çÁ¹ÒÌÔ¡Ò áç´Ñ¹·Õäè ´ ¨ÐÁÒ¡¢Ö¹é àÁ×Íè ËÁعµÒÁà¢çÁ¹ÒÌÔ¡Ò áç´Ñ¹·Õäè ´ ¨ÐÁÒ¡¢Ö¹é

+

10kB

Potentiometer

àÁ×Íè ËÁع·Ç¹à¢çÁ¹ÒÌÔ¡Ò áç´Ñ¹·Õäè ´ ¨ÐÁÒ¡¢Ö¹é àÁ×Íè ËÁعµÒÁà¢çÁ¹ÒÌÔ¡Ò áç´Ñ¹·Õäè ´ ¨ÐÁÒ¡¢Ö¹é

ÃÙ»·Õè A6-1 áÊ´§Ãٻà ҧ, ǧ¨Ã áÅСÒ÷íÒ§Ò¹¢Í§á¼§Ç§¨ÃµÑǵ Ò¹·Ò¹»ÃѺ¤ Òä´ áººá¡¹ËÁع


80 l àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

/*****

PIC

Show ADC from RA0 to LCD ***/

char txt[6]; int adc; void main() { Delay_ms(1000);

// Save test

Lcd_Init(&PORTD); Lcd_Cmd(LCD_CURSOR_OFF); Lcd_Out(1,1,"SENSOR0 = ");

// Init LCD Port // LCD cursor off // Show Text

TRISA = 0xFF; ANSEL = 0xFF; ADCON0=0b11000001; while(1) { ADCON0.GO=1; while(ADCON0.GO); adc= (ADRESH*4)+(ADRESL/64); WordToStr(adc,txt); Lcd_Out(1,10,txt); Delay_ms(100); }

// PORTA ==> input // PORTA ==> Analog // Select Analog1 RC_Mode and ADON

// // // // //

Start conversion conversion done? Sum highbyte and lowbyte Convert to ASCII Show on LCD

}

â»Ãá¡ÃÁ·Õè A6-1 ä¿Å adctest.c â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃÑºÍ Ò¹¤ ÒÍÔ¹¾ØµÐ¹ÒÅÍ¡ª ͧ AN0 (RA0) ¢Í§ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC16F887 ÁÒáÊ´§·Õâè Á´ÙÅ LCD ¢Í§Ëع ¹µ Robo-PICA ÊíÒËÃѺâ»Ãá¡ÃÁ ¹ÕÂé §Ñ äÁ ä´ àÃÕ¡㪠ä¿Å äźÃÒÃÕ adc.h 㹡ÒáíÒ˹´¡Ò÷íÒ§Ò¹¢Í§âÁ´ÙÅ ADC ÀÒÂã¹ PIC16F887 A6.5 Ãѹâ»Ãá¡ÃÁ áÅ Ç·´ÅͧËÁع᡹¢Í§µÑǵ Ò¹·Ò¹»ÃѺ¤ Òä´ à¾×Íè »ÃѺà»ÅÕÂè ¹¤ Òáç´Ñ¹ÍÔ¹¾ØµÍйÒÅÍ¡·Õè » ͹ãË á¡ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC16F887 Êѧࡵ¼Å¡Ò÷íÒ§Ò¹·Õâè Á´ÙÅ LCD ¢Í§Ëع ¹µ Robo-PICA àÁ×Íè Ãѹâ»Ãá¡ÃÁ ·Õâè Á´ÙÅ LCD ¨ÐáÊ´§¢ ͤÇÒÁ SENSOR0

=

xxxxx

â´Â¤ Ò xxxxx à» ¹¤ Ò¢ ÍÁÙÅ´Ô¨µÔ ÍÅ·ÕÍè Ò ¹ä´ ¨Ò¡âÁ´ÙÅá»Å§ÊÑ­­Ò³ÍйÒÅÍ¡à» ¹´Ô¨µÔ ÍÅÀÒÂã¹ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC16F887

INNOVATIVE EXPERIMENT


àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC l 81

º··Õè 6

Robo-PICA ¡ÑºÑ ¡ÒõÃǨ¨ÑºÊÔ§è ¡Õ´¢ÇҧẺäÁ ÊÁÑ ¼ÑÊ ã¹º·¹Õ¹é Òí àʹ͡Ò÷íÒ§Ò¹¢Í§Ëع ¹µ Robo-PICA ¡ÑºâÁ´ÙŵÃǨ¨ÑºáÅÐÇÑ´ÃÐÂзҧ´ Ç áʧÍÔ¹¿ÃÒàôàºÍà GP2D120 à¾×Íè ãË Ë¹Ø Â¹µ ÊÒÁÒöËźËÅÕ¡ÊÔ§è ¡Õ´¢ÇҧẺäÁ ÊÁÑ ¼ÑÊä´ Íѹ໠¹¡Òà áÊ´§ãË àË繶֧ÈÑ¡ÂÀÒ¾¢Í§Ëع ¹µ 굄 â¹Áѵ¢Ô ¹Ò´àÅç¡·Õ¤è Ǻ¤ØÁ¡Ò÷íÒ§Ò¹´ ÇÂäÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

6.1 ¤Ø³ÊÁºÑµ¢Ô ͧ GP2D120 âÁ´ÙÅÇÑ´ÃÐÂзҧ´ ÇÂáʧÍÔ¹¿ÃÒàô 㪠¡ÒõÃǨ¨ÑºÃÐÂзҧ´ Ç¡ÒÃÊз ͹áʧÍÔ¹¿ÃÒàô l ÇÑ´ÃÐÂÐ·Ò§ä´ 4 ¶Ö§ 30 ૹµÔàÁµÃ l ä¿àÅÕÂ é § 4.5 ¶Ö§ 5V ¡ÃÐáÊä¿¿ Ò 33 mA l ãË àÍÒµ ¾µ Ø à» ¹áç´Ñ¹ã¹Â Ò¹ 0.4 ¶Ö§ 2.4V ·Õäè ¿àÅÕÂé § +5V GP2D120 à» ¹âÁ´ÙŵÃǨ¨ÑºÃÐÂзҧẺÍÔ¹¿ÃÒàôÁÕ¢Òµ Í㪠§Ò¹ 3 ¢Ò¤×Í ¢Òµ Íä¿àÅÕÂé § (Vcc), ¢Ò¡ÃÒÇ´ (GND) áÅТÒáç´Ñ¹àÍÒµ ¾µØ (Vout) ¡ÒÃÍ Ò¹¤ Òáç´Ñ¹¨Ò¡ GP2D120 ¨Ðµ ͧÃÍ ãË ¾¹ ª ǧàµÃÕÂÁ¤ÇÒÁ¾Ã ÍÁ¢Í§âÁ´ÙÅ¡ ͹ «Ö§è 㪠àÇÅÒ»ÃÐÁÒ³ 32.7 ¶Ö§ 52.9 ÁÔÅÅÔÇ¹Ô Ò·Õ ´Ñ§¹Ñ¹é ã¹ ¡ÒÃÍ Ò¹¤ Òáç´Ñ¹¨Ö§¤ÇÃÃÍãË ¾¹ ª ǧàÇÅҴѧ¡Å ÒÇ仡 ͹ ´Ñ§áÊ´§¢ ÍÁÙÅàº×Íé §µ ¹ã¹ÃÙ»·Õè 6-1 l

LED ÍÔ¹¿ÃÒàôµÑÇÊ §

µÑÇÃѺáʧÍÔ¹¿ÃÒàô

¡ÃÒ¿áÊ´§¡Ò÷íÒ§Ò¹¢Í§ GP2D120 áç´Ñ¹àÍÒµ ¾Øµ (V)

/2 ,

2.8 Vout GND

Vcc

2.0

ä¿àÅÕÂé §

1.6 38.3±9.6

¡ÒÃÇÑ´ÃÐÂÐË Ò§

2.4

ÁÔÅÅÔÇ¹Ô Ò·Õ

ÇÑ´¤ÃÑ駷Õè 1

1.2

ÇÑ´¤ÃÑ駷Õè 2

0.8

ÇÑ´¤ÃÑ§é ·Õè n

0.4

áç´Ñ¹àÍÒµ ¾µØ

äÁ á¹ ¹Í¹

àÍÒµ ¾µØ ¤ÃÑ§é ·Õè 1 àÍÒµ ¾µØ ¤ÃÑ§é ·Õè 2 5 ÁÔÅÅÔÇ¹Ô Ò·Õ

àÍÒµ ¾µØ ¤ÃÑ§é ·Õè n

0

0

4

8

12

16

20

24

28

ÃÐÂÐË Ò§¨Ò¡Çѵ¶Ø·ÕèµÃǨ¨Ñº (cm)

32

ÃÙ»·Õè 6-1 áÊ´§¡ÒèѴ¢Ò ä´ÍÐá¡ÃÁàÇÅҨѧËÇСÒ÷íÒ§Ò¹ áÅСÃÒ¿áÊ´§¡Ò÷íÒ§Ò¹¢Í§ GP2D120


82 l àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

PIC

¤ Òáç´Ñ¹àÍÒµ ¾µØ ¢Í§ GP2D120 ·ÕÃè ÐÂзҧ 30 ૹµÔàÁµÃ·Õäè ¿àÅÕÂé § +5V ÍÂÙã ¹ª ǧ 0.25 ¶Ö§ 0.55V â´Â¤ Ò¡ÅÒ§¤×Í 0.4V ª ǧ¢Í§¡ÒÃà»ÅÕÂè ¹á»Å§áç´Ñ¹àÍÒµ ¾µØ ·ÕÃè ÐÂзҧ 4 ૹµÔàÁµÃ¤×Í 2.25V ±0.3V

6.2 ËÅÑ¡¡Ò÷íÒ§Ò¹¢Í§âÁ´ÙŵÃǨÇÑ´ÃÐÂзҧ´ ÇÂáʧÍÔ¹¿ÃÒàô âÁ´ÙÅÇÑ´ÃÐÂзҧ´ ÇÂáʧÍÔ¹¿ÃÒàô ¨ÐÊ §áʧÍÔ¹¿ÃÒàô¨Ò¡µÑÇÊ §ä»¡ÃзºÇѵ¶Ø¼Ò ¹àÅ¹Ê ¹Ù¹à¾×Íè â¿¡ÑÊáʧãË Á¤Õ ÇÒÁࢠÁáʧä»Âѧ¨Ø´ã´¨Ø´Ë¹Ö§è àÁ×Íè áʧ仡ÃзºÇѵ¶Ø¨Ðà¡Ô´¡ÒáÃÐà¨Ô§¢Í§ áʧä»ã¹·ÔÈ·Ò§µ Ò§ æ áÊ§Ê Ç¹Ë¹Ö§è ¨Ð¡ÃÐà¨Ô§ä»ÂѧÀÒ¤ÃѺ â´ÂÁÕàÅ¹Ê ÀÒ¤ÃѺ·íÒ˹ Ò·ÕÃè ÇÁáʧáÅÐ ¡íÒ˹´¨Ø´µ¡¡Ãзº áʧ¨Ð¶Ù¡Ê §¼ Ò¹ä»Âѧâ¿âµ ·ÃÒ¹«ÔÊàµÍà ¨Òí ¹Ç¹ÁÒ¡·Õµè Í àÃÕ§µÑǡѹ໠¹Ê ǹ ÃѺáʧ ËÃ×ÍÍÐàÃÂ ÃºÑ áʧ µíÒá˹ §·Õáè ʧµ¡¡Ãзº¹ÕÊé ÒÁÒö¹íÒÁÒ¤íҹdzËÒÃÐÂзҧ (L) ¨Ò¡ÀÒ¤ Ê §ä»ÂѧÇѵ¶Øä´ â´Â㪠ʵ٠ÃËÒÊÒÁàËÅÕÂè Á¤Å Ò´ѧ¹Õé L F = A X

Çѵ¶Ø

L A

F Ê Ç¹ÃѺáʧ

LED ÍÔ¹¿ÃÒàô µÑÇÊ § /2 ,

:

ÃÙ»·Õè 6-2 áÊ´§ÇÔ¸¡Õ ÒÃÇÑ´¤ ÒÃÐÂзҧ´ Ç¡ÒÃÊз ͹áʧÍÔ¹¿ÃÒàô¢Í§âÁ´ÙÅ GP2D120


àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC l 83

´Ñ§¹Ñ¹é ¤ Ò L ¨ÐÁÕ¤Ò à· Ò¡Ñº L=

F×A X

â´Â¤ Ò·ÕèÇÑ´ÃÐÂÐä´ ¨Ò¡â¿âµ ·ÃÒ¹«ÔÊàµÍà ¨Ð¶Ù¡Ê §ä»Âѧǧ¨Ã»ÃÐÁÇżÅÊÑ­­Ò³¡ ͹¨Ð à»ÅÕÂè ¹¤ Òà» ¹ÃдѺáç´Ñ¹ «Ö§è ãË ¼Å¡ÒÃà»ÅÕÂè ¹á»Å§áç´Ñ¹µÒÁÃÐÂзҧ·Õµè ÃǨÇÑ´ä´

6.3 ¡ÒÃÍ Ò¹¤ Ò¢ ÍÁÙŨҡ GP2D120 ´ ÇÂǧ¨Ãá»Å§ÊÑ­­Ò³ÍйÒÅÍ¡à» ¹´Ô¨µÔ ÍÅ ¼ÅÅѾ¸ ·äÕè ´ ¨Ò¡ GP2D120 à» ¹áç´Ñ¹ ¨Ðµ ͧ¹íÒ¤ Ò·Õäè ´ ÁÒáÊ´§¼Åã¹ÃÙ»¢Í§ÃÐÂзҧ â´Â á»Å§¤ Òáç´Ñ¹¨Ò¡¡ÃÒ¿à»ÃÕºà·Õº¤ Òáç´Ñ¹¡Ñº¤ ÒÃÐÂзҧ à¾×èͤÇÒÁÊдǡ¨Ö§ÁÕ¼Ù Êà ҧÊÁ¡Òà àªÔ§àÊ ¹ÍÍ¡ÁÒãË ãª §Ò¹ä´ §Ò  ´Ñ§¹Õé 4=

' " − 8 +#

â´Â·Õè R ËÁÒ¶֧ÃÐÂзҧ˹ ÇÂà» ¹à«¹µÔàÁµÃ V ËÁÒ¶֧¢ ÍÁÙŨҡǧ¨Ãá»Å§ÊÑ­­Ò³ÍйÒÅÍ¡à» ¹´Ô¨µÔ ÍÅ àÁ×è͹íÒâÁ´ÙÅ GP2D120 àª×èÍÁµ ͡Ѻǧ¨Ãá»Å§ÊÑ­­Ò³ÍйÒÅÍ¡à» ¹´Ô¨ÔµÍŢͧäÁâ¤Ã ¤Í¹â·ÃÅàÅÍà ¶ ÒäÁâ¤Ã¤Í¹â·ÃÅàÅÍà ÍÒ ¹¤ Òä´ 307 áÊ´§Ç Ò GP2D120 ÍÂÙË Ò §¨Ò¡Çѵ¶Ø 8 ૹµÔàÁµÃ


84 l àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

PIC

¡Ô¨¡ÃÃÁ·Õè 7

·´Êͺ㪠§Ò¹âÁ´ÙÅÇÑ´ÃÐÂзҧ GP2D120 A7.1 à¢Õ¹â»Ãá¡ÃÁ·Õè A7-1 ´ Ç mikroC IDE ·íÒ¡ÒäÍÁä¾Å ãË ä´ ä¿Å ¼ÅÅѾ¸ .hex A7.2 àª×Íè Áµ ͺÍà ´â»Ãá¡ÃÁࢠҡѺËع ¹µ Robo-PICA áÅоÍà µ USB ¢Í§¤ÍÁ¾ÔÇàµÍà A7.3 ´Òǹ âËÅ´â»Ãá¡ÃÁä»ÂѧËع ¹µ Robo-PICA A7.4 ¡´ÊÇÔµª RA4 º¹ºÍà ´ RBX-877 à¾×Íè àÃÔÁè µ ¹·íÒ§Ò¹

A7.5 ¹íÒÇѵ¶ØÁÒÇÒ§¢Çҧ˹ ÒËØ ¹Â¹µ ã¹´ Ò¹·ÕèµÔ´µÑé§âÁ´ÙÅ GP2D120 Êѧࡵ¼Å¡Ò÷íÒ§Ò¹·Õè¨ÍáÊ´§¼Å¢Í§ Ëع ¹µ Robo-PICA ¨Ò¡¹Ñ¹é ·´Åͧà»ÅÕÂè ¹ÃÐÂÐË Ò§¢Í§Çѵ¶Ø áÅ ÇÊѧࡵ¼Å¡Ò÷íÒ§Ò¹·Õàè ¡Ô´¢Ö¹é ·Õ¨è ÍáÊ´§¼Å¢Í§Ëع ¹µ Robo-PICA áÊ´§¤ ҢͧâÁ´ÙÅá»Å§ÊÑ­­Ò³ÍйÒÅÍ¡à» ¹´Ô¨µÔ ÍÅ·ÕÍè Ò ¹¤ Ò ä´ ¨Ò¡âÁ´ÙÅ GP2D120 ËÃ×Í RAW Value 㹺Ã÷Ѵº¹ Ê Ç¹ºÃ÷ѴŠҧáÊ´§¤ ÒÃÐÂÐË Ò§¢Í§Çѵ¶Ø·µÕè ÃǨ¨Ñºä´ ã¹Ë¹ ÇÂૹµÔàÁµÃ «Ö§è ¤ ÒÃÐÂÐË Ò§¹Õäé ´ ÁÒ¨Ò¡¡Òäíҹdzã¹â»Ãá¡ÃÁ


àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC l 85

#include <adc.h> int GP2=0; float Distance; char txt1[6]; char txt[13]; char *text1 ="RAW Value="; char *text2 ="Far= CM"; char *text3 = "Out of Range"; void main() { Lcd_Init(&PORTD); Lcd_Cmd(LCD_CURSOR_OFF); Lcd_Cmd(LCD_CLEAR); while(1) { GP2=Adc_Rd(2); WordToStr(GP2,txt1); Lcd_Cmd(LCD_CLEAR); Lcd_Out(1,1,text1); Lcd_Out(1,12,txt1); if (GP2>90) { Distance=(2914.0/(GP2+5))-1; FloatToStr(Distance,txt); Lcd_Out(2,1,text2); Lcd_Out(2,5,txt); } else Lcd_Out(2,1,text3); Delay_ms(400); } }

// Save String

// Init LCD Port // LCD cursor off

// // // // // //

Read ADC CH 2 Convert Raw Data to String Clear Screen Show Line 1 Text Show Raw Data Check Gp2 Out of Range ?

// Convert to Centimeter // Convert to String // Show on LCD

// Show Out of Range

¡Ò÷íÒ§Ò¹¢Í§â»Ãá¡ÃÁ ã¹â»Ãá¡ÃÁ¹Õäé ´ ¼¹Ç¡ä¿Å äźÃÒÃÕ adc.h ࢠÒÁÒã¹â»Ãá¡ÃÁ à¹×Íè §¨Ò¡âÁ´ÙÅ GP2D120 ·Õ¹è Òí ÁÒàª×Íè Áµ Í ¡ÑºäÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC16F887 à» ¹µÑǵÃǨ¨ÑºáººÍйÒÅÍ¡·Õãè Ë ¼Å¡Ò÷íҧҹ໠¹áç´Ñ¹ä¿µÃ§ ¨Ö§µ ͧ ÁÕ¡ÒÃ㪠§Ò¹âÁ´ÙÅá»Å§ÊÑ­­Ò³ÍйÒÅÍ¡à» ¹´Ô¨ÔµÍÅËÃ×Í ADC ÁÒ·íÒ¡ÒÃá»Å§ÊÑ­­Ò³ â´ÂÍÔ¹¾Øµ ÍйÒÅÍ¡·Õãè ª §Ò¹ã¹â»Ãá¡ÃÁ¹Õ¤é Í× ÍÔ¹¾ØµÍйÒÅÍ¡ª ͧ 2 ËÃ×Í RA2 ¢ ÍÁÙÅ·Õäè ´ ¨Ò¡¡ÒÃá»Å§ÊÑ­­Ò³¨Ð¶Ù¡à¡çº äÇ ã¹µÑÇá»Ã gp2 áÅ Çá»Å§à» ¹¢ ͤÇÒÁÃËÑÊáÍÊ¡Õ´é Ç Â¿ §¡ ª¹Ñè WordToStr à¾×Íè ¹íÒä»áÊ´§¼Å·Õâè Á´ÙÅ LCD µ Íä» ¨Ò¡¹Ñ¹é â»Ãá¡ÃÁ¨ÐµÃǨÊÍºÇ Ò âÁ´ÙÅ GP2D120 ÁÕ¡ÒÃÇÑ´¤ Òä´ à¡Ô¹Â Ò¹¡Ò÷íÒ§Ò¹ËÃ×ÍäÁ â´Â·íÒ¡Òà á»Å§¤ Ò¢ ÍÁÙŴԺ໠¹¤ ÒÃÐÂзҧã¹Ë¹ ÇÂૹµÔàÁµÃ ¶ ÒËÒ¡¤ Ò·Õáè »Å§ä´ à¡Ô¹ 30 ૹµÔàÁµÃ ¨ÐáÊ´§¼Å¡Òà µÃǨÊͺ´ Ç¢ ͤÇÒÁ Out of range ¨Ò¡â»Ãá¡ÃÁ¾ºÇ Ò ËÒ¡¤ ҢͧµÑÇá»Ã gp2 ÁÒ¡¡Ç Ò 90 àÁ×Íè ¹íÒ ÁÒ¤íҹdz¨Ò¡¤íÒÊѧè Distance=(2914.0/(GP2+5))-1; ¨Ðä´ ¤Ò ÃÐÂзҧã¹Ë¹ ÇÂૹµÔàÁµÃà¡Ô¹ 30 ૹµÔàÁµÃ áµ ¶Ò ¤ ÒäÁ à¡Ô¹ ¡ç¨Ð¹íÒ¤ Ò·Õ¤è Òí ¹Ç³ä´ ¹¹Ñé á»Å§à» ¹¢ ÍÁÙÅÃËÑÊáÍÊ¡Õ´é Ç Â¿ §¡ ª¹Ñè FloatToStr à¾×Íè ¹íÒä»áÊ´§¼Å·Õºè Ã÷ѴŠҧ¢Í§âÁ´ÙÅ LCD µ Íä»

â»Ãá¡ÃÁ·Õè A7-1 ä¿Å gp2d120test.c â»Ãá¡ÃÁÍ Ò¹¤ Ò¨Ò¡ GP2D120 ÁÒáÊ´§¼Å·Õâè Á´ÙÅ LCD ¢Í§ Ëع ¹µ Robo-PICA


86 l àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

PIC

¡Ô¨¡ÃÃÁ·Õè 8

Ëع ¹µ Robo-PICA ËźËÅÕ¡ÊÔ§è ¡Õ´¢ÇҧẺäÁ ÊÁÑ ¼ÑÊ ã¹¡Ô¨¡ÃÃÁ¹Õàé » ¹¡ÒùíÒ¤ÇÒÁÃÙ¨ Ò¡¡Ô¨¡ÃÃÁ·Õè 7 ÁÒ»ÃѺ»Ãاà¾×Íè ¤Çº¤ØÁ¡ÒÃà¤Å×Íè ¹·Õ¢è ͧËع ¹µ Robo-PICA ãË ÊÒÁÒöµÃǨ¨ÑºÇѵ¶Ø¡´Õ ¢ÇÒ§·ÕÍè ÂÙ´ Ò ¹Ë¹ Òã¹ÃÐÂзաè Òí ˹´ä´ à¾×Íè ·íÒ¡ÒÃà¤Å×Íè ¹ ·ÕèËźËÅÕ¡â´ÂäÁ ÊÑÁ¼ÑÊ

ËÅÑ¡¡Ò÷íÒ§Ò¹¤×Í äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC16F887 ¨Ðà¤Å×Íè ¹·Õäè »¾Ã ÍÁæ ¡Ñº¡ÒÃÍ Ò¹¤ Ò ¨Ò¡âÁ´ÙÅ GP2D120 ¶ Ò¤ Ò·ÕÍè Ò ¹ä´ áÅÐá»Å§à» ¹¤ ҢͧÃÐÂзҧáŠǹ ÍÂ¡Ç Ò¤ Ò·Õ¡è Òí ˹´ áÊ´§Ç Ò Ëع ¹µ Robo-PICA ¾ºÊÔ§è ¡Õ´¢ÇÒ§ Ê Ç¹¤Çº¤ØÁ¨ÐÊѧè ãË Ë¹Ø Â¹µ à¤Å×Íè ¹·Õ¶è ÍÂËÅѧ áÅ ÇàÅÕÂé Ç¢ÇÒËÃ×Í « ÒÂà¾×èÍËźËÅÕ¡¨Ò¡ÊÔ觡մ¢ÇÒ§ A8.1 à¢Õ¹â»Ãá¡ÃÁ·Õè A8-1 ´ Ç mikroC IDE ·íÒ¡ÒäÍÁä¾Å ãË ä´ ä¿Å ¼ÅÅѾ¸ .hex A8.2 àª×Íè Áµ ͺÍà ´â»Ãá¡ÃÁࢠҡѺËع ¹µ Robo-PICA áÅоÍà µ USB ¢Í§¤ÍÁ¾ÔÇàµÍà A8.3 ´Òǹ âËÅ´â»Ãá¡ÃÁä»ÂѧËع ¹µ Robo-PICA áÅ Ç» ´ÊÇÔµª POWER A8.4 »Å´ÊÒ´Òǹ âËÅ´·Ñ§é ËÁ´ÍÍ¡¨Ò¡Ëع ¹µ Robo-PICA


àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC l 87

#include <adc.h> #include <motor.h> int GP2=0,CNT=0; char txt[6],i,Round=0; char *text1="Object Detector"; char *text2="Distance ="; void main() { Sound_Init(&PORTC,0); Lcd_Init(&PORTD); Lcd_Cmd(LCD_CURSOR_OFF); Lcd_Cmd(LCD_CLEAR); Lcd_Out(1,1, "<< RA4 >> Start"); Lcd_Out(2,1,"GP2 Reading"); while(PORTA.F4==1);

// Variable

// Init Sound ==> RC0 // Init LCD PORT D // LCD cursor off

// Start Program when Press RA4

/********************************************/ Lcd_Cmd(LCD_CLEAR); // Show Text Lcd_Out(1,1,text1); Lcd_Out(2,1,text2); while(1) { for (i=0;i<10;i++)GP2+=Adc_Rd(2); // Read Gp2 10 Time GP2=GP2/10; // and Average CNT++; // Counter For Show LCD if (CNT>600) { CNT=0; WordToStr(GP2,Txt); // Show LCD Lcd_Out(2,11,Txt); } if (GP2>500) // Check Gp2 Out of Range ? { Round++; // Counter For Rotate Robot Backward(255); WordToStr(GP2,Txt); Lcd_Out(2,11,Txt); Sound_Play(250,100); Delay_ms(500); if (Round>5) // Right 5 Time ? { Round=0; S_Right(255); Delay_ms(1000); } else // More Then 5 Time ==> Left { S_Left(255); Delay_ms(1000); } } Forward(255); // Not Found Object => Forward } }

â»Ãá¡ÃÁ·Õè A8-1 ä¿Å obstable_robot.c â»Ãá¡ÃÁ¤Çº¤ØÁ¡ÒÃà¤Å×è͹·Õè¢Í§ËØ ¹Â¹µ Robo-PICA ãË ÊÒÁÒöËźËÅÕ¡ÊÔ§è ¡Õ´¢Ç񤊫 â´ÂäÁ ÊÁÑ ¼ÑÊ (ÁÕµÍ )


88 l àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

PIC

¡Ò÷íÒ§Ò¹¢Í§â»Ãá¡ÃÁ â»Ãá¡ÃÁ¹Õé·íÒ§Ò¹¤Ãº¶ ǹ·Ñé§Ê ǹ¡ÒÃáÊ´§¢ ͤÇÒÁ ¡ÒâѺÊÑ­­Ò³àÊÕ§ ¡ÒäǺ¤ØÁÁÍàµÍà ¡ÒÃÍ Ò¹¤ Ò¨Ò¡ÊÇÔµª áÅСÒÃÍ Ò¹¤ Ò¨Ò¡ÍÔ¹¾ØµÍйÒÅÍ¡ àÃÔÁè µ ¹¡Ò÷íÒ§Ò¹´ Ç¡ÒÃǹÃÍ¡Òá´ÊÇÔµª RA4 ¨Ò¡¹Ñ¹é â»Ãá¡ÃÁ¨ÐÇ¹Í Ò¹¤ Ò¨Ò¡âÁ´ÙÅ GP2D120 ·ÕÍè ¹Ô ¾ØµÍйÒÅÍ¡ª ͧ 2 ¨íҹǹ 10 Ãͺ à¾×Íè ¹íÒàÍÒ¤ Òà©ÅÕÂè ÁÒ㪠¨Ð·íÒãË ä´ ¤Ò ¢Í§¡ÒõÃǨ¨Ñº·ÕÁè ¤Õ ÇÒÁá¹ ¹Í¹ÁÒ¡ÂÔ§è ¢Ö¹é áÅÐà¾×Íè Å´¼Å¡Ãзº¨Ò¡ÊÑ­­Ò³Ãº¡Ç¹·ÕÁè Ò¨Ò¡ÁÍàµÍà ¢³Ð·íÒ¡ÒâѺà¤Å×Íè ¹ ¨Ò¡¹Ñ¹é ¹íÒ¤ Ò·ÕÍè Ò ¹ä´ ¨Ò¡âÁ´ÙÅ GP2D120 ä»áÊ´§¼Å·ÕËè ¹ Ò¨Í LCD áµ ¡ÒÃáÊ´§¤ Ò¨Ð㪠µÇÑ á»Ã CNT à» ¹µÑǹѺ¤ Ò¡ Í¹Ç Òà¡Ô¹ 600 ËÃ×ÍäÁ ¶ Òà¡Ô¹ ¨Ö§¹íÒ¤ ÒÁÒáÊ´§ ·Ñ駹Õéà¾×èÍãË ¡ÒÃáÊ´§¤ ÒµÑÇàÅ¢·ÕèâÁ´ÙÅ LCD äÁ àÃçÇà¡Ô¹ä» ¨¹Áͧ¤ ÒµÒÁäÁ ·¹Ñ ËÅѧ¨Ò¡áÊ´§¤ Ò·Õâè Á´ÙÅ LCD áÅ Ç ¹íÒ¤ Ò·ÕÍè Ò ¹ä´ ¨Ò¡âÁ´ÙÅ GP2D120 ÁÒà»ÃÕºà·Õ异 ÒÁÒ¡¡Ç Ò 500 (»ÃÐÁÒ³ 4.5 ૹµÔàÁµÃ) ËÃ×ÍäÁ ¶ ÒÁÒ¡¡Ç Ò áÊ´§Ç Òã¡Å ª¹Çѵ¶ØáÅ Ç ¨Ðµ ͧÊѧè ãË Ë¹Ø Â¹µ à¤Å×Íè ¹·Õ¶è ÍÂËÅѧ ¢ÑºÊÑ­­Ò³àÊÕ§ÍÍ¡·Ò§ÅíÒ⾧໠Ââ« ËÅѧ¨Ò¡à¤Å×Íè ¹·Õ¶è ÍÂËÅѧáÅ Ç ¨Ðµ ͧàÅÕÂé Çà»ÅÕÂè ¹àÊ ¹·Ò§ â´Â¨ÐÁÕµÇÑ ¹Ñº·íÒ˹ Ò·Õµè ÃǨÊÍºÇ Ò à»ÅÕÂè ¹ àÊ ¹·Ò§ä»ã¹·ÔÈ·Ò§à´ÔÁ (·Ò§« ÒÂ) ¡Õ¤è Ãѧé áÅ Ç ¶ Òà¡Ô¹ 5 ¤ÃÑ§é ¨Ðµ ͧà»ÅÕÂè ¹à» ¹àÅÕÂé Ç¢ÇÒá·¹ áµ ¶Ò äÁ ÁÊÕ §Ôè ¡Õ´ ¢ÇÒ§ÍÂÙ´ Ò ¹Ë¹ Ò Ëع ¹µ ¨Ðà¤Å×Íè ¹·Õµè çä»

â»Ãá¡ÃÁ·Õè A8-1 ä¿Å obstable_robot.c â»Ãá¡ÃÁ¤Çº¤ØÁ¡ÒÃà¤Å×è͹·Õè¢Í§ËØ ¹Â¹µ Robo-PICA ãË ÊÒÁÒöËźËÅÕ¡ÊÔ§è ¡Õ´¢Ç񤊫 â´ÂäÁ ÊÁÑ ¼ÑÊ (¨º) A8.5 ¹íÒËع ¹µ Robo-PICA ÇÒ§º¹¾×¹é ¨Ñ´ÇÒ§ÊÔ§è ¡Õ´¢ÇÒ§µÒÁµíÒá˹ §·Õµè Í §¡Ò÷´Êͺ¡Ò÷íÒ§Ò¹ à» ´ÊÇÔµª POWER áÅ Ç¡´ÊÇÔµª RA4 à¾×Íè àÃÔÁè µ ¹¡Ò÷íÒ§Ò¹¢Í§Ëع ¹µ Êѧࡵ¡Ò÷íÒ§Ò¹¢Í§Ëع ¹µ Ëع ¹µ Robo-PICA à¤Å×Íè ¹·Õäè »¢ ҧ˹ ÒÍ ҧµ Íà¹×Íè § ¨¹¡ÃÐ·Ñ§è µÃǨ¨Ñº¾ºÊÔ§è ¡Õ´¢ÇÒ§ Ëع ¹µ ¨Ðà¤Å×Íè ¹ ·Õ¶è ÍÂËÅѧ¾Ã ÍÁæ ¡Ñº¢ÑºàÊÕ§ÍÍ¡ÁÒà¾×Íè ᨠ§¡ÒõÃǨ¨Ñº¾ºÊÔ§è ¡Õ´¢ÇÒ§ ¨Ò¡¹Ñ¹é Ëع ¹µ ¨ÐËÁعµÑÇä»·Ò§« Ò ËÃ×Í¢ÇÒà¾×Íè ËźËÅÕ¡ÊÔ§è ¡Õ´¢ÇÒ§ ·Ñ§é ¹Õ¢é ¹Öé ÍÂÙ¡ ºÑ ÊÀÒÇСÒÃà¤Å×Íè ¹·Õãè ¹¢³Ð¹Ñ¹é Ç Ò ä´ àÅÕÂé Ç« ÒÂËÃ×Í¢ÇÒä»ã¹·ÔÈ ·Ò§à´ÔÁÁÒ¡¡Ç Ò 5 ¤Ãѧé ËÃ×ÍäÁ ¶ ÒÁÒ¡¡Ç Ò ¡ç¨Ðà»ÅÕÂè ¹·ÔÈ·Ò§¨Ò¡à´ÔÁà» ¹µÃ§¡Ñ¹¢ ÒÁ àÁ×Íè Ëź¾ ¹Ëع ¹µ ¨Ð à¤Å×è͹·ÕèµÃ§ä»¢ ҧ˹ Òµ Íä»

INNOVATIVE EXPERIMENT


àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC l 89

º··Õè 7

Ëع ¹µ Robo-PICA à¤Å×Íè ¹·Õµè ÒÁàÊ ¹

㹡ÒþѲ¹Òâ»Ãá¡ÃÁÀÒÉÒ C à¾×Íè ¤Çº¤ØÁãË Ë¹Ø Â¹µ Robo-PICA à¤Å×Íè ¹·Õµè ÒÁàÊ ¹ä´ ¹¹Ñé ÁÕËÅÑ¡ ¡Òä×Í Ëع ¹µ ¨ÐÍ Ò¹¤ ÒÍйÒÅÍ¡¨Ò¡á¼§Ç§¨ÃµÃǨ¨Ñº¡ÒÃÊз ͹áʧÍÔ¹¿ÃÒàô (IR reflector) «Ö§è ¹íÒÁÒ»ÃÐÂØ¡µ 㪠໠¹µÑǵÃǨ¨ÑºàÊ ¹ ¤ Ò·ÕÍè Ò ¹ä´ ¨Ð¹íÒä»á»Å¤ÇÒÁËÁÒÂáÅ Çà»ÃÕºà·Õº¡Ñº¤ ÒÍ Ò§ÍÔ§ à¾×Íè µÕ¤ÇÒÁÇ Ò ³ ¢³Ð¹Ñ¹é µíÒá˹ §¢Í§µÑǵÃǨ¨ÑºµÃǨ¾ºàÊ ¹·Õ¡è Òí ˹´ËÃ×ÍäÁ ¼Å·Õäè ´ ¨Ò¡¡ÒõÃǨ Êͺ¹Õ¨é ж١¹íÒä»ÊÑ§è ¡ÒÃãË ¢ºÑ à¤Å×Íè ¹Ëع ¹µ ä»ã¹·ÔÈ·Ò§ã´æ à¾×Íè µÍºÊ¹Í§µÒÁ¨Ø´»ÃÐʧ¤ ¢Í§¼Ù ¾Ñ²¹Ò ઠ¹ àÁ×Íè µÃǨ¾ºàÊ ¹áÅ ÇãË à¤Å×Íè ¹·Õäè »µÒÁàÊ ¹ ËÃ×ÍËÂØ´ ËÃ×Íà¤Å×Íè ¹·Õ¶è ÍÂË Ò§¨Ò¡àÊ ¹

7.1 ËÑÇã¨ÊíҤѭ¤×Í á¼§Ç§¨ÃµÃǨ¨Ñº¡ÒÃÊз ͹áʧÍÔ¹¿ÃÒàô à» ¹á¼§Ç§¨Ã·Õãè ª 㹡ÒõÃǨÊͺ¡ÒÃÊз ͹¢Í§áʧÍÔ¹¿ÃÒàô¢Í§µÑǵÃǨ¨Ñº¡ÒÃÊз ͹ áʧÍÔ¹¿ÃÒàô«Ö§è ÃÇÁµÑÇÊ §áÅеÑÇÃѺäÇ ã¹µÑǶѧà´ÕÂǡѹ â´Â µÑǵÃǨ¨ÑºáʧÊз ͹ÍÔ¹¿ÃÒàô·Õ¹è Òí ÁÒ㪠¤Í× TCRT5000 ã¹ÃÙ»·Õè 7-1 áÊ´§Ç§¨Ã¢Í§á¼§Ç§¨ÃµÃǨ¨Ñº¡ÒÃÊз ͹áʧÍÔ¹¿ÃÒàô àÁ×Íè ¨ Ò ä¿àÅÕÂé § LED ÍÔ¹¿ÃÒàôÀÒÂã¹Ç§¨Ã¨Ðà»Å §áʧÍÍ¡ÁÒµÅÍ´àÇÅÒ Ê Ç¹µÑÇÃѺ«Ö§è à» ¹â¿âµ ·ÃÒ¹«ÔÊàµÍà ¨Ðä´ ÃºÑ áʧÍÔ¹¿ÃÒàô¨Ò¡¡ÒÃÊз ͹¡ÅѺ «Ö§è ¨ÐÁÒ¡ËÃ×͹ Í¡碹Öé ÍÂÙ¡ ºÑ Ç Ò ÁÕÇµÑ ¶ØÁÒ¡Õ´¢ÇÒ§ËÃ×ÍäÁ áÅÐÁÕ¤ÇÒÁÊÒÁÒö㹡ÒÃÊз ͹áʧÍÔ¹¿ÃÒàÃ´ä´ ´àÕ ¾Õ§äà «Ö§è ¢Ö¹é ¡ÑºÅÑ¡É³Ð¾×¹é ¼ÔÇáÅÐÊբͧÇѵ¶Ø â´Â Çѵ¶ØÊ¢Õ ÒǼÔÇàÃÕº¨ÐÊз ͹áʧÍÔ¹¿ÃÒàÃ´ä´ ´·Õ ÊÕè ´Ø ·íÒãË µÇÑ ÃѺáʧÍÔ¹¿ÃÒàÃ´ä´ ÃºÑ áʧÊз ͹ÁÒ¡ Ê §¼ÅãË áç´Ñ¹·Õàè ÍÒµ ¾µØ ¢Í§Ç§¨ÃÊÙ§µÒÁä»´ Ç 㹢³Ð·ÕÇè µÑ ¶ØÊ´Õ Òí ËÃ×ÍÊÕࢠÁ¨ÐÊз ͹áʧÍÔ¹¿ÃÒàô ä´ ¹Í ·ÕÊè ´Ø ·íÒãË µÇÑ ÃѺÍÔ¹¿ÃÒàÃ´Ê §áç´Ñ¹ÍÍ¡ÁÒµèÒí ¨Ø´µ ÍÊÑ­­Ò³ +V TCRT5000

OUT GND

10k

µÑǵÃǨ¨Ñº¡ÒÃÊз ͹áʧÍÔ¹¿ÃÒàô

ÃÙ»·Õè 7-1 áÊ´§Ãٻà ҧáÅÐǧ¨Ã¢Í§á¼§Ç§¨ÃµÃǨ¨Ñº¡ÒÃÊз ͹áʧÍÔ¹¿ÃÒàô

510


90 l àÃÕ¹ÃÙá é ÅÐÊÃéÒ§Ëعè ¹µì굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃì

PIC

ÊíÒËÃѺµÑÇá»Ã·ÕèÁռŵ Í¡ÒÃÊз ͹¡ÅѺ¢Í§áʧÍÔ¹¿ÃÒàô¹Í¡¨Ò¡¾×é¹¼ÔǢͧÇѵ¶ØáÅ Ç Âѧ ÁÕàÃ×Íè §¢Í§ÃÐÂÐË Ò§ÃÐËÇ Ò§á¼§Ç§¨ÃµÃǨ¨Ñº¡Ñº¾×¹é ¼ÔÇ´ Ç â´ÂÃÐÂÐË Ò§·Õàè ËÁÒÐÊÁÊíÒËÃѺµÑǵÃǨ ¨Ñºáºº¹Õ¨é ÐÍÂÙà ÐËÇ Ò§ 3 ¶Ö§ 8 ÁÔÅÅÔàÁµÃ «Ö§è ¨Ð·íÒãË ÍÒ ¹¤ Òáç´Ñ¹¨Ò¡á¼§Ç§¨Ãä´ ¤Ò ÍÂÙà ÐËÇ Ò§ 0.1 ¶Ö§ 4.8V áÅÐãË ¤Ò ¢Í§¢ ÍÁÙÅàÁ×Íè Í Ò¹¼ ҹǧ¨Ãá»Å§ÊÑ­­Ò³ÍйÒÅÍ¡à» ¹´Ô¨µÔ ÍÅÍÂÙã ¹ª ǧ 20 ¶Ö§ 1,000

3 ¶Ö§ 8 ÁÔÅÅÔàÁµÃ

´Ñ§¹Ñé¹á¼§Ç§¨ÃËÃ×͵ÑǵÃǨ¨Ñºáºº¹Õé¨Ö§àËÁÒÐÍ ҧÂÔ觷Õè¨Ð¹íÒÁÒ㪠໠¹µÑǵÃǨ¨ÑºàÊ ¹ ·Ñé§ àÊ ¹ÊÕ¢ÒÇËÃ×ÍàÊ ¹ÊÕ´Òí «Ö§è ¨Ð¢Ö¹é ÍÂÙ¡ ºÑ ¡ÒùíÒ¤ Ò·ÕÍè Ò ¹ä´ ä»»ÃÐÁÇżÅã¹ÅѡɳÐ㴠㹪شËع ¹µ Robo-PICA ¨Ð㪠ἧǧ¨ÃµÃǨ¨ÑºáʧÊз ͹ÍÔ¹¿ÃÒàô¹Õé 2 ªØ´à¾×Íè µÃǨÊͺ¾×¹é ¼ÔÇáÅеÃǨ¨Ñº àÊ ¹ã¹Åѡɳе Ò§æ


àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC l 91

¡Ô¨¡ÃÃÁ·Õè 9

Í Ò¹¤ Ҩҡἧǧ¨ÃµÃǨ¨ÑºáʧÊз ͹ÍÔ¹¿ÃÒàô A9.1 à¢Õ¹â»Ãá¡ÃÁ·Õè A9-1 ´ Ç mikroC IDE ·íÒ¡ÒäÍÁä¾Å ãË ä´ ä¿Å ¼ÅÅѾ¸ .hex A9.2 àª×Íè Áµ ͺÍà ´â»Ãá¡ÃÁࢠҡѺËع ¹µ Robo-PICA áÅоÍà µ USB ¢Í§¤ÍÁ¾ÔÇàµÍà A9.3 ´Òǹ âËÅ´â»Ãá¡ÃÁä»ÂѧËع ¹µ Robo-PICA áÅ Ç» ´ÊÇÔµª POWER A9.4 »Å´ÊÒ´Òǹ âËÅ´ÍÍ¡¨Ò¡Ëع ¹µ A9.5 µÃǨÊͺ¡ÒõԴµÑ§é ἧǧ¨ÃµÃǨ¨Ñº¡ÒÃÊз ͹áʧÍÔ¹¿ÃÒàô·Ñ§é ÊͧªØ´¢Í§Ëع ¹µ Robo-PICA à¾×Íè ãË á¹ ã¨Ç Ò ¾Ã ÍÁ㪠§Ò¹ /*****

Show ADC from RA0 to LCD ***/

char txt[6]; char i; int adc;

// Save test

int Adc_Rd(char ch) { int dat=0; if ((ch>=0) && (ch<=3)) TRISA |= (1<<ch); else if (ch==4) TRISA |= 0x20; else if ((ch>=5) && (ch<=7)) TRISE |= (1<<(ch-5)); ANSEL |=(1<<ch); ADCON0 = (0xC1 + (ch*4)); Delay_us(10); ADCON0.GO=1; while(ADCON0.GO); dat = (ADRESH*4)+(ADRESL/64); return dat; }

// Low 8 Channel ADC Read // Save Adc // CH0-CH3 // CH4 // CH5-CH7 // // // // // // //

set Channel to Analog Select ADC Channel Acquisiton delay Start conversion conversion done? Sum highbyte and lowbyte Return Value

void main() { Lcd_Init(&PORTD); // Init LCD Port Lcd_Cmd(LCD_CURSOR_OFF); // LCD cursor off Lcd_Cmd(LCD_CLEAR); Lcd_Out(1,1, "<< RA4 >> Start"); // keypress while(PORTA.F4==1);

â»Ãá¡ÃÁ·Õè A9-1 ä¿Å ReflectTest.c â»Ãá¡ÃÁÍ Ò¹¤ Ҩҡἧǧ¨ÃµÃǨ¨Ñº¡ÒÃÊз ͹áʧÍÔ¹¿ÃÒàô ÁÒáÊ´§¼Å·Õâè Á´ÙÅ LCD ¢Í§Ëع ¹µ Robo-PICA (ÁÕµÍ )


92 l àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

PIC

/********************************/ // Start Program /********************************/ Lcd_Cmd(LCD_CLEAR); Lcd_Out(1,1,"SENSOR0 = "); // Show Text Line1 Lcd_Out(2,1,"SENSOR1 = "); // Line2 while(1) { adc= Adc_Rd(0); WordToStr(adc,txt); Lcd_Out(1,10,txt); adc= Adc_Rd(1); WordToStr(adc,txt); Lcd_Out(2,10,txt); Delay_ms(100); }

// Convert to ASCII // Show on LCD Line1 // Convert to ASCII // Show on LCD Line2

}

¡Ò÷íÒ§Ò¹¢Í§â»Ãá¡ÃÁ â»Ãá¡ÃÁ¹Õ»é ÃСͺâ´Â ¿ §¡ ª¹Ñè Adc_Rd() áÅÐ main() â´Â¿ §¡ ª¹Ñè Adc_Rd() ¹Ñ¹é à¢Õ¹¢Ö¹é à¾×Íè ÍíҹǤÇÒÁÊдǡ㹡ÒÃàÃÕ¡㪠§Ò¹âÁ´ÙÅá»Å§ÊÑ­­Ò³ÍйÒÅÍ¡à» ¹´Ô¨µÔ ÍÅ ÊíÒËÃѺâ»Ãá¡ÃÁËÅÑ¡¨ÐÍ Ò¹ ¤ Ò¨Ò¡¢Ò¾Íà µ RA0 áÅÐ RA1 ÁÒáÊ´§·Õâè Á´ÙÅ LCD à¹×Íè §¨Ò¡µÑǵÃǨ¨Ñº¡ÒÃÊз ͹áʧÍÔ¹¿ÃÒàô¶Ù¡µ Í à¢ Ò¡Ñº¢Ò¾Íà µ´Ñ§¡Å ÒÇ

â»Ãá¡ÃÁ·Õè A9-1 ä¿Å ReflectTest.c â»Ãá¡ÃÁÍ Ò¹¤ Ҩҡἧǧ¨ÃµÃǨ¨Ñº¡ÒÃÊз ͹áʧÍÔ¹¿ÃÒàô ÁÒáÊ´§¼Å·Õâè Á´ÙÅ LCD ¢Í§Ëع ¹µ Robo-PICA (¨º) A9.6 à» ´ÊÇÔµª POWER à¾×Íè ¨ ÒÂä¿àÅÕÂé § ¡´ÊÇÔµª RA4 º¹ºÍà ´ RBX-877 à¾×Íè àÃÔÁè µ ¹Í Ò¹¤ Ҩҡἧǧ¨Ã µÃǨ¨ÑºáʧÊз ͹ÍÔ¹¿ÃÒàôÁÒáÊ´§·Õ¨è ÍáÊ´§¼Å¢Í§âÁ´ÙÅ LCD ¢Í§Ëع ¹µ Robo-PICA A9.7 ¡µÑÇËع ¹µ ¢¹Öé ¨Ò¡¾×¹é Êѧࡵ¤ Ò·ÕÍè Ò ¹ä´ ·ËÕè ¹ Ò¨Í LCD ¤ÇèÐÍ Ò¹¤ Ò¨Ò¡µÑǵÃǨ¨Ñºä´ ¹Í  ÍÂÙã ¹ª ǧ»ÃÐÁÒ³ 10 ¶Ö§ 50 à¹×Íè §¨Ò¡äÁ à¡Ô´¡ÒÃÊз ͹áʧ¨Ò¡ ¾×é¹¼ÔÇ¡ÅѺä»ÂѧµÑǵÃǨ¨Ñº A9.8 ¹íÒËع ¹µ Robo-PICA ä»ÇÒ§º¹¾×¹é ¼ÔÇÊÕ´Òí â´Âµ ͧãË µÇÑ µÃǨ¨ÑºÍÂÙà ˹×Í¾×¹é ¼ÔÇÊÕ´Òí Êѧࡵ¤ Ò·ÕÍè Ò ¹ä´ ¤ Ò·Õäè ´ ¨ÐÍÂÙã ¹ª ǧ 20 ¶Ö§ 100 à¹×Íè §¨Ò¡¾×¹é ¼ÔÇÊÕ´Òí ÊÒÁÒöÊз ͹áʧÍÔ¹¿ÃÒàô¡ÅѺä»ÂѧµÑǵÃǨ ¨Ñºä´ ¹ Í A9.9 ¹íÒËع ¹µ Robo-PICA ä»ÇÒ§º¹¾×¹é ¼ÔÇÊÕ¢ÒÇ â´Âµ ͧãË µÇÑ µÃǨ¨ÑºÍÂÙà ˹×Í¾×¹é ¼ÔÇÊÕ¢ÒÇ Êѧࡵ¤ Ò·ÕÍè Ò ¹ä´ ¤ Ò·Õäè ´ ¨ÐÍÂÙã ¹ª ǧ 700 ¶Ö§ 950 à¹×Íè §¨Ò¡¾×¹é ¼ÔÇÊÕ¢ÒÇÊÒÁÒöÊз ͹áʧÍÔ¹¿ÃÒàô¡ÅѺä»ÂѧµÑǵÃǨ ¨Ñºä´ ´Õ


àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC l 93

¡Ô¨¡ÃÃÁ·Õè 10

Ëع ¹µ Robo-PICA à¤Å×Íè ¹·Õäè Á µ¡âµ Ð ÊÃØ»¼Å·Õäè ´ ¨Ò¡â»Ãá¡ÃÁ㹡Ԩ¡ÃÃÁ·Õè 9 ¾ºÇ Ò àÁ×Íè ¡µÑÇËع ¹µ ¢¹Öé ¨Ò¡¾×¹é ¤ Ò·ÕÍè Ò ¹ä´ ¨Ò¡ µÑǵÃǨ¨ÑºÁÕ¤Ò ¹ ÍÂÁÒ¡ áµ àÁ×Íè ÇÒ§Ëع ¹µ äÇ º¹¾×¹é ¼ÔǨÐà¡Ô´¡ÒÃÊз ͹áʧÁÒ¡¢Ö¹é ·íÒãË ÍÒ ¹¤ Ò ¨Ò¡µÑǵÃǨ¨Ñºä´ ¤Ò ÁÒ¡¢Ö¹é á¹Ç¤Ô´¹Õ¹é Òí ä»ÊÙ¡ ÒÃà¢Õ¹â»Ãá¡ÃÁà¾×Íè ¤Çº¤ØÁãË Ë¹Ø Â¹µ à¤Å×Íè ¹·ÕÍè ÂÙ º¹âµ Ð â´ÂäÁ µ¡¨Ò¡âµ Ðä´ ¡ÒÃà¢Õ¹â»Ãá¡ÃÁ¨ÐÍ Ò¹¤ Ҩҡἧǧ¨ÃµÃǨ¨Ñº¡ÒÃÊз ͹áʧÍÔ¹¿ÃÒàô·Ò§´ Ò¹« Ò áÅТÇÒ àÁ×èͤ Ò·ÕèÍ Ò¹ä´ ¹ ÍÂ¡Ç Ò¤ Ò·ÕèµÑé§äÇ (ÊÁÁµÔÇ Ò ËØ ¹Â¹µ à¤Å×è͹·ÕèÍÍ¡¹Í¡¾×é¹·Õè) äÁâ¤Ã ¤Í¹â·ÃÅàÅÍà ¨Ð¤Çº¤ØÁãË Ë¹Ø Â¹µ Robo-PICA à¤Å×Íè ¹·Õ¶è ÍÂËÅѧ áÅ Çà»ÅÕÂè ¹àÊ ¹·Ò§¡ÒÃà¤Å×Íè ¹·Õè A10.1 à¢Õ¹â»Ãá¡ÃÁ·Õè A10-1 ´ Ç mikroC IDE ·íÒ¡ÒäÍÁä¾Å ãË ä´ ä¿Å ¼ÅÅѾ¸ .hex A10.2 àª×Íè Áµ ͺÍà ´â»Ãá¡ÃÁࢠҡѺËع ¹µ Robo-PICA áÅоÍà µ USB ¢Í§¤ÍÁ¾ÔÇàµÍà #include <motor.h> #include <adc.h> /* char char char char char

Text For *text1 = *text2 = *text3 = *text4 = *text5 =

// Motor Control Library // Use Analog to Digital Library

Show On LCD */ "Edge of a table" ; "From Left"; "From Right"; "Let'Go" ; "Route Clear";

char flag=0; int ADC=0; void main() { Lcd_Init(&PORTD); Lcd_Cmd(LCD_CURSOR_OFF); Lcd_Cmd(LCD_CLEAR); Lcd_Out(1,1, "<< RA4 >> Start"); while(PORTA.F4==1); while(1) { ADC =Adc_Rd(0); if (ADC<100) { flag=0; Backward(255); Lcd_Cmd(LCD_CLEAR);

// Init LCD Port // LCD cursor off // Check Key Press

// Reading sensor from left // Left sensor detect edge of table ? // Clear flag // Show text on LCD

â»Ãá¡ÃÁ·Õè A10-1 ä¿Å SurveyBot.c â»Ãá¡ÃÁ¤Çº¤ØÁËع ¹µ Robo-PICA à¤Å×Íè ¹·Õäè Á µ¡âµ Ð (ÁÕµÍ )


94 l àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

Lcd_Out(1,1,text1); Lcd_Out(2,1,text2); Delay_ms(400); S_Right(255); Delay_ms(600); } ADC =Adc_Rd(1); if (ADC<100) { flag=0; Backward(255); Lcd_Cmd(LCD_CLEAR); Lcd_Out(1,1,text1); Lcd_Out(2,1,text3); Delay_ms(400); S_Left(255); Delay_ms(900); } forward(255); if (flag==0) { flag=1; Lcd_Cmd(LCD_CLEAR); Lcd_Out(1,1,text4); Lcd_Out(2,1,text5); }

PIC

// Change route

// Reading sensor from right // Right sensor detects edge of table ? // Clear flag // Show LCD text

// Change route

// Normal ==> Forward // Check first time of LCD showing ?

// Show LCD

} }

¡Ò÷íÒ§Ò¹¢Í§â»Ãá¡ÃÁ àÁ×Íè àÃÔÁè µ ¹â»Ãá¡ÃÁ¨Ðµ ͧàÃÕ¡㪠äźÃÒÃÕ adc.h à¾×Íè Ò ¹¤ Ò¨Ò¡µÑǵÃǨ¨Ñº¡ÒÃÊз ͹áʧÍÔ¹¿ÃÒàô à ÇÁ¡ÑºäźÃÒÃÕ motor.h à¾×Íè 㪠㹡ÒâѺà¤Å×Íè ¹Ëع ¹µ Robo-PICA â»Ãá¡ÃÁ¨ÐµÃǨÊͺ¤ Ò·ÕÍè Ò ¹ä´ ¨Ò¡á¼§Ç§¨ÃµÃǨ¨ÑºáʧÊз ͹ÍÔ¹¿ÃÒàÃ´Ç Ò ¹ ÍÂ¡Ç Ò 100 ËÃ×Í äÁ ¶ Ò㪠áÊ´§Ç ÒËع ¹µ ¡Òí Åѧà¤Å×Íè ¹·ÕÍè Í¡¹Í¡¾×¹é ·ÕËè Ã×͹͡ⵠР¨Ðµ ͧ¤Çº¤ØÁãË Ë¹Ø Â¹µ à¤Å×Íè ¹·Õ¶è ÍÂËÅѧ áÅ ÇàÅÕÂé Çà»ÅÕÂè ¹àÊ ¹·Ò§ ¡ÒõÃǨÊͺµÑǵÃǨ¨Ñº¨Ðµ ͧµÃǨÊͺἧǧ¨Ã·Ñ§é ÊͧµÑÇÊÅѺ¡Ñ¹ä»Í ҧµ Íà¹×Íè § 㹡óշÍÕè Ò ¹¤ Ò ä´ ÁÒ¡¡Ç Ò 100 â»Ãá¡ÃÁ¨Ð¤Çº¤ØÁãË Ë¹Ø Â¹µ Robo-PICA à¤Å×Íè ¹·Õµè ç仢 ҧ˹ Ò ¡ÒÃà»ÅÕÂè ¹ÃٻẺ¡ÒÃà¤Å×Íè ¹·Õãè ¹áµ ÅФÃÑ§é ¨Ð¹íҼšÒÃà»ÅÕÂè ¹á»Å§ÁÒáÊ´§·Õ¨è ÍáÊ´§¼Å¢Í§âÁ´ÙÅ LCD â´ÂÁÕµÇÑ á»Ã flag ¤ÍµÃǨÊÍºÇ Ò ¡ÒÃáÊ´§¼Å¢Í§âÁ´ÙÅ LCD ¹Ñ¹é «éÒí « ͹ËÃ×ÍäÁ â´Ââ»Ãá¡ÃÁ¨ÐáÊ´§ ¼Åà¾Õ§¤Ãѧé à´ÕÂÇàÁ×Íè Ëع ¹µ Robo-PICA à¤Å×Íè ¹·Õµè ç仢 ҧ˹ Ò

â»Ãá¡ÃÁ·Õè A10-1 ä¿Å SurveyBot.c â»Ãá¡ÃÁ¤Çº¤ØÁËع ¹µ Robo-PICA à¤Å×Íè ¹·Õäè Á µ¡âµ Ð (¨º)


àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC l 95

A10.3 ´Òǹ âËÅ´â»Ãá¡ÃÁä»ÂѧËع ¹µ Robo-PICA áÅ Ç» ´ÊÇÔµª POWER A10.4 »Å´ÊÒ´Òǹ âËÅ´ÍÍ¡¨Ò¡Ëع ¹µ A10.5 µÃǨÊͺ¡ÒõԴµÑ§é ἧǧ¨ÃµÃǨ¨Ñº¡ÒÃÊз ͹áʧÍÔ¹¿ÃÒàô·Ñ§é ÊͧªØ´¢Í§Ëع ¹µ Robo-PICA à¾×Íè ãË á¹ ã¨Ç Ò ¾Ã ÍÁ㪠§Ò¹ A10.6 ÇÒ§Ëع ¹µ Robo-PICA º¹âµ Ð ËÃ×ͺ¹¾×¹é ·ÕÁè ¡Õ ÒÃÊà ҧ¢Íºà¢µ´ ÇÂàÊ ¹ÊÕ´Òí A10.7 à» ´ÊÇÔµª POWER à¾×Íè ¨ ÒÂä¿àÅÕÂé § ¡´ÊÇÔµª RA4 º¹ºÍà ´ RBX-877 à¾×Íè àÃÔÁè µ ¹¡Ò÷íÒ§Ò¹¢Í§Ëع ¹µ Robo-PICA Ëع ¹µ Robo-PICA ¨Ðà¤Å×Íè ¹·Õµè ç仢 ҧ˹ ÒÍ ҧµ Íà¹×Íè §¾Ã ÍÁæ ¡Ñº¡ÒÃÍ Ò¹¤ Ò¨Ò¡µÑǵÃǨ¨Ñº¡Òà Êз ͹áʧÍÔ¹¿ÃÒàô·Ñé§ÊͧµÑÇ ¶ ÒËÒ¡µÑǵÃǨ¨Ñº¾ºÇ Ò ËØ ¹Â¹µ ¡íÒÅѧ¨Ðà¤Å×è͹·ÕèÍÍ¡¹Í¡¾×é¹·ÕèËÃ×͹͡¾×é¹ âµ Ð Ëع ¹µ ¨Ðà¤Å×Íè ¹·Õ¶è ÍÂËÅѧ·Ñ¹·Õ áÅ ÇËÁعµÑÇà¾×Íè à»ÅÕÂè ¹àÊ ¹·Ò§¡ÒÃà¤Å×Íè ¹·Õè


96 l àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

PIC

¡Ô¨¡ÃÃÁ·Õè 11

Ëع ¹µ Robo-PICA à¤Å×Íè ¹·Õµè ÒÁàÊ ¹´íÒ ¨Ò¡¡ÒõԴµÑ§é ἧǧ¨ÃµÃǨ¨Ñº¡ÒÃÊз ͹áʧÍÔ¹¿ÃÒàô㹡Ԩ¡ÃÃÁ·Õè 10 ¹Í¡¨Ò¡¨Ðà¢Õ¹ â»Ãá¡ÃÁà¾×Íè ¤Çº¤ØÁãË Ë¹Ø Â¹µ à¤Å×Íè ¹·Õäè Á µ¡âµ ÐáÅ Ç ÊÒÁÒöà»ÅÕÂè ¹â»Ãá¡ÃÁà¾×Íè ¤Çº¤ØÁãË Ë¹Ø Â¹µ à¤Å×Íè ¹·Õµè ÒÁàÊ ¹ä´ ´Ç Â

¡ÒÃÊà ҧʹÒÁÍ ҧ§ ÒÂÊíÒËÃѺ·´Êͺ¡ÒÃà¤Å×Íè ¹·Õµè ÒÁàÊ ¹ÊÕ´Òí ¡ÒÃÊà ҧʹÒÁà¾×Íè ãË Ë¹Ø Â¹µ Robo-PICA ·´Êͺà¤Å×Íè ¹·Õµè ÒÁàÊ ¹Í ҧ§ Ò ¨Ð㪠ἠ¹¾ÅÒʵԡÅÙ¡¿Ù¡ ÊÕ¢ÒÇ ¢¹Ò´ 90 x 160 ૹµÔàÁµÃ (ÍҨ㪠ÊÍÕ ¹×è æ ·Õàè » ¹ÊÕÊз ͹áÊ§ä´ ´)Õ ¡Ñºà·»¾Ñ¹ÊÒÂä¿ÊÕ´Òí (á¹Ð¹íÒÂÕËè Í 3M à¹×Íè §¨Ò¡ÊÒÁÒö´Ñ´â¤ §ä´ ´)Õ ¡ÒáíÒ˹´ÃٻẺ¡ÒÃÅÒ¡àÊ ¹ÊÒÁÒö·íÒà» ¹àÊ ¹·Ò§ÃٻẺµ Ò§æ µÒÁµ ͧ ¡Òà ã¹ÃÙ»·Õè A11-1 à» ¹µÑÇÍ ҧ¡ÒÃÊà ҧʹÒÁ⤠§Í ҧ§ ÒÂ Ê Ç¹ÃÙ»·Õè A11-2 à» ¹µÑÇÍ ҧʹÒÁ·ÕÁè àÕ Ê ¹µÑ´à» ¹ ·Ò§á¡áÅСÒÃàÅÕÂé Ç·íÒÁØÁ 45 ͧÈÒ

ÃÙ»·Õè A11-1 áÊ´§¡ÒÃ㪠෻¾Ñ¹ÊÒÂä¿à¾×Íè Êà ҧàÊ ¹ÊÕ´Òí º¹Ê¹ÒÁËع ¹µ

(¡)

(¢)

ÃÙ»·Õè A11-2 µÑÇÍ ҧ¢Í§ÃٻẺ¡ÒÃÊà ҧʹÒÁËع ¹µ Í ҧ§ ÒÂà¾×Íè ãË Ë¹Ø Â¹µ à¤Å×Íè ¹·Õµè ÒÁàÊ ¹


àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC l 97

ÃٻẺ·Õè 1 : ἧǧ¨ÃµÃǨ¨ÑºàÊ ¹·Ñ§é ÊͧµÑÇÍÂÙº ¹ ÃٻẺ·Õè 2 : ἧǧ¨ÃµÃǨ¨ÑºàÊ ¹·Ò§« ÒÂÍÂÙº ¹¾×¹é ¾×é¹ÊÕ¢ÒÇ µÕ¤ÇÒÁä´ Ç Ò ËØ ¹Â¹µ ¡íÒÅѧ¤Ã ÍÁÍÂÙ º¹àÊ ¹ ÊÕ´Òí áÅÐἧǧ¨ÃµÃǨ¨ÑºàÊ ¹·Ò§« ÒÂÍÂÙº ¹¾×¹é ¢ÒÇ µÕ¤ÇÒÁÇ Ò Ëع ¹µ ¡Òí Åѧà¤Å×Íè ¹·ÕÍè Í¡¹Í¡àÊ ¹ä»·Ò§¢ÇÒ ¨Ö§¡íÒ˹´ãË Ë¹Ø Â¹µ à¤Å×Íè ¹·Õäè »¢ ҧ˹ Ò µ ͧ¡íÒ˹´ãË Ë¹Ø Â¹µ à¤Å×Íè ¹·Õäè »·Ò§« Ò à¾×Íè ãË Ë¹Ø Â¹µ à¤Å×Íè ¹·Õ¡è ÅѺÁҤà ÍÁàÊ ¹ÊÕ´Òí àËÁ×͹à´ÔÁ

ÃٻẺ·Õè 3 : ἧǧ¨ÃµÃǨ¨ÑºàÊ ¹·Ò§¢ÇÒÍÂÙº ¹¾×¹é ÊÕ´íÒáÅÐἧǧ¨ÃµÃǨ¨ÑºàÊ ¹·Ò§« ÒÂÍÂÙ º¹¾×é¹´íÒ µÕ¤ÇÒÁÇ Ò Ëع ¹µ ¡Òí Åѧà¤Å×Íè ¹·ÕÍè Í¡¹Í¡àÊ ¹ä»·Ò§« Ò µ ͧ ¤Çº¤ØÁãË Ë¹Ø Â¹µ à¤Å×Íè ¹·Õ¡è ÅѺÁÒ·Ò§¢ÇÒ à¾×Íè ãË Ë¹Ø Â¹µ à¤Å×Íè ¹·Õ¡è ÅѺÁҤà ÍÁàÊ ¹ÊÕ´Òí àËÁ×͹à´ÔÁ

ÃٻẺ·Õè 4 : ἧǧ¨ÃµÃǨ¨ÑºàÊ ¹·Ñ§é ÊͧµÑÇÍÂÙº ¹ ¾×¹é ÊÕ´Òí µÕ¤ÇÒÁä´ ÇÒ Ëع ¹µ ÍÂÙº ÃÔàdz·Ò§á¡ ÍÒ¨Êѧè ãË Ë¹Ø Â¹µ à¤Å×Íè ¹·Õäè »¢ ҧ˹ Ò àÅÕÂé Ç« ÒÂËÃ×Í¢ÇÒ 90 ͧÈÒ ¡çä´

ÃÙ»·Õè A11-3 ÃٻẺ¡ÒÃà¤Å×Íè ¹·Õµè ÒÁàÊ ¹¢Í§Ëع ¹µ àÁ×Íè 㪠µÇÑ µÃǨ¨ÑºàÊ ¹ 2 µÑÇ


98 l àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

PIC

ÃٻẺáÅÐà§×Íè ¹ä¢¢Í§Ëع ¹µ à¤Å×Íè ¹·Õµè ÒÁàÊ ¹ ã¹ÃÙ»·Õè A11-3 à» ¹¡ÒÃÊÃØ»ÃٻẺ¡ÒÃà¤Å×Íè ¹·Õµè ÒÁàÊ ¹¢Ñ¹é ¾×¹é °Ò¹ã¹¡Ã³Õ·ãÕè ª µÇÑ µÃǨ¨ÑºàÊ ¹ 2 µÑÇ àÁ×Íè ¾Ô¨ÒóҨҡÃٻẺ¢Í§Ê¹ÒÁã¹ÃÙ»·Õè A11-2 (¡) Ëع ¹µ ¨ÐÁÕû٠Ẻ¡ÒÃà¤Å×Íè ¹·Õµè ÒÁ·Õáè Ê´§ã¹ÃÙ»·Õè A11-3 ·Ñ§é ÊÔ¹é 3 ÃٻẺ¤×Í ÃٻẺ·Õè 1 ¶Ö§ 3 áµ ¶Ò ʹÒÁÁÕ·Ò§á¡à¾ÔÁè ࢠÒÁҴѧÃÙ»·Õè A11-2 (¢) ¨Ö§µ ͧÁÕû٠Ẻ¡ÒÃà¤Å×Íè ¹·Õ¢è ͧËع ¹µ ã¹ÃٻẺ ·Õè 4 à¾ÔÁè ࢠÒÁÒ

¡ÒÃËÒ¤ Ò¡ÅÒ§ÃÐËÇ Ò§ÊÕ¢ÒÇáÅÐÊÕ´Òí ¤ Ò¡ÅÒ§ËÃ×ͤ ÒÍ Ò§Íԧ㪠ÊÒí ËÃѺà»ÃÕºà·Õºã¹â»Ãá¡ÃÁà¾×Íè 㪠໠¹à¡³± 㹡ÒõѴÊÔ¹ã¨Ç Ò ¢³Ð¹ÕËé ¹Ø Â¹µ ¾º¾×¹é ÊÕ´Òí ËÃ×Í¢ÒÇ ¶ Ò¤ Ò·ÕÍè Ò ¹ä´ ¨Ò¡á¼§Ç§¨ÃµÃǨ¨Ñº¡ÒÃÊз ͹áʧÍÔ¹¿ÃÒàô¹ ÍÂ¡Ç Ò¤ Ò¡ÅÒ§ µÕ¤ÇÒÁ ä´ ÇÒ ºÃÔàdz·ÕÍè Ò ¹¤ Òà» ¹¾×¹é ÊÕ´Òí ¶ Ò¤ Ò·ÕÍè Ò ¹ä´ ¨Ò¡á¼§Ç§¨ÃµÃǨ¨Ñº¡ÒÃÊз ͹áʧÍÔ¹¿ÃÒàôÁÒ¡¡Ç Ò¤ Ò¡ÅÒ§ µÕ¤ÇÒÁ ä´ ÇÒ ºÃÔàdz·ÕÍè Ò ¹¤ Òä´ à» ¹¾×¹é ÊÕ¢ÒÇ â´Â ¤ Ò¡ÅÒ§ ËÒä´ ¨Ò¡ : (¤ ÒµèÒí ÊØ´·Õµè ÇÑ µÃǨ¨ÑºÍ Ò¹ä´ ¨Ò¡¾×¹é ·ÕÊè ¢Õ ÒÇ + ¤ ÒÊÙ§ÊØ´·Õµè ÇÑ µÃǨ¨ÑºÍ Ò¹ä´ ¢Í§¾×¹é ·ÕÊè ´Õ Òí ) / 2

µÑÇÍ ҧ ¶ Ò¤ ÒµèÒí ÊØ´·Õµè ÇÑ µÃǨ¨ÑºÍ Ò¹ä´ ¨Ò¡¾×¹é ÊÕ¢ÒÇ෠ҡѺ 500 áÅФ ÒÊÙ§ÊØ´·ÕèµÑǵÃǨ¨ÑºÍ Ò¹ä´ ¨Ò¡¾×é¹ÊÕ ´íÒ෠ҡѺ 100 ¤ Ò¡ÅÒ§ = (500+100) / 2 = 300

»¯ÔºµÑ ¡Ô Òà A11.1 à¢Õ¹â»Ãá¡ÃÁ·Õè A11-1 ´ Ç mikroC IDE ·íÒ¡ÒäÍÁä¾Å ãË ä´ ä¿Å ¼ÅÅѾ¸ .hex A11.2 àª×Íè Áµ ͺÍà ´â»Ãá¡ÃÁࢠҡѺËع ¹µ Robo-PICA áÅоÍà µ USB ¢Í§¤ÍÁ¾ÔÇàµÍà A11.3 ´Òǹ âËÅ´â»Ãá¡ÃÁä»ÂѧËع ¹µ Robo-PICA » ´ÊÇÔµª POWER A11.4 »Å´ÊÒ´Òǹ âËÅ´·Ñ§é ËÁ´ÍÍ¡¨Ò¡Ëع ¹µ Robo-PICA A11.5 ¹íÒËع ¹µ Robo-PICA ÁÒÇÒ§¤Ã ÍÁàÊ ¹º¹Ê¹ÒÁ·Õàè µÃÕÂÁäÇ à» ´ÊÇÔµª POWER ·Õâè Á´ÙÅ LCD ¢Í§Ëع ¹µ Robo-PICA áÊ´§¢ ͤÇÒÁ << RA4 >> Start Line Tracking


àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC l 99 #include <motor.h> #include <adc.h>

// Motor Control library // Analog to Digital converter library

/*********** Text on LCD **************/ char *text0 = "Forward Only"; char *text1 = "Found Line" ; char *text2 = "On Left"; char *text3 = "On Right"; char *text4 = "Not Found Line"; char *text5 = "Cross Number"; char Cnt=0; // char txt[4]; // char First_Time=5; // int ADC1=0,ADC2=0; void main() { /* LCD Initial */ Lcd_Init(&PORTD); // Lcd_Cmd(LCD_CURSOR_OFF); // Lcd_Cmd(LCD_CLEAR); /* Sound Initial */ Sound_Init(&PORTC,0); /* Check Key Press*/ Lcd_Out(1,1, "<< RA4 >> Start"); Lcd_Out(2,1,"Line Tracking"); while(PORTA.F4==1); // while(1) { ADC1 =Adc_Rd(0); // ADC2 =Adc_Rd(1); // if ((ADC1<300)&&(ADC2<300)) // { if (First_Time!=0) // { First_Time=0; // Cnt++; Lcd_Cmd(LCD_CLEAR); // Lcd_Out(1,1,text5); Lcd_Out(2,1,text0); ByteToStr(Cnt,txt); // Lcd_Out(1,13,txt); // Sound_Play(250,100); // Forward(255); // Delay_ms(400); } } if ((ADC1>300)&&(ADC2>300)) // { if (First_Time!=1) // { First_Time=1; // Lcd_Cmd(LCD_CLEAR); // Lcd_Out(1,1,text4); Lcd_Out(2,1,text0); Forward(255); } }

Counter Save string Save status

Init LCD port LCD cursor off

Start program when press RA4 switch Reading sensor from left Reading sensor from right Check both sensors detect white Check as first time ? Change status => Second_Time Show ==> LCD Convert counter to string Show counter ==> LCD Play sound when meet the crossing Running Robot

Check both sensor detect white area Check first time ? Change status => Second_Time Shcw ==> LCD

â»Ãá¡ÃÁ·Õè A11-1 ä¿Å TracklineBot.c â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ¤Çº¤ØÁãË Ë¹Ø Â¹µ Robo-PICA à¤Å×Íè ¹·Õè µÒÁàÊ ¹ÊÕ´Òí ẺÁÕ¡ÒõÃǨÊͺ·Ò§á¡ (ÁÕµÍ )


100 l àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

if (ADC1<300) { S_Left(255); if (First_Time!=2) { First_Time=2; Lcd_Cmd(LCD_CLEAR); Lcd_Out(1,1,text1); Lcd_Out(2,1,text2); } } if (ADC2<300) { S_Right(255); if (First_Time!=3) { First_Time=3; Lcd_Cmd(LCD_CLEAR); Lcd_Out(1,1,text1); Lcd_Out(2,1,text3); } }

PIC

// Left Sensor detect black line // Turn left // Clear first time status // Show ==> LCD

// Right sensor detect black line // Turn right // Clear first time status // Show ==> LCD

} }

¡Ò÷íÒ§Ò¹¢Í§â»Ãá¡ÃÁ ËÅѧ¨Ò¡áÊ´§¼Å·Õâè Á´ÙÅ LCD áÅÐÃÍÃѺ¡Òá´ÊÇÔµª RA4 ¨Ò¡¼Ùã ª áÅ Ç â»Ãá¡ÃÁ¨ÐÍ Ò¹¤ Ҩҡἧ ǧ¨ÃµÃǨ¨ÑºáʧÊз ͹ÍÔ¹¿ÃÒàô·Ñ§é Êͧ¢ Ò§ÁÒà¡çºäÇ ã¹µÑÇá»Ã ¡ ͹·Õ¨è йíÒ¤ Òä»à»ÃÕºà·Õºã¹â»Ãá¡ÃÁ â´Â¤ ÒÍ Ò§ÍÔ§à¾×Íè 㪠㹡ÒÃà»ÃÕºà·Õº¢ÒÇáÅдíÒµÑ§é ¤ ÒäÇ ·Õè 300 ¤ Ò¹ÕÍé Ò¨¨ÐÁÒ¡ËÃ×͹ ÍÂ¡Ç Ò¹Õ¡é äç ´ ¶ Ò¤ Ò·ÕÍè Ò ¹ä´ ÁÒ¡¡Ç Ò 300 ·Ñ§é ¤Ù áÊ´§Ç Ò µÃǨ¨Ñº¾º¾×¹é ÊÕ¢ÒÇ ¨Ö§¤Çº¤ØÁãË Ë¹Ø Â¹µ à¤Å×Íè ¹·Õµè ç 仢 ҧ˹ Ò ¾Ã ÍÁ·Ñ§é áÊ´§¢ ͤÇÒÁ·Õâè Á´ÙÅ LCD ¶ Ò¤ Ò·ÕÍè Ò ¹ä´ ¹Í Â¡Ç Ò 300 ·Ñ§é ¤Ù áÊ´§Ç Ò µÃǨ¨Ñº¾º¾×¹é ËÃ×ÍàÊ ¹ÊÕ´Òí ·Ñ§é ¤Ù ¨Ö§·íÒ¡ÒÃà¾ÔÁè ¤ ÒµÑǹѺ ¢Ö¹é 1 ¤ Ò à» ¹¡ÒÃºÍ¡Ç Ò ¾º·Ò§á¡áÅ Ç ¨Ò¡¹Ñ¹é ¹íҼšÒ÷íÒ§Ò¹ä»áÊ´§·Õâè Á´ÙÅ LCD áÅÐÊ §àÊÕ§ µÔ´ê ÍÍ¡ÁÒ 1 ¤ÃÑ§é ¾Ã ÍÁ·Ñ§é ¤Çº¤ØÁãË Ë¹Ø Â¹µ à¤Å×Íè ¹·Õµè ç仢 ҧ˹ Ò 0.4 ÇÔ¹Ò·Õ à¾×Íè ãË àÅ·ҧá¡ ¶ ÒµÑǵÃǨ¨ÑºàÊ ¹·Ò§« Ò¾º¾×¹é ËÃ×ÍàÊ ¹ÊÕ´Òí ¨Ð¤Çº¤ØÁãË Ë¹Ø Â¹µ àÅÕÂé Ç« Ò ¾Ã ÍÁáÊ´§¢ ͤÇÒÁ·Õè LCD ¶ ÒµÑǵÃǨ¨ÑºàÊ ¹·Ò§¢ÇÒ¾º¾×¹é ËÃ×ÍàÊ ¹ÊÕ´Òí ¨Ð¤Çº¤ØÁãË Ë¹Ø Â¹µ àÅÕÂé Ç¢ÇÒ ¾Ã ÍÁ·Ñ§é áÊ´§¢ ͤÇÒÁ ·Õâè Á´ÙÅ LCD µÑÇá»Ã First_Time ª ÇÂ㹡ÒÃáÊ´§¼Å¢ ͤÇÒÁ·Õâè Á´ÙÅ LCD äÁ ãË Á¡Õ ÒÃà¤ÅÕÂà ˹ Ҩͺ ÍÂà¡Ô¹ ä» ¨¹à¡Ô´¡ÒáоÃÔº â»Ãá¡ÃÁ¨ÐáÊ´§Ë¹ Ò¨Íà¾Õ§¤Ãѧé à´ÕÂÇàÁ×Íè ࢠÒä»·íÒ§Ò¹ã¹à§×Íè ¹ä¢¹Ñ¹é æ à· Ò¹Ñ¹é ¡ÒÃáÊ´§¼Å·Õâè Á´ÙÅ LCD 㹡óÕàÅÕÂé Ç« ÒÂáÅТÇÒÍÒ¨ÁͧäÁ ·¹Ñ à¹×Íè §¨Ò¡à¡Ô´¢Ö¹é ¤ ͹¢ Ò§àÃçÇ ¶ ÒÁÕ¡Òà »ÃѺà»ÅÕÂè ¹ä»ãª ÁÍàµÍà ·ÁÕè ¤Õ ÇÒÁàÃçÇÊÙ§¢Ö¹é á¹Ð¹íÒãË ¹Òí ¤íÒÊÑ§è ·Õãè ª 㹡ÒÃáÊ´§¼ÅâÁ´ÙÅ LCD ÍÍ¡ à¹×Íè §¨Ò¡ ÍÒ¨·íÒãË â»Ãá¡ÃÁ·íÒ§Ò¹äÁ ·¹Ñ

â»Ãá¡ÃÁ·Õè A11-1 ä¿Å TracklineBot.c â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ¤Çº¤ØÁãË Ë¹Ø Â¹µ Robo-PICA à¤Å×Íè ¹·Õè µÒÁàÊ ¹ÊÕ´Òí ẺÁÕ¡ÒõÃǨÊͺ·Ò§á¡ (¨º)


àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC l 101

A11.6 ¡´ÊÇÔµª RA4 º¹ºÍà ´¤Çº¤ØÁ¢Í§Ëع ¹µ à¾×Íè ãË Ë¹Ø Â¹µ ·Òí §Ò¹ áÅ ÇÊѧࡵ¼Å¡Ò÷íÒ§Ò¹·Õàè ¡Ô´¢Ö¹é Ëع ¹µ Robo-PICA àÃÔÁè à¤Å×Íè ¹·Õµè ÒÁàÊ ¹ â´ÂÁÕ¡ÒõÃǨÊͺà§×Íè ¹ä¢¨Ò¡¼Å¢Í§¡ÒõÃǨ¨ÑºàÊ ¹·Ñ§é 4 ÃٻẺ â´Â੾ÒÐà¾×Íè à¤Å×Íè ¹·Õäè »¾º·Ò§á¡ Ëع ¹µ Robo-PICA ¨Ð¢ÑºàÊÕ§ÍÍ¡ÁÒ 1 ¤ÃÑ§é ¾Ã ÍÁ·Ñ§é ¹Ñº¨íҹǹ ·Ò§á¡à¡çºäÇ áŠǹíÒÁÒáÊ´§¼Å·Õâè Á´ÙÅ LCD ¹Í¡¨Ò¡¹Ñ¹é ã¹·Ø¡æ ¤ÃÑ§é ·Õ¾è ºà§×Íè ¹ä¢áÅзíÒãË µÍ §ÁÕ¡ÒÃà»ÅÕÂè ¹á»Å§ÅѡɳСÒÃà¤Å×Íè ¹·Õè Ëع ¹µ RoboPICA ¨ÐáÊ´§¼Å¡Ò÷íÒ§Ò¹º¹âÁ´ÙÅ LCD ´ ÇÂ

INNOVATIVE EXPERIMENT


102 l àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

PIC


àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC l 103

º··Õè 8

Ëع ¹µ Robo-PICA ¡Ñº¡ÒäǺ¤ØÁ ÃÐÂÐä¡Å´ ÇÂáʧÍÔ¹¿ÃÒàô ÃÕâÁµ¤Í¹â·ÃÅ (remote control) á»Åà» ¹ä·ÂÍ ҧ§ ÒÂæ ¤×Í Ê Ç¹¤Çº¤ØÁ¨Ò¡ÃÐÂÐä¡Å ÊíÒËÃѺ¡Ô¨¡ÃÃÁ¹Õ¨é Ð㪠ÃâÕ Áµ¤Í¹â·ÃÅ㹡ÒÃÊ §¢ ÍÁÙŤǺ¤ØÁ ¼ÊÁ¡ÑºáʧÍÔ¹¿ÃÒàô â´Â㪠ÃâÕ Áµ ¤Í¹â·ÃÅ Easy Remote4 ËÃ×Í ER-4 ÊíÒËÃÑºÊ §¢ ÍÁÙÅáÅÐἧǧ¨ÃÃѺáʧÍÔ¹¿ÃÒàô 38kHz ËÃ×Í ºÍà ´ ZX-IRM 㹡ÒÃÃѺ¢ ÍÁÙÅ â´Â¢ ÍÁÙÅ·Õäè ´ ÃºÑ Áҹѹé ÊÒÁÒö¹íÒä»ãª 㹡ÒäǺ¤ØÁãË Ë¹Ø Â¹µ Robo-PICA ·íÒ§Ò¹ä´ µÒÁµ ͧ¡ÒÃ

8.1 ÃÕâÁµ¤Í¹â·ÃÅ ER-4 ÃÕâÁµ¤Í¹â·ÃÅ ER-4 à» ¹ÃÕâÁµ¤Í¹â·ÃÅẺÍÔ¹¿ÃÒàô·ÕÍè ͡ẺãË ãª §Ò¹ä´ Í๡»ÃÐʧ¤ â´Â㹡ÒÃÊ §ÊÑ­­Ò³ÍÍ¡¹Ñ¹é ¨Ðà» ¹¢ ÍÁÙÅ͹ءÃÁ·Õ¼è ÊÁ¡Ñº¤Å×¹è ¾ÒË 38kHz â´Â¡Ãкǹ¡Ò÷ѧé ËÁ´ ä´ ÃºÑ ¡ÒäǺ¤ØÁ¨Ò¡äÁâ¤Ã¤Í¹â·ÃÅàÅÍà º¹µÑÇÃÕâÁµ¤Í¹â·ÃÅà¾Õ§µÑÇà´ÕÂÇ +3-5V

K A IR-LED Easy remote4

2-5V

+

7

5

SW3

* )

(¢)

ÃÙ»·Õè 8-1 ÃÕâÁµ¤Í¹â·ÃÅ ER4 (¡) Ãٻà ҧ˹ ÒµÒ (¢) ¡ÒèѴÇÒ§µíÒá˹ §¢Í§ÊÇÔµª ¡´ (¤) ǧ¨Ã¢Í§ÃÕâÁµ¤Í¹â·ÃÅ ER-4

"D" SW3

GP0

V,, GP5

6

SW2 "C"

LED1 IR-LED

1

SW1 "B"

,

(¡)

"A"

3

GP1

IC1 ER4-FW

GP2

GP4

GND 8

(¤)

2

R1 1k Q1 BC338


104 l àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

PIC

8.1.1 ¤Ø³ÊÁºÑµ·Ô ҧ෤¹Ô¤ 㪠äÁâ¤Ã¤Í¹â·ÃÅàÅÍà ¤Çº¤ØÁ¡ÒÃÊà ҧáÅÐÊ §ÊÑ­­Ò³¢ ÍÁÙÅ l 㪠LED ÍÔ¹¿ÃÒàô¢¹Ò´ 3 ÁÔÅÅÔàÁµÃ ÃÐÂзíÒ¡Òà 8-10 àÁµÃã¹¾×¹ é ·Õâè Å § l ÁÕÊÇÔµª ¤Çº¤ØÁÍÔÊÃе ͡ѹ 4 ª ͧ ·íÒ§Ò¹ã¹ÅѡɳС´µÔ´ ¡´´Ñº l ¡Ô¹¡íÒÅѧ§Ò¹µèÒ í â´ÂࢠÒÊÙâ ËÁ´»ÃÐËÂÑ´¾Åѧ§Ò¹·Ñ¹·ÕàÁ×Íè Ê §¢ ÍÁÙÅáÅ Ç l 㪠ä¿àÅÕÂ é § 2.4-3.0V ¨Ò¡áºµàµÍÃÕè AA ¨íҹǹ 2 ¡ ͹ ãª ä´ ·§Ñé Ẻ¸ÃÃÁ´ÒáÅлÃШØä´ l Ê §¢ ÍÁÙÅÍ͡Ẻ͹ءÃÁ´ ÇÂÁҵðҹ RS-232 ÍѵÃҺʹ 1,200 ºÔµµ ÍÇÔ¹Ò·Õ ã¹ÃٻẺ 8N1 (ºÔµ¢ ÍÁÙÅ 8 ºÔµ äÁ Á¡Õ ÒõÃǨÊͺ¾ÒÃÔµÕé áÅкԵ» ´· Ò 1 ºÔµ) l

8.1.2 ¡Ò÷íÒ§Ò¹¢Í§Ç§¨Ã ǧ¨Ã¢Í§ÃÕâÁµ¤Í¹â·ÃÅ ER-4 áÊ´§ã¹ÃÙ»·Õè 8-1 (¤) ¨ÐàËç¹Ç ÒÁÕÍ»Ø ¡Ã³ ¹Í ÂÁÒ¡ ÁÕà¾Õ§ÊÇÔµª ·Õè µ ÍࢠҡѺ¢Ò GP0,GP1, GP2 áÅÐ GP4 ¢Í§ IC1 «Ö§è 㪠äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC12F629 ෠ҹѹé äÁ ¨Òí à» ¹µ ͧµ ͵Ñǵ Ò¹·Ò¹¾ÙÅÍÑ»ÀÒ¹͡à¹×Íè §¨Ò¡¡íÒ˹´ãË Á¡Õ ÒþÙÅÍÑ»ä´ ¼Ò ¹·Ò§«Í¿µ áÇÃ Ê Ç¹¡ÒâѺ LED ÍÔ¹¿ÃÒàôà¾×Íè ãË Á¡Õ Òí ÅÑ§Ê §ÊÙ§ ÊÒÁÒÃ¶Ê §ä´ ä¡Å ¨Ö§µ ͼ ҹǧ¨Ã¢ÂÒÂâ´Â㪠·ÃÒ¹«ÔÊàµÍà Q1

8.1.3 ÃٻẺ¡ÒÃÊ §¢ ÍÁÙŢͧÃÕâÁµ¤Í¹â·ÃÅ ER-4 à¾×Íè ãË ÀÒ¤ÃѺÊÒÁÒÃ¶Í Ò¹¢ ÍÁÙÅ¡Òá´ÊÇÔµª ¨Ò¡ÃÕâÁµ¤Í¹â·ÃÅä´ â´Â§ Ò 㹡ÒÃÊ §¢ ÍÁÙÅ ¢Í§ Easy remote4 ¨Ö§ãª ¡ÒÃÊ §¢ ÍÁÙÅẺ͹ءÃÁ µÒÁÁҵðҹ RS-232 ´ ÇÂÍѵÃҺʹ 1,200 ºÔµµ Í ÇÔ¹Ò·Õ ã¹ÃٻẺ 8N1 ¢ ÍÁÙÅ·ÕÊè § ¹Ñ¹é à» ¹µÑÇÍÑ¡Éâֹé ÍÂÙ¡ ºÑ ¡Òá´ÊÇÔµª µÇÑ ã´ ´Ñ§áÊ´§µíÒá˹ §¢Í§ ÊÇÔµª ã¹ÃÙ»·Õè 8-1 (¢) ¡´ÊÇÔµª A Ê §¢ ÍÁÙŵÑÇÍÑ¡Éà A µÑǾÔÁ¾ ãË­ ÊÅѺµÑǾÔÁ¾ àÅç¡ ¡´ÊÇÔµª B Ê §¢ ÍÁÙŵÑÇÍÑ¡Éà B µÑǾÔÁ¾ ãË­ ÊÅѺµÑǾÔÁ¾ àÅç¡ ¡´ÊÇÔµª C Ê §¢ ÍÁÙŵÑÇÍÑ¡Éà C µÑǾÔÁ¾ ãË­ ÊÅѺµÑǾÔÁ¾ àÅç¡ ¡´ÊÇÔµª D Ê §¢ ÍÁÙŵÑÇÍÑ¡Éà D µÑǾÔÁ¾ ãË­ ÊÅѺµÑǾÔÁ¾ àÅç¡ ÊÒà˵طÊÕè § ÊÅѺµÑǾÔÁ¾ ãË­ ¡ºÑ µÑǾÔÁ¾ àÅç¡à¾×Íè ãË µÇÑ ÃѺ·ÃÒºÇ Ò ¡Òá´ÊÇÔµª ¹¹Ñé à» ¹¡Òá´ Ẻ¤ Ò§µ Íà¹×Íè § ËÃ×Íà» ¹¡ÒᴻŠÍÂà» ¹¨Ñ§ËÇÐ «Ö§è ¨ÐãË ¼ÅÅѾ¸ 㹡ÒäǺ¤ØÁ·Õáè µ¡µ Ò§¡Ñ¹ ¹Ñ¹è ¤×Ͷ Ò¡´ÊÇÔµª à» ¹¨Ñ§ËÇÐ ¤ÃÑé§áá¨ÐÊ §¢ ÍÁÙŵÑÇÍÑ¡ÉÃẺµÑǾÔÁ¾ ãË­ ¶ Ò¡´µÑÇà´ÔÁ㹤ÃÑ駵 ÍÁÒ ¢ ÍÁÙÅ·ÕÊè § ÍÍ¡¨Ðà» ¹µÑÇÍÑ¡ÉÃẺµÑǾÔÁ¾ àÅç¡ áµ ¶Ò ËÒ¡¡´¤ Ò§µ Íà¹×Íè § ¨ÐÊ §¢ ÍÁÙŵÑÇÍÑ¡ÉÃẺ Å ÒÊØ´¹Ñé¹ÍÍ¡ÁÒµÅÍ´àÇÅÒ


àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC l 105

0.1uF 50V

3 1 Out 2 GND

1

3 Vcc 1

2

3

Vcc Out GND

2

ἧǧ¨ÃâÁ´ÙÅÃѺáʧÍÔ¹¿ÃÒàô 38 kHz

Infrared Module

ÃÙ»·Õè 8-2 ZX-IRM ἧǧ¨ÃâÁ´ÙÅÃѺáʧÍÔ¹¿ÃÒàô (¡) Ãٻà ҧ¢Í§á¼§Ç§¨Ã (¢) ǧ¨Ã¢Í§ ZX-IRM

8.2 ἧǧ¨ÃâÁ´ÙÅÃѺáʧÍÔ¹¿ÃÒàô 38kHz : ZX-IRM ¨Ò¡º·¡ ͹˹ Ò¹Õ¡é Å ÒǶ֧¡ÒÃÊз ͹áʧâ´Âãª Ç¸Ô ¡Õ ÒÃÊ §áʧÍÔ¹¿ÃÒàôÍÍ¡ä» áÅ ÇÃÍÃѺ ¡ÒÃÊз ͹¡ÅѺÁÒ´ ÇÂâ¿âµ ·ÃÒ¹«ÔÊàµÍà «Öè§ÍÂÙ ã¹âÁ´ÙÅà´ÕÂǡѹ ·íÒãË ÃÐÂзҧ㹡ÒÃÊ §áÅÐÃѺ áʧ¹Ñ¹é ·íÒä´ ã¹ª ǧÊѹé æ ÊíÒËÃѺ¡ÒÃÊ §áʧÍÔ¹¿ÃÒàô¨Ò¡µÑÇÊ §·ÕÍè ÂÙä ¡Å (ÃÐÂзíÒ¡ÒûÃÐÁÒ³ 5 ¶Ö§ 10 àÁµÃ àËÁ×͹ ¡ÑºÃÕâÁµ¤Í¹â·ÃŢͧà¤Ã×èͧÃѺâ·Ã·Ñȹ ) ¨Ðµ ͧ㪠ÇÔ¸Õ¡ÒüÊÁ¤ÇÒÁ¶Õè¾ÒË à¢ Ò¡Ñº¢ ÍÁÙÅ·Õèµ Í§¡ÒÃ Ê §ÍÍ¡ä» à¾×Íè » ͧ¡Ñ¹áʧÍÔ¹¿ÃÒàô¨Ò¡ÀÒ¹͡ÁÒú¡Ç¹ÊÑ­­Ò³·ÕÊè § ÍÍ¡ä» «Ö§è ·íÒãË ÀÒ¤ÃѺ ¨Ðµ ͧ¡Ãͧ¤ÇÒÁ¶Õ¾è ÒË ·ÃÕè ºÑ ä´ ÍÍ¡¡ ͹ ¨Ò¡¹Ñ¹é ¨Ö§¹íÒÊÑ­­Ò³¢ ÍÁÙÅÊ §ä»ãË äÁâ¤Ã¤Í¹â·ÃÅàÅÍà µ Íä» ´ Ç¡ÒÃ㪠ʭ Ñ ­Ò³¾ÒË áÅТÂÒÂÊÑ­­Ò³¹Õàé ͧ·íÒãË ÊÒÁÒÃ¶Ê §¢ ÍÁÙÅä´ ä¡Å¶Ö§ 10 àÁµÃ ÊíÒËÃѺâÁ´ÙÅÍÔ¹¿ÃÒàô·Õãè ª ¡ºÑ ἧǧ¨Ã ZX-IRM ¨Ð¡Ãͧ¤ÇÒÁ¶Õ¾è ÒË ·¤Õè ÇÒÁ¶Õè 38 kHz áÅÐ ¢ ÍÁÙÅ·ÕÃè ºÑ ä´ ¨Ð¶Ù¡Ê §ÍÍ¡·Ò§¢Ò Out «Ö§è ã¹ÊÀÒÇл¡µÔ·äÕè Á ä´ ÃºÑ ÊÑ­­Ò³¨ÐÁÕÅͨԡ 1 (»ÃÐÁÒ³ +5V) áµ àÁ×Íè ä´ ÃºÑ ÊÑ­­Ò³¶Ù¡Ê §à¢ ÒÁÒ·Õµè ÇÑ Áѹ¨ÐÁÕÅͨԡ໠¹ 0 (0 V) ã¹ÃÙ»·Õè 8-2 áÊ´§Ãٻà ҧáÅРǧ¨Ã¢Í§ ZX-IRM ἧǧ¨ÃâÁ´ÙÅÃѺáʧÍÔ¹¿ÃÒàô 38kHz


106 l àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

PIC

8.3 ÃÙ¨ ¡Ñ ¡Ñº¡ÒÃÍÔ¹àµÍÃ Ã»Ñ µ 㹡Ò÷íÒ§Ò¹â´Â»¡µÔ¢Í§äÁâ¤Ã¤Í¹â·ÃÅàÅÍà ¨Ð·íÒ§Ò¹µÒÁÅíҴѺ¤íÒÊÑè§ä»Í ҧµ Íà¹×èͧ áµ ¡Áç ¡Õ Ò÷íҧҹ㹺ҧ¤ÃÑ§é ·Õàè ¡Ô´¢Ö¹é Í ҧ੾ÒÐà¨ÒШ§ áÅШíÒà» ¹µÑͧ¢Ñ´¨Ñ§ËÇСÃкǹ¡Ò÷íÒ§Ò¹ ËÅÑ¡ ¡ÒâѴ¨Ñ§ËÇÐã¹ÃкºäÁâ¤Ã¤Í¹â·ÃÅàÅÍà ¨ÐàÃÕÂ¡Ç Ò ¡ÒÃÍÔ¹àµÍÃ Ã»Ñ µ (interrupt) ã¹Ëع ¹µ Robo-PICA ¨Ð㪠¤ÇÒÁÊÒÁÒö¹Õãé ¹¡ÒÃÃѺ¢ ÍÁÙÅ͹ءÃÁ¨Ò¡ÃÕâÁµ¤Í¹â·ÃÅ ER4 à¹×Íè §¨Ò¡µ ͧÃѺ¢ ÍÁÙŤíÒÊÑ§è ¨Ò¡ÊÇÔµª ·¶Õè ¡Ù ¡´ áŠǹíÒ¤ ÒÊÇÔµª ¹¹Ñé 仡íÒ˹´¡Ò÷íÒ§Ò¹¢Í§Ëع ¹µ µ Íä» ¡Òõͺʹͧµ Í¡ÒâѴ¨Ñ§ËÇÐËÃ×ÍÍÔ¹àµÍÃ Ã»Ñ µ ¹àÕé ÃÕÂ¡Ç Ò ¡ÒúÃÔ¡ÒÃÍÔ¹àµÍÃ Ã»Ñ µ (interrupt service) «Ö§è µ ͧ㪠¡Ãкǹ¡Ò÷ҧ«Í¿µ áÇà ࢠÒÁÒà ÇÁ´ Ç 㹠mikroC ¤ÍÁä¾àÅÍÃ ä´ àµÃÕÂÁ¿ §¡ ª¹Ñè ÊíÒËÃѺµÍºÊ¹Í§ËÃ×ͺÃÔ¡ÒÃÍÔ¹àµÍÃ Ã»Ñ µ ¹äÕé Ç ´Ç  ¹Ñ¹è ¤×Í ¿ §¡ ª¹Ñè void interrupt()

8.4 ÍÔ¹àµÍÃ Ã»Ñ µ ã¹ PIC16F887 ·Õàè ¡ÕÂè Ç¢ ͧ¡Ñº¡ÒäǺ¤ØÁËع ¹µ Robo-PICA áËÅ §¡íÒà¹Ô´ÊÑ­­Ò³ÍÔ¹àµÍÃ Ã»Ñ µ ÊÒí ËÃѺäÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC16F887 ÁÕËÅÒÂáËÅ § ઠ¹ ÍÔ¹àµÍÃ Ã»Ñ µ ¨Ò¡ä·àÁÍà à¤Ò¹ àµÍà , ÍÔ¹àµÍÃ Ã»Ñ µ ¨Ò¡ÀÒ¹͡¼ Ò¹·Ò§¢Ò RB0/INT, ÍÔ¹àµÍÃ Ã»Ñ µ ¨Ò¡¡ÒÃà¢Õ¹¢ ÍÁÙÅÍÕÍ¾Õ ÃÍÁàÊÃç¨ÊÁºÙó , ÍÔ¹àµÍÃ Ã»Ñ µ ¨Ò¡¡Ò÷íÒ§Ò¹¢Í§âÁ´ÙÅ ADC à» ¹µ ¹ áµ ÊÒí ËÃѺã¹Ëع ¹µ Robo-PICA ¨Ð¡Å ÒǶ֧੾ÒÐÍÔ¹àµÍÃ Ã»Ñ µ ¨Ò¡ÀÒ¹͡¼ Ò¹·Ò§¢Ò RB0/ INT ෠ҹѹé à¹×Íè §¨Ò¡µ ͧ¡ÒÃ㪠¡ÒÃÍÔ¹àµÍÃ Ã»Ñ µ Ẻ¹Õãé ¹¡ÒÃÃѺ¢ ÍÁÙŨҡÃÕâÁµ¤Í¹â·ÃÅ ¡ÒÃàÍç¹àÍàºÔÅËÃ×Íà» ´ãª §Ò¹ÍÔ¹àµÍÃ Ã»Ñ µ · ¢Õè Ò RB0/INT ¨Ðµ ͧ·íÒµÒÁ¢Ñ¹é µÍ¹´Ñ§µ Í仹Õé (1) ¡íÒ˹´¢Ò¾Íà µ RB0 ãË à» ¹¢ÒÍÔ¹¾Øµ´Ô¨µÔ ÍÅ (2) ¡íÒ˹´ãË Í¹Ô àµÍÃ Ã»Ñ µ à¡Ô´¢Ö¹é àÁ×Íè ¢Ò¾Íà µà»ÅÕÂè ¹Ê¶Ò¹Ð¨Ò¡ Åͨԡ 1 à» ¹ 0 â´Â¡íÒ˹´·ÕèºÔµ INTEDG ã¹ÃÕ¨ÔÊàµÍà OPTION ãË à» ¹ 0 à¹×èͧ¨Ò¡¡ÒÃÃѺ¢ ÍÁÙŨҡÃÕâÁµ ¤Í¹â·ÃŢͧἧǧ¨Ã ZX-IRM ¨ÐàÃÔÁè ·íÒ§Ò¹àÁ×Íè à»ÅÕÂè ¹Ê¶Ò¹Ð¨Ò¡Åͨԡ 1 à» ¹ 0 (3) àÍç¹àÍàºÔÅ¡ÒÃÍÔ¹àµÍÃ Ã»Ñ µ ·¢Õè Ò RB0/INT ´ Ç¡ÒÃ૵ºÔµ INTE ã¹ÃÕ¨ÊÔ àµÍà INTCON (4) àÍç¹àÍàºÔÅ¡ÒÃÍÔ¹àµÍÃ Ã»Ñ µ ·§Ñé Ãкº ´ Ç¡ÒÃ૵ºÔµ GIE ã¹ÃÕ¨ÊÔ àµÍà INTCON (5) àÁ×Íè à¡Ô´ÍÔ¹àµÍÃ Ã»Ñ µ ¢¹Öé â»Ãá¡ÃÁ¨Ð¡ÃÐâ´´ä»·íÒ§Ò¹·Õ¿è § ¡ ª¹Ñè interrupt (6) ·Õè¿ §¡ ªÑè¹ interrupt µ ͧÁÕ¤íÒÊÑè§à¤ÅÕÂà á¿Å¡ÍÔ¹àµÍà ÃÑ»µ ´ Ç â´Âµ ͧà¤ÅÕÂà ºÔµ INTF ã¹ÃÕ¨ÊÔ àµÍà INTCON


àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC l 107

¡Ô¨¡ÃÃÁ·Õè 12

·´Êͺ¡ÒÃÍÔ¹àµÍà ÃÑ»µì

㹡Ԩ¡ÃÃÁ¹Õ¹é Òí àʹ͵ÑÇÍ ҧ¡Ò÷´ÊͺáÅÐ㪠§Ò¹¡ÒÃÍÔ¹àµÍÃ Ã»Ñ µ ·¢Õè Ò RB0/INT Í ҧ§ Ò A12.1 à¢Õ¹â»Ãá¡ÃÁ·Õè A12-1 ´ Ç mikroC IDE ·íÒ¡ÒäÍÁä¾Å ãË ä´ ä¿Å ¼ÅÅѾ¸ .hex A12.2 àª×Íè Áµ ͺÍà ´â»Ãá¡ÃÁࢠҡѺËع ¹µ Robo-PICA áÅоÍà µ USB ¢Í§¤ÍÁ¾ÔÇàµÍà A12.3 ´Òǹ âËÅ´â»Ãá¡ÃÁä»ÂѧËع ¹µ Robo-PICA void interrupt() // Interrupt Service routine { Sound_Play(250,200); // Show Sound INTCON.INTF=0; // Clear Flag Interrupt } void main() { /********************************************/ ANSELH.F4=0; // RB0 ==> Digital IO OPTION_REG.INTEDG = 0; // INT falling edge INTCON.INTE =1; // Enable INT/PB0 INTCON.GIE =1; // Enable Global interrupt /********************************************/ TRISB.F3=0; Sound_Init(&PORTC,0); // Init Sound ==> RC0 Lcd_Init(&PORTD); // Init LCD PORT D Lcd_Cmd(LCD_CURSOR_OFF); // LCD cursor off Lcd_Cmd(LCD_CLEAR); Lcd_Out(1,1, "<< RA4 >> Start"); Lcd_Out(2,1,"Test Interrupt"); while(PORTA.F4==1); // Start Program when Press RA4 /********************************************/ Lcd_Cmd(LCD_CLEAR); Lcd_Out(1,1, "Start Program"); // Main Program while(1) { PORTB.F3=1; // Blinking LED Delay_ms(500); PORTB.F3=0; Delay_ms(500); } }

¡Ò÷íÒ§Ò¹¢Í§â»Ãá¡ÃÁ â»Ãá¡ÃÁËÅÑ¡¨Ðǹ¢Ñº LED ãË µ´Ô áÅдѺÊÅѺ¡Ñ¹ àÁ×Íè ¡´ÊÇÔµª ·¢Õè Ò RB0 ¨Ðà¡Ô´¡ÒÃÍÔ¹àµÍÃ Ã»Ñ µ ¢¹Öé «Õ¾ÂÕ ¨Ù СÃÐâ´´ä»Âѧ¿ §¡ ª¹Ñè ºÃÔ¡ÒÃÍÔ¹àµÍÃ Ã»Ñ µ à¾×Íè ¡ÃзíÒ¤íÒÊÑ§è ¡íÒà¹Ô´àÊÕ§ áÅС ͹ÍÍ¡¨Ò¡¿ §¡ ª¹Ñè ºÃÔ¡Òà ÍÔ¹àµÍÃ Ã»Ñ µ µ ͧà¤ÅÕÂà ºµÔ á¿Å¡ÍÔ¹àµÍÃ Ã»Ñ µ INTF ¡ ͹àÊÁÍ

â»Ãá¡ÃÁ·Õè A12-1 ä¿Å inttest.c â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ·´Êͺ¡ÒÃÍÔ¹àµÍÃ Ã»Ñ µ ·¢Õè Ò RB0/INT


108 l àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

PIC

¡´ÊÇÔµª à¾×Íè ãË à¡Ô´ÍÔ¹àµÍÃ Ã»Ñ µ

ÃÙ»·Õè A12-1 µíÒá˹ §¢Í§ÊÇÔµª RB0 º¹ºÍà ´¤Çº¤ØÁ¢Í§Ëع ¹µ Robo-PICA ·Õãè ª 㹡Ò÷´Êͺ ¡ÒÃÍÔ¹àµÍÃ Ã»Ñ µ A12.4 Ãѹâ»Ãá¡ÃÁ ¨Ò¡¹Ñ¹é ·´Êͺ¡´ÊÇÔµª RB0 áÅ ÇÊѧࡵ¡Ò÷íÒ§Ò¹ àÁ×Íè Ãѹâ»Ãá¡ÃÁ LED ·Õµè Òí á˹ § RB3 º¹ºÍà ´¤Çº¤ØÁ¢Í§Ëع ¹µ Robo-PICA ¨ÐµÔ´¡Ð¾ÃÔº áÅÐ àÁ×èÍ¡´ÊÇÔµª RB0 ¨ÐÁÕàÊÕ§ÍÍ¡·ÕèÅíÒ⾧ ¹Ñ蹤×Í ¡Ò÷íÒ§Ò¹ËÅÑ¡¢Í§äÁâ¤Ã¤Í¹â·ÃÅàÅÍà 㹡Ԩ¡ÃÃÁà» ¹¡Òà ¢Ñº LED ·Õ¢è Ò¾Íà µ RB3 ãË µ´Ô ¡Ð¾ÃÔº ËÒ¡à¡Ô´¡ÒÃÍÔ¹àµÍÃ Ã»Ñ µ ¢¹Öé ·Õ¢è Ò RB0 ´ Ç¡Òá´ÊÇÔµª ·íÒãË Ê¶Ò¹Ð Åͨԡ·Õ¢è Òà»ÅÕÂè ¹¨Ò¡Åͨԡ 1 à» ¹ 0 äÁâ¤Ã¤Í¹â·ÃÅàÅÍà ¨Ð·íÒ¡ÒõͺʹͧÍÔ¹àµÍÃ Ã»Ñ µ ´Ç ¡ÒáÃÐâ´´ ä»·íÒ§Ò¹Âѧâ»Ãá¡ÃÁºÃÔ¡ÒÃÍÔ¹àµÍÃ Ã»Ñ µ «Ö§è ¡íÒ˹´ãË ¢ºÑ ÊÑ­­Ò³àÊÕ§ÍÍ¡·Ò§ÅíÒ⾧ àÁ×Íè àÊÃç¨áÅ Ç¡ç¨Ð¡ÃÐâ´´ ¡ÅѺ价íÒ§Ò¹·Õâè »Ãá¡ÃÁËÅÑ¡µ Íä» «Ö§è ¡ç¤Í× ¡ÒâѺ LED ·Õ¢è Ò RB3 ãË ¡Ð¾ÃÔº


àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC l 109

8.5 ¡ÒÃÊ×Íè ÊÒâ ÍÁÙÅ͹ءÃÁẺÍЫԧâ¤Ã¹ÑÊ à¹×Íè §¨Ò¡ÃÕâÁµ¤Í¹â·ÃÅ ER-4 Ê §¢ ÍÁÙŢͧÊÇÔµª ÍÍ¡ÁÒã¹ÃÙ»¢Í§¢ ÍÁÙÅ͹ءÃÁ ´Ñ§¹Ñ¹é à¾×Íè ãË ÊÒÁÒöà¢Õ¹â»Ãá¡ÃÁà¾×Íè ÃѺ¢ ÍÁÙÅ͹ءÃÁáŠǶʹÍÍ¡ÁÒà» ¹¤ ҢͧÊÇÔµª ·¡Õè ´Ê §ÁÒ ¨Ö§µ ͧÁÕ ¤ÇÒÁࢠÒã¨à¡ÕèÂǡѺ¡ÒÃÊ×èÍÊÒâ ÍÁÙÅ͹ءÃÁẺÍЫԧâ¤Ã¹ÑÊ ¡ÒÃÊ×èÍÊÒâ ÍÁÙÅẺÍЫԧâ¤Ã¹Ñʤ×Í¡ÒÃÃѺáÅÐÊ §¢ ÍÁÙÅä»ã¹ÊÒÂâ´ÂäÁ ¨íÒà» ¹µ ͧÁÕ ÊÑ­­Ò³¹ÒÌ ¡Òà ÇÁ´ ÇÂàËÁ×͹¡Ñº¡ÒÃÃÑºÊ §¢ ÍÁÙÅẺ«Ô§â¤Ã¹ÑÊ áµ ¨Ð㪠¡ÒáíÒ˹´¤ ÒÊÑ­­Ò³ ¹ÒÌ ¡Ò·Ñé§ÀÒ¤ÃѺáÅÐÀÒ¤Ê §ãË ÁÕ¤ Ò෠ҡѹ «Öè§àÃÕ¡ÊÑ­­Ò³¹ÒÌ ¡Ò·Õè㪠㹡ÒáíÒ˹´¤ ÒãË ÀÒ¤ÃѺ áÅÐÀÒ¤Ê §¹ÕéÇ Ò ÍѵÃÒ¡Òö Ò·ʹ¢ ÍÁÙÅ ËÃ×Í ºÍ´àõ (baudrate) ÁÕ˹ ÇÂà» ¹ ºÔµµ ÍÇÔ¹Ò·Õ (bit per second : bps) ÃٻẺ¢Í§¢ ÍÁÙÅ·Õãè ª 㹡ÒÃÃÑºÊ §áººÍЫԧâ¤Ã¹ÑÊ»ÃСͺ´ Ç 4 Ê Ç¹´ Ç¡ѹ¤×Í 1. ºÔµàÃÔÁè µ ¹ (Start Bit) «Ö§è ¨ÐÁÕ¢¹Ò´ 1 ºÔµ 2. ºÔµ¢ ÍÁÙÅẺ͹ءÃÁ¨ÐÁÕ¢¹Ò´ 5,6,7 ËÃ×Í 8 ºÔµ 3. ºÔµµÃǨÊͺ¾ÒÃÔµÕé (Parity Bit) ¨ÐÁÕ¢¹Ò´ 1 ºÔµËÃ×ÍäÁ ÁÕ 4. ºÔµ» ´· Ò (Stop Bit) ¨ÐÁÕ¢¹Ò´ 1,1.5 ËÃ×Í 2 ºÔµ ÃÙ»·Õè 8-3 áÊ´§ÃٻẺ¢Í§¢ ÍÁÙÅ͹ءÃÁẺÍЫԧâ¤Ã¹ÑÊ àÁ×Íè äÁ Á¢Õ Í ÁÙÅ·Õ¨è ÐÊ § ¢Ò DATA ¨ÐÁÕʶҹÐÅͨԡ 1 «Ö§è ¨ÐàÃÕ¡ʶҹйÕÇé Ò Ê¶Ò¹ÐËÂØ´ÃÍ (waiting stage) ¡ÒÃàÃÔÁè µ ¹Ê §¢ ÍÁÙŨРàÃÔèÁ¨Ò¡¡ÒÃãË ¢Ò DATA ÁÕÅͨԡ 0 ´ Ǫ ǧÃÐÂÐàÇÅÒ 1 ºÔµ àÃÕ¡ºÔµ¹ÕéÇ Ò ºÔµàÃÔÁè µ ¹ ¨Ò¡¹Ñ鹺Ե ¢ ÍÁÙÅ¨Ð¶Ù¡Ê §ÍÍ¡ä» â´ÂàÃÔÁè ¨Ò¡ºÔµ·ÕÁè ¹Õ ÂÑ ÊíҤѭµèÒí ÊØ´ (LSB) ¡ ͹ «Ö§è ¢ ÍÁÙÅã¹äºµ ·¨Õè ÐÊ §ÍÒ¨¨Ð ÁÕ¨Òí ¹Ç¹ºÔµ 5,6,7 ËÃ×Í 8 ºÔµ¡çä´ ¨Ò¡¹Ñ¹é µÒÁ´ Ç ºÔµ¾ÒÃÔµÕé «Ö§è 㪠à¾×Íè µÃǨÊͺ¤ÇÒÁ¼Ô´¾ÅÒ´·Õàè ¡Ô´ ¢Ö¹é ¨Ò¡¡ÒÃÊ §¢ ÍÁÙÅ ºÔµÊØ´· Ò·ÕÊè § ¤×Í ºÔµ» ´· Ò «Ö§è ¨ÐãË ¢Ò´Òµ ÒÁÕʶҹÐÅͨԡ 1 ÍÕ¡¤ÃÑ§é ´ Ç ÃÐÂÐàÇÅÒÍ ҧ¹ Í 1 ºÔµ,1.5 ºÔµ ËÃ×Í 2 ºÔµ à¾×Íè à» ¹¡ÒÃáÊ´§Ç ÒÊÔ¹é ÊØ´¢ ÍÁÙÅáÅ Ç Ê¶Ò¹Ð ºÔµàÃÔÁè µ ¹ ËÂØ´ÃÍ

LSB ¢ ÍÁÙÅ ºÔµ 0

¢ ÍÁÙÅ ºÔµ 1

¢ ÍÁÙÅ ºÔµ 2

¢ ÍÁÙÅ ºÔµ 3

¢ ÍÁÙÅ ºÔµ 4

¢ ÍÁÙÅ ºÔµ 5

¢ ÍÁÙÅ ºÔµ 6

MSB ¢ ÍÁÙÅ ºÔµ 7

ÃÙ»·Õè 8-3 ÃٻẺ¢Í§¢ ÍÁÙÅ͹ءÃÁẺÍЫԧâ¤Ã¹ÑÊ

ºÔµ¾ÒÃÔµéÕ

ºÔµËÂØ´

ʶҹРËÂØ´ÃÍ


110 l àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

PIC

ÍØ»¡Ã³ ¾ÔàÈÉ·Õèä´ ÃѺ¡ÒÃÍ͡ẺÁÒÊíÒËÃѺ¡ÒÃÃѺáÅÐÊ §¢ ÍÁÙÅẺÍЫԧâ¤Ã¹ÑÊàÃÕÂ¡Ç Ò Universal Asynchronous Receiver/Transmitter ËÃ×Í UART ÍѵÃÒ¤ÇÒÁàÃçÇ㹡ÒÃÃѺáÅÐÊ §¢ ÍÁÙÅ ¢Í§¡ÒÃÃÑºÊ §¢ ÍÁÙÅẺÍЫԧâ¤Ã¹Ñʤ×Í ¤ Һʹàõ «Ö§è ¡ç¤Í× ¤ Ò¨íҹǹºÔµµ ÍÇÔ¹Ò·Õ·ãÕè ª 㹡ÒÃÃѺáÅÐ Ê §¢ ÍÁÙÅ ºÍ´àõÁҵðҹ·Õãè ª ÊÒí ËÃѺ¾Íà µÍ¹Ø¡ÃÁ RS-232 ä´ á¡ 110, 150, 300, 600, 1200, 2400, 4800, 9600 áÅÐ 19200 ºÔµµ ÍÇÔ¹Ò·Õ áÅÐÁÕ¤Ò à¾ÔÁè ÁÒ¡¢Ö¹é µÒÁà·¤â¹âÅÂբͧ¤ÍÁ¾ÔÇàµÍà «Ö§è ¡ÒÃÃѺ Ê §áººÍ¹Ø¡ÃÁâ´ÂäÁ ¼Ò ¹âÁà´çÁÍÒ¨¨ÐÊÒÁÒö¡íÒ˹´¤ ҺʹàÃµä´ Ê§Ù ¶Ö§ 115200 ºÔµµ ÍÇÔ¹Ò·Õ à¹×Íè § ¨Ò¡ºÍ´àõ¤×ͨíҹǹºÔµ¢Í§¢ ÍÁÙÅ·ÕÊè ÒÁÒö¶ ÒÂ·Í´ä´ ÀÒÂã¹ 1 ÇÔ¹Ò·Õ ¡ÒõÃǨÊͺ¾ÒÃÔµÊÕé ÒÁÒö¡íÒ˹´ãË à» ¹áºº¤Õè (odd), Ẻ¤Ù (even) ËÃ×ÍäÁ Á¡Õ ÒõÃǨÊͺ ¾ÒÃÔµÕé¡çä´ ¡ÒõÃǨÊͺ¾ÒÃÔµàÕé » ¹¡ÒõÃǨÊͺ¨íҹǹÃÇÁ¢Í§ºÔµ·Õàè » ¹Åͨԡ 1 ÀÒÂã¹¢ ÍÁÙÅ ·ÕÊè § ä» 1 亵 ÇÒ ÁÕ¨Òí ¹Ç¹ÃÇÁà» ¹àÅ¢¤ÙË Ã×ÍàÅ¢¤Õâè ´Âµ ͧÃÇÁºÔµ¾ÒÃÔµàÕé ¢ Òä»´ Ç ¡µÑÇÍ ҧ ¢ ÍÁÙÅ ·Õ¨è зíÒ¡ÒÃÊ §ÁÕ¢¹Ò´ 8 ºÔµáÅÐÁÕ¤Ò à· Ò¡Ñº 99 °Ò¹ÊԺˡ ËÃ×Í 10011001 °Ò¹Êͧ ¨ÐàËç¹Ç Ò¢ ÍÁÙÅ ã¹äºµ ¹ÁÕé ¨Õ Òí ¹Ç¹Åͨԡ 1 ¨íҹǹ 4 µÑÇ«Ö§è à» ¹àÅ¢¤Ù ´Ñ§¹Ñ¹é ¶ Ò¡íÒ˹´¤ Ò¾ÒÃÔµàÕé » ¹¤Ù ¤ Ò㹺Ե¾ÒÃÔµÕé ¨Ðµ ͧÁÕÅͨԡ໠¹ 0 áµ ¶Ò ¾ÒÃÔµàÕé » ¹¤Õè ¤ Ò·Õºè µÔ ¾ÒÃÔµ¨Õé е ͧ໠¹ 1 à¾×Íè ãË ¢Í ÁÙÅ 1 亵 ÃÇÁ·Ñ§é ºÔµ ¾ÒÃÔµÕéÁÕ¨íҹǹºÔµ·Õèà» ¹Åͨԡ 1 ÃÇÁ¡Ñ¹à» ¹àÅ¢¤Õè ã¹µÒÃÒ§·Õè 4.1 áÊ´§µÑÇÍ ҧ¢Í§ºÔµ¾ÒÃÔµÕéã¹ ¡ÒÃÃÑºÊ §¢ ÍÁÙÅ͹ءÃÁ ºÔµ¾ÒÃÔµÕé¶Ù¡Êà ҧ¢Ö鹨ҡÀÒ¤Ê §¢ ÍÁÙŢͧ UART â´ÂÀÒ¤ÃѺ¨Ðµ ͧ¡íÒ˹´¤Ø³ÊÁºÑµÔ¡Òà µÃǨÊͺ¾ÒÃÔµãÕé Ë µÃ§¡Ñ¹Ç Ò ¨ÐµÃǨÊͺ¾ÒÃÔµ¤Õé ËÕè Ã×ͤ٠¨Ò¡¹Ñ¹é ÀÒ¤ÃѺ¢Í§ UART ¨ÐµÃǨÊͺ¤ Ò ¾ÒÃÔµ·Õé àÕè ¡Ô´¢Ö¹é Ç Òà» ¹¤ÙË Ã×Íà» ¹¤Õè â´Â¡ÒùѺ¨íҹǹÅͨԡ 1 ·Ñ§é ËÁ´ÃÇÁ·Ñ§é ºÔµ¾ÒÃÔµ´Õé Ç Â ¶ Ò¡íÒ˹´ ¾ÒÃÔµäÕé Ç à» ¹¤Ùá µ ÍÒ ¹¤ ÒµÑÇàŢ㹡ÒùѺÍÍ¡ÁÒä´ µÇÑ àŢ໠¹¤Õè ·Ò§ÀÒ¤ÃѺ¨Ðᨠ§¢ ͼԴ¾ÅÒ´ãË ¼ãÙ ª ·ÃÒº ¹Ñºà» ¹¡ÒõÃǨÊͺ¤ÇÒÁ¼Ô´¾ÅÒ´¢Í§¡Òö Ò·ʹ¢ ÍÁÙÅ·Õ§è Ò Â·ÕÊè ´Ø áµ ¨Ðàª×Íè ¶×Íä´ àÁ×Íè ÁÕºµÔ ¢ ÍÁÙÅ·Õ·è Òí ¡ÒÃÊ §¼Ô´¾ÅÒ´à¾Õ§ºÔµà´ÕÂÇà· Ò¹Ñ¹é ¶ Ò¢ ÍÁÙÅ·ÕÊè § ÁÕºµÔ ·Õ¼è ´Ô ¾ÅÒ´ÁÒ¡¡Ç Ò 1 ºÔµ ¡ÒõÃǨ Êͺ´ ÇÂÇÔ¸¹Õ ¨Õé ÐäÁ ä´ ¼Å ÊíÒËÃѺ¡ÒÃµÑ§é ¾ÒÃÔµºÕé µÔ à» ¹ NONE ¹Ñ¹é ·Ñ§é ÀÒ¤ÃѺáÅÐÀÒ¤Ê § ¨ÐäÁ Á¡Õ Òà µÃǨÊͺ¾ÒÃÔµÕé µÑÇÍ ҧ·Õè 1 ¢ ÍÁÙÅ͹ءÃÁ¶Ù¡Ê §ã¹ÅѡɳР8 ºÔµ äÁ Á¡Õ ÒõÃǨÊͺ¾ÒÃÔµÕé ÁÕºµÔ àÃÔÁè µ ¹ 1 ºÔµ áÅкԵ» ´· Ò 1 ºÔµ ¤ÇÒÁÂÒǢͧ¢ ÍÁÙÅ·ÕÃè ºÑ Ê §¹Õàé · ҡѺ 10 ºÔµ ¶ Ò㪠ºÍ´àõ 9600 ºÔµµ ÍÇÔ¹Ò·Õ ¡ç¨Ð ÊÒÁÒöÃÑºÊ §¢ ÍÁÙÅä´ ´Ç ¤ÇÒÁàÃçÇ 960 亵 µÍ ÇÔ¹Ò·Õ áÅж ÒÁÕ¡ÒÃ㪠ºµÔ ¾ÒÃÔµ¤Õé ÇÒÁàÃçÇ㹡ÒÃÃÑºÊ § ¢ ÍÁÙŨÐàËÅ×Íà» ¹ 872 亵 µÍ ÇÔ¹Ò·Õ


àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC l 111

µÑÇÍ ҧ·Õè 2 ¢ ÍÁÙÅ͹ءÃÁ¶Ù¡Ê §ã¹ÅѡɳР8 ºÔµ äÁ ÁÕ¡ÒõÃǨÊͺ¾ÒÃÔµÕé ÁÕºÔµàÃÔèÁµ ¹ 1 ºÔµáÅкԵ» ´· Ò 1 ºÔµ ¤ÇÒÁÂÒǢͧ¢ ÍÁÙÅ·ÕÃè ºÑ Ê §¹Õàé · ҡѺ 10 ºÔµ ºÍ´àõ㹡ÒÃÃÑºÊ §à· ҡѺ 1,200 ºÔµµ ÍÇÔ¹Ò·Õ ¢ ÍÁÙÅ 1 ºÔµ¨ÐÁÕ¤ÒºàÇÅÒ෠ҡѺ 1/1200 = 833 äÁâ¤ÃÇÔ¹Ò·Õ ¤ Ò¤ÒºàÇÅÒ¹ÕéÊÒÁÒö¹íÒä»ãª ¡ÑºäÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC16F887 à¾×èÍÍ Ò¹¤ Ò ¨Ò¡ÃÕâÁµ¤Í¹â·ÃÅ ER-4 ·ÕÁè ÍÕ µÑ ÃÒàÃçÇ㹡Òö Ò·ʹ¢ ÍÁÙÅËÃ×ÍÍѵÃҺʹ෠ҡѺ 1,200 ºÔµµ ÍÇÔ¹Ò·Õ

8.6 â»Ãá¡ÃÁ ÍºÃÔ¡ÒÃÍÔ¹àµÍÃ Ã»Ñ µ à¾×Íè Í Ò¹¤ Ò¨Ò¡ÃÕâÁµ¤Í¹â·ÃŠ㹡ÒÃÃѺ¢ ÍÁÙŨҡÃÕâÁµ¤Í¹â·ÃÅ¹Ñ¹é ¨Ðµ ͧ㪠¡ÒÃÍÔ¹àµÍÃ Ã»Ñ µ ࢠÒÁÒª Ç à¾×Íè ãË ÊÒÁÒö ÃѺ¢ ÍÁÙÅ͹ءÃÁ 8 ºÔµ·ÕÊè § ÁÒä´ ·¹Ñ ã¹â»Ãá¡ÃÁ·Õè 8-1 áÊ´§ÃÒÂÅÐàÍÕ´¢Í§â»Ãá¡ÃÁ ÍºÃÔ¡Òà ÍÔ¹àµÍà ÃáÑ µ ·¢Õè Ò¾Íà µ RB0/INT ·Õµè Í §µ ͡Ѻ ZX-IRM ἧǧ¨ÃâÁ´ÙÅÃѺáʧÍÔ¹¿ÃÒàô 38kHz //================== Interrupt service routine INT =================// void interrupt() { unsigned char i; // Keep counter if(INTCON.INTF) // Check interrupt flag RB0 (Falling edge) { Delay_us(416); // Delay 1/2 bit timing(baudrate 1200 bps) for(i=0;i<8;i++) // Loop 8 time for keep data from ER-4 Remote { Delay_us(833); // Delay of 1 bit timing(baudrate 1200 bps) ir_cmd = ir_cmd>>1; // Shift bit 1 time if((PORTB & 0x01)==1) // Get logic @ RB0 = '1'? ir_cmd=ir_cmd|0x80; // Inset bit data is '1' } Delay_us(833); // Delay of 1 bit timing(baudrate 1200 bps) INTCON.INTF =0; // Clear interrupt flag } }

¡Ò÷íÒ§Ò¹¢Í§â»Ãá¡ÃÁ àÃÔèÁµ ¹´ ÇÂâ»Ãá¡ÃÁ ÍºÃÔ¡ÒÃÍÔ¹àµÍà ÃÑ»µ â´ÂàÁ×èÍà¡Ô´ÍÔ¹àµÍà ÃÑ»µ ¢Öé¹ «Öè§ËÁÒ¶֧ ÃÕâÁµ¶Ù¡¡´ â»Ãá¡ÃÁ¨Ð˹ ǧàÇÅÒä»à» ¹ÃÐÂÐ෠ҡѺ¤ÃÖ§è Ë¹Ö§è ¢Í§¤ÒºàÇÅÒ 1 ºÔµ (1 ºÔµ ÊíÒËÃѺºÍ´àõ 1200 ෠ҡѺ 833 äÁâ¤ÃÇÔ¹Ò·Õ) áÅÐ˹ ǧàÇÅÒµ Íä»ÍÕ¡ 1 ºÔµ à¾×Íè ãË àŪ ǧºÔµàÃÔÁè µ ¹ ¨Ò¡¹Ñ¹é ·íÒ¡ÒõÃǨÊͺºÔµ¢ ÍÁÙÅ ·ÕÍè Ò ¹ä´ ÇÒ à» ¹ 0 ËÃ×Í 1 ¹íÒ¢ ÍÁÙÅ·ÕÍè Ò ¹ä´ º¹Ñ ·Ö¡äÇ ã¹µÑÇá»Ã ir_cmd áÅ ÇàÅ×Íè ¹ºÔµÍ Ò¹¤ Ò¢ ÍÁÙŨҡÃÕâÁµ ¤Í¹â·ÃŨ¹¤Ãº·Ñ§é 8 ºÔµ ˹ ǧàÇÅÒÍÕ¡¤Ãѧé ÊíÒËÃѺºÔµËÂØ´ áÅÐÍÍ¡¨Ò¡â»Ãá¡ÃÁ ÍºÃÔ¡ÒÃÍÔ¹àµÍÃ Ã»Ñ µ

â»Ãá¡ÃÁ·Õè 8-1 â»Ãá¡ÃÁ ÍºÃÔ¡ÒÃÍÔ¹àµÍÃ Ã»Ñ µ ·¢Õè Ò¾Íà µ RB0/INT ÊíÒËÃѺÃѺ¢ ÍÁÙÅ͹ءÃÁ¨Ò¡ ÃÕâÁµ¤Í¹â·ÃÅ ER-4 ¢Í§Ëع ¹µ Robo-PICA


112 l àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

PIC

¡Ô¨¡ÃÃÁ·Õè 13

·´Êͺ¡ÒÃÃѺ¢ ÍÁÙŨҡÃÕâÁµ¤Í¹â·ÃÅ A13.1 à¢Õ¹â»Ãá¡ÃÁ·Õè A13-1 ´ Ç mikroC IDE ·íÒ¡ÒäÍÁä¾Å ãË ä´ ä¿Å ¼ÅÅѾ¸ .hex A13.2 àª×Íè Áµ ͺÍà ´â»Ãá¡ÃÁࢠҡѺËع ¹µ Robo-PICA áÅоÍà µ USB ¢Í§¤ÍÁ¾ÔÇàµÍà A13.3 ´Òǹ âËÅ´â»Ãá¡ÃÁä»ÂѧËع ¹µ Robo-PICA A13.4 µÃǨÊͺ¡ÒÃàª×Íè Áµ ÍÃÐËÇ Ò§ºÍà ´¤Çº¤ØÁ¢Í§Ëع ¹µ Robo-PICA ¡Ñº ZX-IRM ἧǧ¨ÃâÁ´ÙÅÃѺáʧ ÍÔ¹¿ÃÒàô 38kHz µ ͧṠã¨Ç Ò ä´ µÍ ZX-IRM à¢ Ò·Õ¨è ´Ø µ Í RB0/INT à» ¹·Õàè ÃÕºà Í A13.5 ºÃèØẵàµÍÃÕè AA 2 ¡ ͹ŧ㹡кж Ò¹¢Í§ÃÕâÁµ¤Í¹â·ÃÅ ER-4 A13.6 Ãѹâ»Ãá¡ÃÁ·ÕËè ¹Ø Â¹µ Robo-PICA ¨Ò¡¹Ñ¹é ·´Êͺ¡´ÊÇÔµª º¹ÃÕâÁµ¤Í¹â·ÃÅà¾×Íè Ê §¢ ÍÁÙÅÁÒÂѧ ZX-IRM ·Õµè Í ¡ÑºËع ¹µ Robo-PICA â´Âµ ͧËѹ·ÔÈ·Ò§¢Í§ LED ·Õãè ª ʧ áʧµÃ§¡ÑºµÑÇÃѺáʧÍÔ¹¿ÃÒàô¢Í§ ZX-IRM Êѧࡵ¼Å¡Ò÷íÒ§Ò¹ àÁ×Íè ¡´ÊÇÔµª A, B, C áÅÐ D ¢Í§ÃÕâÁµ¤Í¹â·ÃÅ ER-4 à¾×Íè Ê §¢ ÍÁÙÅÁÒÂѧËع ¹µ Robo-PICA àÁ×Íè ÃѺ ¢ ÍÁÙÅä´ ¨ÐáÊ´§µÑÇÍÑ¡Éà A, B, C áÅÐ C µÒÁ·Õ¡è ´Ê §ÁÒº¹âÁ´ÙÅ LCD ¢Í§Ëع ¹µ Robo-PICA ¾Ã ÍÁ¡Ñº¢Ñº àÊÕ§´ ǤÇÒÁ¶Õ·è áÕè µ¡µ Ò§¡Ñ¹ 4 ¤ ÒÍÍ¡·Ò§ÅíÒ⾧໠Ââ«´ Ç A13.7 ·´Åͧà»ÅÕÂè ¹ÃÐÂÐ㹡Òá´ÊÇÔµª ãË ä¡Å¢Ö¹é à¾×Íè µÃǨÊÍºÇ Ò ÃÐÂзҧä¡Åà· Òã´·ÕÃè âÕ Áµ¤Í¹â·ÃŨРäÁ ÊÒÁÒÃ¶Ê §¢ ÍÁÙÅä´ ¶¡Ù µ ͧ char *text1 = "ER-4 Remote"; unsigned char ir_cmd=0;

// Define message // Keep Command button from ER-4 Remote

//================== Interrupt service routine INT =================// void interrupt() { unsigned char i; // Keep counter if(INTCON.INTF) // Check interrupt flag RB0 (Falling edge) { Delay_us(416); // Delay 1/2 bit timing(baudrate 1200 bps) for(i=0;i<8;i++) // Loop 8 time for keep data from ER-4 Remote { Delay_us(833); // Delay of 1 bit timing(baudrate 1200 bps) ir_cmd = ir_cmd>>1; // Shift bit 1 time if((PORTB & 0x01)==1) // Get logic @ RB0 = '1'? ir_cmd=ir_cmd|0x80; // Inset bit data is '1' }

â»Ãá¡ÃÁ·Õè A13-1 ä¿Å IRtest.c â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ·´Êͺ¡ÒÃÃѺ¢ ÍÁÙÅ͹ءÃÁ¨Ò¡ÃÕâÁµ ¤Í¹â·ÃÅ ER-4 ¢Í§Ëع ¹µ Robo-PICA (ÁÕµÍ )


àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC l 113 Delay_us(833); INTCON.INTF =0;

// Delay of 1 bit timing(baudrate 1200 bps) // Clear interrupt flag

} } //================== Function for get character from Remote ========// unsigned char get_remote() { unsigned char _key=ir_cmd; // Get character to buffer ir_cmd=0; // Clear old data return(_key); // Return character from Remote } //================== Main Program ==================================// void main() { unsigned char key; // Save Remote Key Press ANSELH.F4=0; // RB0 ==> Digital IO OPTION_REG.INTEDG = 0; // INT falling edge INTCON.INTE =1; // Enable INT/PB0 INTCON.GIE =1; // Enable Global interrupt Lcd_Init(&PORTD); // Initialize LCD connected to PORTD Lcd_Cmd(Lcd_CLEAR); // Clear display Lcd_Cmd(Lcd_CURSOR_OFF); // Turn cursor off Lcd_Out(1, 1, text1); // Print text to LCD, 1st row, 1st column Sound_Init(&PORTC,0); while(1) // Infinite loop { key = get_remote(); // Get Remote if(key=='a' || key=='A') // Button A press? { Lcd_Out(2, 1, "Button A Press "); // Display message Sound_Play(200,500); } else if(key=='b' || key=='B') // Button B press? { Lcd_Out(2, 1, "Button B Press "); // Display message Sound_Play(210,500); } else if(key=='c' || key=='C') // Button C press? { Lcd_Out(2, 1, "Button C Press "); // Display message Sound_Play(220,500); } else if(key=='d' || key=='D') // Button D press? { Lcd_Out(2, 1, "Button D Press "); // Display message Sound_Play(230,500); } } }

â»Ãá¡ÃÁ·Õè A13-1 ä¿Å IRtest.c â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ·´Êͺ¡ÒÃÃѺ¢ ÍÁÙÅ͹ءÃÁ¨Ò¡ÃÕâÁµ¤Í¹â·ÃÅ ER-4 ¢Í§Ëع ¹µ Robo-PICA (¨º)


114 l àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

PIC

¡Ô¨¡ÃÃÁ·Õè 14

Ëع ¹µ Robo-PICA ¤Çº¤ØÁ´ ÇÂÃÕâÁµ¤Í¹â·ÃÅ A14.1 à¢Õ¹â»Ãá¡ÃÁ·Õè A14-1 ´ Ç mikroC IDE ·íÒ¡ÒäÍÁä¾Å ãË ä´ ä¿Å ¼ÅÅѾ¸ .hex A14.2 àª×Íè Áµ ͺÍà ´â»Ãá¡ÃÁࢠҡѺËع ¹µ Robo-PICA áÅоÍà µ USB ¢Í§¤ÍÁ¾ÔÇàµÍà A14.3 ´Òǹ âËÅ´â»Ãá¡ÃÁä»ÂѧËع ¹µ Robo-PICA A14.4 µÃǨÊͺ¡ÒÃàª×Íè Áµ ÍÃÐËÇ Ò§ºÍà ´¤Çº¤ØÁ¢Í§Ëع ¹µ Robo-PICA ¡Ñº ZX-IRM ἧǧ¨ÃâÁ´ÙÅÃѺáʧ ÍÔ¹¿ÃÒàô 38kHz µ ͧṠã¨Ç Ò ä´ µÍ ZX-IRM à¢ Ò·Õ¨è ´Ø µ Í RB0/INT à» ¹·Õàè ÃÕºà Í A14.5 ºÃèØẵàµÍÃÕè AA 2 ¡ ͹ŧ㹡кж Ò¹¢Í§ÃÕâÁµ¤Í¹â·ÃÅ ER-4 A13.6 Ãѹâ»Ãá¡ÃÁ·ÕËè ¹Ø Â¹µ Robo-PICA ¨Ò¡¹Ñ¹é ·´Êͺ¡´ÊÇÔµª º¹ÃÕâÁµ¤Í¹â·ÃÅà¾×Íè Ê §¢ ÍÁÙÅÁÒÂѧ ZX-IRM ·Õµè Í ¡ÑºËع ¹µ Robo-PICA â´Âµ ͧËѹ·ÔÈ·Ò§¢Í§ LED ·Õãè ª ʧ áʧµÃ§¡ÑºµÑÇÃѺáʧÍÔ¹¿ÃÒàô¢Í§ ZX-IRM Êѧࡵ¼Å¡ÒÃà¤Å×Íè ¹·Õ¢è ͧËع ¹µ àÁ×Íè ¡´ÊÇÔµª A Ëع ¹µ Robo-PICA à¤Å×Íè ¹·Õ¶è ÍÂËÅѧ àÁ×Íè ¡´ÊÇÔµª B Ëع ¹µ Robo-PICA ËÁعµÑÇ·Ò§¢ÇÒ àÁ×Íè ¡´ÊÇÔµª C Ëع ¹µ Robo-PICA ËÁعµÑÇ·Ò§« Ò àÁ×Íè ¡´ÊÇÔµª D Ëع ¹µ Robo-PICA à¤Å×Íè ¹·Õäè »¢ ҧ˹ Ò


àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC l 115 #include <motor.h> char *text = "ER-4 Remote"; unsigned char ir_cmd=0;

// Define message // Keep Command button from ER-4 Remote

//================== Interrupt service routine INT =================// void interrupt() { unsigned char i; // Keep counter if(INTCON.INTF) // Check interrupt flag RB0 (Falling edge) { Delay_us(416); // Delay 1/2 bit timing(baudrate 1200 bps) for(i=0;i<8;i++) // Loop 8 time for keep data from ER-4 Remote { Delay_us(833); // Delay of 1 bit timing(baudrate 1200 bps) ir_cmd = ir_cmd>>1; // Shitt bit 1 time if((PORTB & 0x01)==1) // Get logic @ RB0 = '1'? ir_cmd = ir_cmd|0x80; // Inset bit data is '1' } Delay_us(833); // Delay of 1 bit timing(baudrate 1200 bps) INTCON.INTF =0; // Clear interrupt flag } } //================== Function for get character from Remote ========// unsigned char get_remote() { unsigned char _key=ir_cmd; // Get character to buffer ir_cmd=0; // Clear old data return(_key); // Return character from Remote } //================== Main Program ==================================// void main() { ANSELH.F4=0; // RB0 ==> Digital IO OPTION_REG.INTEDG = 0; // INT falling edge INTCON.INTE =1; // Enable INT/PB0 INTCON.GIE =1; // Enable Global interrupt Lcd_Init(&PORTD); // Initialize LCD connected to PORTD Lcd_Cmd(Lcd_CLEAR); // Clear display Lcd_Cmd(Lcd_CURSOR_OFF); // Turn cursor off Lcd_Out(1, 1, text); // Print text to LCD, 2nd row, 1st column Sound_Init(&PORTC,0); Sound_Play(250,400); while(1) // Infinite loop { char key=get_remote(); // Get Remote if((key=='a')||(key=='A')) // Button A press? { Backward(255);Delay_ms(50); } else if((key=='b')||(key=='B')) // Button B press? { S_Right(255);Delay_ms(50); } else if((key=='c')||(key=='C')) // Button C press?

â»Ãá¡ÃÁ·Õè A14-1 ä¿Å RemoteBot.c â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ¡íÒ˹´ãË Ë¹Ø Â¹µ Robo-PICA à¤Å×Íè ¹·Õè ÀÒÂãµ ¡ÒäǺ¤ØÁ¨Ò¡ÃÕâÁµ¤Í¹â·ÃÅÍÔ¹¿ÃÒàô ER-4 (ÁÕµÍ )


116 l àÃÕ¹ÃÙá ÅÐÊà ҧËع ¹µ 굄 â¹Áѵ¡Ô ºÑ äÁâ¤Ã¤Í¹â·ÃÅàÅÍÃ

{ S_Left(255);Delay_ms(50); } else if((key=='d')||(key=='D')) { Forward(255);Delay_ms(50);} else Motor_Stop();

PIC

// Button D press?

} }

¡Ò÷íÒ§Ò¹¢Í§â»Ãá¡ÃÁ ÃÕâÁµ¤Í¹â·ÃÅ ER-4 ÁÕÊÇÔµª 4 µÑÇÇÒ§µíÒá˹ §äÇ àËÁÒÐÊÁÊíÒËÃѺ¡ÒâѺà¤Å×Íè ¹Ëع ¹µ ãË à¤Å×Íè ¹·Õè 仢 ҧ˹ Ò ¶ÍÂËÅѧ àÅÕÂé Ç« Ò áÅÐàÅÕÂé Ç¢ÇÒäÇ áÅ Ç ´Ñ§¹Ñ¹é àÁ×Íè äÁâ¤Ã¤Í¹â·ÃÅàÅÍà ÍÒ ¹¤ Ò¨Ò¡ÃÕâÁµ¤Í¹â·ÃÅ ä´ ¤Ò ¢Í§ÊÇÔµª µÃ§µÒÁà§×Íè ¹ä¢·Õ¡è Òí ˹´ ¡ç¨Ð·íÒ¡ÒäǺ¤ØÁãË Ë¹Ø Â¹µ Robo-PICA à¤Å×Íè ¹·Õµè ÒÁÃٻẺ¢Í§ ÊÇÔµª º¹ÃÕâÁµ¤Í¹â·ÃÅ ã¹â»Ãá¡ÃÁÁÕ¡ÒÃàÃÕ¡㪠â»Ãá¡ÃÁ ÍºÃÔ¡ÒÃÍÔ¹àµÍÃ Ã»Ñ µ ¨Ò¡¢Ò¾Íà µ RB0/INT à¾×Íè ÃѺ¢ ÍÁÙÅ͹ءÃÁ 8 ºÔµ¨Ò¡ÃÕâÁµ¤Í¹â·ÃÅ ¨Ò¡¹Ñ¹é ¹íÒÁÒµÃǨÊÍºÇ Ò à» ¹¢ ÍÁÙÅã´¨Ò¡¿ §¡ ª¹Ñè get_remote() à¾×Íè ¹íÒä» à»ÃÕºà·ÕÂºÇ Ò à» ¹µÑÇÍÑ¡Éà A, B, C ËÃ×Í D à¾×Íè ¹íÒä»àÃÕ¡¿ §¡ ª¹Ñè ¡ÒâѺà¤Å×Íè ¹Ëع ¹µ ã¹ä¿Å äźÃÒÃÕ motor.h

â»Ãá¡ÃÁ·Õè A14-1 ä¿Å RemoteBot.c â»Ãá¡ÃÁÀÒÉÒ C ÊíÒËÃѺ¡íÒ˹´ãË Ë¹Ø Â¹µ Robo-PICA à¤Å×Íè ¹·Õè ÀÒÂãµ ¡ÒäǺ¤ØÁ¨Ò¡ÃÕâÁµ¤Í¹â·ÃÅÍÔ¹¿ÃÒàô ER-4 (¨º)

INNOVATIVE EXPERIMENT


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.