Week 9 - GPIO & ADC

by 4:59 AM 0 ความคิดเห็น


ออกแบบการทำงานและพัฒนา Controller
โดยการรับ Input แบบ Switch จำนวน 3 ตัว
และทำให้เกิดความแตกต่างในการทำงานของ LED จำนวน  ดวง
ในลักษณะที่แตกต่างกันอย่างน้อย 3 รูปแบบ

หลักการทำงาน


แบ่งออกเป็น 3 ส่วน ได้แก่

1. ส่วนรับค่ารูปแบบ

ในการรับค่ารูปแบบจะใช้ Input แบบ BusIn ( อ่าน Busln เพิ่มเติม )
โดยจะใช้ Switch ทั้งหมด 3 ตัว ในการรับค่ารูปแบบ


2. ส่วนตรวจสอบรูปแบบ

เมื่อรับค่ารูปแบบมาแล้ว  ก็จะนำค่ามาตรวจสอบว่าตรงกับเงื่อนไขใด
และให้แสดงผลตามเงื่อนไขนั้น  ดังนี้
เงื่อนไขที่ 1 : 001
D2 = 0, D1 = 0, D0 = 1  >> แสดงผลรูปแบบที่ 1
เงื่อนไขที่ 2 : 010
D2 = 0, D1 = 1, D0 = 0  >> แสดงผลรูปแบบที่ 2
เงื่อนไขที่ 3 : 100
D2 = 1, D1 = 0, D0 = 0  >> แสดงผลรูปแบบที่ 3
อื่นๆ
>> แสดงผลรูปแบบที่ 4

3. ส่วนแสดงผล

การแสดงผลจะแสดงผลด้วย LED 8 ดวง
โดยมีรูปแบบการแสดงผลที่แตกต่างกัน 4 รูปแบบ ดังนี้

รูปแบบที่ 1


รูปแบบที่ 2


รูปแบบที่ 3


รูปแบบที่ 4

LED ดับหมด

VDO แสดงการทำงาน



เมื่อเลื่อน Switch D0 ขึ้นตัวเดียว  ค่า Input เป็น 001 ตรงกับเงื่อนไขที่ 1
LED จึงแสดงผลในรูปแบบที่ 1
เมื่อเลื่อน Switch D1 ขึ้นตัวเดียว  ค่า Input เป็น 010 ตรงกับเงื่อนไขที่ 2
LED จึงแสดงผลในรูปแบบที่ 2
เมื่อเลื่อน Switch D2 ขึ้นตัวเดียว  ค่า Input เป็น 100 ตรงกับเงื่อนไขที่ 3
LED จึงแสดงผลในรูปแบบที่ 3






อ่านค่า Input  Analog จาก VR  ตั้งแต่ 0.0 – 3.3 V  เข้าที่ Pin ที่ไม่ใช่ A0
แสดงระดับแรงดันด้วย LED  8 ดวง  ในลักษณะเหมือน VU Meter

หลักการทำงาน


แบ่งออกเป็น 3 ส่วน ได้แก่

1. ส่วนรับค่าแรงดัน

Nucleo รับค่าแรงดันแบบ Input Analog ตั้งแต่ 0.0 - 3.3 V 
จาก VR  ด้วย Pin A1

2. ส่วนอ่านค่าและคำนวณหาช่วงระดับแรงดัน

Nucleo อ่านค่าที่รับเข้ามาจาก A1  โดยค่าที่อ่านได้จะอยู่ในช่วง 0.0 - 1.0 แทน
เช่น มีแรงดันเข้ามา 1.65 V ค่าที่อ่านได้จะเป็น 0.5  เป็นต้น
จากนั้นนำค่าที่อ่านได้ไปคำนวณหาว่าค่านั้นอยู่ในช่วงระดับแรงดันใดตั้งแต่ 0 – 8
โดยคำนวณจากสมการ  “ ระดับแรงดัน(จำนวนเต็ม) = ค่าที่อ่านได้ x 9 ”
เช่น  0.5 x 9 = 4.5  ไม่เอาทศนิยม  ดังนั้น ระดับแรงดันคือ 4  เป็นต้น

3. ส่วนแสดงผล 

การแสดงผลระดับแรงดันจะแสดงผลแบบ VU Meter ด้วย LED 8 ดวง
โดยระดับ 0 คือ ไม่มี LED ติดเลย  ระดับ 1 คือ LED ดวงแรกติด
จนไปถึงระดับ 8 คือ LED ทุกดวงติด
ซึ่ง Output จะใช้เป็นแบบ BusOut (อ่าน BusOut เพิ่มเติม)
ดังนั้นจึงต้องนำค่าระดับแรงดัน (0 - 8) ไปแปลงต่อ
เพื่อให้ได้ค่าที่จะนำมาใช้แสดงผล LED ดังนี้

