วันศุกร์ที่ 13 พฤศจิกายน พ.ศ. 2558

DIGITAL ELECTRONICS WEEK#12

สิ่งที่ได้เรียนรู้
  • I2C สามารถเชื่อมต่อ Slave ได้เป็นจำนวนมาก ใน BUS เดียวกัน โดยใช้สายเพียงแค่ 2 เส้น คือ
    • SDA = DATA
    • SCL = CLOCK ( โดย Clock ถูกควบคุมด้วย Master )
  • มี Master หลายตัวใน BUS เดียวกันได้
  • ข้อความที่ส่งแบ่งเป็น 2 ชนิดคือ
    • Address frame ส่งเพียงเฟรมเดียวเพื่อระบุ Slave ที่ต้องการคุยด้วย
    • Data frame ส่งได้หลาย frame เพื่อระบุข้อมูลที่ต้องการส่ง
Lab 5 เป็นแลปที่ต้องใช้ IC I2C EEPROM เพื่อเก็บและ อ่านข้อมูล โดยให้สามารถทางานได้ 2 modeคือ mode เกบค่า และ mode อ่านค่า โดยมี Switch 1 ตัวในการเปลี่ยน mode
  • การส่งข้อมูล - รับเป็นจำนวน 7bits จากการอ่านค่าของ Switch และใช้การกด debounce switch สำหรับการส่งข้อมูลแต่ละครั้ง
  • การรับข้อมูลจาก EEPROM - อ่านค่าจาก EEPROM เป็นจำนวน 7 bits แล้วทำการแสดงค่าไปบน LED



  • ปัญหาที่พบจากการทำ LAB
    • ไม่สามารถส่งและอ่านค่าจาก IC EEPROM ได้ เพราะขา SCL และ SDAไม่ได้ต่อ Pull up
    • ตอนแรกพยายามใช้  Handtek ต่อกับโปรแกรม Logic เพื่อศึกษาการส่งและอ่านข้อมูล จาก EEPROM แต่โปรแกรมไม่สามารถ connect กับ Handtek ได้
โหลดโปรแกรม LAB5 คลิกที่นี่

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

DIGITAL ELECTRONICS WEEK#11

สิ่งที่ได้เรียนรู้
  • การรับ-ส่งข้อมูลโดย SPI จะมี Master เพียงตัวเดียวและจะทำหน้าที่ส่ง Clock ลงบนสาย SCK
  • ข้อมูลที่ส่งไปยัง Slave จะส่งบนสาย MOSI ส่วนข้อมูลที่ Slave ส่งกลับมาให้ Master จะถูกส่งบนสาย MISO
*** หมายเหตุ การส่งข้อมูลจาก Slave กลับมาที่ Master ต้องใช้ Clock ด้วย โดย Master ต้องเป็นตัวส่ง ดังนั้น Master ต้องรู้ล่วงหน้าว่า Slave จะคืนค่ามากี่ไบต์เพื่อที่จะสร้าง Clock บนสาย SCK ได้เหมาะสม ***
  • ข้อดีของ SPI
    • เร็วกว่าการส่งแบบ Asynchronous serial
    • สามารถมี Slave ได้หลายตัว
  • ข้อเสียของ SPI
    • ใช้สายสัญญาณเยอะ
    • ต้องรู้จำนวนข้อมูลที่จะรับส่งล่วงหน้า
    • Master จะต้องควบคุมการสื่อสารเองทั้งหมด
Lab 4 เป็นการสร้างคลื่นสัญญาณ Sine Wave ส่งการสื่อสารแบบ SPI โดยผ่าน IC DAC (MCP4922-E/P) โดยกำหนด Amplitude และความถี่เอง

