04-224-203

ไมโครคอนโทรลเลอร์

การทดลอง

แผนกอิเล็กทรอนิกส์

การทดลอง #5 ดิจิตอลสตอเรจออสซิลโลสโคป

mcu_lab5.html


จุดประสงค์ และแนะนำการทดลอง

ในการทดลองนี้มีจุดประสงค์เพื่อ การทดลองนี้กำหนดเมื่อวันที่............................
ส่งวันสุดท้ายภายใน 3 สัปดาห์

การทดลองนี้ให้น้ำหนัก 15% ลักษณะงาน จะเป็นการใช้งานไมโครคอนโทรลเลอร์ เพื่อตรวจวัดรูปคลื่น ของสัญญาณ โดยสัญญาณจะถูกเปลี่ยนจากแรงดัน เป็นพัลส์ที่มีความถี่คงที่ แต่มีความกว้างของพัลส์ตามค่าของแรงดัน ด้วยวงจร PWM ไมโครคอนโทรลเลอร์จะวัดความกว้าง ของพัลส์โดยใช้ Timer/Counter แล้วส่งค่าที่ได้ไปให้ไมโครคอมพิวเตอร์ทางพอร์ตอนุกรม เพื่อแสดงรูปคลื่นบนจอภาพ โดยมีโปรแกรมที่เขียนด้วยภาษา C ทำงานอยู่ เพื่อคอยรับค่า จากไมโครคอนโทรลเลอร์ วงจรทริกเกอร์เพื่อการล็อครูปคลื่นให้นิ่ง จะใช้อนาลอกคอมพาราเตอร์ภายในตัวไมโครคอนโทรลเลอร์ตรวจสอบแรงดันอินพุต เทียบกับค่า trigger level ที่ตั้งไว้ด้วย ตัวต้านทานปรับค่าได้ วงจรสามารถควบคุมการทำงานผ่านทางคีย์บอร์ด ของไมโครคอมพิวเตอร์ คำสั่งจะส่งผ่านทางพอร์ตอนุกรม จากไมโครคอมพิวเตอร์ไปยังไมโครคอนโทรลเลอร์ คำสั่งที่ สามารถใช้งานได้คือการหยุดรูปคลื่นชั่วคราว(Pause/Run) และใช้วงจรเดียวกันนี้เพื่อทำเป็น data logger เก็บค่าที่วัดได้ไว้ใน EEPROM และควบคุมการอ่านเขียนได้ โดยใช้คีย์บอร์ด ของไมโครคอมพิวเตอร์ นอกจากนี้ยังเสริมด้วยการทดลองย่อยสำหรับเพิ่มพูนความรู้ คือการสร้างนาฬิกาบอกเวลา โดยใช้ Timer/Counter ภายใน เป็นตัวสร้าง สัญญาณฐานเวลา แม้นว่าจะมีไอซีที่ทำหน้าที่ real time clcok อยู่แล้วก็ตาม แต่การทดลองย่อยนี้แสดงให้เห็นว่าไม่จำเป็นที่จะต้องใช้ไอซีเฉพาะงานเสมอไป การเลือกและใช้อย่างรู้จริง จะทำให้ประหยัดงบประมาณ และเวลา(เวลาที่เสียไปเพื่อศึกษาทำความเข้าใจ ดาต้าชีทของไอซีเหล่านั้น) ได้

รายละเอียดของการทดลอง

1. ออกแบบ และวาดวงจรลงในสมุดบันทึก (วงจรที่ให้มานี้ เป็นเพียงแบบเสนอแนะเท่านั้น) จัดหาอุปกรณ์จากร้านค้าให้ครบตามที่ได้ออกแบบ ประกอบวงจรลงโปรโตบอร์ดให้เรียบร้อย

