Our Team

My name is Thaniya Wongsuanoom. I'm study at Thammasat University,Faculty of Engineering,Computer Engineering. I'm the part of team Prject LE340 Measurement.

วันศุกร์ที่ 24 สิงหาคม พ.ศ. 2550

สรุปงานใน week ที่ 4 (The Last Week)

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

ตลอดระยะเวลา 4 week ที่ทำงานกันมา ทำบ้าง พักบ้าง อดหลับอดนอนกันบ้าง ก็ผ่านมาได้จนงานเสร็จ ถึงแม้ระหว่างการทำงานจะเหนื่อยและเครียดขนาดไหน พวกเราก็พยายามทำและในที่สุดก็ผ่านช่วงเวลานั้นมาได้

นอกเรื่องไปนิดหน่อย กลับมาสรุปงานดีกว่า

ตอนนี้ทั้งจุดประสงค์การทดลอง ผลการทดลอง และบทวิเคราะห์ ได้ถูกอัพขึ้น Blog เรียบร้อยแล้ว หาอ่านได้ แต่ถ้าหาไม่เจอ แนะนำให้ใช้ "คลังบทความของบล๊อก" ทางด้านขวามือ จะหาอ่านได้อย่างรวดเร็วครับ และเพื่อความสะดวกแก่ผู้ที่ต้องการศึกษาอย่างจริงจัง สำหรับโปรเจคนี้ เราได้อัพโหลดไฟล์ logger.zip ที่รวบรวมเอาโปรแกรมที่พวกเราเขียนขึ้นเพื่อใช้ในงานนี้ไว้ให้แล้วโดยไฟล์ logger.zip จะมีโปรแกรมตัวสำคัญที่ใช้โดยหลักๆ กับบอร์ด AVR คือ write.aws และ read.aws ที่เปิดได้ด้วย AVR Studio เพื่อ build ลงบอร์ดเพื่อเก็บข้อมูลได้เลย
ทั้งนี้ เรายังอัพโหลดไฟล์ Excel ที่รวบรวมเอาข้อมูลทั้งหมดของการทดลองในโปรเจคนี้ไว้ด้วย พร้อมกับกราฟ (ถ้าในกรณีใน Blog เห็นไม่ชัดเจน สามารถดาว์นโหลดไฟล์นี้ไปดูได้)

ท้ายสุดนี้ พวกเราขอขอบคุณ...

- อ.ศุภชัย ที่ให้คำแนะนำในการเขียนโปรแกรมและการทดลอง

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

- เพื่อนๆ ชาว EE & CN เกียร์ 16 ทุกคนที่มาทำงานช่วงปิด Universiade มาอยู่พูดคุย แชร์ความคิด ทำให้ปิดเทอมที่แสนเครียดนี้ ดูสบายๆขึ้นนิดนึง

- คุณพ่อ คุณแม่ ของผมเอง ที่เอื้อเฟื้อสถานที่ในการทำงานช่วงเก็บข้อมูล (เพราะต้องหาที่หกล้มแล้วไม่เจ็บ และต้องมี PC คอยเก็บข้อมูล ซึ่งสะดวกสุดคือบ้านผมเอง)

ปล.บทความนี้อาจจะเขียนไม่เป็นทางการ ขออภัยมา ณ ที่นี้ด้วยครับ

ดาว์นโหลด
1.ไฟล์ Excel : http://www.geocities.com/nongyuna/Fall_Analysis.zip
2.ไฟล์ logger : http://www.geocities.com/nongyuna/Dan/logger.zip

ผลการทดลองและบทวิเคราะห์

ผลการทดลอง
จากการนำเอาบอร์ด AVR ไปติดกับผู้ทำการทดลอง ที่หน้าท้องในลักษณะที่ 3 แกน เป็นดังภาพ

เมื่อนำบอร์ด AVR มาติดกับตัว แกน X จะชี้ไปทางซ้ายมือ แกน Y จะชี้ลงไปยังพื้น และแกน Z จะชี้ไปข้างหลัง

