Wednesday, January 26, 2011

Simple Program Labview

เริ่มต้นเขียนโปรแกรม Labview

simple Labview by Mr.P

โปรแกรมที่ถูกเขียนขึ้นด้วย Labview เราเรียกว่า Virtual Instrument (VI) เป็นเหมือนการเอาไอคอนที่เป็นหน้าตา ของอุปกรณ์เครื่องมือวัด ไม่ว่าจะเป็น สโคป หน้าปัดวัดแบบเข็ม แบบสเกล หรือแบบตัวเลข ปุ่มปรับค่าแบบ Knob หรือปุ่มกด Push Button ต่างๆ ที่ใช้เป็นหน้าต่าง GUI โต้ตอบกับผู้ใช้ โดยไอคอนเหล่านี้ เราจะทำการสร้างที่ส่วนของ Front Control แล้วทำการปรับแต่งสีสัน และข้อความที่ปรากฏตามความต้องการ หลังจากนั้น ก็ทำการ wire สายของ Data Flow ในส่วนของ Block Diagram ตาม Alogorthm ที่เราคิดไว้ ก็สามารถทำให้โปรแกม VI ที่เราสร้างขึ้นสามารถทำงานได้อย่างง่ายดาย

แล้ว Labview มันดีกว่ายังงัย
หลายคนอาจจะบอกว่า ถ้าเขียนหน้าต่างการใช้งานแบบนี้ โปรแกรม Visual C++ ก็สามารถทำได้เหมือนกัน แน่นอนหล่ะ ผมว่ามันก็ทำได็เหมือนกัน แต่ถ้าเป็นคนที่ไม่ได้เรียนเน้นทางโปรแกรมมา การจะสร้างโปรแกรมลักษณะเช่นนี้ เป็นการยากมาก เราอาจจะต้องเสียเวลาไปกับการ Develope software เพื่อทำงานติดต่อกับเครื่องมือวัด และทำหน้าต่างโปรแกรม GUI ไปอย่างมาก โดยที่เนื้องานจริงๆ เราอาจจะไม่ใช่แค่ตัวโปรแกรม แต่เป็นการเก็บต่า และวิเคราะห์ผล ซึ่งการเลือกใช้ Labview ในการพัฒนาเป็นการย่นระยะเวลาของปัญหาที่ไม่เกี่ยวข้องออกไป ทำให้เราบรรลุวัตถุประสงค์ได้เร็วกว่าอย่างแน่นอน 

ข้อดีที่เห็นได้ชัดของ Labview ก็คือ ตัวโปรแกรม Labview เมื่อทำงานร่วมกับ Hardware ที่ใช้เก็บสัญญาณข้อมูล เช่น DAQ card ที่รองรับสามารถทำให้เครื่องคอมพิวเตอร์ของเรากลายเป็นเครื่องมือวัดราคาแพงๆ ได้ และเราเองยังสามารถที่จะเปลี่ยนแปลงเครื่องมือวัดของเราผ่านการออกแบบโปรแกรม Labview ได้โดยตรง ไม่ว่าจะเป็น Oscilloscope , Multimeter หรือ Functiona Generator ก็ได้ พูดง่ายๆก็คือ Labview สามารถสร้างอุปกรณ์เสมือน (Virtual Instrument : VI) ให้เราได้นั่นเอง

ตกลงกันก่อน
ในที่นี้ ผมใช้
คอมพิวเตอร์โนตบุค Lenovo T61
ระบบปฏิบัติการ Windows XP SP3
Labview เวอร์ชั่น 8.5

เริ่มต้นโปรแกรม VI ง่ายๆกันก่อน
ในที่นี้ เราจะลองสร้าง VI ง่ายๆกันก่อน เพื่อให้ผู้ใช้ ได้ทำความคุ้นเคยกับส่วนของ Front Control และ Block Diagram กันก่อน เพื่อแยกให้ออกว่าทั้งสองส่วนนี้ทำงานอย่างไร มีหน้าที่อย่างไรบ้าง แต่จะยังไม่ลงรายละเอียดอื่น แต่ผมจะไปอธิบายเพิ่มในตัวอย่างอื่นๆต่อไป (เดี๋ยวจะเบื่อกันซะก่อน)

 

อ่านเพิ่มเติม...

Sunday, January 23, 2011