2. [การทดลองย่อย #1, 5 คะแนน] ออกแบบผังงาน และโปรแกรมภาษาแอสเซมบลี้ เพื่อทดสอบวงจรควบคุมการทริก แสดงและสาธิตให้เห็นว่า ถ้าแรงดัน Vin สูงกว่า trig. level ที่ตั้งไว้ ให้ LED trig. ติด ถ้าต่ำกว่า ให้ LED ดับ การป้อน Vin จะต้องระวังไม่ให้แรงดันไฟฟ้าสูงกินไป แม้นว่าจะมี D1 และ D2 ป้องกันไว้แล้วก็ตาม
3. [การทดลองย่อย #2, 10 คะแนน] ออกแบบผังงาน และโปรแกรมภาษาแอสเซมบลี้ เพื่อติดต่อกับพอร์ตอนุกรมของไมโครคอมพิวเตอร์ กำหนดให้ baud rate 9,600bps, ไม่มีพาริตี้, ไม่มี stop bit, 8bits แสดงและสาธิตการส่งอนุกรมข้อมูล 0,1,2,3...254,0,1,2... ไปยังไมโครคอมพิวเตอร์ ห้ามส่งค่า 255(0xFF) เพราะ 0xFF คือรหัสควบคุม ทุกครั้งที่ส่งข้อมูลออกไปแต่ละไบต์ ให้ LED sending กระพริบ ที่ไมโครคอมพิวเตอร์ให้ใช้ โปรแกรม mon.zip ในการรับข้อมูล ที่ส่งมาจากไมโครคอนโทรลเลอร์ และแสดงออกเป็นกราฟรูปฟันเลื่อย การกดปุ่ม 'p' บนคีย์บอร์ด โปรแกรม mon.exe จะส่งค่าตัวอักษร 'p' (ดูค่าจากตารางแอสกี้โค้ด ไฟล์ asciitab.pdf ออกไปให้ไมโครคอนโทรลเลอร์ เพื่อทำให้ไมโครคอนโทรลเลอร์หยุดการส่งข้อมูล กราฟจะหยุดวิ่ง LED sending จะดับ ถ้ากดคีย์ 'p' อีกครั้งหนึ่งก็จะส่งข้อมูลต่อไป
4. [การทดลองย่อย #3, 5 คะแนน] ออกแบบวงจร และเขียนผังวงจรสำหรับ PWM ความถี่ 1KHz แสดงและสาธิตโดยวัดสัญญาณเอ้าต์พุตของวงจร รูปคลื่นจัตุรัสด้วยออสซิลโลสโคป ป้อนสัญญาณ Vin รูปไซน์ 100Hz ตรวจสอบดูว่า ความกว้างของพัลส์เอ้าต์พุต จะต้องเปลี่ยนแปลงตามแอมปลิจูดของสัญญาณอินพุต
5. [การทดลองย่อย #4, 15 คะแนน] ต่อ PWM เข้ากับไมโครคอนโทรลเลอร์ ออกแบบผังงาน และโปรแกรมภาษาแอสเซมบลี้ โดยใช้ timer0 เพื่อแสดงและสาธิตการวัดคาบเวลา ของสัญญาณพัลส์ที่ส่งมาจาก PWM ด้วยวิธีอินเตอร์รัพท์ timer0 จะ clear และเริ่มนับที่ขอบขาขึ้นของสัญญาณ หยุดนับที่ขอบขาลงของสัญญาณ ส่งค่าที่นับได้ออกทาง พอร์ตอนุกรม ส่งไปให้ไมโครคอมพิวเตอร์ เพื่อแสดงระดับแรงดันไฟฟ้า ด้วยโปรแกรม mon.exe กราฟที่แสดงหน้าจอของไมโครคอมพิวเตอร์ จะต้องเปลี่ยนแปลงตามค่าของ counter ที่นับได้ ซึ่งจะเปลี่ยนแปลงไปตาม Vin
6. [การทดลองย่อย #5, 15 คะแนน] ออกแบบผังงาน และโปรแกรมภาษาแอสเซมบลี้ เพื่อตรวจสอบระดับสัญญาณทริก แสดงและสาธิตการเปรียบเทียบระดับแรงดันไฟฟ้า ที่ป้อนให้ analog comparator ถ้าขาบวกมีแรงดันไฟฟ้ามากกว่าขาลบ และเป็นขอบขาขึ้นของสัญญาณ Vin ให้ LED trig กระพริบหนี่งครั้ง และส่ง retrace code สองไบต์ ค่า 0xFF, 0x0Dไปให้ไมโครคอมพิวเตอร์
7. [การทดลองย่อย #6, 30 คะแนน] ออกแบบผังงาน และโปรแกรมภาษาแอสเซมบลี้ เพื่อแสดงและสาธิตการทำงานของ ดิจิตอลสตอเรจออสซิลโลสโคป ซึ่งสามารถแสดงรูปแรงดันไฟฟ้าของ Vin ได้ เมื่อกดคีย์บอร์ด ปุ่ม 'p' ภาพจะหยุดนิ่ง ถ้ากดปุ่ม 'p' อีกครั้งหนึ่ง ก็จะแสดงภาพสัญญาณตามปกติ
8. [การทดลองย่อย #7, 10 คะแนน] ออกแบบผังงาน และโปรแกรมภาษาแอสเซมบลี้ใหม่ เพื่อสร้างเครื่องบันทึกข้อมูล (data logger) ขนาด 128 ไบต์ กำหนดอัตราการสุ่มข้อมูล เพื่อเก็บลง EEPROM เท่ากับ 25Hz แสดงและสาธิตการเก็บ และอ่านค่าจาก EEPROM เพื่อนำไปแสดงภาพบนจอของไมโครคอมพิวเตอร์ โดยใช้โปรแกรม mon.exe การเริ่มเก็บข้อมูลของ data logger ไม่ต้องรอสัญญาณทริกเหมือนกับดิจิตอลสตอเรจ ออสซิลโลสโคป แต่ให้รอรับคำสั่งจากคีย์บอร์ด คือถ้าได้รับ คำสั่ง 's' (start) ให้เริ่มเก็บข้อมูลลง EEPROM จนครบ 128 ไบต์ และแสดงไฟ LED store เมื่อเก็บจนครบแล้ว ให้หยุด LED store ดับ LED ready สว่าง และส่ง ready code รหัสสองไบต์ 0xFF, 0x0A ไปให้ไมโครคอมพิวเตอร์ เพื่อบอกให้ทราบว่าเก็บข้อมูลครบแล้ว แล้วรอรับคำสั่ง ถ้าได้รับคำสั่ง 'r' (read) จากคีย์บอร์ด ให้อ่านข้อมูลจาก EEPROM จำนวน 128 ไบต์ ไปให้ไมโครคอมพิวเตอร์ เพื่อพล็อตรูปกราฟ
9. [การทดลองย่อย #8, 10 คะแนน] ออกแบบผังงาน และโปรแกรมภาษาแอสเซมบลี้ เพื่อแสดงและสาธิตนาฬิกาบอกเวลาขนาด 4 หลัก(ชั่วโมง:นาที) แสดงผลด้วยตัวแสดงผลด้วย 7 segment แบบมัลติเพล็กซ์ และสามารถตั้งเวลาได้
10. ใบให้คะแนน mcu_lab5_so.html


Copyright (c) by Gumtorn Ruanfaigad.All rights reserved.2002
สงวนลิขสิทธิ์ โดย กำธร เรือนฝายกาศ พ.ศ.2545
Site hosted by Angelfire.com: Build your free website today!