Case : การเดิน
เมื่อทำการติดตั้งบอร์ด AVR พร้อมกับ Build โปรแกรม write.hex ลงบอร์ด เมื่อเริ่มเปิดบอร์ดจะทำการบันทึกค่า voltage 3 แกน ภายในเวลา 30 วินาที ทั้งหมด 750 ครั้ง หรือก็คือภายในเวลา 1 วินาที บอร์ดจะเก็บค่าในแต่ละแกน ทั้งหมด 25 ครั้ง โดยผู้ทดลองได้ทำการเดินไปมาภายในห้อง หยุดเดินบ้าง เดินต่อบ้าง จนครบ 30 วินาที จึงทำการ Build โปรแกรม read.hex ลงบอร์ด เพื่อทำการอ่านค่าใน Dataflash ออกมาทาง Hyper terminal จากนั้น Capture ภาพสัญญาณที่ได้เป็น .txt เพื่อ Import data สู่ Microsoft Excel เพื่อให้ Excel plot กราฟสัญญาณที่ได้มา
กราฟของสัญญาณที่ได้เมื่อทำการเปลี่ยนค่าที่ได้จากบอร์ดเป็น voltage และจาก voltage ที่ได้เป็น g แล้ว การเดินจะได้กราฟในลักษณะดังนี้

จากกราฟจะเห็นได้ว่า แกน Y ซึ่งอยู่ในตำแหน่งพุ่งลงพื้นดิน จะมีค่าความเร่งเท่ากับ 1 g ตลอดเพราะเนื่องจากการเดินปรกตินั่นเป็นการเดินบนพื้นราบทั้ง 3 แกน จึงไม่มีความเปลี่ยนแปลงใดๆ เกิดขึ้น จุดสังเกตสำหรับกรณีเดินปรกติคือ เมื่อเดิน กราฟทั้ง 3 แกนจะมีลักษณะเส้นขึ้น ๆ ลง ๆ แต่จะไม่เปลี่ยนแปลงไปจากค่าเริ่มต้นมากนัก และเมื่อหยุดเดินกราฟทั้ง 3 เส้นจะมีการสั่นไหวที่น้อยมากๆ

Case : การเดินขึ้นบันได
ต่อจากการเดินปรกติเป็นการเดินขึ้นบันไดแทน ทำทุกขั้นตอนแรกเริ่มเหมือนกันกับ case การเดิน เพียงแต่เราจะเดินขึ้นบันไดกันแทน กราฟที่ได้ใน 3 แกนเป็นดังนี้









จากกราฟจะเห็นได้ว่า แกน Y ซึ่งอยู่ในตำแหน่งพุ่งลงพื้นดิน จะมีค่าความเร่งเท่ากับ 1 g ตลอดไม่แตกต่างอะไรกับการเดินแบบปรกติ แต่สิ่งที่จะแยกแยะการเดินขึ้นบันไดออกจากการเดินแบบปรกติคือค่าของ g ที่แกน X และ Z ถ้าสังเกตจากการเดินแบบปรกติค่า g ที่แกน X และ Z จะมีการสั่นไหวในความถี่ช่วงแคบมากนั่นเป็นเพราะช่วงก้าวของการเดินนั่นแคบ สั้น และเร็วกว่าการเดินขึ้นบันไดมาก แต่การเดินขึ้นบันไดช่วงก้าวของการเดินจะค่อนข้างกว้าง และช้ากว่า กราฟที่ออกมาจึงมีช่วงการสั่นไหวที่ค่อนข้างกว้าง

Case : การนั่ง
การนั่งเป็น Case ที่จะแตกต่างโดยสิ้นเชิงกับการเดินและการเดินขึ้นบันได เนื่องจากระหว่างนั่งแทบจะไม่มีการเคลื่อนไหว กราฟที่ได้เป็นดังนี้








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

Case : การนอน
การนอนเป็น case ที่คล้ายกับการนั่ง แต่จะมีข้อแตกต่างตรงที่มีการเปลี่ยนแกนเกิดขึ้นซึ่งสังเกตได้จากกราฟดังนี้




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