Labview 8.5 – มันกลับมาอีกแล้ว!!!

        เดิมทีผมเลิกความตั้งใจที่จะเขียนเรื่องของ Labview ไปแล้ว ด้วยเหตุที่ได้กล่าวไปแล้วขั้นต้น แต่เหมือนตอนนี้ ผมคงต้องกลับมาศึกษาเป็นจริงเป็นจังอีกแล้วครับ เพราะว่าในเทอมนี้ ผมได้ลงทะเบียนวิชา Labview ด้วย (เอาว่ะ) ยังงัยๆ ก็หนีไม่พ้นแล้ว ลองเล่นให้มันรู้ดำรู้แดงกันไปเลยสิ ว่าไอ้เจ้า Labview นี้ มันจะแน่ซักแค่ไหน

       พอดีเพื่อนที่ทำงาน เค้าบอกว่า ใครเซียน Labview ค่าจ้างแพงนะ ไอ้เราก็ตาลุกวาวขึ้นมาทันที เอาเป็นว่า เรามาเริ่มศึกษาด้วยกันนะครับ ว่า Labview เค้ามีการใช้งานกันอย่างไร และถ้ามีเวลา ผมก็อยากจะค้นคว้าหาโปรเจค Labview มาเจาะให้เพื่อนๆ ได้ศึกษาไปพร้อมๆกันนะครับ ผมไม่ได้เก่งขนาดนั้นหรอกครับ เพียงแต่ผมคิดว่า ถ้าเราสนใจเรื่องใดๆ อยู่ เราก็ควรเอาตัวเองไปผูกไว้กับเรื่องนั้นซักระยะหนึ่ง ต่อไปๆ เราก็จะเข้าใจมัน และทำมันได้อย่างคล่องแคล่วแน่นอน เหมือนๆประโยคๆ หนึ่ง ที่ผมค่อนข้างชอบ แล้วคิดว่ามันจริงเสมอสำหรับผมก็คือ

The first step is always the hardest
  การเริ่มต้นทำสิ่งใดสิ่งที่ยากที่สุดก็คือตอนเริ่มต้นทำ

โม้มากไปหน่อยอีกแหละ เรามาเริ่มกันเลยดีกว่าครับ

Labview คืออะไร

Labview National Instrument

Labview คือโปรแกรมที่ถูกสร้างขึ้นมาเพื่อทำงานด้านเครื่องมือวัด สำหรับงานวิศวกรรม (Laboratory Virtual Instrumentation Engineering Workbench) โดยโปรแกรมที่ถูกพัฒนาขึ้นภายใต้โปรแกรม Labview จะถูกพัฒนาภายใต้สภาวะ Visual Programming จากบริษัท National Instrument ซึ่งจุดประสงค์หลักของโปรแกรม ที่เค้าสร้างขึ้นมาก็เพื่อที่จะให้การทำงานกับเครื่องมือวัดภายในห้องแลปให้มีประสิทธิภาพมากที่สุดและเป็นไปอย่างอัตโนมัติ คือเราสามารถใช้โปรแกรม Labview สามารถทำการคำนวณค่าที่ได้จากเครื่องมือวัดใดๆ ที่ driver ของ Labview สามารถติดต่อได้ มาทำการประมวลผลต่อได้

ลักษณะการเขียนโปรแกรมของ Labview อาจจะต้องมีการปรับจูนสมองกันนิดหน่อยสำหรับโปรแกรมเมอร์รุ่นเก่า ที่คุ้นเคยกับการเขียนโปรแกรมประเภท Text base หรือพวกทีชอบ Coding ทีเป็นพันๆ บรรทัด เพราะเจ้าตัว Labview เองเกือบจะร้อยเปอร์เซนต์ของการพัฒนาโปรแกรม ใช้การเขียนโปรแกรมแบบที่เรียกว่า Graphic-base Programming ซึ่งถ้าเป็นการเขียนโปรแกรมแบบ Text-base เราจะต้องเขียนโปรแกรมแบบจากบนลงล่าง แล้วเรียกฟังก์ชันไปมา แต่ถ้าเป็นการเขียนโปรแกรมบน Labview ลักษณะแนวคิดของโปรแกรมจะเป็นแบบ Data Flow โดยข้อมูลของโปรแกรมจะไหลตาม wire หรือเส้นทางข้อมูลที่เราทำการเชื่อมต่อกันแต่ละบล๊อก (วันแรก ก็เล่นเอามึนเหมือนกัน ) O_o

