Tuesday, August 24, 2021
Saturday, December 24, 2011
LabVIEW Interface for Arduino
ช่วงนี้ ก็เป็นช่วงเด็กทำโปรเจคกัน เราก็มีโปรเจคที่ต้องทำเหมือนกัน ก็เพิ่งจะผ่านการพรีเซ้นต์ หัวข้อโปรเจคผ่านไป ก็สบายใจได้หน่อยนึง ที่เหลือก็ทำโปรเจคให้มันสำเร็จก็แล้วกัน
วันนี พอดีเพื่อนมาหาที่บ้าน มาปรึกษากันเรื่องโปรเจคของมัน ประมาณว่า ต้องการทำให้บอร์ด Arduino Freeduino ติดต่อกับ Labview เพื่อที่เราจะได้เอา NI Labview สร้างเป็นหน้ากาก GUI เพราะเห็นว่า เคยเรียนการใช้ NI LABVIEW มาแล้ว ก็ไม่น่าจะยากมาก ลองๆค้นหาข้อมูลในอินเตอร์เนต ก็เจอ ที่น่าสนใจดู ลิ้งค์ อืมน่าสนแหะ ลองติดตั้งดูสักหน่อยสิ บอร์ด Arduino เราก็มีแล้ว
- อันดับแรก ก็ต้องมี NI LABVIEW เวอร์ชั่น 2009 ขึ้นไป เค้าแนะนำว่า งั้นนะ แต่ที่ผมทดลองใช้อยู่เป็น เวอร์ชั่น NI LABVIEW 2011
- บอร์ด Arduino สักบอร์หนึ่ง ตระกูลไหนก็ได้ แล้วก็พวกอุปกรณ์อิเล็กทรอนิกส์ สักหน่อย
- Arduino IDE แน่นอนหล่ะ มีบอร์ดแล้วไม่มีโปรแกรม ก็ชักจะยังงัยๆ อยู่
หวังว่า เพื่อนๆ มีทั้งสามอย่าง และติดตั้งเรียบร้อยแล้วนะ ต่อจากนี้ไป ก็เป็นการทำให้ Labview สามารถมองเห็น Serial Comport แล้วก็ทำให้ทั้งสองอย่าง Interface กันได้ ก็ทำตามขั้นตอนกันเลยครับ
- ติดตั้ง NI-VISA Drivers เพื่อทำให้ NI LABVIEW มองเห็น Serial Port กันก่อน
- ติดตั้ง VI Package Manager ตัวนี้ จะเป็นตัวสร้าง แชร์ และค้นหา LabVIEW add-ons และ toolkits จาก LabVIEW Tools Network ในที่นี้ เราจะเอามาไว้สำหรับค้นหา และติดตั้ง
- เมื่อติดตั้ง VI Package Manager เสร็จแล้ว ที่หน้าต่างโปรแกรม ให้เราค้นหา Tool kit ที่ชื่อ Labview Interface for Arduino ตามรูป เลยครับ
- รีสตาร์ทเครื่องสักครั้ง เพื่อความเป็นสิริมงคล
- เปิดไฟล์โปรเจคของ Arduino (ในที่นี้ บอร์ด Arduino ของเราควรจะเชื่อมต่อ กับคอมพิวเตอร์เรียบร้อยแล้ว) ซึ่งจะอยู่ใน Folder C:\Program Files\National Instruments\LabVIEW 2011\vi.lib\LabVIEW Interface for Arduino\Firmware\LVIFA_Base ชือไฟล์ LVIFA_Base.pde
- ทำการ Complie ซึ่งน่าจะผ่าน แล้วก็ให้อัพโหลดเข้าไปที่ตัวบอร์ด Arduino ถ้าจำไม่ได้ ให้ดูวิธีการจากโพสเก่าๆ ของผมครับ คลิก
- เปิดโปรแกรม Labview แล้วเปิดไฟล์ทดสอบ โหลดจาก ที่นี่ จากนั้นก็รีนโปรแกรม เลยครับ
- ลองปรับค่า แล้วดูผล
ถ้าอยากทราบว่า สองอันนี้ มันทำงานได้งัย ลองเข้าไปแกะโค๊ดของ Arduino แล้วก็ลองใช้ โปรแกรม Serial Port Monitor นั้งจับข้อมูลที่วิ่งบน Serial Port ดูครับ
Thursday, October 14, 2010
Hot-Cool Stage by Peltier
เสร็จไปอีกหนึ่งผลงานกับแท่น ร้อน-เย็น ( Hot-Cool Stage) ไม่รู้ว่าจะตั้งชื่อว่าอะไร เอาเป็นว่าเจ้าแท่นนี้ มีหน้าที่ทำร้อน หรือทำเย็นก็ได้ ตามที่เราต้องการ (แต่ผมจำกัดอุณหภูมิไว้ที่ 0 – 75 องศาเซลเซียส)
ใจจริงอยากทำต่อ พัฒนาให้มันดีกว่านี้ แต่ว่าโปรเจคนี้ทำมานานแล้ว ก็เลยต้องจบมันเอาไว้ตรงนี้ก่อน ถ้ามีเวลาจะเอามันมาพัฒนาต่อสักหน่อย มีหลายอย่างที่ยังคาใจอยู่
ซึ่งอุปกรณ์ที่ใช้ทำร้อน หรือเย็นที่ต้องการนั้น เราใช้ ThermalElectric หรือที่เราเรียกว่า Peltier นั่นแหละเป็นพระเอกในการทำร้อน-เย็น การใช้งานของมันง่ายมากๆ เพียงแค่คุณจ่ายไฟกระแสตรงให้มัน จะทำให้ด้านหนึ่งของ Peltier ร้อน และด้านตรงข้ามจะเย็น ในทำนองเดียวกัน หากคุณกลับขั้วไฟจากที่ต่อในครั้งแรก คุณจะพบว่าด้านที่เคยเย็นจะร้อน และด้านที่เคยร้อนจะเย็น เห็นไหมหล่ะ ใช้งานง่ายจะตาย
แต่ที่ยากของมันก็คือ การระบายความร้อนของมันต่างหาก เพราะถ้าในขณะที่เราต้องการความเย็นจากด้านที่เย็น จนถึงขนาดเป็นน้ำแข็งเกาะแล้วหล่ะก็ คุณจะต้องระบายความร้อนด้านที่ร้อนของมันให้ได้เร็วที่สุด ไม่งั้น Peltier พังแน่นอน (พังมาหลายอันแล้ว T_T )
อุปกรณ์หลักๆ ของงานนี้ก็คือ
- Peltier TEC1-12710 จำนวน 2 แผ่น ตัวผลิตความร้อน ความเย็น
- Corsair Hydro Series H50 2 เครื่อง ตัวระบายความร้อนชั้นยอด
- บอร์ดไมโครคอนโทรลเลอร์ PIC16F877 เป็นตัวควบคุม
- บอร์ด H-Bridge เอาไว้กลับทิศทางกระแสไฟฟ้า
- Switching Power supply จ่ายกระแสไม่ต่ำกว่า 15 แอมป์
ผลการทดสอบ สามารถทำความร้อนได้เกือบร้อยองศา แต่ผมว่า อย่าดีกว่า เพราะกาวที่ใช้ยึดของผมมันละลายเลย ก็เลยต้องเขียนโค๊ดดักไว้ ให้ไม่เกิน 75 องศา ส่วนโหมดทำความเย็น สามารถทำให้น้ำแข็งเกาะแท่นอลูมีเนียมได้สบายๆ ดูคลิปวีดีโอสาธิตการทำงานก็แล้วกันครับ
Saturday, September 25, 2010
AVR+VB.NET+WEB จาก Hardware สู่ WEB
หายไปนานสำหรับ บทความนี้ พอดีช่วงนี้ยุ่งสุดๆ ทั้งสอบ ทั้งงาน ทั้งโปรเจค โอ้ยเยอะ เอาเป็นว่ายุ่งหล่ะกัน แต่ก็อยากเอามาแชร์ๆ กันมั่ง
พอดีมีโอกาสได้ทดลองเขียนโปรแกรมด้วย VB.NET express รับค่าจาก AVR ซึ่งคอยเช็คว่ามีวัตถุมาบัง sensor หรือยัง แล้ววัตถุออกไปตอนไหน จากนั้นก็จะเก็บค่าไว้ใน memory ของ AVR จากนั้น ก็รอให้ โปรแกรม Counter v1.0 มารับค่าไป เพื่อนำค่าที่ได้ไปบันทึกลงดาต้าเบส MySQL นั่นคืองานในส่วนของ VB.net กับ AVR ซึ่งจะทำงานแบบนี้ไปเรื่อยๆ
ในส่วนของ WEB PAGE จะใช้ PHP + SAJAX เพือทำการดึงข้อมูลจากดาต้าเบส MySQL แล้วทำการส่งออกทางหน้าเว็บบราวเซอร์ ในส่วนนี้ เราจำเป็นต้องพึ่งพา SAJAX เพื่อทำให้หน้าเว็บแสดงผลแทบจะ Realtime ซึ่งตรงนี้ เราสามารถปรับแต่งค่าได้ ว่าจะให้หน้าเว็บ refresh ถี่ขนาดไหน
นี่ก็เป็นคอนเซ็บต์คร่าวๆนะครับ พอดี หน้าเว็บผมยังแต่ไม่เสร็จ อาจจะดูแล้วลูกทุ่งไปหน่อย เพราะอยากทดลองก่อนว่าระบบสามารถทำงานได้ไหม ส่วนความสวยงานค่อยแต่งทีหลังก็ได้
Friday, January 15, 2010
Balancing One-Wheeled Scooter ล้อเดียว ซิ่งๆ กันไปเลย
จริงๆเป็นโปรเจคที่มีมานานแล้วแหละ แต่ที่เอามาให้ดูคิดว่ามันยังน่าสนใจอยู่ โดยเฉพาะใครที่คิดจะทำหุ่นยนต์ที่เดินได้ แม้แต่จะเคลื่อนไหวด้วยล้อเพียงล้อเดียว สิ่งหนึ่งที่ขาดไม่ได้เลย คือเรื่องของการทรงตัว โปรเจค Balancing One-Wheel Scooter ก็เป็นตัวอย่างหนึ่งที่น่าสนใจไม่น้อย ด้วยชิ้นส่วนและการทำงานที่ไม่ซับซ้อนมากนัก และยังทำให้เราเพลิดเพลินได้อีกด้วย
เจ้า scooter ล้อเดียวนี้ เล่นเหมือนคล้ายๆ snow board นั่นแหละ (แต่ผมไม่เคยเล่นหรอก) อาศัยการถ่ายเทน้ำหนักของผู้เล่นไปข้างหน้าหรือไปข้างหลัง ก็จะทำให้ sensor balancing ส่งสัญญาณไปสั่งให้มอเตอร์หนุนไปข้างหน้าหรือข้างหลังเพื่อให้เกิดผลให้เจ้า scooter นี้รักษาตำแหน่งที่จะไม่ทำให้มันเอียงเลยจุดที่จะทำให้มันล้ม
ภาพโดยรวมของเจ้า scooter ล้อเดียวนี้ ประกอบไปด้วย
แบตเตอรี่แบบแห้ง DCมอเตอร์ สายพาน และชุดควบคุมมอเตอร์ซึ่งมีชุด balancing sensor ประกอบอยู่ด้วย
แบตเตอรี่
ใช้แบตเตอรี่ขนาด 12 V 12Ah เป็นแบตเตอรี่แบบตะกั่วกรดแบบแห้ง จำนวน 2 ก้อนแล้วนำมาต่ออนุกรมกันเพื่อทำให้เกิดแรงดันไฟฟ้าขนาด 24 V เพื่อนำไปใช้เป็นแหล่งพลังงานของ DC มอเตอร์
DC Motor
ใช้ DC motor ขนาดแรงดัน 24V 400 watt เพื่อใช้ในการฉุดสายพานเพื่อหมุนล้อที่ติดอยู่กับเฟือง มอเตอร์นี้ไม่ควรจะกินกระแสไฟฟ้าเกิน 21 A
OSMC - High Current Motor Driver Driver OSMC - High Current Motor
ในการควบคุมทิศทางการหมุนของมอเตอร์ ก็ใช้วงจร H-Bridge เพื่อขับให้มอเตอร์ scooter ซึ่งเป็นวงจรที่นิยมในการขับมอเตอร์มาก ทำงานได้ไว และมีประสิทธิภาพ
Controller
ไมโครคอนโทรลเลอร์ที่ใช้ในการควบคุมการทำงานทั้งหมดของ scooter ล้อเดียวนี้ ก็คือ ไมโครคอลโทรลเลอร์จากค่าย Microchip คือเจ้า PIC16F878 ทำงานที่ความถี่ 20MHz โดยทำหน้าที่ประมวลผลสัญาณที่ส่งมาจาก ADXRS300 Rate Gyro ซึ่งเป็นเซ็นเซอร์วัดอัตราการโน้มเอียง มีการตอบสนองดีต่อความถี่สูง ส่งสัญญาณออกเป็น อะนาลอก สามารถตอบสนองอัตราเร็วได้ถึง 300 องศาต่อวินาที เมื่ออินทิเกรตสัญญาณจะได้สัญญาณบอกตำแหน่ง
และเจ้าตัวเซ็นเซอร์อีกตัวหนึ่งที่ขาดไม่ได้ ก็คือ ADXL202 คือ ไอซีที่พัฒนาบนพื้นฐานของเทคโนโลยีที่ชื่อว่า MEMS® สามารถวัดค่าความเร่งแบบเต็มค่าสเกลในช่วง -2g ถึง +2g และมีความไวหรือ Sensitivity 12.5% ต่อ g สามารถวัดค่าได้ทั้งความสั่นสะเทือน(dynamic หรือ vibration ) และ วัดค่าความโน้มถ่วง(static acceleration หรือ gravity )โดยทำการป้อนกลับแบบ PID ไปที่ตัวไมโครคอลโทรลเลอร์ด้วยความถี่ 100 Hz เพื่อไม่ให้เจ้า scooter เอียงไปข้างหน้าหรือข้างหลังมากไปจนล้ม โดยการส่งควบคุม PWM เพื่อป้อนให้กับมอเตอร์เพื่อให้มอเตอร์หมุนเพื่อต่อต้านการเอียงที่มากเกินไป
Chassis ตัวโครงรถ
ในโครงงานนี้ เค้าทำขึ้นมาเองโดยใช้เหล็กแผ่น 100mm x 3mm แล้วพับขึ้นรูป แต่ทั้งนี้ทางเจ้าของโปรเจคเค้าไม่ได้ให้แบบพิมพ์เขียวไว้ อาจจะต้องออกแบบขึ้นมาเอง
Drive Belt สายพานขับเคลื่อน
ใช้เฟืองทดขนาด 4.28:1 จำนวน 14 ฟัน เพื่อทำเป็นมูเล่ย์ โดยสายพาน และ pulleys ถูกจัดจำหน่ายโดย Wyko
ก็หวังคงจะมีประโยชน์บ้างสำหรับใครที่คิดจะเอาไปทำเป็นโปรจคจบนะครับ ถ้ามีโอกาสผมคงหาตัวอย่างโปรเจคมาเขียนลงในบล๊อกให้เพื่อนๆได้อ่านอีกแน่ๆ สุดท้ายได้เอาคลิปวีดีโอการทำงานของ Balancing One-Wheeled Scooter มาให้ดูกันครับ