Case : การหกล้มแบบหงายหน้า
มาถึง case ที่เป็นกรณีศึกษาหลักของโปรเจคนี้ การหกล้มแบบนี้มีข้อแตกต่างอย่างไรกับ case อื่นๆ อย่างไร สังเกตได้จากกราฟดังนี้







เมื่อเกิดการหกล้มแบบหงายหน้าขึ้น จะสังเกตเห็นได้ง่ายมากจากกราฟความเร่ง 3 แกน เพราะเมื่อเกิดการหกล้มขึ้นสัญญาณของ 3 แกนจะปนกันมั่ว ค่าในแกน Y และ Z จะเกิดการแกว่งจากจุดสูงสุดไปต่ำสุดอย่างรวดเร็วแต่ค่าในแกน X ไม่เปลี่ยนแปลงมากนัก และเมื่อล้มแบบหงายหน้าไปแล้วนั่น จะอยู่ในสภาวะนอนอยู่สักครู่ จึงค่อยๆ ลุกขึ้นยืนตามลำดับ

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




เมื่อเกิดการหกล้มขึ้น ไม่ว่าจะเป็นแบบหงายหน้าหรือหงายหลัง กราฟที่สังเกตได้เหมือนกันคือ สัญญาณที่ปนกันทั้ง 3 แกน แต่ถ้าจะแยกแยะการหกล้มแบบหงายหน้าและหงายหลังออกจากกัน ดูง่ายๆ ได้ที่แกน Z เมื่อหกล้มแบบหงายหลัง แกน Z ที่เคยชี้ไปข้างหลัง จะชี้ขึ้นข้างบนแทน หรือคือทิศที่ตรงกันข้ามกับความเร่ง g ที่มีทิศลงสู่พื้นดิน ทำให้ค่าในแกน Z ลดลงจนถึงจุดที่ต่ำที่สุดอย่างรวดเร็ว และค่าในแกน Y จะลดลงมาอยู่ในช่วงเดียวกับแกน X แล้วเมื่อลุกขึ้นยืน สัญญาณจะกลับมาสู่สภาวะปรกติ แต่ถ้าเป็นการหกล้มแบบหงายหน้า แกน Z จะชี้ลงพื้นแทน ทำให้ค่าในแกน Z เพิ่มขึ้นจนถึงจุดที่สูงสุดอย่างรวดเร็ว (ดูกราฟได้ที่ Case : การหกล้มแบบหงายหน้า)

วันพุธที่ 22 สิงหาคม พ.ศ. 2550

จุดประสงค์การทดลอง

ในที่สุดโปรแกรมที่ใช้สำหรับทำการเก็บค่าข้อมูลความเร่งจากเซนเซอร์วัดความเร่งในแบบ 3 มิติ ก็เสร็จสิ้น อาจจะใช้เวลานานเกินกำหนดไปเล็กน้อย เนื่องจาก เราต้องศึกษาการทำงานของ Dataflash และ Microcontroller อย่างละเอียดถึงระดับ Register แต่เราก็สามารถเขียนโปรแกรมออกมาได้อย่างสมบูรณ์ พร้อมใช้งาน แล้วยังสามารถ Import Data เข้าไปยัง Microsoft Excel เพื่อทำการ Plot กราฟวิเคราะห์ข้อมูลได้อีกด้วย

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

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

วิธีการทดลอง
เราจะแบ่ง case ที่ใช้พิจารณาออกเป็น 6 case คือ
1.การเดินแบบปรกติ
2.การเดินขึ้นบันได
3.การนั่ง
4.การนอน
5.การหกล้มแบบหงายหน้า
6.การหกล้มแบบหงายหลัง
โดย case แต่ละแบบจะถูกนำเอา output voltage จากเซนเซอร์มา plot กราฟใน Excel เพื่อทำการวิเคราะห์ผลและดูความแตกต่างเพื่อที่จะแยกแยะได้ว่าเมื่อกราฟเป็นเช่นนี้จะอยู่ใน case ไหน