จะได้สมการ y = (sin(i)+1)*(2000)
โดยที่ i จะเพิ่มขึ้น 0.0001 ทั้งๆรอบของการส่งข้อมูล
  • โดยแนวคิดที่ใช้คือ Sine Wave จะเกิดขึ้นได้คือการน้ำค่า Sine ของมุมตั้งแต่ 0-360 องศามาพลอตเป็นกราฟโดยการเปลี่ยนค่ามุมทีละน้อยๆเพื่อที่จะให้กราฟที่ออกมานั้นละเอียดที่สุด
  • ทำการบวกค่า Sine แต่ละค่าด้วย 1 เพราะถ้าไม่บวกด้วย 1 จะทำให้กราฟมองเห็นเฉพาะค่าในฝั่งบวก
  • และทำการใส่ตัวคูณเข้าไปเพื่อทำให้ค่าของ Sine แต่ละค่ามีแอมพลิจูดที่สูงขึ้นทำให้มองเห็นกราฟได้ง่ายขึ้น
  • ปัญหาที่พบจากการทำ LAB
    • มองไม่เห็นค่า Sine ในฝั่งลบ จึงทำการบวกค่า Sine ทุกค่าด้วย 1 เพื่อแก้ปัญหานี้

    • มองไม่เห็นกราฟเนื่องจากไม่ใส่ ตัวคูณเพื่อเพิ่ม Amplitude ของกราฟ
โหลดโปรแกรม LAB4 คลิกที่นี่

วันพุธที่ 4 พฤศจิกายน พ.ศ. 2558

DIGITAL ELECTRONICS WEEK#10

สิ่งที่ได้เรียนรู้
  • Parallel Communication ส่งข้อมูลหลายๆบิตในเวลาเดียวกัน
  • Serial Communication ส่งข้อมูลทีละบิตในหนึ่งช่วงเวลา
  • การส่ง Serial Communication ต้องมีโปรโตคอลที่เหมือนกันจึงจะสื่อการกันรู้เรื่อง คือต้องมี
    • Buad rate
    • Data bits
    • Synchronization bits
    • Paraty bits
  • ที่เหมือนกัน 
Lab 3 เป็นการส่งข้อมูลผ่าน Serial Communication ผ่าน Serial Monitor โดยโจทย์ในสัปดาห์นี้คือการให้ Nucleo สื่อสารกับ computer แล้วทำโปรแกรมออกมาเป็น 2 Menu

  • Menu ที่ 1 กดเพื่อเข้าสู่การทํางาน mode ที่ 1 การสั่งงานไฟวิ่ง LED 8ดวง 
เมื่อเข้าสู่ mode นี้ระบบจะรอรับคําสั่งจากแป้นพิมพ์3 ตัวคือ a,s,d
เมื่อกด a‐‐>ไฟ LED8 ดวงจะทํางานใน pattern โดยจะเป็นชุดไฟกระพริบสลับกัน
เมื่อกด d‐‐>ไฟ LED8ดวงจะทํางานในอีก pattern โดยจะเป็นไฟวิ่งจากขวาไปซ้าย
เมื่อกด s‐‐>ไฟ LED ทั้ง 8ดวงจะหยุดทํางาน และออกจาก Mode 1 กลับสู่ Menu หลักรอรับคําสั่ง ต่อไป 

  • Menuที่ 2 กดเพื่อเข้าสู่การทํางาน mode ที่ 2 อ่านสถานะสวิตซ์ logic input 1 bits 
ใน mode นี้ ระบบจะทําการอ่านสถานะของสวิตซ์ D0 บนบอร์ด NX‐100 และแสดงสถานะบน Serial monitor หากสวิตซ์อยู่ตําแหน่ง OFF จะแสดงเลข 0 หากสวิตซ์อยู่ตําแหน่ง ON จะแสดงเลข 1

  • ปัญหาที่พบจากการทำ LAB
    • การใช้ Switch : Case ทำให้การทำ loop ยากขึ้นในตอนแรกไม่สามารถทำให้ไฟกระพริบต่อเนื่องได้ จึงเปลี่ยนมาใช้เป็น loop while แทน
    • ค่าจาก switch ออกมามั่ว และไฟกระพริบตลอดเวลาเหมือนไฟจะเสีย เนื่องจากลืมต่อ GND ระหว่าง NX-100 และ Nucleo



โหลดโปรแกรม LAB3 คลิกที่นี่

วันพฤหัสบดีที่ 15 ตุลาคม พ.ศ. 2558