ตัวอย่าง VU Meter
ระดับ 0 : 00000000 >> 0         =  20- 1
ระดับ 1 : 00000001 >> 1         =  21- 1
ระดับ 2 : 00000011 >> 3         =  22- 1
ระดับ 3 : 00000111 >> 7         =  23- 1
ระดับ 4 : 00001111 >> 15       =  24- 1
ระดับ 5 : 00011111 >> 31       =  25- 1
ระดับ 6 : 00111111 >> 63       =  26- 1
ระดับ 7 : 01111111 >> 127     =  27- 1
                              ระดับ 8 : 11111111 >> 255     =  28- 1

จึงได้สมการหาค่าที่ใช้แสดงผล คือ
“ ค่าแสดงผล = (2 ^ ระดับแรงดัน) -1 ”


VDO แสดงการทำงาน



เมื่อหมุน VR ทิศตามเข็มนาฬิกา  จะทำให้แรงดันเพิ่มขึ้น  ส่งผลให้ระดับแรงดันเพิ่มขึ้นด้วย
LED จึงติดเพิ่มขึ้นเรื่อยๆตามระดับแรง
เมื่อหมุน VR ทิศทวนเข็มนาฬิกา  จะทำให้แรงดันลดลง  ส่งผลให้ระดับแรงดันลดลงด้วย
LED จึงดับลงเรื่อยๆตามระดับแรง






อ่านค่า Input Analog จาก VR  ตั้งแต่ 0.0 – 3.3 V  เข้าที่ Pin ที่ไม่ใช่ A0
แสดงค่าแรงดันเป็นตัวเลขออกที่ 7-Segment
โดยมีความละเอียดเป็นตัวเลขทศนิยม 1 ตำแหน่ง

หลักการทำงาน


แบ่งออกเป็น 3 ส่วน ได้แก่

1. ส่วนรับค่าแรงดัน

Nucleo รับค่าแรงดันแบบ Input Analog ตั้งแต่ 0.0 - 3.3 V 
จาก VR  ด้วย Pin A1

2. ส่วนอ่านค่าและคำนวณหาช่วงระดับแรงดัน

Nucleo อ่านค่าที่รับเข้ามาจาก A1  โดยค่าที่อ่านได้จะอยู่ในช่วง 0.0 - 1.0 แทน
เช่น มีแรงดันเข้ามา 3.3 V ค่าที่อ่านได้จะเป็น 1.0  เป็นต้น
จากนั้นนำค่าที่อ่านได้ไปคูณด้วย 3.3 เพื่อให้ได้ตัวเลขที่ตรงกับค่าแรงดันที่รับเข้ามา

3. ส่วนแสดงผล

การแสดงผลค่าแรงดันจะแสดงเป็นตัวเลขด้วย 7-Segment
โดยจะแสดงตัวเลขตามค่าแรงดันที่รับเข้ามา และมีค่าความละเอียดคือทศนิยม 1 ตำแหน่ง
ซึ่ง Output จะใช้เป็นแบบ BusOut ( อ่าน BusOut เพิ่มเติม )
และจะแบ่ง Pin ออกเป็น 2 ชุด  คือ
1. ชุด Pin หลักหน่วย  แสดงเลข 0 - 3
2. ชุด Pin หลักทศนิยม  แสดงเลข 0-9
ดังนั้นจึงต้องนำค่าแรงดัน (0.0 - 3.3) มาแยกออกเป็น 2 ส่วน เช่น
2.5 นำมาแยกได้ 2 กับ 5
ให้ 2 แสดงผลด้วยชุด Pin หลักหน่วย
และแล้วให้ 5 แสดงผลด้วยชุด Pin หลักทศนิยม

VDO แสดงการทำงาน



เมื่อหมุน VR ทิศตามเข็มนาฬิกา  จะทำให้แรงดันเพิ่มขึ้น  ตัวเลขที่ 7Segment
ก็จะเพิ่มขึ้นตามค่าแรงดันที่เพิ่มขึ้น  โดยค่าสูงสุดคือ 3.3
เมื่อหมุน VR ทิศทวนเข็มนาฬิกา  จะทำให้แรงดันลดลง  ตัวเลขที่ 7Segment
ก็จะลดลงตามค่าแรงดันที่ลดลง  โดยค่าต่ำสุดคือ 0.0







Authors

Pakorn Vongseela 57340500045
Phirawat Rattanachot 57340500053

0 ความคิดเห็น:

Post a Comment