วันศุกร์ที่ 17 สิงหาคม พ.ศ. 2550

สรุปงานใน week ที่ 3

โครงสร้างของ Dataflash ในบอร์ด AVR
Dataflash ที่ใช้ในบอร์ด AVR นี้คือรุ่น AT45DB041B มีขนาดของ memory เท่ากับ 4M bits ประกอบด้วยจำนวน page ทั้งหมด 2048 pages แต่ละ page เก็บข้อมูลได้ 264 bytes โดยใน memory ของ Dataflash นี้ยังมี SRAM buffer อยู่ 2 อัน ในแต่ละ buffer เก็บข้อมูลได้ 264 bytes
Dataflash in AVR Butterfly
.
ภาพด้านบนนี้คือ Block Diagram สำหรับ Operation ในการเขียนข้อมูลลง Dataflash ซึ่งจะมีการอ่านค่ามาจาก I/O Interface (ใน Porject นี้คือการอ่านค่า output voltage จาก Sensor) จากนั้นข้อมูลที่อ่านมาได้จะถูกเขียนลง buffer ตัวที่ 1 หรือ 2 ซึ่งมีขนาด 264 bytes แล้วจึงค่อยส่งผ่านข้อมูลใน buffer ไปยัง page ที่อยู่ใน Flash Memory ที่มีขนาด page ละ 264 bytes

ภาพด้านบนนี้คือ Block Diagram สำหรับ Operation ในการอ่านข้อมูลออกจาก Dataflash ซึ่งสามารถทำได้ 2 วิธีคือ
1.ทำการถ่ายโอนข้อมูลจาก page ใน Flash Memory มาไว้ยัง buffer ตัวใดตัวหนึ่งก่อนจากนั้นจึงค่อยอ่านข้อมูลจาก buffer ตัวนั้นออกมายัง I/O Interface (ใน Project นี้คือการอ่านค่าออกมาทาง Serial port)
2.ทำการอ่านข้อมูลจาก page ใน Flash Memory มายัง I/O Interface โดยไม่ต้องผ่าน buffer
.
ดังนั้นในการเขียนโปรแกรมเพื่อให้บอร์ด AVR ของเราวัดความเร่งแล้วเก็บข้อมูลลง Dataflash ได้จะต้องทำการเขียนโปรแกรมออกมา 2 โปรแกรมนั่นคือ
1.โปรแกรมสำหรับการเก็บบันทึกข้อมูลค่า output voltage ที่อ่านได้จาก Sensor ลงใน Dataflash เพียงอย่างเดียว
2.โปรแกรมสำหรับการนำค่าที่บันทึกใน Dataflash ออกมาทาง Serial port
ซึ่งทั้ง 2 โปรแกรมจะเขียนแยกกันเพื่อให้ง่ายต่อการเขียนและใช้งาน
.
อ้างอิงจาก http://www.atmel.com/products/DataFlash/

วันพฤหัสบดีที่ 16 สิงหาคม พ.ศ. 2550

แก้ไขข้อผิดพลาดในบทความ สรุปงานใน week ที่ 2