DIGITAL ELECTRONICS WEEK#9

สิ่งที่ได้เรียนรู้

Microcontroller : NUCLEO-F411RE
รายละเอียด Port ต่างๆของ NUCLEO-F411RE


GPIO คือ Port สำหรับต่อ Input/Output ของ Microcontroller ซึ่งบอร์ด NUCLEO รับแรงดันได้ 0-3.3 V
  • LAB#1 ออกแบบการทำงาน Controller โดยมี Input อย่างน้อย 3 ปุ่ม แล้วเปลี่ยนการทำงานของ output LED 8 ดวงอย่างน้อย 3 รูปแบบ 
  • รูปแบบการทำงานของ LED 
    • แบบที่ 1 เป็นไฟไหลทีละ 2 ดวงจาก ขวาไปซ้าย 
    • แบบที่ 2 เป็นไฟไหลที่ละ 1 ดวงจากขวาไปซ้าย 
    • แบบที่ 3 เป็นไฟกระพริบ เป็นชุด ชุดละ 4 ดวง กระพริบสลับกันไปมา 
  • ใช้ INPUT 3 ตัวคือ Port D2 , D3 , D4 และ Output 8 ตัวคือ D5-D12



  • ปัญหาที่พบจากการทำ LAB
    • ตอนแรกเมื่อ Input แล้ว Output ไม่ทำงาน เนื่องจากนำ Input ไปเสียบเข้าที่ D0 และ D1 ทำให้วงจรไม่ทำงานเพราะเป็น Port TX/RX
    • ไฟในวงจร NX~100 ติดไม่เต็มที่ และ กระพริบ เนื่องจากยังไม่ได้ต่อ GND ของทั้ง 2 บอร์ดเข้าด้วยกัน
  • โหลดโปรแกรม LAB1 คลิกที่นี่

Analog to Digital Converter (ADC) คือ วงจรแปลงแรงดันแบบ Analog ให้เป็นสัญญาณ Digital โดยจะแบ่งระดับแรงดันให้มีหลายๆระดับลักษณะเป็นขั้นบันใด