แล้วเริ่มต้น เขียนโปรแกรมบน Labview ยังงัยหล่ะ ???

เนื่องจากโปรแกรม Labview เป็นการเขียนโปรแกรมสไตล์ Graphic-base Programming เพราะฉะนั้นการเขียนโปรแกรมส่วนใหญ่เป็นการจัดการด้านกราฟฟิค การโยงข้อมูล การทำหน้าต่าง GUI (Graphic User Interface )  ซะมากว่า โดยเค้าแบ่งการพัฒนาโปรแกรมออกเป็น 2 อย่างก็คือ

  1. Front Control ทำหน้าที่เป็นหน้ากากของโปรแกรมเพื่อติดต่อกับผู้ใช้
  2. Block Diagram เป็นส่วนของการจัดการไหลของข้อมูล (ยากสุดตรงนี้แหละ)

Front Control and Block Diagram of Labview 

ซึ่งรายละเอียดของการเขียนและการพัฒนาโปรแกรมของ Labview ผมจะพยายามรวบรวมเนื้อหาที่เป็นประโยชน์ต่อตัวผมเอง จากในห้องเรียน และจากการค้นคว้าในอินเตอร์เนต และการทดลองทำมาเล่าสู่เพื่อนๆในโอกาสต่อไป

อ่านเพิ่มเติม...

Monday, January 17, 2011

Beginning with PIC เริมต้นที่ไหนดี

พอดี วันนี้ เพื่อนเมล์มาถามว่าถ้าจะเล่น PIC microcontroller จะเริ่มตรงไหนดี ใช้ภาษาอะไรในการคอมไพล์ แล้วใช้บอร์ดรุ่นไหนในการเริ่มต้นดี คุณเชื่อหรือไม่ คำถามแบบนี้ มันสุดจะคลาสสิคจริงๆ คือเป็นคำถามที่ถามกันมาทุกรุ่นทุกสมัยเลยก็ว่าได้ แต่ก็ไม่ได้มีคำตอบที่ชี้ชัดลงไปได้หรอกว่า แบบไหนดีที่สุด เหมาะที่สุด เพราะถ้ามันมีคำตอบที่ดีที่สุดอยู่แล้ว มันจะมีคนมาถามแบบนี้ทำไม ทำไมเราไม่บรรจุลงในหลักสูตรมัธยมให้มันรู้แล้ว รู้รอดไปเลยหล่ะ จะมาให้งงกันอยู่ทำไม จริงไหม

มาเข้าประเด็นกันดีกว่า กับคำถามที่ถามไปข้างต้น ผมว่าเรื่องนี้ ถ้าในมานั่งพูดกันมันก็ยาวไม่ใช่น้อย มันเป็นเรื่องอยู่เหมือนกัน ถึงแม้คำถามจะค่อนข้างสโคปให้แคบแล้วก็ตาม โดยเราจะมุ่งไปที่ PIC ของบริษัท Microchip เท่านั้นก็ตาม แต่คำตอบของปัญหาก็ยังมีมากมายอยู่เหมือนเดิม เอาเป็นว่า เรามาว่ากันทีละขั้นก็แล้วกัน

ต้องทำความเข้าใจก่อนว่า งานที่เราต้องการใช้ไมโครคอลโทรลเลอร์นั้น เป็นงานประเภทไหน เพราะต้องเข้าใจนิดนึงว่า ทางไมโครซิฟเอง เค้าก็ผลิตไมโครคอลโทรลเลอร์ออกมาให้หลากหลายกับงานแต่ละประเภทอยู่แล้ว

ลองคลิกเข้าไปดูที่รูป PIC แต่ละตระกูล มันก็ยังประกอบไปด้วยแต่ละเบอร์ คิดแล้วน่าปวดหัวไหมหล่ะ ถ้าจะถามว่าจะต้องใช้เบอร์ไหนหล่ะ มันก็ต้องถามกลับไปว่า แล้วงานของคุณมันต้องการอะไรมั่งหล่ะ ช่องการแปลงสัญญาณ A/D , จำนวนพอร์ตดิจิตอล , memory หรือว่า ฟังก์ชั่นที่เกี่ยวข้องกับ   DSP อะไรจำพวกนี้ ล้วนเป็นสิ่งที่ต้องเอามาพิจารณาทั้งนั้น

PIC Microcontroller 