จากที่ได้นำเสนอไปเมื่อ week ที่แล้วว่า ATmega169 DAC มีขนาด 10 bit สามารถแสดงค่าได้ตั้งแต่ 0 - 1023 (1024 ค่า) นั้น เมื่อได้ทำการทดสอบบอร์ดเพื่อวัดค่าเริ่มต้นและค่าสุดท้าย ตามที่ได้นำเสนอไปนั้นควรจะเป็นไปตามดังนี้
.
ณ ค่า DAC = 0 ---> 0 volts และ
ณ ค่า DAC = 1023 ---> 3.0 volts
.
แต่ในความเป็นจริง บอร์ด AVR ของเราไม่ได้แสดงค่าได้ตามนั้น กล่าวคือ ที่ 0 volts DAC ไม่ได้แสดงค่า 0 และที่ 3.0 volts DAC ไม่ได้แสดงค่า 1023 ดังที่ Data Sheet กล่าวไว้แต่ค่าที่ DAC แสดงนั้นจะขึ้นอยู่กับตัวแปรต่างๆ เช่น ขนาดของไฟเลี้ยงที่จ่ายให้กับบอร์ด AVR, ขนาดของไฟเลี้ยงที่จ่ายไปยังเซนเซอร์ ฯ
ดังนั้น ค่าที่แสดงตามความเป็นจริงที่บอร์ดของกลุ่มเราวัดและแสดงออกมาได้เป็นไปตามดังนี้
.
ณ ค่า DAC = 233 ---> 0 volts และ
ณ ค่า DAC = 1023 ---> 4.03 volts
.
โดยมีไฟเลี้ยงที่เข้าไปยังบอร์ด AVR เท่ากับ 4.26 volts
ไฟเลี้ยงที่เข้าไปยังเซนเซอร์ เท่ากับ 4.04 volts
.
เพราะฉะนั้นการที่ DAC เปลี่ยนค่าในแต่ละ step จะไม่ใช่ 0.003 Volts ตามที่ได้นำเสนอไป แต่จะเป็นค่าเท่ากับ 4.03/(1023-233+1) = 0.0051 volts นั่นเอง
จากภาพ output ในบทความ สรุปงานใน week ที่ 2 คือค่าของ voltage ในสภาวะที่บอร์ดอยู่นิ่งกับพื้นโต๊ะโดยการวางตำแหน่งของบอร์ดเป็นไปดังนี้
แกน +X ชี้ไปทางซ้ายมือ
แกน +Y ชี้ไปทางด้านหน้า
แกน +Z ชี้ลงพื้น
เราลองนำค่า X Y Z 3 input แรก มาเปลี่ยนเป็นค่า voltage ได้ดังนี้
X 659 => (659-233 ) x 0.0051 = 2.1726 volts
Y 639 => (639-233) x 0.0051 = 2.0706 volts
Z 784 => (784-233) x 0.0051 = 2.8101 volts

.
เนื่องจากแกน X และ Y อยู่ในระนาบที่ตั้งฉากกับแรงโน้มถ่วงของโลก (g) ดังนั้นความเร่งในแนวแกน X และ Y จึงมีค่าเท่ากับ 0 g จากค่าที่วัดได้มี voltage ประมาณ 2.1 volts และแกน Z อยู่ในทิศเดียวกับแรงโน้มถ่วงของโลก (g) ดังนั้นความเร่งในแนวแกน Z จึงมีค่าเท่ากับ 1 g จากค่าที่วัดได้มี voltage ประมาณ 2.8 volts

วันศุกร์ที่ 10 สิงหาคม พ.ศ. 2550

สรุปงานใน Week ที่ 2


AVR Butterfly with accelerometor
.
ภาพนี้คือบอร์ด AVR Butterfly ที่เชื่อมต่อกับเซนเซอร์วัดความเร่งแบบ 3 มิติแล้วโดยการเชื่อมต่อผ่าน JTAG Connector ตามขาต่างๆ ที่ได้นำเสนอในบทความก่อนหน้านี้แล้ว ซึ่งจะเป็นบอร์ดที่เราจะใช้วัดความเร่งกัน จากนี้เราจะทำการ Test บอร์ดและเซนเซอร์กัน ซึ่งการ Test เราจะใช้โปรแกรมที่ได้ทำการปรับแก้ไขเพื่อให้รับค่า output voltage จากเซนเซอร์มาแสดงผลผ่านทางจอคอมพิวเตอร์ก่อน ซึ่งการ Test ได้ผลดังนี้