โดยถ้าหากขั้นบันไดยิ่งเยอะจะยิ่งทำให้ค่า Error ยิ่งน้อยลง โดยในบอร์ดรุ่นนี้เป็นแบบ 12-bit ADC ที่ Vmax 3.3V

  • LAB#2.1 
    • อ่านค่า input analog จาก VR ตั้งแต่ 0.0–3.3 V เข้าที่ Pin ที่ไม่ใช่ A0
    • แสดงระดับแรงดันด้วย LED 8 ดวงในลักษณะเหมือน VU Meter
  • LAB#2.2
    • อ่านค่าinput analog จาก VR ตั้งแต่ 0.0–3.3 V เข้าที่ Pin ที่ไม่ใช่ A0
    • แสดงค่าแรงดันเป็นตัวเลขออกที่ 7‐segment โดยมีความละเอียดเป็นตัวเลขทศนิยม 1 ตําแหน่ง
  • โดยใช้ Output 8 ตัว คือ D2 - D9 และให้ Input คือ A1
    • ใช้คำส่ง BusOut เพื่อช่วยลดจำนวนการเขียนโปรแกรมเนื่องจากสามารถส่งเป็นค่าเลขฐาน 10 แล้วนำไปแปลงเป็นฐาน 2 ส่งไปยัง Output ที่กำหนดไว้ให้ได้เลย
  • โดยในโปรแกรมของกลุ่มผมได้นำทั้ง 2 LAB มารวมกัน แล้วใช้การเลือก State จาก Switch ของบอร์ด NX~100




    • ปัญหาที่พบจากการทำ LAB
      • เมื่อวัดค่าแรงดันที่ออกจาก VR โดยตรง กับที่โชว์บน 7‐segment ของบอร์ดมีค่าต่างกันเล็กน้อย น่าจะเกิดจากมี Noise ในวงจรที่ต่อ
    • โหลดโปรแกรม LAB2 คลิกที่นี่

    DIGITAL ELECTRONICS WEEK#8

    *** สอบกลางภาค ***

    พี่ช้าง Ayarafun มาใช้ความรู้เกี่ยวกับ Digital และ Microcontroller

    วันอังคารที่ 29 กันยายน พ.ศ. 2558

    DIGITAL ELECTRONICS WEEK#7

    สิ่งที่ได้เรียนรู้
    • การสร้าง State Diagram เพื่อนำไปใช้ในการออกแบบ Sequential Circuits
    ************* วงกลม : State ************* 
    ส่วนบนภายในวงกลม : ชื่อที่อธิบาย State
    ส่วนล่างภายในวงกลม : ระบุ Output ของ State 
    ลูกศร : การ transition จาก State หนึ่งสู่อีก state หนึ่งซึ่งการ transition จะเกิดขึ้นทุกๆ clock
    ตัวเลขบนลูกศร : Logic ของ input ที่ทําให้เกิด transition
    ***************************************
    • การออกแบบ Sequential Circuits โดยใช้ D Type Flip-flops และ JK Flip-flops
              - D Type Flip-flops

    แล้วนำ Da , Db และ Output ใส่ Karnaugh map เพื่อนำไปเขียนแบบวงจร 

              - JK Flip-flops

    แล้วนำ Ja , Ka , Jb , Kb และ Output ใส่ Karnaugh map เพื่อนำไปเขียนแบบวงจร

    • Ex. เมื่อนำผลจาก  Karnaugh map ที่ได้มาเขียนตาราง


    ปัญหาที่พบ ( วิธีแก้ปัญหา )
    • ไม่มีครับ

                

    วันอาทิตย์ที่ 13 กันยายน พ.ศ. 2558

    DIGITAL ELECTRONICS WEEK#6

    สิ่งที่ได้เรียนรู้

    • ความแตกต่างของ Combination Logic กับ Sequential Logic คือ Sequential Logic มี Memory ทำให้ output ขึ้นกับ Input  ปัจจุบัน , Input ก่อนหน้า และ Output ก่อนหน้า
    • Flip-Flop เป็นอุปกรณ์พื้นฐานในการต่อ Sequential Logic
    • SR Flip-flop ทำได้โดยการใช้ NAND Gate 2 channel ต่อกันโดย Output ของทั้ง 2 ตัวจะเป็น Input ของซึ่งกันและกัน ทำให้ได้ผลดังตาราง
     

    *** ถ้า Input เป็น 1 , 1 จะได้ Output เป็น State ก่อนหน้า ***
    • JK Flip-flop  NAND Gate 4 channel ต่อกันดังรูป




    ทำให้ได้ผลตามตารางดังนี้ ( โดยผลลัพธ์จะสนใจ Q ก่อนหน้าด้วย )


    • Asynchronous Counter ใช้ Clock ตัวเดียวร่วมกันทั้งวงจร มีข้อดีคือออกแบบได้ง่าย แต่มีข้อเสียเรื่องความเร็วและ Ripple
    • Synchronous Counter ใช้ Output จาก Flip-flop มาเป็นclock ต่อกันไปเรื่อยๆ
    • สามารถนำ Counter ที่ได้เรียนไปประยุกต์ในการใช้สร้างมอเตอร์แบบ encoder คือสามารถนับรอบการหมุนของมอเตอร์ได้
    • Shift Register เกิดจากการนำ D Type Flip-flop มาต่อเรียงกัน เพื่อใช้ในการส่งข้อมูลในรูปแบบเลขฐาน 2 ซึ่งสามารถส่งได้ทั้งรูปแบบ Serial และ Parallel

    • Class Work เป็นการนำ IC : 74HC166 8-bit parallel-in/serial out shift register มาใช้ส่งข้อมูล โดยแสดงผลโดยใช้ LED

    *** โดยใช้ Clock โดยการใช้ Pulse Generator ของชุดทดลอง ***

    ปัญหาที่พบ ( วิธีแก้ปัญหา )
    • ยังไม่เข้าใจ Concept ของ D Type และ T Type ข้อมูลในสไลด์ไม่มีตัวหนังสือเลย T.T (หาความรู้เพิ่มเติมจาก Internet)