แล้วถ้าเราไม่รู้หล่ะ ถ้าเป็นพวกมือใหม่ อยากเอาไปศึกษาหล่ะ ถ้าเป็นมือใหม่จริงๆ ขอแนะนำ PIC ตระกูล 18F ก็แล้วกัน เพราะเบอร์นี้ มันกำลังคาบเกี่ยวกันระหว่าง 8 บิต และ 16 บิต อยู่ สามารถทำอะไรได้หลายอย่าง น่าจะเพียงพอสำหรับการเรียนรู้ได้นานพอสมควร ลองดูจาก Application Note ของทางไมโครซิฟ ว่าเค้าทำไรได้มั่ง

PIC18 Architecture

PIC18 Block Diagram

  • 83 (16-bit wide) powerful C-optimized instruction
  • Up to 2 MB addressable program memory
  • 4K Bytes RAM (max)
  • 32 level hardware stack
  • 1 (8-bit) File Select Register
  • Integrated 8x8 hardware multiply
  • Highest performance 8-bit architecture

ซึ่งในตระกูลของ PIC 18F เองก็ยังมีตั้งมากมายหลายเบอร์ คลิก

แต่ถ้าถามว่าจะเอาเบอร์ไหนมาเล่นก่อน ก็อยากจะบอกว่า เอาเบอร์ที่มีขายในบ้านเราเหอะ อย่าไปเพิ่งไปแอดวานซ์มากนัก เดี๋ยวให้เก่งกว่านี้ก่อน

ที่นี้ ก็มาถึงปัญหาย่อยของปัญหาหลักเรื่องเบอร์ไมโครคอลโทรลเลอร์ ว่าเราจะซื้อแบบบอร์ดทดลองแบบไหนดี  เท่าที่เห็นในบ้านเรา ก็มีให้เลือก สองแบบหลักๆ ก็คือ บอร์ดที่มีแต่ไมโครคอลโทรลเลอร์แล้วก็ช่อง I/O ของไมโครคอลโทรลเลอร์ กับแบบ บอร์ดที่มีทั้ง I/O และวงจรทดลองสำเร็จรูป ที่ต่อไว้ให้อยู่แล้ว เหลือแค่เพียงต่อสายไฟเชื่อมเข้าหากันเท่านั้น

แบบแรก ข้อดี คือว่า ราคาถูกกว่าแบบที่สอง ข้อเสีย คือต้องหาอุปกรณ์ต่อทดลองเอาเอง

บอร์ดไมโครคอลโทรลเลอร์ PIC18F

แบบที่สอง คือ อุปกรณ์ต่อทดลองครบครัน ไม่ต้องไปหาเพิ่ม มีอุปกรณ์ให้ทดลองเท่าที่จำเป็น ถึงจะไม่ครบทุกอย่างก็ตาม เหมาะสำหรับมือใหม่ แต่ข้อเสียก็คือ มันแพง

บอร์ดทดลองไมโครคอลโทรลเลอร์สำเร็จรูป แต่ทั้งคู่ก็มีข้อเสียเหมือนกันอยู่อย่างหนึ่งก็คือ มันไม่สามารถที่จะเปลี่ยนเบอร์ไมโครคอลโทรลเลอร์ได้มากนัก อาจจะได้อยู่เบอร์หรือสองเบอร์ หรืออาจจะเปลี่ยนไม่ได้เลยก็ได้

ถ้าเป็นอย่างงี้ เราจะทำอย่างไร จากประสบการณ์ ผมขอแนะนำ อุปกรณ์ที่เรียกว่าเครื่องโปรแกรมไมโครคอนโทรลเลอร์ตระกูล PIC ของ บริษัท MICROCHIP ซึ่งก็ยังมีหลายตัวอีกนั่นแหละ เอาเป็นว่า ตัวที่ใช้ได้กับ PIC 18F แล้วกัน ของไทยทำก็มีหลายเจ้า จะเป็นแบบทำเอง หรือว่าแบบซื้อเอาก็ได้

ET-PGM PIC USB V2

ซึ่งเจ้าตัว ET-PGM PIC USB V2 ผมก็ซื้อมาเหมือนกัน เพราะขี้เกียจทำเอง หลังจากได้ตัวโปรแกรมไมโครคอลโทรลเลอร์มาแล้ว เราก็สามารถที่จะไปโปรแกรมลงบนคอนโทรลเลอร์เบอร์อะไรก็ได้ ตามที่มันสามารถรองรับได้ โดยต่อไปที่ขาของไมโครคอลโทรลเลอร์ ตามที่ระบุในดาต้าชีท

 