ภาพ output ทางด้านซ้ายมือนี้คือผลของการ Capture ภาพ output จาก HyperTerminal หลังจากการเชื่อมต่อบอร์ด AVR ผ่านทางพาร์ต USART เข้าสู่คอมพิวเตอร์ เราได้ทำการปรับแก้ไขโปรแกรม logger ที่อาจารย์ได้เตรียมไว้ให้ เพื่อให้สามารถรับค่าได้ 3 input จากเซนเซอร์วัดความเร่งในแบบ 3 มิติ โดยให้แสดงชื่อของแกน ต่อด้วยค่า output voltage ในแต่ละแกนที่เซนเซอร์วัดได้ แต่เนื่องจาก ATmega169 DAC มีขนาด 10 bit จึงสามารถแสดงค่าได้ตั้งแต่ 0 - 1023 (1024 ค่า) ดังนั้นเราจึงต้องเปลี่ยนค่านี้เป็น voltage เสียก่อนจึงจะนำมาวิเคราะห์ได้ โดยอ้างอิงจาก Data sheet ของตัวบอร์ด AVR ค่า maximum voltage ที่ DAC แสดงได้คือ 3.0 volts และเราสามารถแสดงค่าได้ถึง 10-bit เพราะฉะนั้น ในแต่ละ step ที่ DAC เปลี่ยนค่าจะเท่ากับ 3.0/1024 ซึ่งมีค่าประมาณ 0.003 volts
.
กล่าวคือ ค่าที่ถูกแสดงออกมาทางจอคอมพิวเตอร์ ต้องทำการคูณด้วย 0.003 ก่อนจึงจะเป็นค่า output voltage ที่นำมาใช้วิเคราะห์ได้
.
จาก output นี้ คือค่าของ voltage ในสภาวะที่บอร์ดอยู่นิ่งกับพื้นโต๊ะโดยการวางตำแหน่งของบอร์ดเป็นไปดังนี้
แกน +X ชี้ไปทางซ้ายมือ
แกน +Y ชี้ไปทางด้านหน้า
แกน +Z ชี้ลงพื้น
เราลองนำค่า X Y Z 3 input แรก มาเปลี่ยนเป็นค่า voltage ได้ดังนี้
X 659 => 659 x 0.003 = 1.977 volts
Y 639 => 639 x 0.003 = 1.917 volts
Z 784 => 784 x 0.003 = 2.352 volts
.
จะสังเกตเห็นได้ว่า ค่า output ในแต่ละแกนที่ได้ในแต่ช่วงเวลา (โปรแกรมได้ดีเลย์ให้แสดงผลค่า output voltage รอบละ 1000 ms) มีค่าใกล้เคียงกันมากๆ นั้นก็เพราะตัวบอร์ดได้ถูกวางอยู่เฉยๆกับพื้นโต๊ะ
.
ในสัปดาห์หน้า เราจะทำการแก้ไขโปรแกรมให้สามารถบันทึกค่า output voltage เหล่านี้ลงในหน่วยความจำของบอร์ด AVR หรือ Dataflash รวมทั้งแก้ไขโปรแกรมในส่วนอื่นๆ เพื่อให้ตัวโปรแกรมออกมาสมบูรณ์ที่สุด

วันพฤหัสบดีที่ 9 สิงหาคม พ.ศ. 2550

JTAG Connector

JTAG Connector ส่วนสำคัญที่สุดของบอร์ด AVR เพราะเราต้องใช้ส่วนนี้เป็นส่วนหลัก รองลงมาจากส่วน USART ที่ใช้เชื่อมต่อบอร์ดกับ PC และ +3V/GND ที่ใช้สำหรับจ่ายไฟเลี้ยงให้แก่บอร์ด AVR หัวใจหลักของ Project นี้
JTAG Connector ในแบบ Schematic
จากภาพ ADC4 - 7 คือขาที่ใช้สำหรับเป็น input เข้าบอร์ดทั้งหมด 4 input ซึ่งจากเซนเซอร์วัดความเร่งในแบบ 3 มิตินั้นจะมี output ทั้งหมด 3 output voltage ซึ่งก็คือ output voltage ใน 3 แกนนั่นเอง
เราจะใช้ขาต่างๆในส่วนของ JTAG ดังนี้
ADC4 - output voltage ในแนวแกน X
ADC5 - output voltage ในแนวแกน Y
ADC6 - output voltage ในแนวแกน Z
ส่วนขา VCC และ GND จะใช้เป็นขาที่จ่ายไฟเลี้ยงให้แก่เซนเซอร์นั่นเอง ซึ่งในส่วนของ VCC เราได้ทำการ jump ขานี้ออกมาเพื่อต่อกับขา SLP ของเซนเซอร์เพื่อให้เซนเซอร์ทำงาน
เท่านี้บอร์ดของเราก็ได้ทำการเชื่อมต่อกับเซนเซอร์อย่างสมบูรณ์พร้อมที่จะใช้ในการทดลองแล้ว ต่อจากนี้ไปจะเริ่มเข้าสู่การศึกษาการเขียนโปรแกรมลงบอร์ด AVR ...

