วันพุธที่ 9 ธันวาคม พ.ศ. 2558
วันพุธที่ 11 พฤศจิกายน พ.ศ. 2558
I2C &EEPROM [Week 12]
LAB สัปดาห์นี้เป็นการใช้งาน IC 24LC64 ครับ เป็นการเก็บข้อมูล EEPROM ลงใน IC แล้วเอามาแสดงผลบน LED ครับตัวโปรแกรมจะมี mode ให้เลือกว่าจะเขียนข้อมูลไปเก็บใน EEPROM หรือ เอาข้อมูลออกมาครับ ซึ่งเมื่อเข้าไปใน mode ใดๆ จะต้องทำการกดสวิตขาขึ้นหรือลง1ครั้งเพื่อควบคุมให้ mode นั้นๆทำงานต่อ
อุปกรณ์ที่ใช้ - IC 24LC64
- Nucleo
- บอร์ด NX 100
- ตัวต้านทาน 470K 2 ตัว >> เอามาต่อ Pull Down ที่ขา SDA กับ SCL ของ IC
วิดีโอประกอบ
Download Program >> Lab Week 12
อุปกรณ์ที่ใช้ - IC 24LC64
- Nucleo
- บอร์ด NX 100
- ตัวต้านทาน 470K 2 ตัว >> เอามาต่อ Pull Down ที่ขา SDA กับ SCL ของ IC
วิดีโอประกอบ
Download Program >> Lab Week 12
วันพฤหัสบดีที่ 5 พฤศจิกายน พ.ศ. 2558
SERIAL PERIPHERAL INTERFACE [WEEK 11]
LAB ของสัปดาห์นี้เป็นการสร้างคลื่นสัญญาณที่ส่งผ่านการสื่อสารแบบ Serial Peripheral Interface (SPI) ครับ ผ่าน IC DAC โดยให้มันปรากฏออกมาในรูปแบบ Sinewave ครับ โดยเราต้องไปศึกษาการเกิด Sinewave ขึ้นมาก่อน จะพบว่าสูตรเป็นตามนี้ครับ
- Breadboard
- IC MCP4922
โดยในโปรแกรมของเราจะเป็นการส่งสัญญาณไปตั้งแต่ 0-360 องศาแล้ววนมาเริ่มใหม่ โดยทุกๆค่าจะเปลี่ยนไปตามองศาที่เพิ่มขึ้นจาก 0 ถึง 360 ครับ
y = 1000 * [sin(zeta*PI/180)+1]
***โดยค่าความถี่ถือเป็นค่าคงที่ที่สามารถควบคุมได้จากคำสั่งในโปรแกรม และกำหนดให้ Amplitude = 1000
ข้างบนนี้คือสูตรที่เราใส่ในโปรแกรมให้ส่งสัญญาณออกมาเป็นค่าที่เกิดกราฟรูป Sinewave โดยจะสังเกตเห็นว่าต้อง +1 ด้วยเพราะสัญญาณที่ส่งได้จะต้องมีค่าเป็น + ครับ แต่ตามหลักแล้ว Sinewave ที่เริ่มจาก 0 จะเคลื่อนที่สลับ + กับ - ถ้าตามวงกลม 1 หน่วยค่า y จะอยู่ที่ [-1,1] ซึ่งเรา + 1 เข้าไปขอบเขตจึงมาอยู่ที่ [0,2] แทนครับ
ส่วนประกอบที่ใช้ - Nucleo
- Hantek & Software- Breadboard
- IC MCP4922
วิดีโอประกอบ
Download Programe >> Sine Wave
วันอังคารที่ 3 พฤศจิกายน พ.ศ. 2558
SERIAL COMMUNICATION [WEEK 10]
สำหรับ LAB ของสัปดาห์นี้เราได้เล่นกับการติดต่อสื่อสารของไมโครคอนโทลเลอกับคอมพิวเตอร์ผ่านการเสียบสาย Serial ครับ
โดยหลักการทำงานของโปรแกรมนี้คือการให้โปรแกรมสามารถรับข้อมูลจาก Serial Monitor ไปประมวลผลให้เกิดการทำงานที่หลากหลายได้ครับ โดยโปรแกรมจะสามารถเข้าใจข้อมูลที่ได้รับไป แล้วสามารถแสดงผลบน LED เป็นแพลตฟอร์มที่ต่างกัน และสามารถส่งกลับข้อมูลที่อ่านได้ครับ
ส่วนประกอบ - Nucleo
- NX-100 Plus
- สาย USB
- Serial Monitor On Computer
VDO แสดงการทำงาน
Download Program >> Lab_Week10
โดยหลักการทำงานของโปรแกรมนี้คือการให้โปรแกรมสามารถรับข้อมูลจาก Serial Monitor ไปประมวลผลให้เกิดการทำงานที่หลากหลายได้ครับ โดยโปรแกรมจะสามารถเข้าใจข้อมูลที่ได้รับไป แล้วสามารถแสดงผลบน LED เป็นแพลตฟอร์มที่ต่างกัน และสามารถส่งกลับข้อมูลที่อ่านได้ครับ
ส่วนประกอบ - Nucleo
- NX-100 Plus
- สาย USB
- Serial Monitor On Computer
VDO แสดงการทำงาน
Nucleo จะส่ง Menu ขึ้นไปบน Serial Monitor โดยที่ Menu จะมีให้เลือก Mode การทำงานอยู่ 2 Mode ดังนี้
Mode ที่ 1จะเป็นการสั่งงานไฟ LED ให้ทำงานตาม Pattern ต่างๆ ซึ่งใน Mode ที่ 1 จะมีการแสดงตัวเลือก 3 ตัวเลือก คือ a d และ s โดยที่ a คือ สั่งให้แสดง LED ตาม Pattern ที่ 1, b คือ สั่งให้แสดง LED ตาม Pattern ที่ 2 และ s คือ สั่งให้ LED หยุดทำงานและออกจาก Mode ที่ 1 กลับสู่ Menu หลัก
Mode ที่ 2 จะเป็นการเช็คสถานะของสวิตซ์ D1 บนบอร์ด NX-100 และแสดงผลขึ้นบน Serial Monitor ถ้าสวิตซ์อยู่ตำแหน่ง Off จะแสดงสถานะ 0 ถ้าสวิตซ์อยู่ตำแหน่ง On จะแสดงสถานะ 1
Download Program >> Lab_Week10
วันพฤหัสบดีที่ 15 ตุลาคม พ.ศ. 2558
GPIO & ADC [WEEK9]
สัปดาห์ที่ 9 แล้วสำหรับเนื้อหาในวิชาดิจิตอลเริ่มสร้างความแปลกใจให้เรื่อยๆครับ ในวีคนี้เราได้เริ่มเข้าสู่ Micro Controller กันแล้ว ในสัปดาห์แรกของเรื่องนี้เราก็ได้รู้จักถึงความเป็น Micro Controller และความแตกต่างของ Micro Controller กับ Micro Processer รวมถึงส่วนประกอบต่างๆของ Micro Controller ครับ แล้วก็ชนิดของ Input&Output 2 อย่างของ Micro Controller ของเรา คือ GPIO กับ ADC ของเรานี่เอง
Micro Controller : NUCLEO-F411RE |
Micro Controller
Controller คือ ตัวประมวลผลกลางระหว่าง Sensor กับ Actuator
ดังนั้น Micro Controller คือ หน่วยประมวลผลกลางขนาดเล็กพกพาสะดวกนั่นเอง 55+
ความแตกต่างระหว่าง Micro Controller กับ Micro Processor
Micro Controller จะมีทั้งหน่วยประมวลผล หน่วยความจำ และ I/O port อยู่ในตัวเดียวกัน ส่วน Micro Processor จะมีเพียงหน่วยประมวลผลเพียงอย่างเดียว
General Purpose Input&Output (GPIO)
GPIO คือ Port ทั่วไปสำหรับรับส่งสัญญาน Input - Output ซึ่งบน Nucleo F411RE ที่เราใช้งานกันอยู่นั้นจะมี GPIO อยู่ 50 port สามารถรับแรงดันได้ตั้งแต่ 0 - 3.3 V (แรงดันสูงสุดที่รับได้ คือ 5 V)
Lab : ออกแบบการทำงาน Controller โดยมี Input อย่างน้อย 3 ปุ่ม แล้วเปลี่ยนการทำงานของ output LED 8 ดวงอย่างน้อย 3 รูปแบบ
รับสัญญาน Input จาก Switch 3 ตัว ที่ Pin 10 - 12 แล้วนำมาแสดงผล Output 4 รูปแบบ ผ่าน LED 8 ดวงที่ Pin D2 - D9
Download Progarm >> Lab
รับสัญญาน Input จาก Switch 3 ตัว ที่ Pin 10 - 12 แล้วนำมาแสดงผล Output 4 รูปแบบ ผ่าน LED 8 ดวงที่ Pin D2 - D9
Download Progarm >> Lab
Analog to Digital Converter (ADC)
เนื่องจากสัญญาณที่ใช้ในการประมวลผลของบอร์ดเป็น ดิจิตอล เราจึงต้องมีบางสิ่งบางอย่างที่จะนำมาแปลงค่าต่างๆที่เป็น Analog ไม่ว่าจะเป็นเซนเซอร์ส่วนมากล้วนจะวัดออกมาได้หลายๆค่าอยู่แล้วใช่ไหมครับ เราจึงต้องใช้ ADC นี่เอง มันจะมีหน้าที่ในการแปลงสัญญาณ ที่มีหลายๆค่าให้เป็นค่า Digital ย่อยๆที่อยู่ในช่วงของ 0 ถึง 1 ครับ เรามาดูตัวอย่างการแบ่งสัญญาณตามรูปครับ
ในแต่ละช่วงนี่จะมีค่าเปลี่ยนเป็น Digital แบบรอบละ 0.714 V โดยช่วงของค่าใน Analog จะถูกจัดอยู่ในระดับบเดียวกันทำให้เกิดสิ่งที่เรียกว่า Quantisation Error ครับมีค่าบวกลบเป็นช่วงนั้นๆ หาร2 คือ 0.714/2 = บวกลบ(0.357) โดยประมาณนั่นเอง
ซึ่งความถี่ของขั้นบันได Digital ยิ่งถี่มากเท่าไหร่ก็จะได้ค่า Error ที่ลดลง ความละเอียดก็จะสูงขึ้น พอมาแปลงเป็นค่า 0 ถึง 1 ก็จะละเอียดทศนิยมมากขึ้นครับ
ซึ่งความถี่ของขั้นบันได Digital ยิ่งถี่มากเท่าไหร่ก็จะได้ค่า Error ที่ลดลง ความละเอียดก็จะสูงขึ้น พอมาแปลงเป็นค่า 0 ถึง 1 ก็จะละเอียดทศนิยมมากขึ้นครับ
Lab1 : ออกแบบการทำงาน Controller โดยมี Input เป็น Analog แล้วใช้ ADC แปลงค่ามาแสดงผลเป็น LED 8 ดวงตามระดับความดันไฟฟ้าที่ใส่เข้าไป
มี Input เป็นสัญญาน Analog จาก VR ตั้งแต่ 0 - 3.3 V เข้าที่ Pin A5 แล้วแสดงผล Output เป็น LED 8 ดวง ที่ Pin D2 - D9
Download Progarm >> Lab1
Download Progarm >> Lab1
Lab2 : ออกแบบการทำงาน Controller โดยมี Input เป็น Analog แล้วใช้ ADC แปลงค่ามาแสดงผลเป็น 7-Segments
มี Input เป็นสัญญาน Analog จาก VR ตั้งแต่ 0 - 3.3 V เข้าที่ Pin A5 แล้วแสดงผล Output เป็น 7 Segment โดยใช้ Pin D2 - D8
Download Progarm >> Lab2
มี Input เป็นสัญญาน Analog จาก VR ตั้งแต่ 0 - 3.3 V เข้าที่ Pin A5 แล้วแสดงผล Output เป็น 7 Segment โดยใช้ Pin D2 - D8
Download Progarm >> Lab2
วันพุธที่ 23 กันยายน พ.ศ. 2558
DESIGNING SEQUENTIAL LOGIC CIRCUIT [WEEK7]
สัปดาห์นี้เราได้ออกแบบวงจรแบบ SEQUENTIAN กันครับ อย่างที่ทราบกันในสัปดาห์ที่แล้ว ว่า IC ที่เราใช้หลักๆก็ยังเป็น Flip-Flop ครับ โดยครั้งนี้จะเริ่มมีความซับซ้อนขึ้นครับเป็นการประยุกต์ใช้กับระบบต่างๆได้มากมายมากขึ้นครับ โดยการเรียนของเราจะเริ่มจากการเขียน Truth Table แบบที่เพิ่มช่องของค่าต่างๆที่เกี่ยวข้องกับระบบ Seq. เข้ามาครับโดยขั้นตอน วิธีต่างๆจะเป็นยังไงมาดูกันดีกว่า
State Diagram
เขียนได้สองแบบครับ เขาเรียก Moore กับ Mealy ครับในที่นี้เราจะใช้ Moore ครับ
อยากแรกเรามาเห็นมันแบบภาษาผู้คนกันก่อนครับ
เสร็จแล้วเราจะต้องเอาชื่อ State มาเปลี่ยนเป็นเลขฐานครับ
ถ้ามากกว่า 4 state หละ ก็เพิ่มจำนวน bit ครับ 5555+
ต่อมาเราก็จะร่างมันใส่ตารางกันครับ
โดย Current State ให้ใส่เลขของชื่อ State ที่เราเปลี่ยนมันครับ เขียนอย่างละสองบรรทัด เพราะ Input เราจะมี 2 ขั้นครับคือ 1 และ 0 นั่นเอง และช่อง Next Stage เราก็ดูว่าถ้าใส่ Input ตรงตามช่องนั้นๆจะไปออกเป็น State ชื่ออะไรครับ ส่วนช่อง Output คือค่าแสดงผลเมื่อตกอยู่ใน State นั้นๆนั่นเอง
หลังจากเราร่างผังนี้กันมาแล้วใช่ไหมครับ เราก็เอาไปเพิ่ม Flip-Flop ครับ โดยในที่นี้พวกเรามี IC แค่ตัว JK-Flip Flop กับ D-Type Flip-Flop ครับ โดยจำนวนช่องที่ออกจะขึ้นอยู่กับ Bit ของ State ครับ ในตารางเรามี 2 bit ใช่ไหมครับดังนั้นถ้าเพิ่มแบบ D-Type ซึ่งมี Input แค่ 1 ตัวก็จะเพิ่มเข้าไป 2bit * 1input นั่นคือ 2 ตัวครับ ในที่นี้ผมให้เป็น Da และ Db ซึ่งตัวเลขช่องจะตรงกับใน Next State ครับมาดูตัวอย่างกันดีกว่า
แต่ถ้าเป็นแบบ JK ที่มีตั้ง 2 input ใช่ไหมครับ เราก็จะต้องเพิ่มเข้าไป 2bit * 2input ครับ รวมแล้ว 4 ช่องแหนะ แล้วเลขที่ใส่ในช่องจะขึ้นอยู่กับช่อง A กับ Anext จะเป็นรูปแบบไหน ดูตัวอย่างเลยครับ
หลังจากนี้จะมีการเอาค่า ทั้ง Output และ Flip Flop Inputs ไปทำการเขียนวงจรโดยใช้เนื้อหาของการทำสมการบูลีน หรือ คานูลแมพกันครับ จะได้สมการมาให้เราเขียนผังวงจรมาต่อกัน ^^ เราจึงเอาสิ่งที่เราทำกันหลังจบ Class มาให้ดูกัน มันคือวงจรที่มี Input มาควบคุมการนับเลขขึ้นลงครับโดยมี Output 2 ฺBit ด้วยกันครับ มาดูวงจรที่เราได้จากการทำตามกระบวนการข้างบนกันครับ
แล้วนี่เป็นวิดีโอที่เราอัดตอนทำเสร็จครับ
State Diagram
เขียนได้สองแบบครับ เขาเรียก Moore กับ Mealy ครับในที่นี้เราจะใช้ Moore ครับ
อยากแรกเรามาเห็นมันแบบภาษาผู้คนกันก่อนครับ
รูปที่ 1 : ตัวอย่าง State Diagram |
เสร็จแล้วเราจะต้องเอาชื่อ State มาเปลี่ยนเป็นเลขฐานครับ
รูปที่ 2 : ตัวอย่างการเปลี่ยนชื่อ State เป็นเลขฐาน |
ถ้ามากกว่า 4 state หละ ก็เพิ่มจำนวน bit ครับ 5555+
ต่อมาเราก็จะร่างมันใส่ตารางกันครับ
รูปที่ 3 : ตาราง Trute Table ของ State Diagram ที่ได้มา |
หลังจากเราร่างผังนี้กันมาแล้วใช่ไหมครับ เราก็เอาไปเพิ่ม Flip-Flop ครับ โดยในที่นี้พวกเรามี IC แค่ตัว JK-Flip Flop กับ D-Type Flip-Flop ครับ โดยจำนวนช่องที่ออกจะขึ้นอยู่กับ Bit ของ State ครับ ในตารางเรามี 2 bit ใช่ไหมครับดังนั้นถ้าเพิ่มแบบ D-Type ซึ่งมี Input แค่ 1 ตัวก็จะเพิ่มเข้าไป 2bit * 1input นั่นคือ 2 ตัวครับ ในที่นี้ผมให้เป็น Da และ Db ซึ่งตัวเลขช่องจะตรงกับใน Next State ครับมาดูตัวอย่างกันดีกว่า
รูปที่ 4 : ตารางที่เพิ่ม D-Type Flip Flop เข้ามา |
แต่ถ้าเป็นแบบ JK ที่มีตั้ง 2 input ใช่ไหมครับ เราก็จะต้องเพิ่มเข้าไป 2bit * 2input ครับ รวมแล้ว 4 ช่องแหนะ แล้วเลขที่ใส่ในช่องจะขึ้นอยู่กับช่อง A กับ Anext จะเป็นรูปแบบไหน ดูตัวอย่างเลยครับ
รูปที่ 5 : การเลือกข้อมูลใส่ช่อง J K และตัวอย่างตารางที่เพิ่ม JK Flip Flop เข้ามา |
หลังจากนี้จะมีการเอาค่า ทั้ง Output และ Flip Flop Inputs ไปทำการเขียนวงจรโดยใช้เนื้อหาของการทำสมการบูลีน หรือ คานูลแมพกันครับ จะได้สมการมาให้เราเขียนผังวงจรมาต่อกัน ^^ เราจึงเอาสิ่งที่เราทำกันหลังจบ Class มาให้ดูกัน มันคือวงจรที่มี Input มาควบคุมการนับเลขขึ้นลงครับโดยมี Output 2 ฺBit ด้วยกันครับ มาดูวงจรที่เราได้จากการทำตามกระบวนการข้างบนกันครับ
รูปที่ 6 : ผังวงจรดิจิตอลแบบ Seq. logic นับเลขขึ้น-ลง โดยใช้ D-Type Flip-Flop (Class Work) |
แล้วนี่เป็นวิดีโอที่เราอัดตอนทำเสร็จครับ
SEQUENTIAL CIRCUITS [WEEK6]
อยากแรกเรามารู้จักกับ Combination logic และ Sequential logic
Combination logic output จะขึ้นอยู่กับ input ในขณะนั้น โดยมีอุปกรณ์พื้นฐาน คือ Logic Gate
Sequential logic output จะขึ้นอยู่กับ input ขณะนั้น, input ก่อนหน้า และ output ก่อนหน้า โดยมีอุปกรณ์พื้นฐาน คือ Flip-Flop
ซึ่งใน week นี้เราได้เรียน IC ตัวหนึ่งที่มี Logic แบบ Sequential ครับ
อุปกรณ์ในวีคนี้คือ "Flip-Flop" ครับ เป็นอุปกรณ์พื้นฐานที่ทำงานเป็นลำกับคืออาจจะมีการนำเอาผลเข้ามาวนประมวลใหม่อีกรอบซึ่งต่างจากโลจิกเกตที่ผ่านๆมา มีการแสดงค่าเป็น 2 เอ้าพุดที่แตกต่างกันคนละขั้วครับ ซึ่งมี 4 ประเภทครับ คือ
1. SR Flip-Flop
2. JK Flip-Flop
3. D Type Flip-Flop
4. T Type Flip-Flop
Combination logic output จะขึ้นอยู่กับ input ในขณะนั้น โดยมีอุปกรณ์พื้นฐาน คือ Logic Gate
Sequential logic output จะขึ้นอยู่กับ input ขณะนั้น, input ก่อนหน้า และ output ก่อนหน้า โดยมีอุปกรณ์พื้นฐาน คือ Flip-Flop
ซึ่งใน week นี้เราได้เรียน IC ตัวหนึ่งที่มี Logic แบบ Sequential ครับ
อุปกรณ์ในวีคนี้คือ "Flip-Flop" ครับ เป็นอุปกรณ์พื้นฐานที่ทำงานเป็นลำกับคืออาจจะมีการนำเอาผลเข้ามาวนประมวลใหม่อีกรอบซึ่งต่างจากโลจิกเกตที่ผ่านๆมา มีการแสดงค่าเป็น 2 เอ้าพุดที่แตกต่างกันคนละขั้วครับ ซึ่งมี 4 ประเภทครับ คือ
1. SR Flip-Flop
2. JK Flip-Flop
3. D Type Flip-Flop
4. T Type Flip-Flop
******อธิบายไม่ถูกครับ (T^T) ******
อีกเรื่องที่คือ Couter ครับ มันคือการเอา Flip-Flop มาต่อเรียงกัน รูปแบบการทำงานจะเป็นการนับจำนวนครั้งที่กดเพื่อให้สิ่งใดสิ่งหนึ่งทำงาน โดยมีการต่อ 2 แบบ ดังนี้ครับ
จะต่างกันเล็กน้อยคือกับต่อ Ground แบบอนุกรมกันครับ เรียกว่า "Asynchronous Counters"
รูปที่ 1 Asynchronous Counters |
********
**********
และเรื่องสุดท้ายคือ การนำ Flip-Flop เหมือนเดิมมาทำ Shifted Register ครับคือ เป็นการจำสัญญาณแบบหนึ่งมาออกอีกแบบหนึ่งครับซึ่งเราจะพบว่ามี 4 แบบครับ
1. Serail-in to Parallel-out [SIPO]
2. Serail-in to Serail-out [SISO]
3. Parallel-in to Parallel-out [PIPO]
4. Parallel-in to Serail-out [PISO]
โดย Serail คือ การรับส่งข้อมูลเป็นอนุกรมมาทีละตัวต่อๆกัน
และ Parallel คือ การรับส่งข้อมูลมาเป็นชุดๆพร้อมกัน
สมัครสมาชิก:
บทความ (Atom)