ตัวอย่างการโปรแกรมที่ขาของไมโครคอลโทรลเลอร์ 

ตัวอย่างการโปรแกรมที่ขาของไมโครคอลโทรลเลอร์

ส่วนโปรแกรมที่ใช้เบิร์นไมโครคอลโทรลเลอร์ก็ใช้ PICkit 2 V2.55.01 Install  หรือ
PICkit 2 V2.55.01 Install with .NET Framework
ก็ได้

Pickit 2 Program

ทีนี้ ก็มาว่ากันถึงโปรแกรมที่จะใช้ในการเขียนโค๊ดเพื่อคอมไพล์ให้ได้ hex file เพื่ออัดลงไมโครคอลโทรลเลอร์กันเหอะ ในที่นี้ ขอแนะนำอยู่ สามตัวก็พอ เพราะตัวอื่น ยังไม่เคยลอง

ถ้าเรามีพอจะเข้าใจภาษาซี อยู่แล้ว ขอแนะนำ MPLAB C18 , CCS C Complier แล้วก็ Hi-tech C ถ้าถามว่าตัวไหน ดีกว่ากัน จากที่ฟังผู้รู้มา

เค้าว่ากันว่า CCS C Complier นั้น โค๊ดที่เขียนออกมาแล้วคอมไพล์ จะเล็กที่สุด และมีไลบรารี่ ค่อนข้างเยอะ ทำให้การพัฒนางานได้เร็ว ผู้ใช้ไม่ต้องศึกษามาก ก็สามารถที่จะทำงานออกมาได้แล้ว แต่นั่นก็เป็นข้อเสียให้มือใหม่หลายคนมาแล้ว เพราะจะทำให้ยิ่งไม่เข้าใจ ไปกันใหญ่

สำหรับ MPLAB กับ Hi-Tech C ผมแนะนำ MPLAB C18 ดีกว่า เพราะ ค่ายเดียวกันกับเบอร์ PIC Microcontroller เพราะต่างก็มาจาก MIcrochip เหมือนกัน ย่อมได้เปรียบมากกว่า ไม่ว่าจะเป็น โค๊ดตัวอย่าง หรือการนำไปใช้งาน ตลอดจนเอกสารต่างๆ ของ MPLAB ทำได้ค่อนข้างดีกว่า เยอะกว่า เวลามีปัญหา จะได้ไม่เหงา มีคนคอยปรึกษาได้

จริงๆ เรื่องของไมโครคอลโทรลเลอร์ มันยังมีรายละเอียดปลีกย่อยอีกมากมาย นี่เรายังมาไม่ถึงครึ่งทางของมันเลยนะ ต้องหาความรู้อยู่กันตลอด เพราะเจ้าตัวไมโครคอลโทรลเลอร์เอง ก็ผลิตออกมาเบอร์ใหม่ๆมาเรื่อย

แหล่งความรู้ที่สำคัญที่ดังๆ ของไทยก็มีเยอะ ไม่ว่าจะเป็น Electoday , PANTIP หรือว่า เว็บพี่สันติ ก็มีให้เข้าไปฝากคำถาม หรือข้อสงสัยกันได้ แต่อย่างหนึ่งที่อยากย้ำก็คือ การที่เราต้องมีพื้นฐานมาบ้างสมควร ไม่ใช่ว่าจะให้คนอื่นแสดงให้ดูตั้งแต่ต้นเลย แบบนี้ก็ไม่ไหว เพราะเราเองก็ไม่ได้จ้างเค้ามาเป็นที่ปรึกษา ทุกคนก็มีภาระหน้าที่ด้วยกันทั้งนั้น อย่าเกริยน พี่เค้าขอร้อง

ส่วนบล๊อกที่ผมกำลังพยายามรวบรวมความรู้ ก็คือ 123 Microcontroller ก็พยายามเขียนอยู่ ก็หวังว่าจะมีประโยชน์บ้าง ไม่มากก็น้อย ฝากเนื้อฝากตัวด้วยแล้วกันครับ

อ่านเพิ่มเติม...
 

แจกฟรี พื้นที่ฝากไฟล์ 15 GB

ติดตามข่าวสารผ่าน Twitter

Blog อื่นๆของฉัน

ผู้ติดตาม Blog นี้

เว็บเพื่อนบ้าน