วันเสาร์ที่ 4 สิงหาคม พ.ศ. 2550

สรุปงานใน Week ที่ 1

ภาพที่ 1.1 บอร์ด AVR Butterfly
ภาพที่ 1.2 เซนเซอร์วัดความเร่งในแบบ 3 มิติ
ภาพที่ 1.3 โครงร่างบอร์ดที่มีส่วนประกอบเป็นอุปกรณ์ดังนี้

1. บอร์ด AVR Butterfly
2. รางถ่าน
3. เซนเซอร์วัดความเร่งในแบบ 3 มิติ

โดยโครงร่างบอร์ดนี้ยังไม่สมบูรณ์แบบ เนื่องจากต้องทำการต่อสาย output จากเซนเซอร์วัดความเร่ง ซึ่งสามารถวัดความเร่งได้ 3 แกน (X Y Z) ซึ่งมีทั้งหมด 3 output เข้าไปยังบอร์ด AVR รวมทั้งจ่ายไฟเลี้ยงให้แก่เซนเซอร์ด้วย โดยคาดว่าจะเสร็จเป็นบอร์ดสมบูรณ์ได้ภายใน week หน้า
เพื่อให้ได้ทราบว่า week นี้พวกเราศึกษาอะไรเกี่ยวกับส่วนประกอบในบอร์ดนี้ จึงขออธิบายส่วนประกอบต่างๆ ในบอร์ดนี้พอสังเขป

