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

สรุปการทำงานทั้งหมด



1.ข้อมูลของบอร์ด P89V51RD2

http://www.keil.com/dd/docs/datashts/philips/p89v51rd2.pdf

2.Sensor Optical Encoder

กลุ่มผมใช้ Sensor ก้ามปู เป็นแบบ Open Collector โดยใช้เฟืองที่มี 30 ฟัน ใน 1 รอบหลักการทำงานเมื่อ Board ส่งไปเลี้ยงไฟที่ Sensor โดย Sensor จะส่งสัญญาน Photo Electric ผ่านขาส่งไปถึงขาที่รับ ถ้าไฟแดงที่ Sensor ติดจะส่งค่าลอจิก 1 ถ้าไฟแดงดับจะส่งค่าลอจิก 0 แต่ค่าลอจิกที่ส่งมา จากแรงที่ส่งมาจะพบแรงดันมีค่าน้อยกว่า 5 V จึงต้องปรับแรงดันให้มีค่าเท่ากับ 5 V เพื่อให้มีค่าเท่ากับตัวแรงดันที่ Board จะรับได้ โดยการต่อตัวต้านทาน R เท่ากับ 10 kΩ ต่อเข้าขา +VCC ของ Board เพื่อเป็นการปรับแรงดัน ให้มีค่าเท่ากับ 5 V การปรับแรงดันนี้เรียกว่า Pull Up


3.โปรแกรมการนับจำนวนสัญญาณPulseและคำนวณค่าความเร็วลมเป็นหน่วยเมตรต่อวินาที(m/s)



















**คลิกที่รูปเพื่อดูรูปใหญ่

















4.วิธีการทำเครื่องวัดความเร็วลม

หลังจากเขียนโปรแกรมให้ Board นับ pulse ได้แล้ว นำเครื่องวัดที่สร้างขึ้นไปวัดความเร็วลมจากช่องแอร์ ในระดับที่ 3 (แรงสุด) ได้ 160 pulse ต่อนาที และนำเครื่องวัดมาตรฐานไปวัดได้ 3.3 m/s และเมื่อหาอัตราส่วนออกมาจะได้ 160/3.3 = 0.020625 แล้วนำค่าที่ได้ไปคูณกับจำนวน pulse ที่เกิดขึ้น จะได้ความเร็วออกมาในหน่วย m/s
**หมายเหตุ ใช้ความเร็วลมระดับที่ 3 เพื่อให้เกิดความแม่นยำที่สุด เพราะถ้าความเร็วลมน้อยจะมีแรงเสียดทานมาก ค่าที่ได้จะไม่แม่นยำ


5.ตารางผลการทดลอง














6.สรุปผลการทดลอง

จากการทดลองจะเห็นได้ว่า ค่าที่ได้จากการทดลองความเร็วลมระดับ 1 เป็น ความเร็วลมน้อยสุด ค่าที่วัดได้จะค่อนข้างคลาดเคลื่อนมาก ความเร็วของลมระดับ 2 ค่าความคลาดเคลื่อน มีค่าน้อยมาก แต่การทดลองในแต่ละครั้งยังมีการแกว่งของค่าอยู่ ความเร็วของลมระดับ 3 จะได้ค่าค่อนข้างแน่นอน และมีการแกว่งของค่าน้อยมาก
ค่าความคลาดเคลื่อนเป็นผลมาจาก
1. ความฝืดของใบพัด
2. อัตราส่วนของโปรแกรมที่เปลี่ยนจากหน่วยจำนวน pulse/นาที ไปเป็นหน่วย m/s เป็นอัตราส่วนการประมาณ
3. จำนวน pulse ใน 1 รอบของเครื่องที่สร้างขึ้น มีค่าน้อยกว่าจำนวน pulse ของเครื่องวัดมาตรฐาน
4. การวัดความเร็วลม ระยะห่างจากเครื่องวัดถึงช่องแอร์อาจมีการคลาดเคลื่อนเล็กน้อย




7.ภาคผนวก















ภาพแสดงใบพัดต่อกับเฟือง
















ภาพของSensor Optical Encoder















ภาพแสดงการต่อ Port Interrupt

















LCD ขนาด16ตัวอักษร 2บรรทัด
















การต่อ Sensor กับ Interface Counter


















เครื่องวัดมาตรฐาน



***หมายเหตุ เครื่องวัดมาตรฐานสามารถดูข้อมูลได้จาก หัวข้อ เสนอผลงานครั้งที่1

วันอาทิตย์ที่ 26 สิงหาคม พ.ศ. 2550

เสนอผลงานครั้งที่4

Capturepluse








































Function


Function “delay.h”
extern void dusec(unsigned char usec);
extern void dmsec(unsigned int msec);

Funtion “lcd.h”
#ifndef _LCD_MODULE_INCLUDE
#define _LCD_MODULE_INCLUDE

#define ON 0x02
#define OFF 0x00
#define BLINK 0x01

extern void ClearLCD(void);
extern void CursorLCD(unsigned char attribute);
extern void OffLCD(void);
extern void OnLCD(void);
extern void InitializeLCD(void);
extern void PrintLCD(char *str, unsigned char index);
extern void PutChar(char ch, unsigned char index);
//extern void LCD_GOTOXY(unsigned char x, unsigned char y);
#endif


Function “i2c.h”
#ifndef _ARE_I2C_LIBRARY_
#define _ARE_I2C_LIBRARY_

extern void I2C_Stop(void);
extern void I2C_Start(void);
extern void I2C_SendByte(unsigned char byteout);
extern unsigned char I2C_ReadAck(void);
extern void I2C_SendAck(unsigned char ack);
extern unsigned char I2C_ReadByte(void);

#endif




______________________________________________



Control board

***หมายเหตุ
1. Control board ตัวแรกที่ใช้ เกิดการขัดข้องกลุ่มผมจึงขอเปลี่ยนมาใช้ P89v51RD2
2. Optical Encoder ที่ใช้ในตอนแรก Voltage ไม่ถึง 5 V จึงขอเปลี่ยนเป็นตัว sensor ก้ามปูแทน
3. โปรแกรมทั้งหมดสามารถใช้งานได้อย่างสมบูรณ์แล้ว ยกเว้น การ function caribrate ที่ยังต้องแก้ไขอีก

4. ข้อมูลที่มีการแก้ไขผมจะรีบรวบรวมส่งให้ภายในอาทิตย์ที่ 2 กันยายน 2550
****กลุ่มผมขอโทษอาจารย์ด้วยครับที่ส่งงานล่าช้า