tag:blogger.com,1999:blog-53219676624727000562024-02-21T22:30:37.742-08:00Mechatronics Cityบล๊อกเรื่องราวแมคครทรอนิกส์Wisit.Phttp://www.blogger.com/profile/04747663677248244453noreply@blogger.comBlogger44125tag:blogger.com,1999:blog-5321967662472700056.post-23373365508563722582021-08-29T09:01:00.002-07:002021-08-29T09:01:46.370-07:00Gearset matching 2021 program<iframe frameborder="0" height="270" src="https://youtube.com/embed/2P0es8eZ758" width="480"></iframe><div><br /></div><div>เป็นงานใหญ่ที่เพิ่งจบไป ที่ระยอง ปลวกแดง บริษัทผลิตชิ้นส่วนรถยนต์ คอนเซปต์ คือต้องการเก็บค่าหลังจากการทดสอบชิ้นส่วยรถยนต์ เพื่อเก็บไว้ในฐานข้อมูลให้แผนกถัดไปสามารถนำค่าไปใช้งานต่อได้ ความท้าทาย คือจะต้องหาทางนำข้อมูลออกมาจากเครื่องทดสอบนี้ โดยไม่กระทบกับการทำงานของเครื่อง </div>Wisit.Phttp://www.blogger.com/profile/04747663677248244453noreply@blogger.com0tag:blogger.com,1999:blog-5321967662472700056.post-8054710387652663552021-08-27T19:35:00.002-07:002021-08-27T19:35:31.928-07:00CP1E Modbus-RTU simple master<iframe frameborder="0" height="270" src="https://youtube.com/embed/4thR5r7Dm8U" style="background-image: url(https://i.ytimg.com/vi/4thR5r7Dm8U/hqdefault.jpg);" width="480"></iframe><div><br /></div><div><p dir="ltr" style="line-height: 1.6; margin-bottom: 0pt; margin-top: 0pt;"><span style="color: #212121; font-family: "Open Sans"; font-size: 13pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">ลูกค้าอยากให้ช่วยในส่วนเขียนโปรแกรมดึงค่าจาก modbus slave เข้ามาเก็บไว้ใน D memory ของ PLC CP1E โดยใช้ CP1W-CIF11 RS-422A/485 Option Boards</span><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;"> ก็ใช้เทคนิค shift register เปิดหน้าคอนเทคเข้าไปเขียน-อ่าน ค่าแต่ละตัว </span></p></div>Wisit.Phttp://www.blogger.com/profile/04747663677248244453noreply@blogger.com0tag:blogger.com,1999:blog-5321967662472700056.post-260118591279418522021-08-24T23:10:00.002-07:002021-08-24T23:10:25.917-07:00WP Solution Co., Ltd. Projects Achievement<iframe width="480" height="360" src="https://youtube.com/embed/qczUBHIXEAw" frameborder="0"></iframe>Wisit.Phttp://www.blogger.com/profile/04747663677248244453noreply@blogger.com0tag:blogger.com,1999:blog-5321967662472700056.post-87327909283985131532021-07-21T07:57:00.004-07:002021-07-21T07:57:52.011-07:00DVP-14SS2 Modbus ASCII On LABVIEW<iframe frameborder="0" height="360" src="https://youtube.com/embed/MU8zkKHRHd4" style="background-image: url(https://i.ytimg.com/vi/MU8zkKHRHd4/hqdefault.jpg);" width="480"></iframe><div><br /></div><div>Contact me : <a href="https://www.facebook.com/wpsolution2017">https://www.facebook.com/wpsolution2017</a></div>Wisit.Phttp://www.blogger.com/profile/04747663677248244453noreply@blogger.com0tag:blogger.com,1999:blog-5321967662472700056.post-18895597383032212992015-07-31T09:35:00.001-07:002015-07-31T09:35:15.259-07:00Solved: error: 'TKD2' was not declared in this scope, LIFA_Base compile error<div class="wlWriterHeaderFooter" style="float:none; margin:0px; padding:4px 0px 4px 0px;"><iframe src="http://www.facebook.com/widgets/like.php?href=http://mechacity.blogspot.com/2015/07/solved-error-was-not-declared-in-this.html" scrolling="no" frameborder="0" style="border:none; width:450px; height:80px"></iframe></div><p>วันนี้ จะมาเล่าถึงปัญหาที่เจอในการเบิร์นโค๊ด LIFA_Base ที่เราใช้ในการทำให้ Arduino ของเราสามารถรับคำสั่งจาก LabVIEW ได้ </p> <p>ปัญหานี้ เริ่มเกิดขึ้นตอนที่ Arduino IDE เวอร์ชั่นใหม่ๆ ได้เพิ่ม Libraries ที่เกี่ยวกับ RobotIRremote แล้วไปประจวบเหมาะกับ LabVIEW interface for Arduino tool kit เข้าใจว่า น่าจะตั้งแต่เวอร์ชั่น 2.xx เป็นต้นไป จะมี libraries ที่เกี่ยวกับ IR ติดมาด้วย </p> <p>ทีนี้ พอเราทำการ Compile LIFA_BASE ซึ่งมันได้ทำการเรียกหา IR libraries ที่อยู่ใน folder เดียวกับมันมา compile มันจะฟ้อง Error </p> <p><font color="#ffff00">“C:\Program Files (x86)\Arduino\libraries\RobotIRremote\src\IRremoteTools.cpp:5:16: error: 'TKD2' was not declared in this scope <br />int RECV_PIN = TKD2; // the pin the IR receiver is connected to <br />^ <br />Error compiling.”</font></p> <p><a href="http://lh3.googleusercontent.com/-G1zTDmlweKQ/VbujrpOiZ5I/AAAAAAAAK8o/WwQ1klVuZAM/s1600-h/2558-07-31%25252016_21_14-2558-07-31%25252016_15_59-JKI%252520VIPM%252520-%252520LabVIEW%252520Interface%252520for%252520Arduino%252520-%252520Windows%252520Photo%252520Vie%25255B4%25255D.png"><img title="C:\Program Files (x86)\Arduino\libraries\RobotIRremote\src\IRremoteTools.cpp:5:16: error: 'TKD2' was not declared in this scope" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; border-left: 0px; display: block; padding-right: 0px; margin-right: auto" border="0" alt="C:\Program Files (x86)\Arduino\libraries\RobotIRremote\src\IRremoteTools.cpp:5:16: error: 'TKD2' was not declared in this scope" src="http://lh3.googleusercontent.com/-N5isR3zGq8k/VbujtLyBsLI/AAAAAAAAK8w/U_fcNTsLs90/2558-07-31%25252016_21_14-2558-07-31%25252016_15_59-JKI%252520VIPM%252520-%252520LabVIEW%252520Interface%252520for%252520Arduino%252520-%252520Windows%252520Photo%252520Vie_thumb%25255B2%25255D.png?imgmax=800" width="528" height="772" /></a></p> <p>ซึ่งเจ้า Arduino IDE นั้นไปเอา IR libraries ของมันมา compile แทน ซึ่งไม่น่าจะเป็นแบบนั้น มันก็เลย Error ขึ้นมา </p> <p><font color="#00ff00">วิธีทางแก้ไข ก็ไม่ยากครับ เราก็ทำการย้าย RobotIRremote libraries ของ Arduino ออกไปก่อน ไปไว้ที่ไหนก็ได้ อย่าให้ Arduino IDE มองเห็น จากนั้น ก็ทำการ compile LIFA_Base ใหม่ อีกครั้ง</font> </p> <p><a href="http://lh3.googleusercontent.com/-rDvirXVFY28/VbujuAdgJOI/AAAAAAAAK84/rpwE0gBjFgQ/s1600-h/2558-07-31%25252016_27_33-libraries%25255B3%25255D.png"><img title="move RobotIRremote to another folder" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; border-left: 0px; display: block; padding-right: 0px; margin-right: auto" border="0" alt="move RobotIRremote to another folder" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhllB_EFR5T-nXHZ9oCgQLG0j8ylX3JVQ5X0WIOqFhP8rS7b0dxPzpRc8yE8oWG6oF1LH-pzoRX29FygSk-aWMhxps-7HxeGLgS_KRvGNoajFOSvt0fxfZ4dsBCkOR-ea73w2cQ6FtZhYv2/?imgmax=800" width="644" height="480" /></a></p> <p>คนที่เจอปัญหานี้ น่าจะเข้าใจ ผมขอไม่อธิบายละเอียด เอาเป็นว่า แก้ไขตามนี้ ก็คิดว่าจะโอเคหล่ะ  </p> <p align="right">เอวังก็มีด้วยประการะฉะนี้ </p> Wisit.Phttp://www.blogger.com/profile/04747663677248244453noreply@blogger.com0tag:blogger.com,1999:blog-5321967662472700056.post-25198611908220246902014-01-04T08:30:00.001-08:002014-01-04T08:30:21.643-08:00Omron PLC Model CP1H-X40DT-D<div class="wlWriterHeaderFooter" style="float:none; margin:0px; padding:4px 0px 4px 0px;"><iframe src="http://www.facebook.com/widgets/like.php?href=http://mechacity.blogspot.com/2014/01/omron-plc-model-cp1h-x40dt-d.html" scrolling="no" frameborder="0" style="border:none; width:450px; height:80px"></iframe></div><p>วันนี้ ตั้งใจว่าจะเปิดหัวข้อที่เกี่ยวกับ PLC ไว้สักหน่อย เพราะว่ามีโอกาสได้จับงาน PLC ของ Omron รุ่น CJ2M-CPU33 มา ซึ่<a href="http://lh5.ggpht.com/-tuNnAmAHlB4/Usg26xYRaNI/AAAAAAAAJGw/qOCUHa57UdE/s1600-h/image%25255B3%25255D.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 5px 5px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top: 0px; border-right: 0px; padding-top: 0px" title="CJ2M-CPU33" border="0" alt="CJ2M-CPU33" align="left" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgf1UCID7UXWzC_yFV6NyNu-YX3v0dO2Hw7RKsNSvztRXfl2raWfcB-np08y9Es8pIXxUGmNdyI1t7n8tYaVnt9uKqGaWQiExh9WbAydaS6gUB8R20i3YZPAhOL2CmqI8Kci4HAgnaJBk3v/?imgmax=800" width="293" height="358" /></a>งต้องขอบอกว่า ตอนนั้น ความรู้ที่ร่ำเรียนมา มันมีเพื่อเอาไว้สอบเท่านั้น พอมาเจองานจริง งง จริงๆ ไม่รู้จะเขียนลอจิก อย่างไร เพราะเงื่อนไข (สำหรับผมในตอนนั้น) มันซับซ้อนมากๆ มีหลายเงื่อนไข ต้องเขียนดักกันไป ดักกันมา จนทำให้ไม่สามารถที่จะเอาหน้า contact มา lock กันเองได้ เพราะไม่งั้น ไล่กันหูตั้ง แน่ๆ </p> <p>แต่งานนั้น ก็จบมาได้ ชนิดแบบว่า ไม่ได้หลับได้นอนกันเลยทีเดียว สู็กันจนวินาทีสุดท้ายที่ลูกค้ามาตรวจเครื่องเลยก็ว่าได้ มีแอบไปนอนหลับบนรถกันเลย เพราะคิดไม่ออกจริงๆ ตอนนั้น </p> <p>ซึ่งเจ้า PLC CJ2M-CPU33 ตัวนั้นก็ได้ส่งลูกค้าไปแล้ว ครั้นจะซื้อมาเก็บไว้ศึกษา พอเห็นราคาแล้ว ก็ต้องหงายเงิบ แพงจริงๆ ไม่รู้ว่า มันแพงเพราะคุณสมบัติระดับเทพของมันหรือเปล่านะ </p> <p>แต่ อย่างไรก็ดี ถ้ายังได้จับ PLC ของ Omron อีก ก็คงยังต้องใช้ CX-One Programmer ในการเขียน LADDER / Boolean อย่างแน่นอน อย่ากระนั้นเลย มาเขียนบันทึกสิ่งที่ได้ศึกษามาเก็บไว้บน Blog ดีกว่า จะได้เอาไว้เตือนความจำด้วย </p> <p>ต้องขอย้อนกลับไป ตอนที่ทำโปรเจคกับเจ้า CJ2M-CPU33 ตอนนั้นสักหน่อย ต้องขอขอบคุณ thaiplc.com ที่มีเวบบอร์ด ไว้คอยตอบคำถามช่วยเหลือซึ่งกันและกัน เกี่ยวกับปัญหา และเกร็ดความรู้เกี่ยวกับ PLC ของไทย ซึ่งนับว่าเป็นแหล่งที่ใหญ่เชียวแหละ ที่มีคนเข้ามาอ่าน เพราะเท่าที่ดูแล้ว งานพวกนี้ คนที่ทำงานด้านนี้ คงไม่ค่อยได้เข้ามาตอบเท่าไหร่ เพราะ ดูแล้วแต่ละท่านคงจะยุ่งๆ แต่ ก็จะมีบางท่านที่แวะเวียนมาตอบคำถาม และคอยให้ความรู้อยู่อย่างสม่ำเสมอ ก็ต้องขอขอบคุณแหล่งความรู้ดีทีนี่ และแอดมิน ที่ดูแลระบบด้วยครับ </p> <p>และก็เพราะ thaiplc.com นั่นแหละครับ ที่ทำให้ผมจะได้เริ่มต้นเปิดประเด็นหัวข้อ PLC ก็เพราะว่า มีพี่ท่านหนึ่งในเว็บบอร์ด thaiplc.com ได้ให้ผมยืม PLC Omron CP1H-X40DT-D มา 1 ตัว พร้อมด้วย RS232 และ Ethernet extension ที่ติดมากับ PLC ด้วย ผมก็ไม่นึกว่าจะมีคนใจดี ให้ผมยืม PLC ซึ่งราคาแต่ละตัว ก็ไม่ใช่ของที่จะให้ยืมกันได้ง่ายๆ ต้องขอขอบพระคุณความใจดีของพี่เขาจริงๆ ไว้ ณ ทีนี้ด้วย </p> <p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhj2ql-kGO1FXRhRp5UWyT3JkY3Hplz9oFuTbbnxuN7M3saCDH0ENkf9oIhj7NusimKZCO4aCt6wFwQ6KzMsX3r806xWo_Sp5hT-HLJa2TvMUEV82eTn3uMTwdvwmT1Iztq19Zo2n57cIL7/s1600-h/image%25255B9%25255D.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="CP1H-X40DT-D" border="0" alt="CP1H-X40DT-D" src="http://lh3.ggpht.com/-XvgyBgpkOTo/Usg3D8aTilI/AAAAAAAAJHI/3y4t0OxRQlY/image_thumb%25255B5%25255D.png?imgmax=800" width="467" height="393" /></a></p> <p>ผมก็จะพยายามเขียนบันทึกไว้เรื่อยๆ ไว้ที่ blog นี่หล่ะกันครับ เดี๋ยวขอไปอ่าน manual มันก่อนหล่ะกันตอนนี้</p> <div style="padding-bottom: 0px; margin: 0px auto; padding-left: 0px; width: 448px; padding-right: 0px; display: block; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:59dce2c0-0106-40b2-b84c-0f0dc24a295a" class="wlWriterSmartContent"><div id="ecb8e4fe-454f-4ed1-b64d-f44ba22efa27" style="margin: 0px; padding: 0px; display: inline;"><div><a href="http://www.youtube.com/watch?v=scuvmn1VDjI" target="_new"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbtzOd287vQOM61Pc1qIWc5CMTSvZJEUNF2q0hk0h-GAA6GHkv5Xj_p6WjC1A-FMQ2mkQTHzhcU4-HlMdjQzc6_1NwhTkTCpXL7OFeO39lvXJWlDCcN4pHz7IIsEARrwKg3TVgPi92caRm/?imgmax=800" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('ecb8e4fe-454f-4ed1-b64d-f44ba22efa27'); downlevelDiv.innerHTML = "<div><object width=\"448\" height=\"252\"><param name=\"movie\" value=\"http://www.youtube.com/v/scuvmn1VDjI?hl=en&hd=1\"><\/param><embed src=\"http://www.youtube.com/v/scuvmn1VDjI?hl=en&hd=1\" type=\"application/x-shockwave-flash\" width=\"448\" height=\"252\"><\/embed><\/object><\/div>";" alt=""></a></div></div></div> Wisit.Phttp://www.blogger.com/profile/04747663677248244453noreply@blogger.com1tag:blogger.com,1999:blog-5321967662472700056.post-8674514944184068022013-03-25T06:01:00.001-07:002013-03-25T06:01:08.343-07:00รีวิวโปรแกรม In-sight กับ Smart Camera ของ Cognex<div class="wlWriterHeaderFooter" style="float:none; margin:0px; padding:4px 0px 4px 0px;"><iframe src="http://www.facebook.com/widgets/like.php?href=http://mechacity.blogspot.com/2013/03/in-sight-smart-camera-cognex.html" scrolling="no" frameborder="0" style="border:none; width:450px; height:80px"></iframe></div><p>เมื่อวันที่ 22 มีนาคม 2556 ผมมีโอกาสได้ไปอบรมการใช้งานโปรแกรม In-Sight ซึ่งเป็นโปรแกรมประเภท Machine Vision คือสามารถเขียนโปรแกรมตรวจสอบงานในสายพานการผลิต (จริงๆ ก็แล้วแต่จะไปประยุกต์ใช้ แต่ ถ้านำมาใช้ในสายพานการผลิตจะเหมาะกว่า) เช่น การตรวจสอลสลาก การตรวจสอบหาจุดบกพร่องของงานที่ผลิตออกมา การนับจำนวนชิ้นงาน ซึ่งในอุตสาหกรรมการผลิตชิ้นส่วนต่างๆ แม้กระทั่งการผลิตยา และอาหาร ก็มีงานที่เกี่ยวกับ Machine Vision รวมอยู่ด้วย </p> <p>ซึ่งเจ้าโปรแกรมนี้ หากใครเคยได้ใช้โปรแกรม VisionBuilder ของทางค่าย NI แล้วหล่ะก็ คงทำความคุ้นเคยกับมันได้ ไม่ยากนัก เพราะเค้าออกแบบมาแทบจะคล้ายกัน คือ เน้นให้สามารถเขียนโปรกรมผ่าน Graphic เลือกค่าต่างๆ ผ่านบล๊อกการทำงาน แต่ละขั้นตอน สุดท้ายก็ได้โปรแกรมตรวจสอบชิ้นงานอย่างที่ต้่องการ ในเวลาอันรวดเร็ว เพราะงานพวกนี้ จะว่าไปแล้ว ก็มีลักษณะที่ซ้ำกันไป ซ้ำกันมา ต่างกันตรง สภาพชิ้นงานและภาพที่ได้จากชิ้นงาน และตำแหน่งที่จะตรวจวัดชิ้น ซึ่งขึ้นอยู่กับว่า เรากำลังตรวจวัดอะไร เช่น ตรวจวัดระดับของเหลว การวัดว่ามี หรือไม่มีชิ้นส่วนชิ้นใดชิ้นหนึ่ง หรือวัดความถูกต้องของชิ้นงานเมื่อเทียบกับต้นแบบ </p> <p>ดูภาพเปรียบเทียบหน้าตาของโปรแกรม </p> <p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD2X9j_9C-E5B7VAKQxuA1NslVRMnTQuXOFIkdhtHX9dPsAVQq8Z0gpN19E3xrD0zIimvWQy87UVmh3DXG3lc3DM1zfVBXFYpXVwrHBtteu3jwFSP1JklYu9zDOrFSXfy1sPU3DhWiviy5/s1600-h/image%25255B3%25255D.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="In-Sight" border="0" alt="In-Sight" src="http://lh6.ggpht.com/-qE446rKFkno/UVBKNXh06rI/AAAAAAAAG54/hoOijeVhkiQ/image_thumb%25255B1%25255D.png?imgmax=800" width="644" height="420" /></a></p> <p align="center"><font size="4">หน้าตาโปรแกรม In-Sight</font></p> <p><a href="http://lh6.ggpht.com/-dOr8TdSGz7Y/UVBKOWxUHAI/AAAAAAAAG6A/XFgYy9Ejf2M/s1600-h/image%25255B7%25255D.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="VisionBuilder" border="0" alt="VisionBuilder" src="http://lh3.ggpht.com/-nvqoTuNBZkY/UVBKP-yPFxI/AAAAAAAAG6I/dnHLeX3XX04/image_thumb%25255B3%25255D.png?imgmax=800" width="642" height="484" /></a></p> <p align="center"><font size="4">หน้าตาโปรแกรม Vision Builder</font></p> <p align="left"><font size="4"></font> <br />แต่ วันนี้ผมไม่ได้มาพูดถึงโปรแกรม VisionBuilder ครับ ผมจะมาพูดถึงการทำงานคร่าวๆ ของโปรแกรม In-sight เจ้าโปรแกรม  In-sight โดยหน้าที่แล้ว เป็นโปรแกรมที่ช่วยให้งาน Machine vision ง่าย และเสร็จในเวลาอันรวดเร็ว หน้าที่ของโปรแกรมเมอร์ ก็คือ ทำการนำภาพที่ได้จากกล้องมาทำการประมวลผล โดยผ่านขั้นตอน ที่ทางโปรแกรมได้วางเอาไว้ แต่ละขั้นตอน และทำการกำหนดค่าต่างๆ ตามที่ต้องการ ซึ่งในโปรแกรม จะมี อัลกอริธึมในการประมวลผลภาพ ไม่ว่าจะเป็นการทำ Threshold การหาขอบภาพ การนำภาพมาเปรียบเทียบกับภาพต้นแบบ ซึ่งอัลกอริธึมเหล่านี้ มีพร้อมอยู๋แล้วในโปรแกรม In-Sight หน้าที่ของเรา คือใช้มันให้เป็น จัดลำดับเงื่อนไขอย่างถูกต้อง เราก็จะได้โปรแกรม Machine Vision ที่สามารถนำไปใช้ได้อย่างรวดเร็ว </p> <p>ความแตกต่างของโปรแกรมนี้ กับโปรแกรมอื่นๆ ทั่วไป คือ โปรแกรม In-sight นี้ ให้ดาวน์โหลดไปใช้ฟรีๆ แค่ นำ key ที่ได้จากโปรแกรม ไปลงทะเบียนผ่านหน้าเว็บ เราก็จะได้ key ที่ถูก gen ออกมา แล้วนำกลับมาลงทะเบียนที่โปรแกรม เพียงเท่านี้้ เราก็สามารถนำโปรแกรมไปใช้ได้เลย อะไร มันจะดีขนาดนี้ แต่ เดี๋ยวก่อน เจ้าโปรแกรม In-sight นี้ ใช้ได้แต่เฉพาะกับกล้อง Smart Camera ของ Cognex เท่านั้น ไม่สามารถนำไปใช้กับกล้อง Smart Camera ของบริษัทอื่นๆ ได้  </p> <p>ขอย้อนกลับไปเรื่องกล้องสักเล็กน้อย ในตลาดของงาน Machine Vision เราแบ่งกล้องได้เป็นสองประเภทใหญ่ๆ (ณ ตอนนี้) คือ <br />1. กล้อง Industrial ทั่วๆ ไป ซึ่งต้องมีคอมพิวเตอร์ 1 เครื่องในการรันโปรแกรม และรับภาพที่ได้จากกล้องพวกนี้มาประมวลผล  <br />2. กล้อง Smart Camera ซึ่งกล้องพวกนี้ต่างจากล้องแบบแรก คือ มันสามารถทำงานได้ด้วยตัวของมันเอง พูดง่ายๆ ก็คือ ตัวมันเองมีคอมพิวเตอร์ขนาดเล็ก อยู่ภายใน จะบอกว่าเล็กมากๆ แต่ ก็สามารถทำงานได้ด้วยตัวของมันเอง </p> <p><a href="http://lh5.ggpht.com/-iII2LFWLt0k/UVBKRjTSNnI/AAAAAAAAG6Q/8Q2pgiYg_ew/s1600-h/image%25255B11%25255D.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="Smart Camera" border="0" alt="Smart Camera" src="http://lh4.ggpht.com/-Q__ugWwpFN0/UVBKT29oLCI/AAAAAAAAG6Y/Sf-fCk-dIR0/image_thumb%25255B5%25255D.png?imgmax=800" width="425" height="484" /></a></p> <blockquote> <p>พวกกล้อง Smart Camera เกี่ยวข้องอย่างไรกับโปรแกรม In-sight ?</p> </blockquote> <p>คือมันเป็นอย่างนี้ครับ คือหลังจากเราได้ดาวน์โหลดโปรแกรม In-Sight และได้ทำการติดตั้งเสร็จแล้ว จากนั้น เรานำภาพที่ได้จากกล้อง Smart Camera มาทำการประมวลผลตามลำดับขั้นตอนจนเป็นที่น่าพอใจแล้ว เราก็จะทำการอัพโหลดโค๊ดที่เราเขียนทั้งหมดนี้ กลับเข้าไปที่กล้อง Smart Camera ครับ เจ้าตัวกล้องนี้ ก็จะเข้าใจโค๊ดที่ถูกอัพโหลดมาใส่ที่ตัวมัน และทำงานตามลำดับที่ถูกกำหดนดไว้แล้วในโค๊ด จากนั้น ที่ตัวกล้องจะมีช่องสัญญาณเอาท์พุต เอาไว้ให้เรา ส่งค่ากลับออกมาจากโปรแกรม เช่น หากกล้องตรวจพบเจอสิ่งผิดปกติ ให้ส่งสัญญาณ มาหยุดที่สายพานลำเลียงชิ้นงาน หรือส่งออกมาแสดงค่าที่ไฟสถานะของเครื่องจักร นอกจากนี้ มันยังมีช่องอินพุต เพื่อรับสถานะ เช่น จากเซนเซอร์ต่างๆ ได้อีกด้วย ยิ่งถ้ากล้องมีราคาแพง จะยิ่งมีลูกเล่นพวกนี้เยอะตามไปด้วย ซึ่งในการทำงาน เราสามารถปล่อยให้กล้องทำงานได้ตามลำพัง โดยไม่ต้องต่อคอมพิวเตอร์กับกลัองอีกต่อไป ซึ่งเจ้าตัวกล้อง Smart Camera พวกนี้จะประมวลผลบนตัวของมันเองเลย หากจะถามเรื่องความเร็วในการประมวลผล เท่าที่ผมถามจากผู้รู้ เค้าก็บอกว่า ถ้างานที่ต้องการวัด หรือตรวจจับนั้น วิ่งผ่านกล้องด้วยความเร็วไม่เกิน 600 ชิ้น ต่อ นาที ก็สามารถใช้กล้อง Smart Camera พวกนี้ ได้ ที่ต้องบอกว่า ไม่เกิน 600 ชิ้น ต่อ นาที นั้น ก็เพราะว่า ด้วยความที่มันมีคอมพิวเตอร์ขนาดเล็กอยู่ภายในนั้น มันก็ย่อมมีข้อจำกัดในการประมวลผล ซึ่งแน่นอน ย่อมสู้คอมพิวเตอร์ตั้งโต๊ะ ไม่ได้อย่างแน่นอน </p> <p>แล้วถ้าถามว่า ข้อเสียของกล้อง Smart Camera นอกจากเรื่องความเร็วในการประมวลผลหล่ะ อีกประเด็นหนึ่งก็คือ เอาหล่ะ โปรแกรม  In-Sight หน่ะมันฟรี ก็จริงอยู่ แต่ ราคาโปรเจคทั้งหมด มันจะไปตกอยู่ที่กล้องครับ ซึ่งแพงมากๆ คือหลังจากผม ได้ยินเรื่องราคาแล้ว ผมเข้าใจเลยว่า งาน Machine Vision ทำไมราคา มันถึงได้มากขนาดนั้น </p> <p>แต่ ถึงราคาจะแพงขนาดนั้น แต่ในแง่ การนำไปใช้งาน ก็ สะดวกสบายและคล่องตัวมากเลย นอกจากเรื่องโปรแกรมที่ง่าย และสร้างงานได้อย่างรวดเร็ว ผมขอยกตัวอย่างให้ฟัง สมมติว่า คุณไปติดตั้งระบบไว้ ณ ที่โรงงานแห่งหนึ่ง ซึ่งอยู่คนละจังหวัด เกิด วันดีคืนดี งานมีปัญหา คือ อาจจะด้วยสาเหตุอะไรก็แล้วแต่ ทำให้คุณจะต้องไปทำการแก้ไขโปรแกรมที่อยู่ในกล้อง คุณจะทำอย่างไร หากไม่ต้องเดินทางไปที่โรงงานแห่งนั้น ง่ายๆ ก็คือ คุณก็ให้คนหน้างานนั้น ทำการ capture ภาพที่ได้จากกล้อง Smart Camera ตัวนั้น ส่งกลับมาให้คุณ โดยที่คุณสามารถที่จะทำการปรับแต่งโปรแกรมที่คุณได้ Backup ไว้แล้ว กับภาพที่ได้ขณะนั้น คุณก็สามารถแก้ไขปัญหาได้ และสามารถทำการส่งไฟล์โค๊ดที่ได้รับการแก้ไขแล้วกลับไปที่หน้างาน และอัพโหลดใส่กลับไปที่ตัวกล้อง โดยที่คุณไม่ต้องเดินทางไปที่หน้างานเลย เห็นไหมหล่ะครับ ว่ามันสะดวกขนาดไหน เพราะเจ้ากล้อง Smart Camera พวกนี้ มันทำได้สบาย อยู่แล้ว บวกกับโปรแกรม In-Sight ที่โหลดมาได้ฟรีๆ มองการไกล ผมก็ว่ามันก็คุ้มอยู่นะ </p> <p> <br />ก็เป็นเรื่องที่จะมาเล่าสู่กันฟัง หลังจากที่ได้รับการอบรมมา จริงๆ ผมต้องการทราบว่าเจ้าโปรแกรม In-Sight มันต่างจากโปรแกรม VisionBuilder ที่ผมเคยใช้อยู่อย่างไร ซึ่งหลังจากที่ได้รับการอบรมแล้ว ก็มีความเข้าใจกับกล้อง Smart Camera และเจ้าตัวโปรแกรม In-Sight มากขึ้น ต้องขอขอบคุณทีมงาน Cognex Training Thailand เป็นอย่างยิ่งครับ ที่ให้ผมได้เข้ารับการอบรมในครั้งนี้ </p> <p><a href="http://lh6.ggpht.com/-q7D3EtgOAA8/UVBKYQM4WQI/AAAAAAAAG6g/anBwCCDH8Zk/s1600-h/image%25255B15%25255D.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="In-Sight Training" border="0" alt="In-Sight Training" src="http://lh6.ggpht.com/-YeuwnWT_B0M/UVBKbUt844I/AAAAAAAAG6o/w3kTfX07dOg/image_thumb%25255B7%25255D.png?imgmax=800" width="643" height="484" /></a></p> <p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8SPXpEI0_cgAS8QGlT2IPqr0mzkU2LPtZiCJw6ZlhaP_e1SizuvLdRHJXU5-V5R2HEImqHF1nmS1oiwEPJOE_5Z_jUtw-1u8VPn3gyZ04xA-29nmc2O9OOp4aNILps5MMsOsO8mkpgsI2/s1600-h/image%25255B19%25255D.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="In-Sight Training" border="0" alt="In-Sight Training" src="http://lh4.ggpht.com/-9sm_PqgXJok/UVBKjpelH_I/AAAAAAAAG64/Wwa2Kn4iNy0/image_thumb%25255B9%25255D.png?imgmax=800" width="644" height="479" /></a></p> Wisit.Phttp://www.blogger.com/profile/04747663677248244453noreply@blogger.com2tag:blogger.com,1999:blog-5321967662472700056.post-6208296119356549492012-10-16T09:23:00.001-07:002012-10-16T09:23:58.298-07:00LabVIEW Interface for Arduino ( Part II)<div class="wlWriterHeaderFooter" style="float:none; margin:0px; padding:4px 0px 4px 0px;"><iframe src="http://www.facebook.com/widgets/like.php?href=http://mechacity.blogspot.com/2012/10/labview-interface-for-arduino-part-ii.html" scrolling="no" frameborder="0" style="border:none; width:450px; height:80px"></iframe></div><p>    จากตอนที่แล้ว (<a href="http://mechacity.blogspot.com/2011/12/labview-interface-for-arduino.html" target="_blank">คลิกกลับไปอ่าน</a>) เป็นการติดตั้งโปรแกรมเสริมทางฝั่ง Labview เพื่อทำให้ Labview ติดต่อกับ Arudino อย่างมีรูปแบบ เพื่อให้ง่ายต่อการพัฒนาโปรแกรมต่อไป และทำการโปรแกรมส่วนเฟิร์มแวร์ให้ Arudino เพื่อให้ Arduino ติดต่อกับ Labview ผ่านทาง Serial comm </p> <p>หากเรามองที่ซอร์ฟแวร์ที่เป็นหัวใจหลัก ที่ทำให้ทั้งสองอย่างเข้าใจกัน เราสามารถพิจารณาได้ดังนี้ </p> <p><strong>ทางฝั่งของ Labview <br /></strong>- Labview Interface for Arduino tool kit ซึ่งเป็นโปรแกรมเสริมให้กับ Labview เราจะต้องเลือก tool block ให้เหมาะสมกับหน้าที่การทำงานของ pin ของ arduino UNO  (ขึ้นอยู่กับการออกแบบ และการใช้งานโปรแกรม) </p> <p><a href="http://lh6.ggpht.com/--_6smlaxP80/UH2JeV23oqI/AAAAAAAAFYM/uKiUHN8IZaY/s1600-h/image%25255B54%25255D.png"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="Labview Interface for Arduino tool kit " border="0" alt="Labview Interface for Arduino tool kit " src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiM3_SBci9BpLPcyqgcJTSMV5JKri4RxmLYM8K4SA0VcSdc1rcc1Uf_M79yC2_wtpNFx1NvqLPjaF9bNRW0h0CQ2z3ueBdmP0L9BmXsUPFpW9-Do6FBaGTYfNH5JMncwBsmioMGXDfv8NA5/?imgmax=800" width="447" height="333" /></a> <a href="http://lh3.ggpht.com/-mXlS1_pIZuY/UH2Jhw5avbI/AAAAAAAAFYc/B0CXDCyj7lg/s1600-h/image%25255B14%25255D.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Arduino Board" border="0" alt="Arduino Board" src="http://lh4.ggpht.com/-dbTMs98FhXw/UH2JjjH4rqI/AAAAAAAAFYk/6rb4y6G3nSc/image_thumb%25255B8%25255D.png?imgmax=800" width="396" height="277" /></a> </p> <p><strong>ทางฝั่งของ Arduino <br /></strong>- Firmware (โค๊ด) ซึ่งเขียนด้วยภาษา wiring ของทางฝั่งของ arduino ในที่นี้ผมจะเรียกตามโปรเจคของมัน ซึ่งก็คือ LVIFA_Base <br />  ซึ่งเราจะต้องทำการ burn ลงบนบอร์ด Arduino (ซึ่งจะทำการ burn ลงแค่ครั้งเดียวเท่านั้น) </p> <p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQsMiTCyQ4xsaDed4p0IWCTWNh6zlrBiqm7l_czZ5HDozJN1RSKFPyztvEtEspI3wGU0DRgEJCtZyX0C1VPRdQQwML9-X5__dkrqFYjAs1Stn9f8MywRJbTOsL8Dk7gjxA70f5lGeFapn6/s1600-h/image%25255B10%25255D.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="LVIFA_Base " border="0" alt="LVIFA_Base " src="http://lh3.ggpht.com/-nOHrzegGLJw/UH2JnVIIThI/AAAAAAAAFY0/mNZLqH1H27M/image_thumb%25255B6%25255D.png?imgmax=800" width="456" height="296" /></a> </p> <p></p> <p></p> <p>เมื่อเราติดตั้งโปรแกรมทั้งสอง ลงบน PC และบน Arduino board เรียบร้อยแล้ว ทีเหลือก็เหลือเพียงทำให้ทั้งสองรู้จัก และเข้าใจคำสั่งที่ต่างฝ่าย ต่างส่งมาให้กันและกัน ก็แค่นั้นเอง </p> <p>คำถามก็คือ </p> <blockquote> <p>Labview Interface for Arduino tool kit และ LVIFA_Base มันเข้าใจกันได้อย่างไร ?</p> </blockquote> <p> <br />คำตอบก็คือ ทั้งสองโปรแกรมนี้ รับส่ง ข้อมูล ซึ่งเป็น คำสั่ง และ ผลลัพธ์ผ่านทางการสื่อสาร Serial Communication ซึ่ง PC จะมองเห็นบอร์ด Arduino เป็นเหมือน Comport อนุกรม(เสมือน)  ซึ่งข้อมูลจะวิ่งเข้า ออก ณ จุดนี้ จาก PC ไป Arduino และจาก Arduino ไป PC </p> <blockquote> <p>แล้วมันคุยกันอย่างไรหล่ะ? </p> </blockquote> <p> <br />คำถามนี้ ดูเหมือนจะไม่ต้องไปสาวลงไปลึกมากนัก เพราะผู้พัฒนาต้องการให้มองเจ้า Labview Interface for Arduino tool kit และ  LVIFA_Base เป็นเสมืองกล่องดำ (Black box) ที่เราไม่จำเป็นต้องไปรู้การทำงานภายในของมัน ขอแค่เพียงเรารู้แค่ว่า จะเอามันมาใช้งานได้อย่างไรก็พอ </p> <blockquote> <p>แล้วเราจะเริ่มต้นใช้งานมันได้อย่างไร? </p> </blockquote> <p> <br />อันนี้สิ เป็นเรื่องสำคัญ หากไม่มีตัวอย่างโปรแกรม และ Help มาให้แล้วไซร้ เจ้า Black box ที่ว่า ก็ไม่มีความหมายเลย ก็เพราะ เราก็ยังนำมันมาใช้ไม่เป็นอยู่ดี ต่อให้โค๊ดที่เขียนอยู่ภายใน เลิศหรูอลังการเพียงใด มันก็คงเป็นการลำบากที่เราจะนำของที่ควรจะนำมาใช้ได้เลย แต่กลับต้องมานั่งไล่โค๊ดเพื่อให้เข้าใจการทำงานของมัน จึงจะเอามาใช้งานได้ ถ้าเป็นแบบนั้นจริง ก็คงไม่ดีแน่ๆ </p> <p>เมื่อเรารู้แล้วว่า ตัวอย่าง และ help ที่ให้มานั้น เป็นจุดเริ่มต้นการนำมาใช้งาน เราก็เริ่มจากตัวอย่างของมันกันเลย ให้ไปที่ <br />C:\Program Files\National Instruments\LabVIEW 2011\vi.lib\LabVIEW Interface for Arduino\Palette Examples <br />(อาจจะไม่เหมือนกัน ขึ้นอยู่กับเวอร์ชั่นของ Labivew) </p> <p>ซึ่งจะปรากฏตัวอย่างมากมาย ให้เราเริ่มต้น ในที่นี้ เราจะมาเริ่มต้นจาก Analog Read Pin Example.vi ถ้าเราดับเบิลคลิกที่ไฟล์นี้ ก็(ควร)ที่จะเข้าสู่โปรแกรม Labview  และเปิดหน้าต่างของโปรแกรมนี้เลยทันที </p> <p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOAI56SiC7xqaNq02Y3mP8p4H10vuaN8KsbE5QBAIR7DmANgxSL8EQAfpKNjUecwd1JhA8GOSLGPGy628HnL0jXBuMcBtJN9pqDZTCyvaz9XyynvvB1WuR4Uge50mcTCI9w3vTJnf2h6hl/s1600-h/image%25255B19%25255D.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Palette Examples" border="0" alt="Palette Examples" src="http://lh3.ggpht.com/-kQ8n7PSgCGA/UH2JqSlEdHI/AAAAAAAAFZE/Jd-v6OwTMLw/image_thumb%25255B11%25255D.png?imgmax=800" width="460" height="262" /></a> </p> <p> จากรูป ( ผมกด Ctrl+T เพื่อให้แสดงผล Tile left and Right )  ซ้ายมือ เป็นการออกแบบหน้าต่าง GUI คือเป็นส่วนที่ให้ผู้ใช้งานไว้สำหรับทำงาน ส่วนขวามือ เป็นหน้าที่ของโปรแกรมเมอร์ที่จะต้องทำการเขียนโปรแกรมแนว Graphic Programming เพื่อให้โปรแกรมที่ออกแบบไว้ทำหน้าที่ได้อย่างที่ต้องการ ซึ่งส่วนใหญ่แล้ว โปรแกรมเมอร์ก็จะทำหน้าที่ผู้ใช้งานไปด้วยในตัว </p> <p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJVYGG3n5GSbRDdP-fEc1C4tf5jqM47rpZjhMlog5XHzXkoVivtPYJpcTuKA50NEvAmDmhWFxT0k3uNLvmHgw_uKPCBVwR1LLILsI7pfeuJ7lEWEBDF8qFrG4KC7xIhdP8LnWlyv2yCpyt/s1600-h/image%25255B24%25255D.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Analog Read Pin Example.vi" border="0" alt="Analog Read Pin Example.vi" src="http://lh3.ggpht.com/-DczXLjSgxvc/UH2JtXMEixI/AAAAAAAAFZU/GiCAtZT4Qcw/image_thumb%25255B14%25255D.png?imgmax=800" width="458" height="282" /></a> </p> <p>ในทางด้านซ้ายมือ เราเรียนรู้ได้ไม่ยาก หากมีพื้นฐานเรื่องการเขียนโปรแกรมบน Labview มาก่อนแล้ว แต่ที่เป็นปัญหาตอนนี้ คือ การนำ Labview Interface for Arduino tool kit มาใช้  ซึ่งมันมีลำดับการทำงาน พอจะอธิบายคร่าวๆ ได้ดังนี้ </p> <p>ถ้าเราต่อวงจรในโลกแห่งความจริง หมายถึงต่อวงจรจริงๆ ตามวงจรนี้ โดยเราให้ แรงดันที่ถูกแบ่งจาก R ปรับค่าได้ ต่อเข้ากับขา Analog In ช่อง AN0 ของ Arduino  </p> <p><a href="http://lh6.ggpht.com/-K-f75p6yxjk/UH2JuqAWg8I/AAAAAAAAFZc/HJ44v6GiKpQ/s1600-h/image%25255B30%25255D.png"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Analog Read Pin Example circuit" border="0" alt="Analog Read Pin Example circuit" src="http://lh6.ggpht.com/-Tf6eosSBVpc/UH2JwdHb8yI/AAAAAAAAFZk/oGYGJHCGPKY/image_thumb%25255B18%25255D.png?imgmax=800" width="456" height="341" /></a> </p> <p></p> <p>แล้วทำการเขียนโปรแกรมบน Labview ด้าน Block Diagram ตามรูปภาพ </p> <p><a href="http://lh5.ggpht.com/-nCy9eIJZWX0/UH2Jx1XQEkI/AAAAAAAAFZs/eyViLQrubiY/s1600-h/image%25255B41%25255D.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Analog Read Pin block diagram" border="0" alt="Analog Read Pin block diagram" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixnTy4_NHsAdyhXLM5Wc5lpLTV0AT2gLTYuhajiVa1Q9n4lQ-DPu0kNon87cpEPxvWRw-5MnSuhii6veCQ854wRszKPyJXzB3ud29AjlLtA2rdO1adgAQ9tzZEu9iWQtut5rvyaQQPwIBi/?imgmax=800" width="464" height="212" /></a> </p> <p>ความหมายของมันก็คือ โปรแกรมจะเริ่มจากหมายเลข 1 tool block ส่วนนี้ จะทำหน้าที่เตรียมการสื่อสารทาง Serial Communication ซึ่งมีพารามิเตอร์ที่ถูกกำหนดเป็นค่าเริ่มต้นไว้เรียบร้อยแล้ว หากเราสนใจให้ดับเบิลคลิกที่ Init จะปรากฏหน้าต่างของโปรแกรมย่อยของ Labview ขึ้นมาอีกที </p> <p>จากนั้นเมื่อโปรแกรมได้ถูกกำหนดค่าเริ่มต้นในการสื่อสารกับ arduino เรียบร้อยแล้ว ข้อมูลต่างๆ จะวิ่งไปตามสายสีชมพู ซึ่งจะเป็นข้อมูลที่ถูกผสมรวมกัน ทั้งข้อมูลที่เป็นตัวเลข ตัวอักษร ค่าอ้างอิง ข้อมูลอะเรย์ ตรงนี้ เราจะยังไม่ต้องรู้ว่ามันประกอบไปด้วยอะไรบ้าง ประเด็นของเราก็คือ ข้อมูลต้องเป็นชนิดเดียวกัน จึงจะนำมาต่อกันได้ ถ้าเป็นคนละชนิด คนละประเภท ต้องทำการแปลง ถอดออก หรือ รวมกันใหม่ เพื่อให้เป็นข้อมูลประเภทที่ตรงกับช่องที่จะต่อเข้า block ต่อไปเสียก่อน จึงจะต่อกันได้ </p> <p>จากเส้นสีชมพูที่เราเห็น ข้อมูลเหล่านี้ นี่แหละ ที่จะวิ่งเข้าสู่ Comport อนุกรม(เสมือน) ฉะนั้นไม่ว่า arduino board จะส่งอะไรเข้ามา หรือ รับข้อมูลอะไรออกไป มันจะใช้ข้อมูลในเส้นสีชมพูในการอ้างอิง </p> <p>แต่เมื่อเข้ามาอยู่ใน loop while ของโปรแกรม (ส่วนที่ 2 ) โปรแกรมจะวนอยู่ในนี้จนกว่าจะมีกดปุ่ม stop หรือไม่ก็เกิดเหตุการณ์ Error จากเส้นสีเหลือง จึงจะหลุดออกจาก loop while แล้วคืนค่าอ้างอิงที่เคยจองไว้ กลับสู่ระบบต่อไป (ส่วนที่ 3) </p> <p>กลับมาที่ส่วนที่ 2 อีกครั้ง เป็นส่วนที่โปรแกรมเราจะทำงานเป็นหลัก (หลังจากผ่านส่วนที่ 1 ในตอนเริ่มต้นมาแล้ว) ในส่วนนี้ เราเลือกใช้ tool block ที่เป็น Analog Read นั่นก็เพราะว่า ในวงจรจริงที่เราได้ต่อไว้นั้น มีการนำเข้าสัญญาณ Analog นั่นก็คือแรงดันไฟฟ้าไฟกระแสตรงที่ถูกแบ่งมาจาก ตัวต้านทานปรับค่าได้ เข้ามาที่ขา AN0 ของ Arduino ที่ทำหน้าที่เป็นขาอินพุต (เท่านั้น) จะเห็นได้ว่า tool block ที่ถูกเลือกไว้ จะต้องสัมพันธ์กันกับวงจรที่ต่อจริง โดยเลือกใช้ Analog Read ที่ถูกกำหนดค่า Analog Input Pin = 0  จะเห็นได้ว่าสัมพันธ์กันจริง ทั้งวงจรที่ต่อจริง กับ วงจรที่ต่อบน Labview</p> <p>จากนั้น เราต้องการให้มันแสดงผลที่หน้าจอคอมพิวเตอร์ เราก็แค่หา Guage แสดงค่า มารับที่ช่อง Voltage ของ Analog Read Pin เพียงเท่านั้น เราก็จะได้โปรแกรมง่ายๆ ที่สามารถนำค่าจากโลกภายนอก เข้ามาแสดงผลในโลกของคอมพิวเตอร์ได้แล้ว  </p> <p><a href="http://lh6.ggpht.com/-S_IscaEk10Q/UH2J1c7bpSI/AAAAAAAAFZ8/H2GJNN84N5k/s1600-h/image%25255B46%25255D.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Analog Read Pin setting and display" border="0" alt="Analog Read Pin setting and display" src="http://lh5.ggpht.com/-rDfxUdq3Lw8/UH2J28jYiVI/AAAAAAAAFaE/XXn_arvvEEQ/image_thumb%25255B28%25255D.png?imgmax=800" width="465" height="352" /></a></p> <p>หมายเหตุ เอาเมาส์ชี้ที่ tool block แล้วกด Ctrl +H จะปรากฏหน้าต่างแสดงคำอธิบาย tool block นั้นๆ </p> <p><a href="http://lh6.ggpht.com/-F9L9my86lho/UH2J4H3wEEI/AAAAAAAAFaM/57spca_xEoE/s1600-h/image%25255B47%25255D.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="analog read pin help" border="0" alt="analog read pin help" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAWiTJasXMaYfVrx3KEXfgLrDababDrIloFNLI9j_ClT8Y9FoZ6EbRbbuuhsABLZNit4K77IlgxUVIaxWnl3rtH754cCZzBEqF-HNAAuK2e3Uo_PXB-cA1ujF9GxRK6H08M7AmSDM8idir/?imgmax=800" width="450" height="107" /></a> </p> <p>ถ้าจะมีคำถามว่า แล้วถ้าต้องการเอา arduino ไปวัดค่าจากเซ็นเซอร์ที่เป็นตัวอ่านค่าอุณหภูมิ หรือ ค่ากระแสไฟฟ้าได้ไหม ก็ต้องถามกลับไปว่า ตัวอ่านค่าอุณหภูมิกับตัวอ่านค่ากระแสไฟฟ้า ให้เอาท์พุตออกมาเป็น Analog ไหมหล่ะ ถ้าใช่ ตัวอย่างที่ได้นำเสนอไป ก็เกือบจะเอาไปใช้ได้เลย เพราะเรากำลังรับค่าที่เป็นแรงดันไฟฟ้า ที่แปรผันตามค่าตามที่มันกำลังวัดค่าอยู่นั่นเอง เพียงแต่ค่าที่เราต้องการให้มันแสดง มันไม่ใช่ค่าแรงดันไฟฟ้า เราต้องการอ่านค่าอุณหภูมิหรือค่ากระแสไฟฟ้า ฉะนั้นค่าที่รับมาได้จะเป็นค่าแรงดันไฟฟ้า เราก็ต้องนำค่าเหล่านั้นมาทำทางคณิตศาสตร์โดยใช้เครืองมือ + - x / ทาง labview ในการแปลงค่าแรงดันให้กลายเป็นค่าที่เราต้องการ โดยสมการในการแปลงมันก็อยู่ในดาต้าชีทของเซ็นเซอร์เบอร์นั้นๆ นั่นแหละ </p> <p>ยังมีตัวอย่างที่อยู๋ในโฟวเดอร์ดังกล่าวอีกเยอะแยะ หากเราเข้าใจตัวอย่างนี้แล้ว เราก็สามารถที่จะเข้าใจตัวอย่างอื่นๆ ได้อย่างไม่ยากเย็นนะ ขอให้เรามีพื้นฐานของ Labview Programming + Circuit + หน้าที่การทำงานของแต่ละ pin ของ arduino เราก็น่าจะพอแก้ไข ปรับปรุง พัฒนาจากตัวอย่างที่เค้าให้มาได้อยู่แล้ว </p> <p align="right">หวังว่าพอจะได้แนวทางการนำไปประยุกต์นะครับ </p> Wisit.Phttp://www.blogger.com/profile/04747663677248244453noreply@blogger.com2tag:blogger.com,1999:blog-5321967662472700056.post-11914555750269507522012-10-15T07:18:00.001-07:002012-10-15T07:19:07.558-07:00Robotic wheelchair<div class="wlWriterHeaderFooter" style="float:none; margin:0px; padding:4px 0px 4px 0px;"><iframe src="http://www.facebook.com/widgets/like.php?href=http://mechacity.blogspot.com/2012/10/robotic-wheelchair.html" scrolling="no" frameborder="0" style="border:none; width:450px; height:80px"></iframe></div><p align="center"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHEgKdfZL7dRTTekO5eOjEuom6CcvkM-DdMn7lP3-lCyyyJtGj8ShRDvdc1-XrTpJQjuO1IeMOsBC0YS9HRWXVxhtzjYIiOGAl3G-IzA8eQ3XUy_lnFWb88z6PrqW3dtfjzit_eBnX2LmY/s1600-h/image%25255B4%25255D.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Robotic wheelchair" border="0" alt="Robotic wheelchair" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiY0rIvOQAn4FvFIjc3tRpsYc0krLx3e4_WhbxgrnYqJICmYZ9oekG1Pvmyo53VR-61vHFpAnekcXnsjx1HsbaUVSDW_-LEhEQDx2BCHwME-B-qDjGVkbosMs6KhsMhyxdmFqNVyy8uQjS1/?imgmax=800" width="438" height="276" /></a> </p> <p>    หุ่นยนต์เก้าอี้ผู้พิการทางขา สร้างโดยคุณ Shuro Nakajima ซึ่งเป็นหัวหน้าทีม Chiba Institute of Technology ได้ถูกสร้างให้มีความแตกต่างจากหุ่นยนต์เก้าอี้ผู้การทางขาจากตัวอื่นๆ ตรงที่มันมีความสามารถในการข้ามสิ่งกีดขวางได้ ซึ่งโดยปกติแล้ว รถเข็นเก้าอี้ผู้พิการทางขานั้น ตัวล้อจะไม่สามารถยกตัวขึ้นเองได้ จะเดินทางไปได้ในที่ราบเรียบ ไม่มีสิ่งกีดขวาง แต่เจ้าหุ่นตัวนี้ มีความสามารถทำได้ ซึ่งนับว่าเป็นการพัฒนารถเข็นสำหรับผู้พิการทางขา ก้าวไปอีกขั้น </p> <p>   หุ่นยนต์ตัวนี้ มีความสามารถหลากหลายในการเคลื่อนไหว ด้วยการขับเคลื่อนทั้งสี่ล้อ และมีห้าแกน มีความสามารถในการยกล้อตัวเองข้ามสิ่งกีดขวาง โดยผู้ขับจะต้องเป็นคนกำหนดทิศทางที่จะไปโดยใช้ Joystick ที่ติดอยู่กับตัวรถ และเจ้าหุ่นยนต์จะทำการประเมินสิ่งรอบตัวของมัน แล้วทำการปรับตำแหน่งของล้อ จนกระทั่งตำแหน่งจุดศูนย์ถ่วงทั้งหมด เพื่อให้เกิดความสมดุล และเหมาะสมกับการแก้ไขในแต่ละสถานการณ์ </p> <p> </p> <div style="padding-bottom: 0px; padding-left: 0px; width: 425px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:70548191-9686-4973-a23c-575f37657a33" class="wlWriterSmartContent"><div id="5c856378-0c46-4c06-99c1-33a50e1fd554" style="margin: 0px; padding: 0px; display: inline;"><div><a href="http://www.youtube.com/watch?v=t2SHKyq5yCU" target="_new"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEij_TbKv1pMG3zv-Ssi0-gKEKPiJfeVTP8IBt0YjSTmYH-iiHHwk81xzwEHMyE1yoyuW0s3R8715bka6vIhUjmqumOBRMUtJM5eB_Eb002M_rylZ8_0HqdR8QEZKhOYiUZ96fHm6KcUnu8c/?imgmax=800" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('5c856378-0c46-4c06-99c1-33a50e1fd554'); downlevelDiv.innerHTML = "<div><object width=\"425\" height=\"355\"><param name=\"movie\" value=\"http://www.youtube.com/v/t2SHKyq5yCU&hl=en\"><\/param><embed src=\"http://www.youtube.com/v/t2SHKyq5yCU&hl=en\" type=\"application/x-shockwave-flash\" width=\"425\" height=\"355\"><\/embed><\/object><\/div>";" alt=""></a></div></div></div> <p>ที่มาของข่าว <a href="http://www.diginfo.tv/v/12-0174-r-en.php" rel="nofollow" target="_blank">คลิก</a></p> Wisit.Phttp://www.blogger.com/profile/04747663677248244453noreply@blogger.com0tag:blogger.com,1999:blog-5321967662472700056.post-51077364607021398812012-10-10T06:40:00.001-07:002012-10-10T06:40:29.993-07:00Legged Robotics<div class="wlWriterHeaderFooter" style="float:none; margin:0px; padding:4px 0px 4px 0px;"><iframe src="http://www.facebook.com/widgets/like.php?href=http://mechacity.blogspot.com/2012/10/legged-robotics.html" scrolling="no" frameborder="0" style="border:none; width:450px; height:80px"></iframe></div><p><a href="http://lh4.ggpht.com/-2608Z9fa-us/UHV6rKr612I/AAAAAAAAFMU/_MMJ0mt6J8Y/s1600-h/image%25255B5%25255D.png"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="Legged Robotics" border="0" alt="Legged Robotics" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCbBzhnl7f2c8FT6UVkdbdTrV0M7rEmyFUw-thQ0iFS3uxUMHMHhM_JchnGFjOI5orQ2YPB9PqClV45DWohVikBpR3BxGS2UCcOF7sFI7K9f5X1KUxp999PszC4xAgySPoXze_hevO5CXi/?imgmax=800" width="320" height="239" /></a> ห้องทดลองเคลื่อนที่อัตโนมัติ (Autonomous System Lab) ได้พยายามที่จะค้นคว้าหารูปแบบการออกแบบกลไก ที่สามารถเคลือนไหวได้อย่างพลวัต ไม่ว่าสถานะการณ์จะเป็นอย่างไร เจ้าหุ่นยนต์ที่เค้าคิดจะออกแบบนั้น ก็ยังที่จะสามารถเคลื่อนที่ผ่านไปได้ และสามารถที่จะคิดและปรับตัวเองให้เข้ากับสภาพของเส้นทางที่พวกมันเคลื่อนที่ไปด้วย </p> <p>เห็นหน้าตาหุ่นยนต์ตัวนี้ แล้ว รู้ได้เลยทันทีว่า “ขา” ของมันคือส่วนที่สำคัญที่สุด และเป็นพระเอกของการเคลือนไหวแบบพลวัต หลบหลีกสิ่งกีดขวาง ปรับสมดุลของจุดศูนย์ถ่วงของตัวมันเอง รับแรงกระแทก และส่งแรงกระแทกนั้นกลับไปประมวลผล เพื่อปรับระยะการยืดและหดตัวของสปริงได้อย่างพอเหมาะ นับว่า เป็นอัฉริยะภาพทางวิศวกรรมจริงๆ </p> <p>เห็นสมการแล้ว ทึ่งเลยครับ มันคงไม่ใช่เรื่องง่าย ที่ใครที่คิดอยากทำ แล้วก็ลงมือทำไปเลย แล้วก็มานั่งปรับแต่งไปเรื่อยๆ หากเป็นอย่างนั้นจริงๆ ก็ไม่รู้เราจะเรียนวิศวะกันไปทำไม ให้มันยุ่งยาก  </p> <p><a href="http://leggedrobotics.ethz.ch/lib/exe/fetch.php?media=robots:starleth:starlethmaxon_poster_v02_dr.jpg" rel="nofollow" target="_blank"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="control system model " border="0" alt="control system model " src="http://lh5.ggpht.com/-JUMEqDjpCPw/UHV6uyPAgoI/AAAAAAAAFMk/Y7BKtKxrGXI/image%25255B11%25255D.png?imgmax=800" width="465" height="287" /></a> </p> <p>ในส่วนของซอร์ฟแวร์ ทางทีมได้ใช้โปรแกรมทางวิศวกรรมที่ดังๆ เช่น MATLAB , LABVIEW และ C/C++ ซึ่งเจ้าตัว C/C++ นี้ ถูกนำไปเขียนกับ <a href="http://www-clmc.usc.edu/Resources/Software">SL - The Simulation Laboratory</a> ซึ่งก็ไม่น่าแปลกใจเลย ซอร์ฟแวร์พวกนี้ โดยเฉพาะ MATLAB และ LABVIEW ทำไมจึงเป็นที่นิยมในงานวิจัยพวกหุ่นยนต์นัก และยังมีราคาแพงอีกด้วย </p> <p>ขอให้เพื่อนๆ ดูวีดีโอสาธิต แล้วกันครับ เห็นแล้วจะเกิดไฟแห่งความอยากรู้ อยากเห็นขึ้นมาอีกเยอะเลย ผมสาบานได้ </p> <div style="padding-bottom: 0px; padding-left: 0px; width: 425px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:167dd35d-95a1-4730-93f4-805b5fb694d6" class="wlWriterSmartContent"><div id="f4d42f2b-202a-4dc5-abc2-a205bd4e80f9" style="margin: 0px; padding: 0px; display: inline;"><div><a href="http://www.youtube.com/watch?v=6igNZiVtbxU" target="_new"><img src="http://lh6.ggpht.com/-X2lmNUZhObY/UHV6wHkMLjI/AAAAAAAAFM0/BCQQIVxr2_4/video9e93497c7b55%25255B6%25255D.jpg?imgmax=800" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('f4d42f2b-202a-4dc5-abc2-a205bd4e80f9'); downlevelDiv.innerHTML = "<div><object width=\"425\" height=\"355\"><param name=\"movie\" value=\"http://www.youtube.com/v/6igNZiVtbxU&hl=en\"><\/param><embed src=\"http://www.youtube.com/v/6igNZiVtbxU&hl=en\" type=\"application/x-shockwave-flash\" width=\"425\" height=\"355\"><\/embed><\/object><\/div>";" alt=""></a></div></div></div> <p></p> <p></p> <p></p> <p>ศึกษาข้อมูลเพิ่มเติม <a href="http://leggedrobotics.ethz.ch/doku.php?id=start" rel="nofollow" target="_blank">คลิก</a></p> Wisit.Phttp://www.blogger.com/profile/04747663677248244453noreply@blogger.com0tag:blogger.com,1999:blog-5321967662472700056.post-82192673636147576182011-12-24T09:19:00.001-08:002011-12-24T09:19:59.260-08:00LabVIEW Interface for Arduino<div class="wlWriterHeaderFooter" style="float:none; margin:0px; padding:4px 0px 4px 0px;"><iframe src="http://www.facebook.com/widgets/like.php?href=http://mechacity.blogspot.com/2011/12/labview-interface-for-arduino.html" scrolling="no" frameborder="0" style="border:none; width:450px; height:80px"></iframe></div><p><a href="http://lh6.ggpht.com/-kaE5PqtO4l0/TvYJnnzZIPI/AAAAAAAADjE/NJL44_bPmvI/s1600-h/image%25255B4%25255D.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="VISV Getting Started With the LabVIEW Interface for Arduino" border="0" alt="VISV Getting Started With the LabVIEW Interface for Arduino" align="left" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitDX_SmP9q9FBCYonbZWnBeML21J9zy22ywnNnzn4kKokv1FPoHMGUFV189RKY2XlR6zcExHGv3lEn7IVPUzjunyEXnx8bRPX_yohDi2NXpZLyqsQaYnqQ3Ib87OvpvfyHmkHThiHYM0SA/?imgmax=800" width="305" height="185" /></a> ช่วงนี้ ก็เป็นช่วงเด็กทำโปรเจคกัน เราก็มีโปรเจคที่ต้องทำเหมือนกัน ก็เพิ่งจะผ่านการพรีเซ้นต์ หัวข้อโปรเจคผ่านไป ก็สบายใจได้หน่อยนึง ที่เหลือก็ทำโปรเจคให้มันสำเร็จก็แล้วกัน </p> <p>วันนี พอดีเพื่อนมาหาที่บ้าน มาปรึกษากันเรื่องโปรเจคของมัน ประมาณว่า ต้องการทำให้บอร์ด Arduino Freeduino ติดต่อกับ Labview เพื่อที่เราจะได้เอา NI Labview สร้างเป็นหน้ากาก GUI เพราะเห็นว่า เคยเรียนการใช้ NI LABVIEW มาแล้ว ก็ไม่น่าจะยากมาก ลองๆค้นหาข้อมูลในอินเตอร์เนต ก็เจอ ที่น่าสนใจดู <a title="007 VISV Getting Started With the LabVIEW Interface for Arduino" href="http://vishots.com/getting-started-with-the-labview-interface-for-arduino/" rel="nofollow" target="_blank">ลิ้งค์</a> อืมน่าสนแหะ ลองติดตั้งดูสักหน่อยสิ บอร์ด Arduino เราก็มีแล้ว </p> <ul> <li>อันดับแรก ก็ต้องมี NI LABVIEW เวอร์ชั่น 2009 ขึ้นไป เค้าแนะนำว่า งั้นนะ แต่ที่ผมทดลองใช้อยู่เป็น เวอร์ชั่น NI LABVIEW  2011 </li> <li>บอร์ด Arduino สักบอร์หนึ่ง ตระกูลไหนก็ได้ แล้วก็พวกอุปกรณ์อิเล็กทรอนิกส์ สักหน่อย </li> <li><a href="http://arduino.cc/en/Main/Software" rel="nofollow" target="_blank">Arduino IDE</a> แน่นอนหล่ะ มีบอร์ดแล้วไม่มีโปรแกรม ก็ชักจะยังงัยๆ อยู่ </li> </ul> <p>หวังว่า เพื่อนๆ มีทั้งสามอย่าง และติดตั้งเรียบร้อยแล้วนะ ต่อจากนี้ไป ก็เป็นการทำให้ Labview สามารถมองเห็น Serial Comport แล้วก็ทำให้ทั้งสองอย่าง Interface กันได้ ก็ทำตามขั้นตอนกันเลยครับ </p> <ol> <li>ติดตั้ง <strong><a href="http://joule.ni.com/nidu/cds/view/p/id/2659/lang/en" rel="nofollow" target="_blank">NI-VISA Drivers</a></strong> เพื่อทำให้ NI LABVIEW มองเห็น Serial Port กันก่อน </li> <li>ติดตั้ง <a href="http://jki.net/vipm/download" rel="nofollow" target="_blank">VI Package Manager</a> ตัวนี้ จะเป็นตัวสร้าง แชร์ และค้นหา LabVIEW add-ons และ  toolkits จาก LabVIEW Tools Network ในที่นี้ เราจะเอามาไว้สำหรับค้นหา และติดตั้ง </li> <li>เมื่อติดตั้ง VI Package Manager เสร็จแล้ว ที่หน้าต่างโปรแกรม ให้เราค้นหา Tool kit ที่ชื่อ Labview Interface for Arduino ตามรูป เลยครับ<a href="http://lh6.ggpht.com/-MV5gpug3va4/TvYJqxBAI4I/AAAAAAAADjU/XXRphw-jifA/s1600-h/VI%252520Package%252520Manager%25255B4%25255D.jpg"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="VI Package Manager" border="0" alt="VI Package Manager" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfFGBfmbC81RUGy6r1eZ3YNV2aj0OF7hOt902NC_bqnerS3GVUOILEfg0CdznXeWY3DKorCPJwK8I9_fVDGl19oxAgUkKIKTpYpVC4TP0MVa1DaI4RsbeHCwNcqp7c9IAYOLr6dCHtYxv_/?imgmax=800" width="356" height="226" /></a> </li> <li>รีสตาร์ทเครื่องสักครั้ง เพื่อความเป็นสิริมงคล </li> <li> <div align="left">เปิดไฟล์โปรเจคของ Arduino (ในที่นี้ บอร์ด Arduino ของเราควรจะเชื่อมต่อ กับคอมพิวเตอร์เรียบร้อยแล้ว) ซึ่งจะอยู่ใน Folder <font color="#ff0000">C:\Program Files\National Instruments\LabVIEW 2011\vi.lib\LabVIEW Interface for Arduino\Firmware\LVIFA_Base</font> ชือไฟล์ <font color="#ff8000">LVIFA_Base.pde </font></div> </li> <li>ทำการ Complie ซึ่งน่าจะผ่าน แล้วก็ให้อัพโหลดเข้าไปที่ตัวบอร์ด Arduino ถ้าจำไม่ได้ ให้ดูวิธีการจากโพสเก่าๆ ของผมครับ <a href="http://mechacity.blogspot.com/2011/03/arduino.html" target="_blank">คลิก</a></li> <li>เปิดโปรแกรม Labview แล้วเปิดไฟล์ทดสอบ โหลดจาก <a href="http://files.vishots.com/wp-content/uploads/2011/06/VISV-007_Code.zip" rel="nofollow" target="_blank">ที่นี่</a> จากนั้นก็รีนโปรแกรม เลยครับ </li> <li>ลองปรับค่า แล้วดูผล </li> </ol> <div style="padding-bottom: 0px; padding-left: 0px; width: 425px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:e09c9598-19f7-488f-a6b8-832b9f5dc75c" class="wlWriterSmartContent"><div id="db0d4aa2-e466-4c57-9a3d-296a8915cf37" style="margin: 0px; padding: 0px; display: inline;"><div><a href="http://www.youtube.com/watch?v=i0a1f_gif0M&feature=channel_video_title" target="_new"><img src="http://lh3.ggpht.com/-E3F4HYUaP-s/TvYJtEuQx3I/AAAAAAAADjs/ta2sLA8aqrA/videob88284f143fb%25255B6%25255D.jpg?imgmax=800" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('db0d4aa2-e466-4c57-9a3d-296a8915cf37'); downlevelDiv.innerHTML = "<div><object width=\"425\" height=\"355\"><param name=\"movie\" value=\"http://www.youtube.com/v/i0a1f_gif0M&hl=en\"><\/param><embed src=\"http://www.youtube.com/v/i0a1f_gif0M&hl=en\" type=\"application/x-shockwave-flash\" width=\"425\" height=\"355\"><\/embed><\/object><\/div>";" alt=""></a></div></div></div> <p></p> <p></p> <p>ถ้าอยากทราบว่า สองอันนี้ มันทำงานได้งัย ลองเข้าไปแกะโค๊ดของ Arduino แล้วก็ลองใช้ โปรแกรม <a href="http://www.123microcontroller.com/Software-Tools/free-serial-port-monitor" target="_blank">Serial Port Monitor</a> นั้งจับข้อมูลที่วิ่งบน Serial Port ดูครับ </p> Wisit.Phttp://www.blogger.com/profile/04747663677248244453noreply@blogger.com20tag:blogger.com,1999:blog-5321967662472700056.post-18355074905380254082011-11-05T05:27:00.001-07:002011-11-05T05:36:08.943-07:00แยกให้ดูกลไกการทำงาน<p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwYFSL8qztA93z3wcTC6apYQo6QYt-4Ah3s_i0eTDqR3a0vBRu2LhSPmuk898JAWYkDiZuUMIc9Eh0IBm-kzOaTLqIkAkjuGwpdnGzq0yvw56zQYPSnBUrFa-m05xsmzWIseHG491Rm_A_/s1600-h/assembly%25255B3%25255D.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="assembly" border="0" alt="assembly" align="left" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6851OMOUfwDdzl4YMePhxGGvFxvyYgMIPxQS0pIGv0AuFcNDAgAbKTxG1kG2P198Ci0LrwSOO1V5t0UdWH0ldBdDn6lYIus5deCbWoMwKacXh5GxfLIk4RDCgbPHwBbIkQnqA9rGLKM7a/?imgmax=800" width="244" height="184" /></a>       ห่างไปนาน สำหรับบล๊อกนี้ พอดี ติดภาระกิจ ใกล้จะสอบอีกแหละ ทำไร ไม่ได้มาก ต้องตัดเรื่องอื่นๆ ออกไปก่อน เอาเรื่องสอบให้มันจบๆ พ้นๆ ไปจากชีวิตก่อน เรื่องน้ำท่วม ถึงบ้านผมจะไม่ท่วมในตอนนี้ แต่ก็ขอให้คนกรุงเทพ อดทน และฟันฝ่าไปให้ได้นะครับ </p> <p>       วันนี้ ผมเจอเว็บที่เค้ามาแสดงว่า ชองใช้ที่เราเห็นๆ อยู่ ในชีวิตประจำวัน (ของฝรั่งซะส่วนใหญ่) มันทำงานได้อย่างไร ประกอบไปด้วยชิ้นส่วนกลไก อะไรบ้าง ของบางอย่าง เราใช้มัน แต่เราอาจจะไม่เคยสังเกต หรือ ค้นคว้าว่ามันทำงานได้อย่างไร วันนี้ ผมนำเอง คลิปวีดีโอ ที่มืออาชีพ เค้ามาแยกชิ้นส่วนให้ดู น่าตื่นเต้นมากครับ สำหรับคนที่ใคร่รู้ ใคร่ศึกษา โดยเฉพาะ วิศวกรอย่างเราๆ ท่านๆ นี่แหละครับ </p> <p align="center"><iframe id="dit-video-embed" height="360" src="http://static.discoverymedia.com/videos/components/sci/faff9a45fc8003e3c05a904283571ab7cd383ab7/snag-it-player.html?auto=no" frameborder="0" width="640" allowtransparency="allowtransparency" scrolling="no"></iframe></p> <p></p> <p>เครดิต และ ดูวีดีโอเพิ่มเติม <a href="http://science.discovery.com/videos/deconstructed/" rel="nofollow" target="_blank">http://science.discovery.com/videos/deconstructed/</a></p> Wisit.Phttp://www.blogger.com/profile/04747663677248244453noreply@blogger.com0tag:blogger.com,1999:blog-5321967662472700056.post-88499803293073592592011-09-27T20:42:00.001-07:002011-09-27T20:54:11.659-07:00พื้นที่นี้ เพื่อแก (เพื่อนฉัน)<blockquote> <p>เดิมที ผมตั้งใจจะเขียนเรื่องงาน Image Processing ที่ทำส่ง อจ. กำลังเริ่มลงมือเขียนแล้วหล่ะ แต่ พอดีทางบ้านโทรมาบอกว่า ไอ้อิ๋ง หมาที่ป่วยไข้หัดอยู่ที่บ้าน ตายเสียแล้ว ก็เลยเอาเป็นว่า พื้นที่นี้ยกให้แก (เพื่อนฉัน) แล้วกัน </p> </blockquote> <p>      ไม่ว่า เราหรือเค้าก็ต้องจากกันสักวัน อยู่ที่ใครจะไปก่อนกัน เท่านั้นเอง ผมได้สนุขตัวนี้ มาจากผู้ชายคนหนึ่ง เค้าเห็นว่า ที่บ้านยังไม่มีสุนัขเฝ้าบ้าน ก็เลยเอาลูกสุนัขสีดำ มาให้ เมื่อ 9 ปีที่แล้ว นับเป็นเวลาที่ผมเริ่มเข้าทำงานที่บริษัทนี้ด้วย วันแรกที่ได้มา ผมซื้อนมกล่องมาป้อนมัน แล้วก็หาข้าวหาน้ำให้มันกิน คงเป็นเพราะอย่างนี้ นี่เอง ทำให้สุนัขตัวนี้ คุ้นเคยกับผมมากที่สุดกว่าทุกคนในบ้าน </p> <p>      แน่นอนว่า ทุกอย่างๆ ย่อมเป็นสิ่งสมมติ แม้กระทั่งชื่อ ด้วยความที่เราจำเป็นต้องมีชื่อเรียกให้มัน เพื่อให้ง่ายต่อการอ้างถึง และใช้เพื่อเป็นสัญญาความจำ เมื่อยามที่เราเรียกขาน สุนัขตัวนี้ เราตกลงตั้งชื่อให้มันล้อเลียนเสียงให้เหมือนกับชื่อของผู้ชายที่เอาสุนัขมาให้ เราตั้งชื่อมันว่า “อิ๋ง อิ๋ง” ชื่อเหมือนสุนัขตัวเมีย แต่แท้จริงแล้วมันเป็นตัวผู้ </p> <p>     ผมคงไม่ต้องบรรยายมาก ถ้าใครเคยเลี้ยงสุนัข จะเข้าใจดี ว่าความผูกพัน มันเป็นยังงัย ผมคิดว่าทุกคนคงรู้สึกไม่ต่างกัน เมื่อเวลาต้องสูญเสียเพื่อนที่ดีที่สุดของเราไป บางคนอาจจะมองว่ามันเว่อร์ แต่ถ้าคุณได้เลี้ยงมันมา จะเข้าใจได้ดี คงต้องทำใจอีกหลายวัน กว่าจะหายคิดถึงมัน </p> <p align="center"><font size="2"><strong>ลาก่อนเพื่อนรัก เกิดมาชาติหน้าขอให้ได้เป็นมนุษย์ เจอกัน ก็ทักทายกันบ้างนะ</strong></font></p> <p> </p> <p><a href="http://lh5.ggpht.com/-MYXxeuem5YM/ToKXF6PPsHI/AAAAAAAADQc/iTAU9HHNRUw/s1600-h/Good_dog2%25255B4%25255D.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Good_dog2" border="0" alt="Good_dog2" src="http://lh4.ggpht.com/-zgSXGaS-Hfw/ToKXVRZYBxI/AAAAAAAADQg/ILIuWwGlnpw/Good_dog2_thumb%25255B2%25255D.jpg?imgmax=800" width="454" height="508" /></a> </p> <p><a href="http://lh4.ggpht.com/-a9m2OhdL9cU/ToKXbSZEEPI/AAAAAAAADQk/y2fjONX7s_I/s1600-h/Good_dog%25255B3%25255D.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Good_dog" border="0" alt="Good_dog" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhj0sfHM_D4ilm7tybeNPz2zJGt-5oR_fbO2cCKvLFejgOas4pLu9-QkEO-rRJbvKZfkpX3ViHy450yOdC1CwklQZ0bn6of_SmAhuByx9cQ-jFOW6I_cTRIk4wKPxNYcUvE4H_Szn2_Y-ix/?imgmax=800" width="454" height="350" /></a></p> Wisit.Phttp://www.blogger.com/profile/04747663677248244453noreply@blogger.com0tag:blogger.com,1999:blog-5321967662472700056.post-2299653058369748792011-05-01T03:24:00.001-07:002011-05-07T22:16:16.882-07:00ไปอบรม VHDL มาได้ไรมาเยอะเลย<p>พอดี วันลาพักร้อนเยอะเกิ๊น ก็เลยต้อง plan ลาพักร้อนสักสองวัน เพื่อเป็นไปตามนโยบายเบื้องบน ไม่ได้คิดจะไปเที่ยวไหนหรอก อยากอยู่บ้านเล่นไมโครคอนโทรลเลอร์มากกว่า พอดีไปเห็นเค้าประกาศไว้ในเว็บ ว่า มี<a href="http://www.ailogictechnology.com" target="_blank" rel="nofollow">คอร์สอบรม VHDL สำหรับผู้สอน 28-29 มีค., 28-29 เมย.และ 23-24 พค</a> พอดีเลย สองวัน ว่าแต่ มันเป็นคอร์สสำหรับผู้สอนนี่หว่า เราจะไปได้ไหม อย่ารอช้าเมล์ไปถามเค้าดีกว่า </p> <p>หลายวันต่อมาได้รับเมล์ว่า สามารถไปได้พอดี มีที่ว่างพอดี โดยปกติแล้วเค้าจะไม่ให้บุคคลทั่วไปเข้าอบรม รอบนี้ มีเฉพาะคนที่เป็นครู อาจารย์เท่านั้น แต่เราก็โชคดี ที่ได้เข้าอบรมด้วย ว่าแต่ไอ้ VHDL มันคือภาษาไรเหรอ แล้วทำไรได้บ้าง อย่ารอช้า หนังสือที่ซื้อมาดองไว้นานแล้ว เอามาเปิดดูสักหน่อยสิ พอดีกับมีบอร์ด XC9572 อยู่แล้ว หลังจากจดๆ จ้องๆ อยู่นาน ไม่รู้จะเริ่มต้นยังงัย U_U </p> <p><a href="http://lh4.ggpht.com/_000cgw7RCzE/Tb0qDfsdetI/AAAAAAAACs0/f2twk_9meoU/s1600-h/BookVHDL2009%5B4%5D.png"><img title="BookVHDL2009" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="335" alt="BookVHDL2009" src="http://lh4.ggpht.com/_000cgw7RCzE/Tb00yRYZuPI/AAAAAAAACs4/J3uHYsBzi34/BookVHDL2009_thumb%5B2%5D.png?imgmax=800" width="450" border="0" /></a> </p> <p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7XwmPhY84S5Gr6fESp-D9dbvdMWzStBw7wZLNNDNkSV7a_tgEZNh3AgMvH_M40e-k4qX0QS5qYwxk2Khp8L4CXJYYcjrdyJ5XiuPZmyzJJmnA9d7kmR5gop6pVIsb72Rg3J8pZhuLOCDU/s1600-h/CX1A%20Design%20Kit%5B4%5D.png"><img title="CX1A Design Kit" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="341" alt="CX1A Design Kit" src="http://lh3.ggpht.com/_000cgw7RCzE/Tb001nW_g0I/AAAAAAAACtA/kmfCQhy0Vso/CX1A%20Design%20Kit_thumb%5B2%5D.png?imgmax=800" width="435" border="0" /></a> </p> <p>จริงๆ ในหนังสือ “ออกแบบไอซีดิจิตอลด้วย FPGA และ CPLD ภาคปฏิบัติ โดยใช้ภาษา VHDL ” ผู้แต่งทั้งสองท่าน คือ ท่าน ณรงค์ ทองฉิม และ ท่านเจริญ วงษ์ชุ่มเย็น ท่านแต่งไว้ดีมากๆ อธิบายได้ค่อนข้างละเอียดแล้ว แต่ถ้าไม่ได้ฟัง หรือเข้าอบรมก่อน ก็อาจจะเป็นการลำบากในการเริ่มศึกษาด้วยตนเองเป็นอย่างมาก </p> <p>บรรยากาศการอบรมครั้งนี้ ไม่เหมือนที่อื่น ไม่มีพิธีรีตองใดๆ จัดโต๊ะเสร็จ ก็นั่งอบรมกันเลย ทุกคนหันหน้าเข้าหากัน แต่ระหว่างที่ท่านอาจารย์ ณรงค์ ท่านบรรยายทุกคนต้องหันหน้าไปที่กำแพง เพื่อดูสไลด์ ที่ท่านอาจารย์กำลังแสดงให้ดู (ท่านอาจารย์เป็นคนค่อนข้างจริงจังมาก) ในระหว่างนั้น ต้องตั้งใจฟัง ห้ามทำการใดๆ โดยที่ท่านอาจารย์ยังไม่ได้สั่งให้ทำ ทุกคนต้องทำตามอย่างเคร่งครัด เพราะท่านอาจารย์ท่านมีความมุ่งมั่นที่จะถ่ายทอดความรู้ และท่านก็หวังให้เราทุกคนตั้งใจรับฟังกันด้วย </p> <p>มีกาแฟเสิร์ฟตลอด ไม่ต้องห่วงว่าจะง่วงนอน (ความจริง ผมก็ทานมาแล้วหล่ะ) สรุปว่าวันนั้น ล่อไปสามแก้ว ไม่ต้องนอนกันหล่ะ ช่วงเช้าก็ปูพื้นฐานภาษา VHDL แล้วก็ทำ<a href="https://sites.google.com/site/123microcontroller/microcontroller-vdo-tutorial/FPGA-basic" target="_blank">ความรู้จักกับ FPGA/CPLD</a> กันก่อน พอหลังจากทานมื้อกลางวัน (ไก่ย่าง ที่ท่านอาจารย์บอกว่า อร่อยกว่า ไก่ห้าดาว) เราก็เริ่มทำการลง Lab โดยท่านอาจารย์พาทำตาม Lab ในหนังสือ แล้วใช้โปรแกรม Xilinx ISE 8.1i ในการเขียนภาษา VHDL โดยท่านอาจารย์ได้ยกตัวอย่างให้เห็นในหลายๆ รูปแบบ แต่ให้ผลลัพธ์เหมือนๆกัน เพื่อให้เกิดความรู้ ความเข้าใจ เวลาที่เราไปอ่านโค๊ดของคนอื่น เราจะได้เข้าใจ ว่ามันมีสไตล์การเขียนหลายแบบ แล้วแต่ใครถนัด </p> <p>น่าเสียดายที่ความจริงเราน่าจะได้เทรนกันสองวัน แต่เนื่องด้วยในวันพรุ่งนี้ ท่านอาจารย์ต้องเดินทางไปสงขลาเพื่อกลับบ้านไปร่วมงานศพน้า เราก็เลยอัดเนื้อหาที่จำเป็นทั้งหมดภายในวันนั้นวันเดียว กว่าจะเลิกก็ปาไปสามสี่ทุ่ม ผมกลับถึงที่พักประมาณ 5 ทุ่ม เหนื่อยเหมือนกัน แต่คิดว่า เมื่อเทียบกับความรู้ที่ได้รับมา มันคุ้มค่าเกินกว่าความเหน็ดเหนื่อยมากมาย ซึ่งเมื่อเทียบกับความตั้งใจของท่านอาจารย์ ณรงค์ เทียบไม่ได้เลย สังเกตเห็นว่า ท่านอาจารย์ก็เหนื่อยเหมือนกัน แต่ท่านก็ยังพยายามที่จะถ่ายทอดความรู้ให้อย่างเต็มที่ </p> <p>ผมคงไม่ขออธิบายอะไรมาก เกี่ยวกับภาษา VHDL เพราะในหนังสือได้กล่าวไว้อย่างดีแล้ว ขอให้เพื่อนๆที่สนใจลองหาซื้อมาอ่านกัน ได้ข่าวว่าจะมีเล่มสองด้วย ท่านอาจารย์กำลังเรียบเรียงอยู่ รอติดตามกันได้เลยครับ สุดท้าย ผมอยากจะกล่าวว่า ขอบพระคุณท่านอาจารย์ ณรงค์ ทองฉิม อย่างสูง ที่ท่านมีความเมตตา อนุเคราะห์ให้ผมและเพื่อนได้เข้ารับการอบรมในครั้งนี้ ถึงแม้ผมทั้งสองคนจะไม่ได้เป็นผู้สอน ก็ตาม จึงอยากจะกราบขอบพระคุณท่านอาจารย์เป็นอย่างสูง ณ ที่นี้ด้วย </p> <p>ถ้าผมมีเวลาผมก็อยากจะนำความรู้ที่ได้รับมาไปถ่ายทอดต่อไป อาจจะเป็นในรูปแบบการนำ CPLD ไปใช้งานมากกว่า  (อาจจะเป็นที่เว็บ <a href="http://sites.google.com/site/123microcontroller/" target="_blank">123Microcontroller</a>) </p> <p>เช่นเคย เมื่อเราได้เรียนรู้มาแล้วว่า VHDL เขียนอย่างไร เราก็ต้องมาทดลองกับบอร์ด CPLD ที่เรามีอยู่ เพื่อพิสูจน์ว่าเราสามารถที่จะเขียนโปรแกรมสั่งงานมันได้จริง </p> <div class="wlWriterEditableSmartContent" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:52a4aaec-2605-49fb-89b1-9462a873e58f" style="padding-right: 0px; display: block; padding-left: 0px; float: none; padding-bottom: 0px; margin-left: auto; width: 425px; margin-right: auto; padding-top: 0px"><div id="8444bb82-995e-4a7a-b576-48c9c533bb73" style="margin: 0px; padding: 0px; display: inline;"><div><a href="http://www.youtube.com/watch?v=NkJBlnCuiRE" target="_new"><img src="http://lh6.ggpht.com/_000cgw7RCzE/TcYnH6QA0wI/AAAAAAAACtY/R2_4B_LOsdQ/video9ddc3c23eef8%5B3%5D.jpg?imgmax=800" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('8444bb82-995e-4a7a-b576-48c9c533bb73'); downlevelDiv.innerHTML = "<div><object width=\"425\" height=\"355\"><param name=\"movie\" value=\"http://www.youtube.com/v/NkJBlnCuiRE&hl=en\"><\/param><embed src=\"http://www.youtube.com/v/NkJBlnCuiRE&hl=en\" type=\"application/x-shockwave-flash\" width=\"425\" height=\"355\"><\/embed><\/object><\/div>";" alt=""></a></div></div></div> Wisit.Phttp://www.blogger.com/profile/04747663677248244453noreply@blogger.com1tag:blogger.com,1999:blog-5321967662472700056.post-91179208517695200872011-03-27T07:52:00.001-07:002011-03-27T07:54:15.919-07:00Labview : wire tutorial สายข้อมูล<p>    ในโหมดของ text base programming เราสามารถส่งข้อมูลเข้าไปประมวลผลในฟังก์ชัน ผ่านตัวแปร แต่ใน Labview Graphical programming แล้ว wire หรือสัญลักษณ์สายไฟ ทำหน้าที่ในการนำข้อมูลจาก block diagram หนึ่งไปอีก block diagram หนึ่ง </p> <p>     จากรูปข้างล่าง สายไฟทำหน้าที่เชื่อมต่อระหว่าง control (ตัวควบคุม) และ indicator (ตัวแสดงผล) นอกจากนี้เรายังสามารถแยกข้อมูลที่ไหลผ่านสายไฟ ไปประมวลผลคู่ขนานกันก็ได้ เหมือนๆกับที่เราทำการ tab สายไฟออกไป เพื่อแบ่งกระแสไฟฟ้าไปใช้งาน คล้ายๆกันในแบบนั้น </p> <p>    ในขณะที่ชนิดข้อมูลของโปรแกรมมีหลายประเภท (integer , charector , float, double , boolean ,….) การเรียกใช้และการประกาศตัวแปร เป็นสิ่งที่แยกแยะความแตกต่างของข้อมูลในการเขียนโปรแกรมแบบ text base แต่ใน Labview เราใช้ สี และ ขนาดของสายไฟ เป็นตัวบ่งบอกถึงความแตกต่างของข้อมูลนั้นๆ   </p> <p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSBndMcFat_VZ7GYHZWuZLA1-47QwTk4l-2phDo-tsctUre2-mDHjosftPMvBPKDxHbpvZaZ0wJaNXjTaSTJuNxCpicke8rZynQh8Rs-Mtv2eO3hsSnEt0rQvm0w_Nf_jaG9B_4plJIuHi/s1600-h/image3.png"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Labview : wire tutorial " border="0" alt="Labview : wire tutorial " src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUHWrF59cRLv5Enqo2DUnkyWRMHMcUNqjfyHfLw3BGhi_TsWvuGOPJ1rpfdQbWtsAa19d5jFd6qIYOJMSuvcqTimrMjofcNxxly8MVIVlGuzLAPVa_5Ti1bOrJcvyM82u1cJiVEs-oBrJL/?imgmax=800" width="361" height="273" /></a> </p> <p>     Labview จะมีการแจ้งให้ทราบว่าข้อมูลไม่ได้ถูกเชื่อมโยงกัน โดยจะแสดงลักษณะที่เรียกว่า broken wire เพื่อให้ผู้เขียนโปรแกรมทราบว่า ยังมีจุดที่สายไฟ ไม่ได้เชื่อมโยงกัน และจะไม่ยอมให้เราทำการ excute หรือ run โปรแกรม</p> <p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqjVJJqfntgyLahE9kA2va0k0PfEt-TNmon4FjBWVd-6_uQ75G2rZzmM8_Y9kZli53BmGuhggEqhEMc7b5C8KfO1goeuXhb3u5F32-SdCLhM2MBoj5gCHDdoVs2MPKjNYB559ReBI9pnab/s1600-h/image6.png"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Labview wire broken" border="0" alt="Labview wire broken" src="http://lh3.ggpht.com/_000cgw7RCzE/TY9Hgqh9gOI/AAAAAAAACqE/tk2wn6Bi2F8/image_thumb2.png?imgmax=800" width="244" height="94" /></a>      การเกิด broken wire มีได้หลายสาเหตุ ตัวอย่างเช่น ระหว่าง object ที่มีความแตกต่างกันทางชนิดของข้อมูล ตัวอย่างเช่น เราไม่สามารถที่จะเอา out put ที่เป็น array จากบล๊อกไดอะแกรมหนึ่ง ไปต่อเข้ากับ input ที่เป็น numerical ของบล๊อกไดอะแกรมหนึ่ง ซึ่งแบบนี้จะทำให้เกิด broken wire ได้ ความแตกต่างของข้อมูลสามามารถแสดงได้ทั้งสี และขนาดของ wire ดังรูปต่อไปนี้ </p> <p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEio8CmFkfwXXNso1CGdMnHK7jMsCnM_fZvd1jSPtP1Be_pyIv5o_PNUFiWCNEwPK2Sy3g-IDuAxCfj6ahzfCy6byeh1jEr5dtKn4AX4_2wpp3BaGBLBdMoMasmyu-DkzAaGqwsbVBoiThjS/s1600-h/image10.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Labview data type" border="0" alt="Labview data type" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpZARgYfpxKOm_IYm0kVcvTtcKoBiZYJqnjH4BfW1bvBpkD0kC2ft04zDbde5CGdX2iY46qGKYPl663Nmzmtrp52dLh_kpsO74ZbvB5Dud1tpWWV8X-qs05aGFowIH1kstJFciRxoq58UB/?imgmax=800" width="417" height="114" /></a> </p> <p>    สายไฟทุกๆเส้น มีความแตกต่างกัน ขึ้นอยู่กับประเภทของข้อมูลที่ทำการส่งไปในสายไฟ เราสามารถที่จะเชือมต่อข้อมูลจากแหล่งข้อมูลจากที่หนึ่งไปอีกที่หนึ่งได้อย่างถูกต้องได้ โดยดูจากสีของ object หรือไม่ก็ตรงที่ขั้วต่อสายไฟ ในกรณที่ object หรือ block นั้นๆ มีมากกว่า 1 อินพุท หรือ 1 เอาท์พุท โดยดูที่สีของขั้วต่อสายไฟ สังเกตจากรูป </p> <p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQz4NIZyrCqnb4dQvCR0TzpKjR34oal9xP8CrVznDU0XV3bop71YHnMinuyKClBWefKIZUBKX9SwyWNR6tuZZwW9wNBbjSt54CvI3oVxI0nqho9Qng4egQj6B7ZCGsCX1uE2C-RVCp46uR/s1600-h/image14.png"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="good connect wire" border="0" alt="good connect wire" src="http://lh6.ggpht.com/_000cgw7RCzE/TY9JbxRLMNI/AAAAAAAACqU/KgSwbLc8HnM/image_thumb6.png?imgmax=800" width="366" height="225" /></a></p> <p>แต่ถ้าหากชนิดข้อมูลไม่ตรงชนิดกัน เราก็จะพบปัญหา broken wire ดังเช่นที่ได้กล่าวไว้แล้ว </p> <p><a href="http://lh4.ggpht.com/_000cgw7RCzE/TY9JcwAp0QI/AAAAAAAACqY/QpVGvYlotig/s1600-h/image18.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Broken wire in subVI" border="0" alt="Broken wire in subVI" src="http://lh3.ggpht.com/_000cgw7RCzE/TY9KZ5ksPiI/AAAAAAAACqc/e2VlvC3oQ58/image_thumb8.png?imgmax=800" width="412" height="221" /></a> </p> <p><strong>Tip: </strong>คุณสามารถลบสายไฟ broken wire ออกจาก block diagram ได้อย่างรวดเร็วด้วยการกดปุ่ม Ctrrl + B </p> <p>เราสามารถตั้งค่าให้ทำการ wiring สายไฟเวลาที่เราเคลื่อนเม้าส์เข้าไปใกล้ object จะทำให้เม้าส์เราเปลี่ยนจากลูกศร กลายเป็น ม้วนสายไฟ เพื่อพร้อมที่จะทำการเดินสายไฟ ได้ตลอดเวลา โดยให้เราไปที่เมนู Tools –> Options ---> Block Diagram (ทางซ้ายมือ) แล้วติ๊กที่ช่อง Enable auto wiring </p> <p><a href="http://lh5.ggpht.com/_000cgw7RCzE/TY9Katxj1qI/AAAAAAAACqg/dCXhzImAba8/s1600-h/image22.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglk_UmgPy-AQTipqJHtcQkk-2W6NJJXLLE9i7cOq-ZG-UcNa3IuMsEIdEpZZ_o4pdlgNiDuItFibDSBCGAepXnWz-qZ64actJ_5ee_32BDfkL1vH33WtYru-c4ExDBL3LXL6L8_YMZdbbC/?imgmax=800" width="428" height="425" /></a> </p> <p><a href="http://lh3.ggpht.com/_000cgw7RCzE/TY9LY-TcTeI/AAAAAAAACqo/DrIH0pZJVSE/s1600-h/image27.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWkWJ5UIL5HZVytuqMPfXQ8icCjsBSAo9A7EcswqkzR4CjL9gICP3EOic3hXefMyJAf9uNgNubSrWqfAK4Hj9ltmvlGLK9-RFNK8fIkyAQjtYzxvuGGPK65u-6f_VTiFOuG1bDpsXmarzb/?imgmax=800" width="439" height="332" /></a></p> <p>ในกรณที่เราทำการลากสายไฟไปแล้ว ไม่ต้องกลัวที่จะไม่สวยงามครับ ให้เราลากเชื่อมโยงไปก่อน แล้วทำการคลิกขวาบริเวณสายไฟ แล้วเลือก <b>Clean Up Wire</b> โปรแกรมจะทำการจัดสายไฟ ให้อย่างสวยงาม </p> <p><a href="http://lh6.ggpht.com/_000cgw7RCzE/TY9MXAtqy0I/AAAAAAAACqw/BjFJowjNhus/s1600-h/image31.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_000cgw7RCzE/TY9NUA5VrwI/AAAAAAAACq0/6NhrYlzniak/image_thumb15.png?imgmax=800" width="439" height="319" /></a> </p> <p>เรียนรู้การใช้สายไฟ เพิ่มเติมได้จากตัวอย่างต่อไปนี้ เป็นการสร้าง control และ indicator ที่มีความแตกต่างกันทางชนิดของข้อมูล จะเห็นได้ว่า สีของ object และสีของสายไฟ เปลี่ยนแปลงตามชนิดของข้อมูล </p> <p><a href="http://lh4.ggpht.com/_000cgw7RCzE/TY9NUnSm71I/AAAAAAAACq4/iImp7QVE170/s1600-h/image49.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="wire block diagram" border="0" alt="wire block diagram" src="http://lh4.ggpht.com/_000cgw7RCzE/TY9ORuZ6MAI/AAAAAAAACq8/O3IMw2TvB4s/image_thumb25.png?imgmax=800" width="417" height="315" /></a> </p> <p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmJFjk3JMtRVwMcS0XH1X5PYoncUEP-NIbxlAy9aluweMbRgSXkt8Ac8Z970Ixfg8Mc7ax_o33zT4qUAegdPWybnd2CSgyh1aIl9JXt2kIhP_mKuqjxJjafFc0oc4M1wE4lg9wUBujr6pm/s1600-h/image48.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Labview example wire data" border="0" alt="Labview example wire data" src="http://lh3.ggpht.com/_000cgw7RCzE/TY9PPMsT3yI/AAAAAAAACrE/2EzewcBrU9I/image_thumb24.png?imgmax=800" width="437" height="435" /></a> </p> <h3 align="center">วีดีโอสาธิตการทำการ wire ข้อมูลของ Labview </h3> <p></p> <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:22448428-2fef-4f14-9488-8c21f33665be" class="wlWriterEditableSmartContent"><div><embed src="http://blip.tv/play/gshOxJUdAg" type="application/x-shockwave-flash" width="480" height="367" allowscriptaccess="always" allowfullscreen="true"></embed></div></div> <p></p> <p></p> <p></p> <p align="right">ที่มา http://zone.ni.com/devzone/cda/tut/p/id/7567</p> Wisit.Phttp://www.blogger.com/profile/04747663677248244453noreply@blogger.com0tag:blogger.com,1999:blog-5321967662472700056.post-1758032104711416392011-03-19T04:09:00.001-07:002011-03-19T04:09:54.622-07:00มาเล่น Arduino กันเถอะ<p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWfvsYkTLSIhng3HWYodmHU-mlTuGd3T1_NpUs1veDaKtk8ZD0djn3JZtL2-4A7bJMU3YqZBnS0zWkngAvgjZmtY7dyCoBGNKbJWQgesSbP3LhC_cpMekoALqm1YyRNyYP89-bvUpw6ObM/s1600-h/Freeduino_Arduino%5B5%5D.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Freeduino_Arduino" border="0" alt="Freeduino_Arduino" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-OkxB2qtQmonM02YD9eVgzlSM4RHf69XtlNw4adkGzJG04K8alhhPcFIZZ_3fn4SgPlkXoisqYIazJa08uQTmS97KVfivyfxk4ic9DaJvaVtxwS8y5yBuaLTQ44lgWfH0zaQPG9EwQNJT/?imgmax=800" width="449" height="339" /></a> </p> <p>ก่อนหน้านี้ ผมเคยไปเทรน ARM7 ที่ขอนแก่น ตั้งหลายชั่วโมง เป็นเวลาหลายสัปดาห์ในช่วงปิดเทอมฤดูร้อน ประมาณเดือนเมษา พอกลับมาทำงาน ไม่ค่อยได้ใช้ ARM7 เพราะที่ทำงานมีแต่ PIC16F877 , PIC18F458 ไปๆมาๆ ก็ชักจะลืมๆ แล้ว ว่า ARM7 มันเซ็ทค่า Register ยังงัย </p> <p>แต่เมื่อไม่นานมานี้ เกิดการปฏิวัติไมโครคอนโทรลเลอร์กับตระกูล AVR โดยชาวอิตาลี สองท่าน ด้วยความที่ต้องการให้นักเรียน นักศึกษา มีบอร์ดไมโครคอนโทรลเลอร์ใช้ และทำได้ง่าย ราคาถูก และศึกษาได้อย่างไม่ยากเย็นนัก จึงได้สร้างบอร์ดไมโครคอนโทรลเลอร์ที่ชื่อว่า <strong>Arduino</strong> ขึ้นมา </p> <p>โดยที่บอร์ด <strong>Arduino</strong> ใช้ไมโครคอนโทรลเลอร์หลักเป็น AVR ตระกูล 8 บิต โดยถูกออกแบบให้มีการต่อใช้งานเป็นขา Digital I/O จำนวน 13 ขา และเป็นขารับสัญญาณ Analog จำนวน 6 ขา ซึ่งการกำหนดจำนวนขาแบบนี้ ได้กลายเป็นมาตรฐานของบอร์ด <strong>Arduino</strong> ไปแล้ว ถึงว่า <strong>Arduino</strong> เองจะถูกผลิตออกมาหลายแบบ แต่ที่เหมือนกัน ก็ยังคงเป็นขาที่เอาไว้ใช้งาน แต่แตกต่างกันตรงที่แต่ละรุ่น ที่ทำออกมามี memory ที่ไม่เท่ากันนั่นเอง (แต่ปัจจุบัน บอร์ด Arduino มีจำนวนขาให้ใช้  มากกว่าที่ได้กล่าวไว้แล้ว แตกต่างกันออกไปในแต่ละรุ่น) </p> <p><a href="http://lh5.ggpht.com/_000cgw7RCzE/TYSOCoaOVzI/AAAAAAAACpE/QhSqOSbp8TQ/s1600-h/image%5B9%5D.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Arduino table model " border="0" alt="Arduino table model " src="http://lh5.ggpht.com/_000cgw7RCzE/TYSO_nByuDI/AAAAAAAACpI/XyMDly8H4Og/image_thumb%5B5%5D.png?imgmax=800" width="458" height="212" /></a> </p> <p>นอกจากลายวงจรที่เค้าแจกฟรีเป็น Open source ให้เราสามารถนำไปสร้างเองได้แล้ว ตัวโปรแกรมที่เป็น IDE ที่เอาไว้เขียนโค๊ดภาษา C/C++ ก็ยังสามารถให้เราสามารถโหลดเอาไปใช้งานฟรีได้อีกด้วย (<a title="IDE Arduino" href="http://arduino.cc/en/Main/Software" rel="nofollow" target="_blank">โหลด IDE Arduino</a>)  ซึ่งในตัว IDE ที่เราติดตั้งไปนี้ ประกอบไปด้วย Example มากมายที่ทำให้เรา เรียนรู้ไมโครคอนโทรลเลอร์ได้อย่างไม่น่าเบื่อหน่าย </p> <p>ในการใช้งาน ถ้าหากเป็นการเรียนรู้แล้ว เราสามารถที่จะต่อสาย USB จากคอมพิวเตอร์ขของเราเข้ากับบอร์ก Arduino แล้วก็สามารถที่จะใช้งานได้เลย เพราะเค้าออกแบบให้เราใช้ไฟจากสาย USB เป็นไฟเลี้ยงของบอร์ดได้เลย สะดวกมากๆ (ในกรณีที่โหลดไม่กินกระแสมากนัก) นับว่าเป็นการออกแบบที่เหมาะให้นักเรียนนักศึกษา ได้ใช้และเล่นไมโครคอนโทรลเลอร์ อย่างที่ตั้งใจเอาไว้เลยทีเดียว </p> <p>ที่อยากแนะนำให้เพื่อนๆ ให้มาลองเล่น Arduino นี้ก็เพราะว่า นอกจากความง่ายในการเขียนโปรแกรมแล้ว (เป็นภาษาซี ที่เราเรียกผ่าน Library ของมัน) ยังมีตัวอย่างให้ศึกษาเยอะแยะมากมาย นับไม่ถ้วนกันเลยทีเดียว ทำให้เราสามารถเล่น และทดลองแล้วประสบความสำเร็จได้อย่างง่ายดาย เพื่อให้เกิดกำลังใจในการศึกษาไมโครคอนโทรลเลอร์เบอร์อื่นๆ ต่อไป </p> <p>ขั้นตอน ง่ายๆ ในการทดลอง Arduino </p> <ul> <li>หาบอร์ด Arduino สักบอร์ด ในที่นี้ ผมแนะนำของป๋าช้าง <a href="http://www.ayarafun.com/shop/arduino/freeduino-usb/" rel="nofollow" target="_blank">Ayarafun.com</a> ราคาถูกมากๆ (ถูกกว่าค่าเหล้า เบียร์ซะอีก) </li> <li>โหลด IDE สำหรับเขียนโค๊ด <a href="http://arduino.cc/en/Main/Software" rel="nofollow" target="_blank">ดาวน์โหลด</a></li> <li>ต่อสาย USB เข้าบอร์ด Arduino </li> <li>เปิดโปรแกรม Arduino เลือกบอร์ด และพอร์ตให้ตรงกับบอร์ดของเรา </li> <li>เปืด Example Blink ทดลองทำไฟกระพริบกันก่อน (ถือเป็นโปรแกรมไหว้บอร์ด)</li> <li>สังเกตไฟ LED ที่พอร์ด Digital 13 ต้องติด ดับ สลับกัน </li> </ul> <div style="padding-bottom: 0px; padding-left: 0px; width: 425px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:fa433989-c95e-4d0c-b233-8801680bc852" class="wlWriterEditableSmartContent"><div id="ee916190-1886-4770-8e74-8b393e729aec" style="margin: 0px; padding: 0px; display: inline;"><div><a href="http://www.youtube.com/watch?v=c-_OJMDq85E" target="_new"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRT7jnMX7ONk4qb-PCGYzuLAEh9rhk0E4bbd5AQfhyF0_E-gAVKiO1CUyNBd6Qy3RV54bSvqnugjO0L_K7Oj4Y8mw3VlPurHphnZ-MTBhnGfadIOBEVNz97I9gidOtmxw0HJJDmLoVNanY/?imgmax=800" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('ee916190-1886-4770-8e74-8b393e729aec'); downlevelDiv.innerHTML = "<div><object width=\"425\" height=\"355\"><param name=\"movie\" value=\"http://www.youtube.com/v/c-_OJMDq85E&hl=en\"><\/param><embed src=\"http://www.youtube.com/v/c-_OJMDq85E&hl=en\" type=\"application/x-shockwave-flash\" width=\"425\" height=\"355\"><\/embed><\/object><\/div>";" alt=""></a></div></div></div> <p></p> <p>ศึกษาเพิ่มเติม</p> <ul> <li><a href="http://en.wikipedia.org/wiki/Arduino" rel="nofollow">http://en.wikipedia.org/wiki/Arduino</a></li> <li><a href="http://arduino.cc/en/" rel="nofollow">http://arduino.cc/en/</a></li> <li><strong>และที่ <a href="http://sites.google.com/site/123microcontroller/" target="_blank">123 Microcontroller</a> แหล่งศึกษาไมโครคอนโทรลเลอร์ของผม </strong></li> </ul> Wisit.Phttp://www.blogger.com/profile/04747663677248244453noreply@blogger.com0tag:blogger.com,1999:blog-5321967662472700056.post-50406731463843227282011-02-17T20:12:00.001-08:002011-02-17T20:12:49.655-08:00Labview : Front Panel หน้ากาก VI<p>    ในตอนนี้ เราจะมาทำความรู้จักกับ Front Panel ว่ามันมีความสัมพันธ์กับ Block Diagram อย่างไร Front Panel Object แต่ละตัวแตกต่างกันอย่างไร แล้วเราจะหาอุปกรณ์ หรือว่า Front Panel Object ได้อย่างไร เราจะได้เรียนรู้กันในตอนนี้ </p> <p>    <strong>Front Panel</strong> เป็นส่วนของหน้าต่างที่ทำหน้าที่เป็นส่วนติดต่อกับ user หรือเป็นส่วนของ VI (Virtual Instrument ) นั่นเอง Front Panel ประกอบไปด้วย Control ทำหน้าที่เป็น input และ Indicator ทำหน้าที่เป็น output ซึ่งทำหน้าที่โต้ตอบก้บผู้ใช้งาน ในขณะที่เราวาง Indicator และ Control ลงบน Front Panel โปรแกรม Labview จะทำการสร้าง Control และ Indicator ลงบน Block Diagram อัตโนมัติ ซึ่งเราจะได้มาศึกษา Block Diagram กันต่อไป </p> <p><strong>หน้าต่าง Front Panel </strong></p> <p><a href="http://lh6.ggpht.com/_000cgw7RCzE/TV3YqRhPjBI/AAAAAAAAClw/9qlRiARqf6I/s1600-h/image%5B123%5D.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Front Panel Labview" border="0" alt="Front Panel Labview" src="http://lh3.ggpht.com/_000cgw7RCzE/TV3Znb_oN2I/AAAAAAAACl0/cXmGXC9yT_s/image_thumb%5B73%5D.png?imgmax=800" width="449" height="358" /></a> </p> <p>     หลังจากเราเปิดโปรแกรม Labview ขึ้นมาแล้ว เราสามารถที่จะสร้าง new VI ขึ้นมาได้ หน้าต่าง Front Panel จะปรากฏขึ้นมา โดยเราสามารถที่จะทำการสร้างหน้าต่าง User Interface หรือหน้าต่างโปรแกรมของเรา เพื่อให้ผู้ใช้ สามารถใช้งานได้ตามที่เราได้ออกแบบไว้แล้ว (ตรงนี้ ต้องใช้ประสบการณ์ และความคิดสร้างสรรค์ในการออกแบบสักหน่อย) </p> <p>   ที่หน้าต่าง Front Panel ประกอบไปด้วยส่วนของ Toolbar ที่อยู่ด้านบน และส่วนของ Control Pallete ซึ่งเราสามารถที่จะเปิดตรงไหนก็ได้ที่หน้าต่าง Front Panel     โดยทำการคลิกขวาที่หน้าต่าง Front Panel หลังจากเราเปิดหน้าต่าง Control Pallete แล้วเราก็จะพบกับ Control และ Indicator แล้วสามารถที่จะลากพวกมันลงบนหน้าต่าง Front Panel ได้เลย </p> <p><a href="http://lh5.ggpht.com/_000cgw7RCzE/TV3ZoELP7LI/AAAAAAAACl4/tvmN1U2Frjg/s1600-h/image%5B7%5D.png"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Control Pallete" border="0" alt="Control Pallete" src="http://lh6.ggpht.com/_000cgw7RCzE/TV3alGik2OI/AAAAAAAACl8/9ts7zNLQ3yA/image_thumb%5B3%5D.png?imgmax=800" width="262" height="392" /></a><strong> Control and Indicator</strong></p> <p>    Contrrol ได้แก่ Knobs , Push button , dial , และอุปกรณ์ที่ทำหน้าที่เป็น input อื่นๆ ทำหน้าที่เป็นตัวโต้ตอบ ทำหน้าที่เป็นตัวรับ ในขณะที่ Indicator ซึ่งได้แก่ graphic , LED ,หรืออุปกรณ์ที่ทำหน้าที่เป็นตัวแสดงผล ทำหน้าที่เป็นผลลัพธ์ ของหน้าต่าง VI </p> <p><a href="http://lh5.ggpht.com/_000cgw7RCzE/TV3al1O8D1I/AAAAAAAACmA/GEZopxxpPXI/s1600-h/image%5B14%5D.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="VI User Interface" border="0" alt="VI User Interface" src="http://lh5.ggpht.com/_000cgw7RCzE/TV3bjN93YxI/AAAAAAAACmE/RX01gs6CNWQ/image_thumb%5B8%5D.png?imgmax=800" width="444" height="448" /></a> </p> <p>จากรูปด้านบน เรามีตัว Control 2 ตัว ได้แก่ Number of Measurements และ Delay (sec) และ 1 ตัวสำหรับ indicator ในที่นี้คือตัว waveform graph ที่เราตั้งชี่อว่า Temperature Graph  </p> <p>    ทุกๆ Control และ indicator จะมีชนิดของข้อมูลเป็นความสัมพันธ์ของตัวมัน ตัวอย่างเช่น Delay (sec) ทีเป็นตัวปุ่ม slide ในแนวนอน เป็นค่าตัวเลข เมื่อเรา Double Click ที่ตัว Control ในหน้า Front Panel โปรแกรมจะทำการเปิด Block Diagram ขึ้นมาให้ แล้วจะแสดงสัญลักษณ์ หรือไอคอน ของตัว Delay (sec) ที่หน้า Block Diagram โดยที่ตัวมันเองจะมีสีส้ม ซึ่งบ่งบอกว่า มันมีข้อมูลเป็นชนิดตัวเลขที่เป็น Double (DBL) </p> <p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj89DA0PL22FAySTTX2LjHBco457pJBcoVvxHLtWChQ2VpYfgz6X5LM9QWP1morwvUTJGI2q1eqeW94jMWotPRudUTawuLR4jwf6S-7zDB1GA-XyXzVbd_CU1T3TxvgZxa1OHwlAZwCUQvL/s1600-h/image%5B18%5D.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Slide Control " border="0" alt="Slide Control " src="http://lh5.ggpht.com/_000cgw7RCzE/TV3cg76EtBI/AAAAAAAACmM/oceTEwiA1Fw/image_thumb%5B10%5D.png?imgmax=800" width="438" height="289" /></a> </p> <p></p> <p><strong>Numeric Control and Indicators</strong> </p> <p>เราจะลองมาสร้าง Numeric control แล้วทดลองเปลี่ยนค่าของมัน </p> <p>1. ทำการคลิกขวาที่  Front Panel แล้วทำการเปิด Control pallete จาก Pallete ย่อยให้เราไปที่ Numeric แล้วลาก Numeric control ลงบนที่ว่าง Front Panel </p> <p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-bjWnXcNjqq2-1kOMdI1PbaoH9J_yJ0-_5kfn22IreYNKWAhgB5gCKGSguMeMlLkgWB6c0r5DmIe22TrveNTVtk9SxscGEpL7LuP9bx8fQXs7BB8bhAlNxxTfavuVpWXqpS41slbKgJyJ/s1600-h/image%5B23%5D.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Numeric Pallete" border="0" alt="Numeric Pallete" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpzvKJNcR_B3Eg98aw7IYDMBephrTl-mW2rEPvUAOEkMm1k9N_9LWbq5qmEhCROF5ij_jx8nb0cb6zWK-4Sio-CiwB6V3Jgzw9yA4W1UbQG-SE1Y7V8ftteQMDvYb_oN6x7l9rdhFAaU4I/?imgmax=800" width="445" height="445" /></a> </p> <p>2. เปลี่ยน ป้ายกำกับ Label ด้วยการดับเบิลคลิก ที่ป้าย label แล้วทำการพิมพ์คำว่า “input”</p> <p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgai_ngP-cdNw_XOmQBZuW-Du2L5p8qOrn_9ndTEgk_Xi1NEeXJ3sB4iK5-El-iL7e5UXPnVEmejsxQ7q6uFsMnL36yR8bs-z4jAu68PRj16PkQKFgD8udT8_56cgJNABLtGbJhucvmT0FY/s1600-h/image%5B26%5D.png"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Numeric Input control" border="0" alt="Numeric Input control" src="http://lh3.ggpht.com/_000cgw7RCzE/TV3eczuOA8I/AAAAAAAACmg/lzZ7Guj_oJE/image_thumb%5B14%5D.png?imgmax=800" width="239" height="142" /></a> </p> <p>3. เราสามารถเปลี่ยนแปลงค่าของ control ได้ด้วยการกดปุ่ม เพิ่มหรือลดค่า หรือ ทำการดับเบิลคลิกไปที่บริเวณที่แสดงค่า แล้วทำการพิมพ์ค่าใหม่ ลงไปโดยตรง แล้วทำการกดปุ่ม ENTER ที่คีย์บอร์ด เพื่อทำการเปลี่ยนแปลงค่าใหม่ได้โดยครง </p> <p><a href="http://lh4.ggpht.com/_000cgw7RCzE/TV3edjpc4OI/AAAAAAAACmk/oOqWnZrd_Bk/image%5B29%5D.png?imgmax=800"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Numeric Input control" border="0" alt="Numeric Input control" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGXPddo-wAVvcKApmoB8wos-ftJYqKSL6E09Ct51Mp-1uiF0ajKvve0BCtMvzivmNkkISS7CObvuIV5eHqNvqKgMElMo-SBfGa3kZtfnQigQO5j2sdMSJy3wKo4e8FDoTEKsEBvpy6qV5M/?imgmax=800" width="225" height="116" /></a><strong></strong></p> <p><strong>Boolean Controls and Indicators  </strong></p> <p>Control และ Indicator ที่เป็นชนิด Boolean จะรับและส่งข้อมูลได้เพียงสองสถานะเท่านั้น คือ TRUE และ FALSE เท่านั้น จากรูปข้างล่างจะเห็นว่า สวิทช์ในแนวตั้ง และ หลอด LED เป็น Control และ Indicator แบบ Boolean </p> <p><a href="http://lh3.ggpht.com/_000cgw7RCzE/TV3fb2C-I8I/AAAAAAAACms/ej5UmZLgrZ4/s1600-h/image%5B32%5D.png"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="toggle control " border="0" alt="toggle control " src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhc0UUjutNizEL4Y-vG2TYUlsoDV7ica2RnyuXVBfHwdpt6HPqw0TE7yPd-DLqbAMHmQbiiQl7-nMiwgrVrhoiSqeyOu8qius_kwRhRU1SnHRb3XPxTPiJWiq9Yr9EqrMnbR0Iny-YSl-ah/?imgmax=800" width="233" height="94" /></a> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhasrKDAikCx2-6SWS884yzGIv7BqlP6FatMwyIecbZCvjkhKjyiNXNTyJ6kyIHzbUgRq_k2Ej5eEjAFzKlLlS8-QlnzYFgmpBC-VyvehcLwoeUvW17QCKIq-NuYnlV6ARhOc8lmpOWRimc/?imgmax=800"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Boolean Pallete" border="0" alt="Boolean Pallete" src="http://lh4.ggpht.com/_000cgw7RCzE/TV3hj8hvpII/AAAAAAAACm4/CRrviB2_ufI/image_thumb%5B19%5D.png?imgmax=800" width="442" height="442" /></a> </p> <p></p> <p><strong>String Controls and Indicators </strong></p> <p>ข้อมูลชนิด ตัวอักษร เป็นข้อมูลแบบเรียงลำดับของ รหัส ASCII เรามักใช้ String Control และ String Indicator ทำหน้าที่รับข้อความจากผู้ใช้ ตัวอย่างเช่น password และ username ในขณะที่ String indicator จะทำหน้าที่แสดงผลที่เป็นข้อความ เราสามารถหา String Control และ String Indicator ได้จาก <strong>String and Path</strong> ใน pallete ย่อย </p> <p><a href="http://lh5.ggpht.com/_000cgw7RCzE/TV3hk1LEmCI/AAAAAAAACm8/zZTpU19jo6c/s1600-h/image%5B41%5D.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="String Control and String Indicator" border="0" alt="String Control and String Indicator" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh59QhcAg2SQ-OusgXb8El3Vab4GqMjxl_XNtqxw5Z_Cyu6Gu_hh080QoY2bu3NHQ7R6MFXpjTH8uBkWWop4YU96EbveUwPcL_qt8GMdGu1TknM-HjOq70l81UOyjf9ZYx4676lxlt_H7H4/?imgmax=800" width="395" height="397" /></a> </p> <p><strong>Front Panel Window Toolbar</strong></p> <p>เรามาดูสัญลักษณ์และการทำใช้งาน Toolbar กัน</p> <p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitxDJ0CfzbjRQ7PFEj8m1mNX51uu2oUOj1BDBRztDgPTa4RiLy3nXDEehBTgjEpW8oDLCoAow0HflLpSh-iUOUW99okIz_FZDwt1j4F93aAXqL46WuT0h0N2H848nDz-VH2vr3EgYAFWXg/s1600-h/image%5B56%5D.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Toolbar Labview" border="0" alt="Toolbar Labview" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirIyJ_TItdOGCBUY8fh2iRXLVsomd-Wvbyj6Sq3akSzyav2Va9Ozq9Aymhu9ktIsDBmPVB4qrbUiB6CFvqsG7SVzPL_2aJ_ouPT9rFNkcN-kMyL3givXukoFcs3VzyTj_tstTjFxRaxekN/?imgmax=800" width="401" height="60" /></a> </p> <p></p> <p></p> <p><a href="http://lh4.ggpht.com/_000cgw7RCzE/TV3jgEWSXUI/AAAAAAAACnc/rvXs6jJNOFY/s1600-h/image%5B69%5D.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="RUN" border="0" alt="RUN" align="left" src="http://lh6.ggpht.com/_000cgw7RCzE/TV3qFpzqyXI/AAAAAAAACno/aI0ZWOSRgN8/image_thumb37.png?imgmax=800" width="49" height="27" /></a> </p> <p></p> <p>ทำหน้าที่สั่งให้ VI ที่เราเขียนทำงาน ; Labview จะทำหน้าที่ complie โค๊ดที่เราเขียนอัตโนมัติ </p> <p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGZC26J6ja9gV1mSHb5EWwBSfaogZj0U7yDx722QMJVQqpoTb-soh3RTsb5rCd_CipvVeeJLMbORO4odFb1FLS6bFKLlFKiIb61F3dXi6UW2vMr1fmW4ceFaoVbPoFBS4zusehRqQwFYUU/s1600-h/image74.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="ERROR" border="0" alt="ERROR" align="left" src="http://lh4.ggpht.com/_000cgw7RCzE/TV3rC1j3jGI/AAAAAAAACnw/7p25X_-ikDo/image_thumb40.png?imgmax=800" width="48" height="28" /></a> </p> <p>เป็นตัวบอกว่า ณ ขณะนี้ เกิดความผิดพลาดขึ้น เนื่องไม่สามารถที่จะ conplie โปรแกรมได้ หากเราไม่แก้ไข เสียก่อน เราสามารถดูตำแหน่งที่ error ได้ ด้วยการคลิกที่ลูกศร นี้ แล้วจะเกิดหน้าต่างแสดงข้อความที่ error ให้เราคลิกที่ข้อความนั้น โปรแกรมก็จะพาเราไปยังตำแหน่งที่ error นั้น อย่างรวดเร็ว</p> <p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgvbMQzNJjJAK-LDNvvhtjeVHEoQH6R6OTbEJ_Ej9jHa9rFujHL3AkxYRkqyQr3dI92T23OyCm8EzLaEkQoRftxWtobk2xBDGqv1MkjUdXzDvthRbcjkuFc0WOj1FfnbtDcBzAf2kDRRVY/s1600-h/image79.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="RUN Continuously" border="0" alt="RUN Continuously" align="left" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2nzhHhiRdwm0fDo_kl8baKgMNlORt5RL5DsGdGz6IeCkJv4HKJ5wPMLn2Uu7rWfqs4wvmMAp3445d09BdXlVF7QMiYSCzbp1SM1O01ViUIrMQi0SLgXp1PJ2sTrEV-JE1EcHjPuWaZoOV/?imgmax=800" width="47" height="25" /></a> </p> <p>เป็นการรันโปรแกรมแบบต่อเนื่อง วนลูปไม่รู้จบ จนกว่าเราจะกดปุ่ม abort หรือ ปุ่มหยุดโปรแกรม</p> <p><a href="http://lh3.ggpht.com/_000cgw7RCzE/TV3sAjeXq_I/AAAAAAAACn8/Vu0ztD50vCE/s1600-h/image84.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="Abort Execution" border="0" alt="Abort Execution" align="left" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivhBtlHKOAs36waK_ZF76Gie-3YEzq5Y36i7mnL8eFtBfS8EjgDxtTcOQNxESX_2RVmD4UwnO_L0iTe7PyhGgzoLGI4p1aS1BwEj7HYx6tQ3EJ8ThRfuLcuN2WQ7MSbMyfG9DvGwB7WIF4/?imgmax=800" width="48" height="30" /></a> ขณะหน้าต่าง VI กำลัง run อยู่ ปุ่มนี้ จะโชว์ขึ้นมา ถ้าเราคลิกที่ปุ่มนี้ โปรแกรม VI ของเราก็จะหยุดทำงานอย่างทันที </p> <p>คำเตือน : โดยปกติแล้ว เรามักที่จะไม่นิยม หยุดโปรแกรมของเราด้วยปุ่มนี้ เพราะอาจจะทำให้เกิดอาการค้างของข้อมูล เรามักจะทำปุ่ม stop ขึ้นมาเอง </p> <p><a href="http://lh5.ggpht.com/_000cgw7RCzE/TV3s96MgZeI/AAAAAAAACoE/Bs1dRT5X1J4/s1600-h/image89.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="Pause" border="0" alt="Pause" align="left" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdg3OF50U1j6J1EeZaYJjD-eCwoGsd1g8CgtGVpc59jHOJcmgM_6RsMZjZ9KHj6qxe0j51CIj_HqSTw60FGZhYzEChjwE-ESXGmrds6NEGPKowlhDqfD5v1Cu4Jz-QsSy9Vbc8j96M7uhV/?imgmax=800" width="48" height="27" /></a> </p> <p>กดปุ่มหยุดชั่วคราว หากเราต้องการหยุดโปรแกรม VI ของเราชั่วคราว แล้วกดปุ่มนี้อีกครั้ง หากต้องการให้โปรแกรมของเราทำงานต่อ </p> <p><a href="http://lh4.ggpht.com/_000cgw7RCzE/TV3t7UsJlWI/AAAAAAAACoM/DK8azwTaWWU/s1600-h/image95.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="Text Setting" border="0" alt="Text Setting" align="left" src="http://lh6.ggpht.com/_000cgw7RCzE/TV3u4LW4J4I/AAAAAAAACoQ/sk7UCyXNKpY/image_thumb53.png?imgmax=800" width="156" height="28" /></a> </p> <p>คลิกเลือกที่ปุ่มนี้ หากต้องการปรับแต่งข้อความบนหน้าต่าง Front panel </p> <p><a href="http://lh5.ggpht.com/_000cgw7RCzE/TV3u46Doe5I/AAAAAAAACoU/_BCkgMbfGI0/s1600-h/image103.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="Alignment - Resize - Order object " border="0" alt="Alignment - Resize - Order object " align="left" src="http://lh4.ggpht.com/_000cgw7RCzE/TV3v1fhVy3I/AAAAAAAACoY/7bhUQYpOy60/image_thumb57.png?imgmax=800" width="113" height="25" /></a> </p> <p></p> <p>เป็นการจัดเรียง control และ indicator ให้เรียงตรงกัน ทั้งในแนวตั้ง และแนวนอน นอกจากนี้ ยังมีปุ่มสำหรับเรียงลำดับการซ้อนทับของหน้าต่าง และปุ่มปรับขนาดให้เท่าๆกันด้วย </p> <p><a href="http://lh6.ggpht.com/_000cgw7RCzE/TV3v12qdXWI/AAAAAAAACoc/QD0l96Aw-iI/s1600-h/image108.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="Help Labview" border="0" alt="Help Labview" align="left" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2su0aXQEMlE5Pj6r_AIkGjXsBIgtBOSu3ccP_E1ZyG_E_kqnrpmo-8wBEbvA0Q39IqU6eb-dTwQnwqMuylhA2tAURi7Z8sa0iQ7huDa_E_eq-XeQkB9QSiaI6PGR-cWmytCvTRB2wwNyt/?imgmax=800" width="48" height="27" /></a> </p> <p>ปุ่มขอความช่วยเหลือ หากต้องการคำอธิบาย ของ control หรือ indicator </p> <p> </p> <p><a href="http://lh6.ggpht.com/_000cgw7RCzE/TV3wzBrETpI/AAAAAAAACok/ogwAIX41z5g/s1600-h/image114.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="Enter Text" border="0" alt="Enter Text" align="left" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhVAFZ3_MNTw2_wBxAvSAJe8NkwlfWRd-2AgUtxNKDk-Y8PMKtybChh3gXMIBinQrrenh94AioyH3TMsBGVRCwNhxG1lB22FZ1eF1HzVz04b2M8b0zmrcpNBtoGxRzRRF5OmxbdB9pbIJo/?imgmax=800" width="38" height="29" /></a> </p> <p>ในการแก้ไขข้อความ หรือพิมพ์ตัวหนังสือ บนหน้า Front Panel เมื่อเราต้องการจบการทำงานของการพิมพ์หรือแก้ไข ข้อความ เราไม่สามารถที่จะใช้ปุ่ม ENTER บนคีย์บอร์ดได้ เพราะการเคาะ ENTER จะเป็นการขึ้นบรรทัดใหม่ หากเราต้องการจบการพิมพ์ ให้ทำการกดปุ่ม ลูกศรเครื่องหมายถูกแทน </p> <p>Front Panel เป็นสิ่งแรกที่โปรแกรมเมอร์จะต้องทำการออกแบบ ในบางครั้งเราใช้เวลาในการออกแบบหน้าต่าง VI ของเราไปเกินกว่าครึ่งหนึ่งของโปรเจคของเรา ซึ่งหน้าต่าง VI ที่ดี ย่อมทำให้ผู้ใช้งานเกิดความรู้สึกอยากใช้งานโปรแกรมของเรา ไม่เกิดความสับสน บางครั้งโปรแกรมเมอร์อาจจะเรียนรู้เรื่องการออกแบบบ้าง </p> <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:2abcdd3d-4d21-4804-8f8e-7a621f74b145" class="wlWriterEditableSmartContent"><div><embed src="http://blip.tv/play/gshOxJUGAg" type="application/x-shockwave-flash" width="480" height="367" allowscriptaccess="always" allowfullscreen="true"></embed></div></div> Wisit.Phttp://www.blogger.com/profile/04747663677248244453noreply@blogger.com0tag:blogger.com,1999:blog-5321967662472700056.post-72566438570710443182011-01-26T08:58:00.001-08:002011-01-26T09:21:55.631-08:00Simple Program Labview<p><strong>เริ่มต้นเขียนโปรแกรม Labview </strong></p> <p><a href="http://lh5.ggpht.com/_000cgw7RCzE/TUBSlpxKcaI/AAAAAAAACg0/tgPXJmIu4lY/s1600-h/image%5B3%5D.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="simple Labview by Mr.P" border="0" alt="simple Labview by Mr.P" src="http://lh5.ggpht.com/_000cgw7RCzE/TUBSmR17XFI/AAAAAAAACg4/1OTC2E-__rE/image_thumb%5B1%5D.png?imgmax=800" width="429" height="324" /></a> </p> <p>โปรแกรมที่ถูกเขียนขึ้นด้วย Labview เราเรียกว่า Virtual Instrument (VI) เป็นเหมือนการเอาไอคอนที่เป็นหน้าตา ของอุปกรณ์เครื่องมือวัด ไม่ว่าจะเป็น สโคป หน้าปัดวัดแบบเข็ม แบบสเกล หรือแบบตัวเลข ปุ่มปรับค่าแบบ Knob หรือปุ่มกด Push Button ต่างๆ ที่ใช้เป็นหน้าต่าง GUI โต้ตอบกับผู้ใช้ โดยไอคอนเหล่านี้ เราจะทำการสร้างที่ส่วนของ Front Control แล้วทำการปรับแต่งสีสัน และข้อความที่ปรากฏตามความต้องการ หลังจากนั้น ก็ทำการ wire สายของ Data Flow ในส่วนของ Block Diagram ตาม Alogorthm ที่เราคิดไว้ ก็สามารถทำให้โปรแกม VI ที่เราสร้างขึ้นสามารถทำงานได้อย่างง่ายดาย </p> <p><strong>แล้ว Labview มันดีกว่ายังงัย <br /></strong>หลายคนอาจจะบอกว่า ถ้าเขียนหน้าต่างการใช้งานแบบนี้ โปรแกรม Visual C++ ก็สามารถทำได้เหมือนกัน แน่นอนหล่ะ ผมว่ามันก็ทำได็เหมือนกัน แต่ถ้าเป็นคนที่ไม่ได้เรียนเน้นทางโปรแกรมมา การจะสร้างโปรแกรมลักษณะเช่นนี้ เป็นการยากมาก เราอาจจะต้องเสียเวลาไปกับการ Develope software เพื่อทำงานติดต่อกับเครื่องมือวัด และทำหน้าต่างโปรแกรม GUI ไปอย่างมาก โดยที่เนื้องานจริงๆ เราอาจจะไม่ใช่แค่ตัวโปรแกรม แต่เป็นการเก็บต่า และวิเคราะห์ผล ซึ่งการเลือกใช้ Labview ในการพัฒนาเป็นการย่นระยะเวลาของปัญหาที่ไม่เกี่ยวข้องออกไป ทำให้เราบรรลุวัตถุประสงค์ได้เร็วกว่าอย่างแน่นอน  </p> <p>ข้อดีที่เห็นได้ชัดของ Labview ก็คือ ตัวโปรแกรม Labview เมื่อทำงานร่วมกับ Hardware ที่ใช้เก็บสัญญาณข้อมูล เช่น DAQ card ที่รองรับสามารถทำให้เครื่องคอมพิวเตอร์ของเรากลายเป็นเครื่องมือวัดราคาแพงๆ ได้ และเราเองยังสามารถที่จะเปลี่ยนแปลงเครื่องมือวัดของเราผ่านการออกแบบโปรแกรม Labview ได้โดยตรง ไม่ว่าจะเป็น Oscilloscope , Multimeter หรือ Functiona Generator ก็ได้ พูดง่ายๆก็คือ Labview สามารถสร้างอุปกรณ์เสมือน (Virtual Instrument : VI) ให้เราได้นั่นเอง </p> <p><strong>ตกลงกันก่อน <br /></strong>ในที่นี้ ผมใช้ <br />คอมพิวเตอร์โนตบุค Lenovo T61 <br />ระบบปฏิบัติการ Windows XP SP3 <br />Labview เวอร์ชั่น 8.5 </p> <p><strong>เริ่มต้นโปรแกรม VI ง่ายๆกันก่อน <br /></strong>ในที่นี้ เราจะลองสร้าง VI ง่ายๆกันก่อน เพื่อให้ผู้ใช้ ได้ทำความคุ้นเคยกับส่วนของ Front Control และ Block Diagram กันก่อน เพื่อแยกให้ออกว่าทั้งสองส่วนนี้ทำงานอย่างไร มีหน้าที่อย่างไรบ้าง แต่จะยังไม่ลงรายละเอียดอื่น แต่ผมจะไปอธิบายเพิ่มในตัวอย่างอื่นๆต่อไป (เดี๋ยวจะเบื่อกันซะก่อน) </p> <p> </p> <div style="padding-bottom: 0px; padding-left: 0px; width: 425px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:2e2170ab-6c0d-4222-98c1-21455d9440ab" class="wlWriterEditableSmartContent"><div id="1eb9add0-dcad-4c26-8765-3eacc84f08b5" style="margin: 0px; padding: 0px; display: inline;"><div><a href="http://www.youtube.com/watch?v=qffGxCpj90Y" target="_new"><img src="http://lh5.ggpht.com/_000cgw7RCzE/TUBYMruSebI/AAAAAAAAChQ/uDLHzc-RKRs/video1753053f11c3%5B2%5D.jpg?imgmax=800" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('1eb9add0-dcad-4c26-8765-3eacc84f08b5'); downlevelDiv.innerHTML = "<div><object width=\"425\" height=\"355\"><param name=\"movie\" value=\"http://www.youtube.com/v/qffGxCpj90Y&hl=en\"><\/param><embed src=\"http://www.youtube.com/v/qffGxCpj90Y&hl=en\" type=\"application/x-shockwave-flash\" width=\"425\" height=\"355\"><\/embed><\/object><\/div>";" alt=""></a></div></div></div> Wisit.Phttp://www.blogger.com/profile/04747663677248244453noreply@blogger.com0tag:blogger.com,1999:blog-5321967662472700056.post-51198827385916225182011-01-23T09:11:00.001-08:002011-01-23T09:13:32.316-08:00Labview 8.5 – มันกลับมาอีกแล้ว!!!<p>        เดิมทีผมเลิกความตั้งใจที่จะเขียนเรื่องของ Labview ไปแล้ว ด้วยเหตุที่ได้กล่าวไปแล้วขั้นต้น แต่เหมือนตอนนี้ ผมคงต้องกลับมาศึกษาเป็นจริงเป็นจังอีกแล้วครับ เพราะว่าในเทอมนี้ ผมได้ลงทะเบียนวิชา Labview ด้วย (เอาว่ะ) ยังงัยๆ ก็หนีไม่พ้นแล้ว ลองเล่นให้มันรู้ดำรู้แดงกันไปเลยสิ ว่าไอ้เจ้า Labview นี้ มันจะแน่ซักแค่ไหน </p> <p>       พอดีเพื่อนที่ทำงาน เค้าบอกว่า ใครเซียน Labview ค่าจ้างแพงนะ ไอ้เราก็ตาลุกวาวขึ้นมาทันที เอาเป็นว่า เรามาเริ่มศึกษาด้วยกันนะครับ ว่า Labview เค้ามีการใช้งานกันอย่างไร และถ้ามีเวลา ผมก็อยากจะค้นคว้าหาโปรเจค Labview มาเจาะให้เพื่อนๆ ได้ศึกษาไปพร้อมๆกันนะครับ ผมไม่ได้เก่งขนาดนั้นหรอกครับ เพียงแต่ผมคิดว่า ถ้าเราสนใจเรื่องใดๆ อยู่ เราก็ควรเอาตัวเองไปผูกไว้กับเรื่องนั้นซักระยะหนึ่ง ต่อไปๆ เราก็จะเข้าใจมัน และทำมันได้อย่างคล่องแคล่วแน่นอน เหมือนๆประโยคๆ หนึ่ง ที่ผมค่อนข้างชอบ แล้วคิดว่ามันจริงเสมอสำหรับผมก็คือ </p> <blockquote> <p align="center">The first step is always the hardest <br />  การเริ่มต้นทำสิ่งใดสิ่งที่ยากที่สุดก็คือตอนเริ่มต้นทำ</p> </blockquote> <p align="left">โม้มากไปหน่อยอีกแหละ เรามาเริ่มกันเลยดีกว่าครับ </p> <p align="left"><strong>Labview คืออะไร </strong></p> <p align="left"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="Labview National Instrument" border="0" alt="Labview National Instrument" src="http://lh6.ggpht.com/_000cgw7RCzE/TTxhRdYELeI/AAAAAAAACgc/KY51RNWN8yM/image%5B8%5D.png?imgmax=800" width="374" height="115" /> </p> <p align="left"><strong>Labview</strong> คือโปรแกรมที่ถูกสร้างขึ้นมาเพื่อทำงานด้านเครื่องมือวัด สำหรับงานวิศวกรรม (Laboratory Virtual Instrumentation Engineering Workbench) โดยโปรแกรมที่ถูกพัฒนาขึ้นภายใต้โปรแกรม Labview จะถูกพัฒนาภายใต้สภาวะ Visual Programming จากบริษัท National Instrument ซึ่งจุดประสงค์หลักของโปรแกรม ที่เค้าสร้างขึ้นมาก็เพื่อที่จะให้การทำงานกับเครื่องมือวัดภายในห้องแลปให้มีประสิทธิภาพมากที่สุดและเป็นไปอย่างอัตโนมัติ คือเราสามารถใช้โปรแกรม Labview สามารถทำการคำนวณค่าที่ได้จากเครื่องมือวัดใดๆ ที่ driver ของ Labview สามารถติดต่อได้ มาทำการประมวลผลต่อได้ </p> <p align="left"><strong>ลักษณะการเขียนโปรแกรมของ Labview </strong>อาจจะต้องมีการปรับจูนสมองกันนิดหน่อยสำหรับโปรแกรมเมอร์รุ่นเก่า ที่คุ้นเคยกับการเขียนโปรแกรมประเภท Text base หรือพวกทีชอบ Coding ทีเป็นพันๆ บรรทัด เพราะเจ้าตัว Labview เองเกือบจะร้อยเปอร์เซนต์ของการพัฒนาโปรแกรม ใช้การเขียนโปรแกรมแบบที่เรียกว่า Graphic-base Programming ซึ่งถ้าเป็นการเขียนโปรแกรมแบบ Text-base เราจะต้องเขียนโปรแกรมแบบจากบนลงล่าง แล้วเรียกฟังก์ชันไปมา แต่ถ้าเป็นการเขียนโปรแกรมบน Labview ลักษณะแนวคิดของโปรแกรมจะเป็นแบบ Data Flow โดยข้อมูลของโปรแกรมจะไหลตาม wire หรือเส้นทางข้อมูลที่เราทำการเชื่อมต่อกันแต่ละบล๊อก (วันแรก ก็เล่นเอามึนเหมือนกัน ) O_o </p> <p align="left"><strong>แล้วเริ่มต้น เขียนโปรแกรมบน Labview ยังงัยหล่ะ ???</strong></p> <p align="left">เนื่องจากโปรแกรม Labview เป็นการเขียนโปรแกรมสไตล์ Graphic-base Programming เพราะฉะนั้นการเขียนโปรแกรมส่วนใหญ่เป็นการจัดการด้านกราฟฟิค การโยงข้อมูล การทำหน้าต่าง GUI (Graphic User Interface )  ซะมากว่า โดยเค้าแบ่งการพัฒนาโปรแกรมออกเป็น 2 อย่างก็คือ </p> <ol> <li> <div align="left">Front Control ทำหน้าที่เป็นหน้ากากของโปรแกรมเพื่อติดต่อกับผู้ใช้ </div> </li> <li> <div align="left">Block Diagram เป็นส่วนของการจัดการไหลของข้อมูล (ยากสุดตรงนี้แหละ)</div> </li> </ol> <p align="left"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCqPUEPs_MbfjVkPlyOhgglPANvFsjf9cteB1QUL-TPOYsvk5kQzG5EDbTbsjHulLUJxTtsXg4fHbw9AomRz0_qH2gjN83n9Nr-uxA54YodLhU0DkBDiQFUaaL2fkA-YgGUGDF6PfgqY6U/s1600-h/image%5B7%5D.png"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="Front Control and Block Diagram of Labview" border="0" alt="Front Control and Block Diagram of Labview" src="http://lh4.ggpht.com/_000cgw7RCzE/TTxhVaF2JQI/AAAAAAAACgU/m-GuNENGlxU/image_thumb%5B3%5D.png?imgmax=800" width="440" height="381" /></a> </p> <p align="left">ซึ่งรายละเอียดของการเขียนและการพัฒนาโปรแกรมของ Labview ผมจะพยายามรวบรวมเนื้อหาที่เป็นประโยชน์ต่อตัวผมเอง จากในห้องเรียน และจากการค้นคว้าในอินเตอร์เนต และการทดลองทำมาเล่าสู่เพื่อนๆในโอกาสต่อไป</p> <div style="padding-bottom: 0px; padding-left: 0px; width: 425px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:e4e77198-b456-49c7-8e4a-748246d4d30d" class="wlWriterEditableSmartContent"><div id="17ef728c-69ec-489b-a36b-8827763e4dd1" style="margin: 0px; padding: 0px; display: inline;"><div><a href="http://www.youtube.com/watch?v=Em5R_RM8E08" target="_new"><img src="http://lh4.ggpht.com/_000cgw7RCzE/TTxhWZOaVoI/AAAAAAAACgk/GepsBZVf1KA/video3dfb4083ff6d%5B6%5D.jpg?imgmax=800" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('17ef728c-69ec-489b-a36b-8827763e4dd1'); downlevelDiv.innerHTML = "<div><object width=\"425\" height=\"355\"><param name=\"movie\" value=\"http://www.youtube.com/v/Em5R_RM8E08&hl=en\"><\/param><embed src=\"http://www.youtube.com/v/Em5R_RM8E08&hl=en\" type=\"application/x-shockwave-flash\" width=\"425\" height=\"355\"><\/embed><\/object><\/div>";" alt=""></a></div></div></div> Wisit.Phttp://www.blogger.com/profile/04747663677248244453noreply@blogger.com1tag:blogger.com,1999:blog-5321967662472700056.post-62472870520047257782011-01-17T07:55:00.001-08:002011-01-17T08:16:11.353-08:00Beginning with PIC เริมต้นที่ไหนดี<p>พอดี วันนี้ เพื่อนเมล์มาถามว่าถ้าจะเล่น PIC microcontroller จะเริ่มตรงไหนดี ใช้ภาษาอะไรในการคอมไพล์ แล้วใช้บอร์ดรุ่นไหนในการเริ่มต้นดี คุณเชื่อหรือไม่ คำถามแบบนี้ มันสุดจะคลาสสิคจริงๆ คือเป็นคำถามที่ถามกันมาทุกรุ่นทุกสมัยเลยก็ว่าได้ แต่ก็ไม่ได้มีคำตอบที่ชี้ชัดลงไปได้หรอกว่า แบบไหนดีที่สุด เหมาะที่สุด เพราะถ้ามันมีคำตอบที่ดีที่สุดอยู่แล้ว มันจะมีคนมาถามแบบนี้ทำไม ทำไมเราไม่บรรจุลงในหลักสูตรมัธยมให้มันรู้แล้ว รู้รอดไปเลยหล่ะ จะมาให้งงกันอยู่ทำไม จริงไหม</p> <p>มาเข้าประเด็นกันดีกว่า กับคำถามที่ถามไปข้างต้น ผมว่าเรื่องนี้ ถ้าในมานั่งพูดกันมันก็ยาวไม่ใช่น้อย มันเป็นเรื่องอยู่เหมือนกัน ถึงแม้คำถามจะค่อนข้างสโคปให้แคบแล้วก็ตาม โดยเราจะมุ่งไปที่ PIC ของบริษัท Microchip เท่านั้นก็ตาม แต่คำตอบของปัญหาก็ยังมีมากมายอยู่เหมือนเดิม เอาเป็นว่า เรามาว่ากันทีละขั้นก็แล้วกัน </p> <p>ต้องทำความเข้าใจก่อนว่า งานที่เราต้องการใช้ไมโครคอลโทรลเลอร์นั้น เป็นงานประเภทไหน เพราะต้องเข้าใจนิดนึงว่า ทางไมโครซิฟเอง เค้าก็ผลิตไมโครคอลโทรลเลอร์ออกมาให้หลากหลายกับงานแต่ละประเภทอยู่แล้ว</p> <p>ลองคลิกเข้าไปดูที่รูป PIC แต่ละตระกูล มันก็ยังประกอบไปด้วยแต่ละเบอร์ คิดแล้วน่าปวดหัวไหมหล่ะ ถ้าจะถามว่าจะต้องใช้เบอร์ไหนหล่ะ มันก็ต้องถามกลับไปว่า แล้วงานของคุณมันต้องการอะไรมั่งหล่ะ ช่องการแปลงสัญญาณ A/D , จำนวนพอร์ตดิจิตอล , memory หรือว่า ฟังก์ชั่นที่เกี่ยวข้องกับ   DSP อะไรจำพวกนี้ ล้วนเป็นสิ่งที่ต้องเอามาพิจารณาทั้งนั้น </p> <p><a href="http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2551" rel="nofollow" target="_blank"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="PIC Microcontroller" border="0" alt="PIC Microcontroller" src="http://lh6.ggpht.com/_000cgw7RCzE/TTRmQArFecI/AAAAAAAACgA/3xJCl158HaI/image%5B40%5D.png?imgmax=800" width="462" height="364" /></a>  </p> <p>แล้วถ้าเราไม่รู้หล่ะ ถ้าเป็นพวกมือใหม่ อยากเอาไปศึกษาหล่ะ ถ้าเป็นมือใหม่จริงๆ ขอแนะนำ PIC ตระกูล 18F ก็แล้วกัน เพราะเบอร์นี้ มันกำลังคาบเกี่ยวกันระหว่าง 8 บิต และ 16 บิต อยู่ สามารถทำอะไรได้หลายอย่าง น่าจะเพียงพอสำหรับการเรียนรู้ได้นานพอสมควร ลองดูจาก <a href="http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1469" rel="nofollow" target="_blank">Application Note</a> ของทางไมโครซิฟ ว่าเค้าทำไรได้มั่ง</p> <p><a href="http://lh3.ggpht.com/_000cgw7RCzE/TTRmRsucvvI/AAAAAAAACfE/jw9hcw5yJ7o/s1600-h/image%5B10%5D.png"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="PIC18 Architecture" border="0" alt="PIC18 Architecture" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwFbNgYGKkmGfLkVK5A0Wv3ri1FCaRN_XDrkZXi3DOmm0iGcVb_lJJ9xAOWKBwB2lLUzxd9RZgzy5G0GWMfPGoPvmIQWOQBC5eqcLW5FIDPW8Qcxk04ZBjYeqhqGJ-hw5yMIygF0bWASSY/?imgmax=800" width="465" height="300" /></a> </p> <p></p> <p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhh6zGVI-h2f7VfK-svjghnbRXbVklKvze0cojDEm9Kg6pXhLZvhGy9F06-E_1M8erCB9JqVBhdboRhZeh3PF2yPWFzGvd17AU_38BnBAf9BfkLJ409JtluUX3_WKqI4ehBFtvPLWuAYNbK/s1600-h/image%5B18%5D.png"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="PIC18 Block Diagram" border="0" alt="PIC18 Block Diagram" src="http://lh4.ggpht.com/_000cgw7RCzE/TTRmUnUpbBI/AAAAAAAACfQ/u8jjWC3IBtM/image_thumb%5B11%5D.png?imgmax=800" width="465" height="303" /></a> </p> <ul> <li>83 (16-bit wide) powerful C-optimized instruction</li> <li>Up to 2 MB addressable program memory</li> <li>4K Bytes RAM (max)</li> <li>32 level hardware stack</li> <li>1 (8-bit) File Select Register</li> <li>Integrated 8x8 hardware multiply</li> <li>Highest performance 8-bit architecture</li> </ul> <p>ซึ่งในตระกูลของ PIC 18F เองก็ยังมีตั้งมากมายหลายเบอร์ <a href="http://www.microchip.com/ParamChartSearch/chart.aspx?branchID=1004&mid=10&lang=en&pageId=74" target="_blank">คลิก</a></p> <p>แต่ถ้าถามว่าจะเอาเบอร์ไหนมาเล่นก่อน ก็อยากจะบอกว่า เอาเบอร์ที่มีขายในบ้านเราเหอะ อย่าไปเพิ่งไปแอดวานซ์มากนัก เดี๋ยวให้เก่งกว่านี้ก่อน </p> <p>ที่นี้ ก็มาถึงปัญหาย่อยของปัญหาหลักเรื่องเบอร์ไมโครคอลโทรลเลอร์ ว่าเราจะซื้อแบบบอร์ดทดลองแบบไหนดี  เท่าที่เห็นในบ้านเรา ก็มีให้เลือก สองแบบหลักๆ ก็คือ บอร์ดที่มีแต่ไมโครคอลโทรลเลอร์แล้วก็ช่อง I/O ของไมโครคอลโทรลเลอร์ กับแบบ บอร์ดที่มีทั้ง I/O และวงจรทดลองสำเร็จรูป ที่ต่อไว้ให้อยู่แล้ว เหลือแค่เพียงต่อสายไฟเชื่อมเข้าหากันเท่านั้น </p> <p>แบบแรก ข้อดี คือว่า ราคาถูกกว่าแบบที่สอง ข้อเสีย คือต้องหาอุปกรณ์ต่อทดลองเอาเอง </p> <p><a href="http://lh5.ggpht.com/_000cgw7RCzE/TTRmWjcS64I/AAAAAAAACfU/P4F9dWaytbE/s1600-h/image%5B22%5D.png"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="บอร์ดไมโครคอลโทรลเลอร์ PIC18F" border="0" alt="บอร์ดไมโครคอลโทรลเลอร์ PIC18F" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOkDze6wgKlVKeF4lD-8SC2E0sQYXmZ3RGcio-e7SMFHM20LxRrE2JmODqvtnlvXzRQnepPxxauqiz3qMuP48IrpnAG7ROZSAZTUvRS2jq5aX-2sn6W3udSqRTd68cShinpbI7bRW5Tm-E/?imgmax=800" width="352" height="270" /></a> </p> <p>แบบที่สอง คือ อุปกรณ์ต่อทดลองครบครัน ไม่ต้องไปหาเพิ่ม มีอุปกรณ์ให้ทดลองเท่าที่จำเป็น ถึงจะไม่ครบทุกอย่างก็ตาม เหมาะสำหรับมือใหม่ แต่ข้อเสียก็คือ มันแพง</p> <p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiezt-CxCKA5YFg6BTPn1GKj2NhyXD_VVIwRXycUrn1HsXHsQFRCRJylQbQWMqB3d_XogkhWoUTz8Wb_eFWveMctdYRS4V7UgJIi9rE-FhWlueGTZkFVmp2JdazoM1Shk9ru8r0pKYIiHdp/s1600-h/image%5B26%5D.png"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="บอร์ดทดลองไมโครคอลโทรลเลอร์สำเร็จรูป" border="0" alt="บอร์ดทดลองไมโครคอลโทรลเลอร์สำเร็จรูป" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtoskwd7-50fl-QD-A953WX0vWlaZ4xe5TUexw9indABOCLhVtY9DZs9COrq-OhfET3GtLBb0cfV3C17mZQ2zuUV3qOFAO9ahu4VBYwSRaAmnQ5PE9NKicgNHP6O5HpIc4UpRTexVax5IW/?imgmax=800" width="366" height="375" /></a> แต่ทั้งคู่ก็มีข้อเสียเหมือนกันอยู่อย่างหนึ่งก็คือ มันไม่สามารถที่จะเปลี่ยนเบอร์ไมโครคอลโทรลเลอร์ได้มากนัก อาจจะได้อยู่เบอร์หรือสองเบอร์ หรืออาจจะเปลี่ยนไม่ได้เลยก็ได้ </p> <p>ถ้าเป็นอย่างงี้ เราจะทำอย่างไร จากประสบการณ์ ผมขอแนะนำ อุปกรณ์ที่เรียกว่าเครื่องโปรแกรมไมโครคอนโทรลเลอร์ตระกูล PIC ของ บริษัท MICROCHIP ซึ่งก็ยังมีหลายตัวอีกนั่นแหละ เอาเป็นว่า ตัวที่ใช้ได้กับ PIC 18F แล้วกัน ของไทยทำก็มีหลายเจ้า จะเป็น<a href="http://www.thaimicrotron.com/PROPIC/USB1/Main.htm" target="_blank">แบบทำเอง</a> หรือว่าแบบ<a href="http://www.etteam.com/product/pic/et-pic-pgm-usb-v2.html" target="_blank">ซื้อเอา</a>ก็ได้ </p> <p><a href="http://lh6.ggpht.com/_000cgw7RCzE/TTRmc5h2NDI/AAAAAAAACfo/oX6PFRsK4xo/s1600-h/image%5B30%5D.png"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="ET-PGM PIC USB V2" border="0" alt="ET-PGM PIC USB V2" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiq4jW_kpWeYnimuQbBR3EgV_v8PhypD7oOWFuNW-w6Xbf6VIDxUKtNzzSzvGqKYtjuO4uRH5mWM1o6zU7zLvaRYVCwYB72K7cfNxO5VlPka3o_JgLoUmycVHuIB1WIoxKt-sDMSoL5GhJ1/?imgmax=800" width="367" height="340" /></a> </p> <p>ซึ่งเจ้าตัว ET-PGM PIC USB V2 ผมก็ซื้อมาเหมือนกัน เพราะขี้เกียจทำเอง หลังจากได้ตัวโปรแกรมไมโครคอลโทรลเลอร์มาแล้ว เราก็สามารถที่จะไปโปรแกรมลงบนคอนโทรลเลอร์เบอร์อะไรก็ได้ ตามที่มันสามารถรองรับได้ โดยต่อไปที่ขาของไมโครคอลโทรลเลอร์ ตามที่ระบุในดาต้าชีท </p> <p> </p> <p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3kQ9NMbjwG-gDc_JIEx3VDnfbDk1StNP4-Dg8PNB6aSwzTeuecQxabQAj6vrRvrVUadnrwtGc7f4kG0HPpSfiqY7-9vv8jfxWbRf6p2H5kld0IEHiTc8CLdAodOPwary48xJ-DYSTpdqH/s1600-h/image%5B35%5D.png"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="ตัวอย่างการโปรแกรมที่ขาของไมโครคอลโทรลเลอร์" border="0" alt="ตัวอย่างการโปรแกรมที่ขาของไมโครคอลโทรลเลอร์" src="http://lh3.ggpht.com/_000cgw7RCzE/TTRmgJLGx6I/AAAAAAAACf0/LG7mxDvp9T4/image_thumb%5B20%5D.png?imgmax=800" width="441" height="365" /></a> </p> <p align="center">ตัวอย่างการโปรแกรมที่ขาของไมโครคอลโทรลเลอร์</p> <p align="left">ส่วนโปรแกรมที่ใช้เบิร์นไมโครคอลโทรลเลอร์ก็ใช้ <a href="http://ww1.microchip.com/downloads/en/DeviceDoc/PICkit%202%20v2.55.01%20Setup%20B.zip"><u>PICkit 2 V2.55.01 Install</u></a>  หรือ <a href="http://ww1.microchip.com/downloads/en/DeviceDoc/PICkit%202%20v2.55.01%20Setup%20dotNET%20B.zip"><u> <br />PICkit 2 V2.55.01 Install with .NET Framework</u></a> ก็ได้ </p> <p align="left"><a href="http://lh6.ggpht.com/_000cgw7RCzE/TTRmg2a60dI/AAAAAAAACf4/nM8_OrK6_BQ/s1600-h/image%5B39%5D.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Pickit 2 Program" border="0" alt="Pickit 2 Program" src="http://lh6.ggpht.com/_000cgw7RCzE/TTRmh2Y2QGI/AAAAAAAACf8/52h-6uk1ukw/image_thumb%5B22%5D.png?imgmax=800" width="434" height="189" /></a> </p> <p>ทีนี้ ก็มาว่ากันถึงโปรแกรมที่จะใช้ในการเขียนโค๊ดเพื่อคอมไพล์ให้ได้ hex file เพื่ออัดลงไมโครคอลโทรลเลอร์กันเหอะ ในที่นี้ ขอแนะนำอยู่ สามตัวก็พอ เพราะตัวอื่น ยังไม่เคยลอง </p> <p>ถ้าเรามีพอจะเข้าใจภาษาซี อยู่แล้ว ขอแนะนำ MPLAB C18 , CCS C Complier แล้วก็ Hi-tech C ถ้าถามว่าตัวไหน ดีกว่ากัน จากที่ฟังผู้รู้มา </p> <p>เค้าว่ากันว่า CCS C Complier นั้น โค๊ดที่เขียนออกมาแล้วคอมไพล์ จะเล็กที่สุด และมีไลบรารี่ ค่อนข้างเยอะ ทำให้การพัฒนางานได้เร็ว ผู้ใช้ไม่ต้องศึกษามาก ก็สามารถที่จะทำงานออกมาได้แล้ว แต่นั่นก็เป็นข้อเสียให้มือใหม่หลายคนมาแล้ว เพราะจะทำให้ยิ่งไม่เข้าใจ ไปกันใหญ่ </p> <p>สำหรับ MPLAB กับ Hi-Tech C ผมแนะนำ MPLAB C18 ดีกว่า เพราะ ค่ายเดียวกันกับเบอร์ PIC Microcontroller เพราะต่างก็มาจาก MIcrochip เหมือนกัน ย่อมได้เปรียบมากกว่า ไม่ว่าจะเป็น โค๊ดตัวอย่าง หรือการนำไปใช้งาน ตลอดจนเอกสารต่างๆ ของ MPLAB ทำได้ค่อนข้างดีกว่า เยอะกว่า เวลามีปัญหา จะได้ไม่เหงา มีคนคอยปรึกษาได้ </p> <p>จริงๆ เรื่องของไมโครคอลโทรลเลอร์ มันยังมีรายละเอียดปลีกย่อยอีกมากมาย นี่เรายังมาไม่ถึงครึ่งทางของมันเลยนะ ต้องหาความรู้อยู่กันตลอด เพราะเจ้าตัวไมโครคอลโทรลเลอร์เอง ก็ผลิตออกมาเบอร์ใหม่ๆมาเรื่อย </p> <p>แหล่งความรู้ที่สำคัญที่ดังๆ ของไทยก็มีเยอะ ไม่ว่าจะเป็น <a href="http://www.electoday.com/bbs/" rel="nofollow" target="_blank">Electoday</a> , <a href="http://www.pantip.com/tech/electronics/" rel="nofollow" target="_blank">PANTIP</a> หรือว่า <a href="http://www.shadowwares.com/forum/index.php" rel="nofollow" target="_blank">เว็บพี่สันติ</a> ก็มีให้เข้าไปฝากคำถาม หรือข้อสงสัยกันได้ แต่อย่างหนึ่งที่อยากย้ำก็คือ การที่เราต้องมีพื้นฐานมาบ้างสมควร ไม่ใช่ว่าจะให้คนอื่นแสดงให้ดูตั้งแต่ต้นเลย แบบนี้ก็ไม่ไหว เพราะเราเองก็ไม่ได้จ้างเค้ามาเป็นที่ปรึกษา ทุกคนก็มีภาระหน้าที่ด้วยกันทั้งนั้น อย่าเกริยน พี่เค้าขอร้อง </p> <p>ส่วนบล๊อกที่ผมกำลังพยายามรวบรวมความรู้ ก็คือ <a href="https://sites.google.com/site/123microcontroller/" target="_blank">123 Microcontroller</a> ก็พยายามเขียนอยู่ ก็หวังว่าจะมีประโยชน์บ้าง ไม่มากก็น้อย ฝากเนื้อฝากตัวด้วยแล้วกันครับ</p> Wisit.Phttp://www.blogger.com/profile/04747663677248244453noreply@blogger.com1tag:blogger.com,1999:blog-5321967662472700056.post-85327567168596380792010-10-14T00:36:00.001-07:002010-10-14T05:46:10.874-07:00Hot-Cool Stage by Peltier<p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjekBtZXtm1rGOWe1VTyvGR95u2PZ57vnkN7RuPwt4_X6CFUTyTPuI13z-lNvcQbHySmHXigx8aQnGzH5fGkzTr3KEKEDhQfxnFZns3lDhXOykdA13UGFkFw-x9R5BJvoMK32qPKk1jdiUI/s1600-h/image%5B3%5D.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="Peltier Project" border="0" alt="Peltier Project" align="left" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrAEadLy0VXY_82-_X2enSNc4rKqg_b5vDGMTZBWHST61F8Mz3Gt5hpCIMjFkfbb_qqDj3rx2fhByIFjS0PkkItN5DqfpOxEXAkryQGsBts10RxMlzlCYoOwf1L6v9SQ1-0IDWF_Ryl2vo/?imgmax=800" width="244" height="199" /></a> เสร็จไปอีกหนึ่งผลงานกับแท่น ร้อน-เย็น ( Hot-Cool Stage) ไม่รู้ว่าจะตั้งชื่อว่าอะไร เอาเป็นว่าเจ้าแท่นนี้ มีหน้าที่ทำร้อน หรือทำเย็นก็ได้ ตามที่เราต้องการ (แต่ผมจำกัดอุณหภูมิไว้ที่ 0 – 75 องศาเซลเซียส)  </p> <p>ใจจริงอยากทำต่อ พัฒนาให้มันดีกว่านี้ แต่ว่าโปรเจคนี้ทำมานานแล้ว ก็เลยต้องจบมันเอาไว้ตรงนี้ก่อน ถ้ามีเวลาจะเอามันมาพัฒนาต่อสักหน่อย มีหลายอย่างที่ยังคาใจอยู่</p> <p>ซึ่งอุปกรณ์ที่ใช้ทำร้อน หรือเย็นที่ต้องการนั้น เราใช้ ThermalElectric  หรือที่เราเรียกว่า Peltier นั่นแหละเป็นพระเอกในการทำร้อน-เย็น การใช้งานของมันง่ายมากๆ เพียงแค่คุณจ่ายไฟกระแสตรงให้มัน จะทำให้ด้านหนึ่งของ Peltier ร้อน และด้านตรงข้ามจะเย็น ในทำนองเดียวกัน หากคุณกลับขั้วไฟจากที่ต่อในครั้งแรก คุณจะพบว่าด้านที่เคยเย็นจะร้อน และด้านที่เคยร้อนจะเย็น เห็นไหมหล่ะ ใช้งานง่ายจะตาย </p> <p>แต่ที่ยากของมันก็คือ การระบายความร้อนของมันต่างหาก เพราะถ้าในขณะที่เราต้องการความเย็นจากด้านที่เย็น จนถึงขนาดเป็นน้ำแข็งเกาะแล้วหล่ะก็ คุณจะต้องระบายความร้อนด้านที่ร้อนของมันให้ได้เร็วที่สุด ไม่งั้น Peltier พังแน่นอน (พังมาหลายอันแล้ว T_T )</p> <p>อุปกรณ์หลักๆ ของงานนี้ก็คือ </p> <ul> <li>Peltier TEC1-12710 จำนวน 2 แผ่น ตัวผลิตความร้อน ความเย็น </li> <li>Corsair Hydro Series H50 2 เครื่อง ตัวระบายความร้อนชั้นยอด </li> <li>บอร์ดไมโครคอนโทรลเลอร์ PIC16F877 เป็นตัวควบคุม </li> <li>บอร์ด H-Bridge เอาไว้กลับทิศทางกระแสไฟฟ้า </li> <li>Switching Power supply จ่ายกระแสไม่ต่ำกว่า 15 แอมป์ </li> </ul> <p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2RxlNEN2uWlvr72I5FzqQUTtSK_6b-w2fUCcctPum6Wvwm7MIcpEedrlVMf-0-PVSklSSwh53VMmPr4Cj6KkW1j2I8OIPd0sEG3BMfPG-E2CLzRx19TwZkvEYTA1mUup4Y9fOMiNhLClb/s1600-h/image%5B8%5D.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Peltier Project" border="0" alt="Peltier Project" src="http://lh3.ggpht.com/_000cgw7RCzE/TLazEN7wRwI/AAAAAAAACYg/uH1cFNpHXy4/image_thumb%5B4%5D.png?imgmax=800" width="401" height="378" /></a> </p> <p></p> <p>ผลการทดสอบ สามารถทำความร้อนได้เกือบร้อยองศา แต่ผมว่า อย่าดีกว่า เพราะกาวที่ใช้ยึดของผมมันละลายเลย ก็เลยต้องเขียนโค๊ดดักไว้ ให้ไม่เกิน 75 องศา ส่วนโหมดทำความเย็น สามารถทำให้น้ำแข็งเกาะแท่นอลูมีเนียมได้สบายๆ ดูคลิปวีดีโอสาธิตการทำงานก็แล้วกันครับ</p> <div style="padding-bottom: 0px; padding-left: 0px; width: 425px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:f0ec7c1a-7acf-46be-8cf8-b31716cdcbc8" class="wlWriterEditableSmartContent"><div id="82677f01-7733-4507-b875-8144c8f96430" style="margin: 0px; padding: 0px; display: inline;"><div><a href="http://www.youtube.com/watch?v=Rq0H7DM-qQ4&feature=player_embedded" target="_new"><img src="http://lh4.ggpht.com/_000cgw7RCzE/TLb7j332qGI/AAAAAAAACYk/8Y9q9pctMPc/video5ecac070937f%5B3%5D.jpg?imgmax=800" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('82677f01-7733-4507-b875-8144c8f96430'); downlevelDiv.innerHTML = "<div><object width=\"425\" height=\"355\"><param name=\"movie\" value=\"http://www.youtube.com/v/Rq0H7DM-qQ4&hl=en\"><\/param><embed src=\"http://www.youtube.com/v/Rq0H7DM-qQ4&hl=en\" type=\"application/x-shockwave-flash\" width=\"425\" height=\"355\"><\/embed><\/object><\/div>";" alt=""></a></div></div></div> <p></p> <div style="padding-bottom: 0px; padding-left: 0px; width: 425px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:43299288-74c0-4355-9157-332fb1457fe9" class="wlWriterEditableSmartContent"><div id="c1d720b2-8de5-43a9-b877-b76ee9cae7f6" style="margin: 0px; padding: 0px; display: inline;"><div><a href="http://www.youtube.com/watch?v=rHX1cbSizOE" target="_new"><img src="http://lh6.ggpht.com/_000cgw7RCzE/TLb7kfz6tKI/AAAAAAAACYo/KwjsKyxBin4/videob5ce36607cfe%5B3%5D.jpg?imgmax=800" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('c1d720b2-8de5-43a9-b877-b76ee9cae7f6'); downlevelDiv.innerHTML = "<div><object width=\"425\" height=\"355\"><param name=\"movie\" value=\"http://www.youtube.com/v/rHX1cbSizOE&hl=en\"><\/param><embed src=\"http://www.youtube.com/v/rHX1cbSizOE&hl=en\" type=\"application/x-shockwave-flash\" width=\"425\" height=\"355\"><\/embed><\/object><\/div>";" alt=""></a></div></div></div> Wisit.Phttp://www.blogger.com/profile/04747663677248244453noreply@blogger.com10tag:blogger.com,1999:blog-5321967662472700056.post-59685078405707583352010-09-25T10:20:00.001-07:002013-04-30T08:51:51.760-07:00AVR+VB.NET+WEB จาก Hardware สู่ WEB<div class="wlWriterHeaderFooter" style="float:none; margin:0px; padding:4px 0px 4px 0px;"><iframe src="http://www.facebook.com/widgets/like.php?href=http://mechacity.blogspot.com/2010/09/avrvbnetweb-hardware-web.html" scrolling="no" frameborder="0" style="border:none; width:450px; height:80px"></iframe></div><p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7ig9KXOucEYpX5NVKekeS1MkmqcDpY3t24lHFjCbp9Ri05uwuA8GBieFgmDK7X-7c_3oIqHtT8y0VZ1VhLE4lynnPLb2q3NKKkPuyrBaVw2rN3hwti6l95ph8SbFWVYHdfSFLxZrXpTSR/s1600-h/vlcsnap-2010-09-26-00h18m12s96%5B6%5D.png" target="_blank"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="VB.NET+RS232+MySQL" border="0" alt="VB.NET+RS232+MySQL" align="left" src="http://lh4.ggpht.com/_000cgw7RCzE/TJ4vZiYz9uI/AAAAAAAACU4/yu2hDT7oeCc/vlcsnap-2010-09-26-00h18m12s96_thumb%5B3%5D.png?imgmax=800" width="244" height="142" /></a> หายไปนานสำหรับ บทความนี้ พอดีช่วงนี้ยุ่งสุดๆ ทั้งสอบ ทั้งงาน ทั้งโปรเจค โอ้ยเยอะ เอาเป็นว่ายุ่งหล่ะกัน แต่ก็อยากเอามาแชร์ๆ กันมั่ง </p> <p>พอดีมีโอกาสได้ทดลองเขียนโปรแกรมด้วย VB.NET express รับค่าจาก AVR ซึ่งคอยเช็คว่ามีวัตถุมาบัง sensor หรือยัง แล้ววัตถุออกไปตอนไหน จากนั้นก็จะเก็บค่าไว้ใน memory ของ AVR จากนั้น ก็รอให้ โปรแกรม Counter v1.0 มารับค่าไป เพื่อนำค่าที่ได้ไปบันทึกลงดาต้าเบส MySQL นั่นคืองานในส่วนของ VB.net กับ AVR ซึ่งจะทำงานแบบนี้ไปเรื่อยๆ</p> <p>ในส่วนของ WEB PAGE จะใช้ PHP + SAJAX เพือทำการดึงข้อมูลจากดาต้าเบส MySQL แล้วทำการส่งออกทางหน้าเว็บบราวเซอร์ ในส่วนนี้ เราจำเป็นต้องพึ่งพา SAJAX เพื่อทำให้หน้าเว็บแสดงผลแทบจะ Realtime ซึ่งตรงนี้ เราสามารถปรับแต่งค่าได้ ว่าจะให้หน้าเว็บ refresh ถี่ขนาดไหน </p> <p>นี่ก็เป็นคอนเซ็บต์คร่าวๆนะครับ พอดี หน้าเว็บผมยังแต่ไม่เสร็จ อาจจะดูแล้วลูกทุ่งไปหน่อย เพราะอยากทดลองก่อนว่าระบบสามารถทำงานได้ไหม  ส่วนความสวยงานค่อยแต่งทีหลังก็ได้ </p> <div style="padding-bottom: 0px; padding-left: 0px; width: 425px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:79d53313-1899-4d5a-a319-cf9d2f8be489" class="wlWriterSmartContent"> <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px" id="531f334b-bfe1-42c3-b201-5b93e32d026c"> <div><a href="http://www.youtube.com/watch?v=LM7THOeEILA?hl=en&fs=1" target="_new"><img style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none" alt="" src="http://lh6.ggpht.com/_000cgw7RCzE/TJ4vaTjSAuI/AAAAAAAACU8/BwCQ-2z0WzQ/videoe0ea6d7b1efd%5B3%5D.jpg?imgmax=800" onload="var downlevelDiv = document.getElementById('531f334b-bfe1-42c3-b201-5b93e32d026c'); downlevelDiv.innerHTML = "<div><object width=\"425\" height=\"355\"><param name=\"movie\" value=\"http://www.youtube.com/v/LM7THOeEILA?hl=en&fs=1&hl=en\"><\/param><embed src=\"http://www.youtube.com/v/LM7THOeEILA?hl=en&fs=1&hl=en\" type=\"application/x-shockwave-flash\" width=\"425\" height=\"355\"><\/embed><\/object><\/div>";" galleryimg="no" /></a></div> </div> </div> Wisit.Phttp://www.blogger.com/profile/04747663677248244453noreply@blogger.com23tag:blogger.com,1999:blog-5321967662472700056.post-8980668527824961972010-03-10T08:55:00.001-08:002010-03-10T08:56:27.555-08:00New Engineer, Listen to him<div class="wlWriterHeaderFooter" style="float:none; margin:0px; padding:0px 0px 0px 0px;"><script type="text/javascript"><br /></script><br /><script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"></script><br /><br /></div><p><img style="display: inline; margin-left: 0px; margin-right: 0px" height="168" src="http://www.seaoi.org/images/pic23.jpg" width="250" align="left" />       วันนี้ ก็ยังมึนตื๊บกับ mini project microcontroller ไปเรื่อยเปื่อย ตามประสาคนเก่ง(แบบเป็ด อย่างผม) ในขณะกำลังหาข้อมูลอยู่ พอดีไปเจอเข้ากับเว็บๆหนึ่ง ซึ่งเค้ามีคลิปวีดีโอสัมภาษณ์วิศวกรท่านหนึ่ง ซึ่งค่อนข้างจะอาวุโสสักหน่อย</p> <p>      โดยส่วนตัวแล้ว ผมไม่ได้รู้จักมักจี่ กับพี่เค้าเท่าไหร่เลย ไม่ได้จบสถาบันเดียวกันด้วย แต่เหตุผลที่นำมาให้ดู นั่นก็เพราะว่าไปสะดุดคำสอนท่อนๆหนึ่ง ที่พี่เค้ากล่าวไว้ เรื่องเกี่ยวกับวิศวกรที่จบมาใหม่หลายๆคน ผมเห็นบางคนทำงานได้ไม่นานก็เปลี่ยนที่ทำงานใหม่ บางคนเข้ามาทำงานแล้วก็มีปัญหากับคนเก่า บางคนเข้ามาแล้ว ก็ค่อนข้างจะถือตัวว่าข้านี่แหละแน่ ข้าจบวิศวะมา แต่อยากจะให้ฟังสักนิด ผมว่าพี่เค้าพูดได้ดี และพูดได้ตรงมาก โดยเฉพาะกับวิศวกรไทย(สไตล์เด็กเกาหลี) จบใหม่ทั้งหลายแหล่ “เจ้าจงมาฟังไว้”</p> <div class="wlWriterSmartContent" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:203e3433-4312-46d1-b7d2-3ba40ae0ee0e" style="padding-right: 0px; display: block; padding-left: 0px; float: none; padding-bottom: 0px; margin-left: auto; width: 425px; margin-right: auto; padding-top: 0px"><div id="1a034cd8-2267-4b88-a2e7-ff3ab8cc8307" style="margin: 0px; padding: 0px; display: inline;"><div><a href="http://www.youtube.com/watch?v=7CvIhZcZEoU&color1=0xb1b1b1&color2=0xcfcfcf&hl=en_US&feature=player_embedded&fs=1" target="_new"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRbCjm4jsa4iA4r3P7B2e1O1FerXEgeACst53nCM16R5PgdzE_llcw8olQiXqA1e5Ui37n8xJz7-0sFF6b-_zjwzWMbjH0TYmMlexxBih2tEF6KC73rwnzjCVLhqab_Y3XDnhB1zaN_pT4/?imgmax=800" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('1a034cd8-2267-4b88-a2e7-ff3ab8cc8307'); downlevelDiv.innerHTML = "<div><object width=\"425\" height=\"355\"><param name=\"movie\" value=\"http://www.youtube.com/v/7CvIhZcZEoU&color1=0xb1b1b1&color2=0xcfcfcf&hl=en_US&feature=player_embedded&fs=1&hl=en\"><\/param><embed src=\"http://www.youtube.com/v/7CvIhZcZEoU&color1=0xb1b1b1&color2=0xcfcfcf&hl=en_US&feature=player_embedded&fs=1&hl=en\" type=\"application/x-shockwave-flash\" width=\"425\" height=\"355\"><\/embed><\/object><\/div>";" alt=""></a></div></div></div> Wisit.Phttp://www.blogger.com/profile/04747663677248244453noreply@blogger.com2tag:blogger.com,1999:blog-5321967662472700056.post-58399171547569771752010-03-09T08:24:00.001-08:002010-03-09T08:28:25.292-08:00PIC18F458 error $MCLR$ is low. Processor is in reset.<div class="wlWriterHeaderFooter" style="float:none; margin:0px; padding:0px 0px 0px 0px;"><script type="text/javascript"><br /></script><br /><script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"></script><br /><br /></div><p><a href="http://lh3.ggpht.com/_000cgw7RCzE/S5Z2GppaCXI/AAAAAAAACPo/f6WIPvK77Jg/s1600-h/image%5B4%5D.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; margin-left: 0px; border-left: 0px; margin-right: 0px; border-bottom: 0px" height="193" alt="image" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9gsQfC5VrygUegUd9xkK2AMqoTIo2MuPl8_wcAv4VcrF3m5rTSbz7iEIlHzoTh54rrtI32IfOMybI1LrDoppooaHXXQotjP5Fnbkzr4Dr0uQSFqzGziEp1CrBQwk9uJQRaytEu1fF0Ilu/?imgmax=800" width="244" align="left" border="0" /></a>      โดยปกติแล้ว ในการจำลองการทำงานใน proteus บางอย่างเราไม่จำเป็นจะต้องต่อวงจร อย่างเช่น oscillator หรือวงจรรีเซต microcontroller แต่อย่างไร </p> <p>ซึ่งปกติผมมักจะชอบ simulate กับ PIC16F877 เป็นประจำ แต่วันนี้ผมทดลองใช้เบอร์ 18F458 ซึ่งต้องการอยากให้มันตรงกันกับบอร์ดที่เราใช้งานอยู่จริง </p> <p>    ทำการทดลองโค๊ด แสดงตัวหนังสืออกหน้าจอ LCD 20x4 ปรากฏว่าไม่มีข้อความปรากฏเลย แล้วแถมเจอ error message ขึ้นมาเพียบเลย มันโชว์ error ว่า “$MCLR$ is low. Processor is in reset.” </p> <p>ไอ้เจ้า MCLR มันเป็นวงจรสำหรับเอาไว้รีเซต microcontrller ซึ่งปกติ ผมมักจะไม่ต้องต่อ เมื่อทดลองกับ PIC16F877 แต่พอมาเจอ PIC18F458 ปรากฏว่า มันจำเป็นต้องต่อด้วย ถึงแม้เราจะ simulatre ใน proteus ก็ตาม –_-“</p> <p><a href="http://lh6.ggpht.com/_000cgw7RCzE/S5Z2Ii-19ZI/AAAAAAAACPw/s00JpzfZoEY/s1600-h/image%5B7%5D.png"><img title="MCLR reset circuit" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="210" alt="MCLR reset circuit" src="http://lh6.ggpht.com/_000cgw7RCzE/S5Z2JY0Ky2I/AAAAAAAACP0/XxZaDFwdZzo/image_thumb%5B3%5D.png?imgmax=800" width="244" border="0" /></a></p> <p> <a href="http://lh4.ggpht.com/_000cgw7RCzE/S5Z2KJypDnI/AAAAAAAACP4/OUxDRbnxogs/s1600-h/image%5B10%5D.png"><img title="LCD 20x4 " style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="180" alt="LCD 20x4 " src="http://lh4.ggpht.com/_000cgw7RCzE/S5Z2KywaK9I/AAAAAAAACP8/YZU3u1OdwUU/image_thumb%5B4%5D.png?imgmax=800" width="244" border="0" /></a> </p> <p>ทำการต่อวงจร reset เข้าไปที่ขา 1 ของ PIC18F458 ซะ แล้วทดลองโปรแกรมอีกที error หายไปแล้ว หน้าจอ LCD แสดงผลได้ตามปกติ </p> <p>นิทานเรื่องนี้ สอนให้รู้ อย่าคิดว่า ที่ทำตามๆกันมา มันจะถูกเสมอไป เวลาเปลี่ยน ใจก็เปลี่ยน (เกี่ยวกันไหมเนี่ย)</p> Wisit.Phttp://www.blogger.com/profile/04747663677248244453noreply@blogger.com2tag:blogger.com,1999:blog-5321967662472700056.post-91710863698591286412010-01-30T20:40:00.001-08:002010-03-09T08:30:46.734-08:00สาธิตการใช้งาน Proteus เบื้องต้น<div class="wlWriterHeaderFooter" style="float:none; margin:0px; padding:0px 0px 0px 0px;"><script type="text/javascript"><br /></script><br /><script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"></script><br /><br /></div><p><a href="http://lh5.ggpht.com/_000cgw7RCzE/S2UJlsJxRjI/AAAAAAAACJk/LVhttjtmr6Y/s1600-h/image%5B10%5D.png"><img title="PIC16F877 with LCD 16x2 on Proteus" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin-left: 0px; margin-right: 0px; border-right-width: 0px" height="169" alt="PIC16F877 with LCD 16x2 on Proteus" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbyjuQn_AShpG1IMSXZKF88ITnEKcln7UXFRotGsl89nqSLgNSvBiN5paysc5BnjippORMqqQM92NWIagBcUQVQ12w4NH7WspRlb8FxdTyXNg-SRpsxB9kwTstH0jMBkYjDiZqIclyD7kY/?imgmax=800" width="230" align="left" border="0" /></a> หลังจากได้<a title="Proteus" href="http://mechacity.blogspot.com/2009/12/proteus.html" target="_blank" rel="tag">แนะนำโปรแกรม Proteus</a> ไปแล้ว วันนี้ผมมีโอกาสได้ทำวีดีโอสาธิตการใช้งาน Proteus เบื้องต้น เป็นการใช้งานแบบง่ายๆ โดยทำการต่อวงจรสาธิตการแสดงผลผ่านทางจอ LCD 16x2 ด้วยไมโครคอนโทรลเลอร์ PIC16F877 </p> <p>ผมได้พยายามทำวีดีโอสอน และอัพโหลดขึ้น <a href="http://www.youtube.com/user/kratok2006" target="_blank" rel="nofollow">youtube</a> ของผม อาจจะมีปัญหาเรื่องความคมชัดนิดหน่อย ยังหาโปรแกรมแปลงไฟล์วีดีโอดีๆ ยังไม่เจอ หากเพื่อนๆเคยทำการแปลงไฟล์วีดีโอดีเจ๋งๆ บอกผมหน่อยแล้วกัน </p> <p>ในวีดีโอสาธิตชุดนี้ ผมไม่ได้ลงรายละเอียดไปถึงการเขียนโปรแกรม CCS C Complier เพราะเนื้อหาอาจจะเยอะเกินไป อาจมีปัญหาในการอัพโหลดวีดีโอได้ เอาไว้คราวหน้าแล้วกัน ผมจะทำวีดีโอสาธิตการใช้งาน CCS C Complier มาให้เพื่อนมาชมกัน </p> <p>สำหรับวีดีโอสาธิตการใช้งาน Proteus ชุดนี้ ผมต้องขอออกตัวไว้ก่อนว่าเป็นการใช้งานพื้นๆเท่านั้น ยังไม่ได้ลงรายละเอียดมากนัก แต่ความสามารถของโปรแกรม Proteus ยังมีอีกมากมาย อยากให้เพื่อนๆลองไปทดลองใช้ดูครับ แล้วจะติดใจในความสามารถของโปรแกรม</p> <p>ดาวน์โหลด source code และไฟล์วงจร proteus ได้ <a href="http://www.ziddu.com/download/8384411/lcd.zip.html" target="_blank" rel="nofollow"><font size="4">ที่นี่</font></a> </p> <div class="wlWriterSmartContent" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:08ddf648-e231-405f-a046-77fbec369c80" style="padding-right: 0px; display: block; padding-left: 0px; float: none; padding-bottom: 0px; margin-left: auto; width: 425px; margin-right: auto; padding-top: 0px"><div id="4ffa0427-84bb-48c9-8f6a-f9cae5770951" style="margin: 0px; padding: 0px; display: inline;"><div><a href="http://www.youtube.com/watch?v=kIF6S9Qutwg&feature=player_embedded" target="_new"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPwzzkH2eHHZj3j_tYZu9y6zDysfBesGrzscnPzLMGKfJ0y0xT1wnyn0T0gPfM1fq2nKFnnkQicd6Ozl7uzPnc4kwG-7cA4azzPCU2A79fwT9Ff_VW0nIcH4X22xx8poma_-S0vavLt0vF/?imgmax=800" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('4ffa0427-84bb-48c9-8f6a-f9cae5770951'); downlevelDiv.innerHTML = "<div><object width=\"425\" height=\"355\"><param name=\"movie\" value=\"http://www.youtube.com/v/kIF6S9Qutwg&hl=en\"><\/param><embed src=\"http://www.youtube.com/v/kIF6S9Qutwg&hl=en\" type=\"application/x-shockwave-flash\" width=\"425\" height=\"355\"><\/embed><\/object><\/div>";" alt=""></a></div></div></div> Wisit.Phttp://www.blogger.com/profile/04747663677248244453noreply@blogger.com1