1.บอร์ด AVR Butterfly มีส่วนประกอบบนบอร์ดดังนี้
- Joy Stick ใช้ควบคุมและสั่งการโหมดต่างๆของบอร์ด AVR
- Light Sensor เซนเซอร์ที่มีมากับบอร์ด AVR ใช้สำหรับวัดความเข้มแสง (สำหรับการทดลองนี้ เราจะไม่ได้ใช้งาน Light Sensor)
- ADC ใช้อ่านค่า Voltage ได้ตั้งแต่ 0 ถึง 5 V (ขาบน + ขาล่าง -)
- USART ใช้เชื่อมต่อกับคอมพิวเตอร์เพื่อ Download โปรแกรมลงบอร์ดผ่านพอร์ต RS-232
- USI ใช้สำหรับการเชื่อมต่อแบบ USI Interface
- PORTB/PORTD ใช้สำหรับการโปรแกรมบอร์ดแบบ High Voltage Parallel Programming ซึ่ง ISP และ JTAG ไม่สามารถใช้งานได้
- ISP หรือ In-system programming ใช้สำหรับการโปรแกรมบอร์ดแบบ 6-wire cable
- JTAG นอกเหนือจากหน้าที่หลักในการเป็น JTAG Connector แล้ว JTAG ยังสามารถทำหน้าที่เป็น ACD input channel ได้ถึง 4 input (JTAG Connetor นี้จะเป็นส่วนที่จะนำเอา output จากเซนเซอร์วัดความเร่งเพื่อบรรทึกใส่ DataFlash ของบอร์ด AVR)
- +3V/GND ใช้จ่ายไฟเลี้ยงให้แก่บอร์ด AVR ซึ่งตัวบอร์ดต้องการไฟเลี้ยง 3 V (ใช้ขา +3V/GND ดังภาพที่1.3)
อ้างอิงจาก http://www.atmel.com/products/AVR/butterfly
.
2.เซนเซอร์วัดความเร่งในแบบ 3 มิติ มีส่วนประกอบดังนี้
- VCC/GND ใช้จ่ายไฟเลี้ยงให้แก่ตัวเซนเซอร์ ซึ่งตัวเซนเซอร์ต้องการไฟเลี้ยงในช่วง 2.2 - 3.6 V
- X/Y/Z output Voltage ตามแนวแกน X Y และ Z ซึ่งจะนำค่า Voltage นี้มาวิเคราะห์ค่าความเร่งที่เกิดขึ้น
- GS1/GS2 Logic input สำหรับเลือก g - Range ดังนี้
GS1=0 / GS2=0 : g-Range=1.5g และ sensitivity=800mV/g
GS1=0 / GS2=1 : g-Range=2g และ sensitivity=600mV/g
GS1=1 / GS2=0 : g-Range=4g และ sensitivity=300mV/g
GS1=1 / GS2=1 : g-Range=6g และ sensitivity=200mV/g
- SLP หรือ Sleep Mode ใช้สำหรับ set ให้บอร์ดอยู่ใน mode ที่ GS1 และ GS2=0 ซึ่งเป็น mode ที่ใช้พลังงานน้อยที่สุด
.
ค่า Maximum Rating สำหรับเซนเซอร์วัดความเร่งตัวนี้ มีดังนี้
1. Maximun Acceleration ในทุกแกน (gmax) เท่ากับ +/- 2000 g
2. Supply Voltage (VDD) เท่ากับ -0.3 ถึง +3.6 V
3. Drop Test (Ddrop) เท่ากับ 1.8 m
4. Storage Temperature Range (Tstg) เท่ากับ -40 ถึง +125 องศาเซลเซียส
อ้างอิงจาก http://www.sparkfun.com/

วันศุกร์ที่ 3 สิงหาคม พ.ศ. 2550

ทดสอบการโพสข้อความลง Blogger

สวัสดีครับ ยินดีต้อนรับเข้าสู่ Blogger เฉพาะกิจสำหรับส่ง Project รายวิชา LE340 Measurement
สมาชิกในทีม มีดังนี้


1.นายอนุกูล สู้กวาง 4810520041 (Benz)
2.นายทวีชัย กุลวงศ์ 4810610479 (Big)
3.นายธนิยะ วงษ์เสือนุ่ม 4810611691 (Noth)

กลุ่มของพวกเราทำ Project เรื่อง Fall Experiment (วัดความเร่ง วิเคราะห์ และเก็บข้อมูลของการตก)
โดยใช้บอร์ด AVR Butterfly พร้อมทั้ง Sensor วัดความเร่ง Accelormeter
โดยพวกเราได้แบ่งการทำงานของเป็น 3 ช่วง คือ
ช่วงที่ 1 : ศึกษาการทำงานและการใช้งาน บอร์ด AVR Butterfly ระยะเวลา 1 week
ช่วงที่ 2 : ตั้งสมมติฐาน จุดประสงค์ วิธีการทดลอง รวมทั้งเขียนโปรแกรมในการโปรแกรมบอร์ด
AVR Butterfly ระยะเวลา 2 week
ช่วงที่ 3 : ทำการทดลอง เก็บข้อมูล และสรุปผล ระยะเวลา 1 week
รวมทั้งสิ้นระยะการทำการงานทั้งหมด 4 week
(กำหนดการทั้งหมดเป็นเพียงระยะเวลาโดยคร่าวๆ อาจจะช้าหรือเร็วกว่านั้นก็ได้ แต่จะไม่เกิน 4 week)

Note : ถ้าอาจารย์ได้รับ mail แจ้ง URL แล้วขอความกรุณาโพสข้อความตอบรับไว้ที่ Blogger ด้วยเพื่อพวกผมจะได้ทราบว่า อาจารย์รับทราบ URL แล้วครับ ขอบคุณครับ