วันพุธที่ 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
Read More

วันพฤหัสบดีที่ 5 พฤศจิกายน พ.ศ. 2558

SERIAL PERIPHERAL INTERFACE [WEEK 11]

     LAB ของสัปดาห์นี้เป็นการสร้างคลื่นสัญญาณที่ส่งผ่านการสื่อสารแบบ Serial Peripheral Interface (SPI) ครับ ผ่าน IC DAC โดยให้มันปรากฏออกมาในรูปแบบ Sinewave ครับ โดยเราต้องไปศึกษาการเกิด Sinewave ขึ้นมาก่อน จะพบว่าสูตรเป็นตามนี้ครับ

     โดยในโปรแกรมของเราจะเป็นการส่งสัญญาณไปตั้งแต่ 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




Read More

วันอังคารที่ 3 พฤศจิกายน พ.ศ. 2558

SERIAL COMMUNICATION [WEEK 10]

     สำหรับ LAB ของสัปดาห์นี้เราได้เล่นกับการติดต่อสื่อสารของไมโครคอนโทลเลอกับคอมพิวเตอร์ผ่านการเสียบสาย Serial ครับ
     โดยหลักการทำงานของโปรแกรมนี้คือการให้โปรแกรมสามารถรับข้อมูลจาก 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
Read More

วันพฤหัสบดีที่ 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


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 ก็จะละเอียดทศนิยมมากขึ้นครับ


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

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
Read More

วันพุธที่ 23 กันยายน พ.ศ. 2558

DESIGNING SEQUENTIAL LOGIC CIRCUIT [WEEK7]

     สัปดาห์นี้เราได้ออกแบบวงจรแบบ SEQUENTIAN กันครับ อย่างที่ทราบกันในสัปดาห์ที่แล้ว ว่า IC ที่เราใช้หลักๆก็ยังเป็น Flip-Flop ครับ โดยครั้งนี้จะเริ่มมีความซับซ้อนขึ้นครับเป็นการประยุกต์ใช้กับระบบต่างๆได้มากมายมากขึ้นครับ โดยการเรียนของเราจะเริ่มจากการเขียน Truth Table แบบที่เพิ่มช่องของค่าต่างๆที่เกี่ยวข้องกับระบบ Seq. เข้ามาครับโดยขั้นตอน วิธีต่างๆจะเป็นยังไงมาดูกันดีกว่า

State Diagram
     เขียนได้สองแบบครับ เขาเรียก Moore กับ Mealy ครับในที่นี้เราจะใช้ Moore ครับ
อยากแรกเรามาเห็นมันแบบภาษาผู้คนกันก่อนครับ

รูปที่ 1 : ตัวอย่าง State Diagram


     
      เสร็จแล้วเราจะต้องเอาชื่อ State มาเปลี่ยนเป็นเลขฐานครับ

รูปที่ 2 : ตัวอย่างการเปลี่ยนชื่อ State เป็นเลขฐาน

     ถ้ามากกว่า 4 state หละ ก็เพิ่มจำนวน bit ครับ 5555+
     ต่อมาเราก็จะร่างมันใส่ตารางกันครับ

รูปที่ 3 : ตาราง Trute Table ของ State Diagram ที่ได้มา
     โดย 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 ครับมาดูตัวอย่างกันดีกว่า

รูปที่ 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) 

แล้วนี่เป็นวิดีโอที่เราอัดตอนทำเสร็จครับ



























Read More

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

******อธิบายไม่ถูกครับ (T^T) ******

     อีกเรื่องที่คือ Couter ครับ มันคือการเอา Flip-Flop มาต่อเรียงกัน รูปแบบการทำงานจะเป็นการนับจำนวนครั้งที่กดเพื่อให้สิ่งใดสิ่งหนึ่งทำงาน โดยมีการต่อ 2 แบบ ดังนี้ครับ
      จะต่างกันเล็กน้อยคือกับต่อ Ground แบบอนุกรมกันครับ เรียกว่า "Asynchronous Counters"

รูปที่ 1 Asynchronous Counters


********
      กับต่อ Ground รวม เรียกว่า "Synchronous Counters"

รูปที่ 2 Synchronous 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 คือ การรับส่งข้อมูลมาเป็นชุดๆพร้อมกัน
       
Read More