30 มี.ค. 2020 เวลา 17:13 • การศึกษา
Lab 5 Matrix Switch
เชื่อมต่อสวิตซ์เมตริกซ์กับบอร์ด Arduino
การอ่านหรือรับค่าจากสวิตช์เป็นความสามารถหนึ่งที่ไมโครคอนโทรลเลอร์ สมัยใหม่ต้องรองรับเละเชื่อมต่อใช้งานได้ โดยฉพาอย่างยิ่งกับการติดต่อสวิตช์กดจำนวนมากเป็น 10 ตัวขึ้นไป
การต่อแบบพื้นฐานในลักษณะสวิตช์หนึ่งตัวต่อขาพอร์ตหนึ่งขาเป็นการเชื่อมต่อที่ง่ายทั้งทางฮาร์ดแวร์และกระบวนการทางซอฟต์แวร์
แต่จะสิ้นเปลืองและทำให้ขาพอร์ตของไมโครคอนโทรลเลอร์ได้รับการจัดสรรไปใช้งานเบบไม่คุ้มค่า
ทางออกของการใช้งานสวิตช์จำนวนมากกับไมโครคอนโทรลเลอร์คือ ทำการจัดวงจรการเชื่อมต่อสวิตช์ใหม่ให้เป็นแบบเมตริกซ์ เรียกว่า วงจรสวิตช์แบบมตริกซ์ (matrix switch) ดังเสดงตัวอย่างวงจรในรูป
วงจรพื้นฐานของสวิตช์เมเตริกซ์หรือคีย์แพค 4X4 จุด และหน้าตาของคีย์แพด 4x4จุด ที่มีพื้นฐานโครงสร้างวงจรมาจากสวิตช์เมตริกซ์ 4x4 จุด
สวิตช์จะถูกต่อกันในแนวแกนตั้งและแกนนอน เรียกสายสัญญาณในแนวตั้งว่า หลัก หรือ คอลัมน์ (columm)
ในณะที่สายสัญญาณในแนวนอนจะเรียกว่าแถว หรือ โรว์ (row) ดังนั้นคู่ของสวิตช์จึงประกอบด้วย ตำเเหน่งในแนวคอลัมน์และโรว์
กระบวนการที่จะทำให้ได้มาซึ่งค่าของสวิตช์มีขั้นตอนพอสมควรแต่วงจรของสวิตช์แบบนี้มีข้อดีคือ รองรับการเพิ่มของสวิตซ์ได้อย่างสะดวก เพียงเพิ่มเติมจำนวนสวิตช์เละแก้ไขซอฟต์แวร์อีกเล็กน้อยเท่านั้น ทำให้วงจรสวิตข์เมตริกซ์เป็นที่นิยมใช้มากในระบบควบคุมอัตโนมัติ หรือกึ่งอัตโนมัติที่มีจำนวนสวิตช์มากกว่า 8 ตัว ในการใช้งานทั่วไปจะเรียกสวิตช์แบบเมตริกซ์นี้ว่าคีย์แพด (keypad)
5.1 รู้จักกับสวิตซ์เมตริกซ์หรือคีย์แพด
ตัวอย่างวงจรเชื่อมต่อสวิตช์เมตริกซ์บนาค 44 จุดกับไมโครคอนโทรลเลอร์แสดงในรูป
วงจรเชื่อมต่อสวิตช์เมตริกซ์ขนาด 4X4 จุดเข้ากับไมโครคอนโทรลเลอร์
ใช้ขาพอร์ตของไมโครคอนโทรลเลอร์เชื่อมต่อเข้ากับสวิตช์เมตริกซ์รวม 8 เส้นคือ สายของคอลัมน์ 4 สาย (C1 ถึง C4)
และสายทางโรว์อีก 4 สาย (R1 ถึง R4) โดยฉพาะที่ขาพอร์ตที่ต่อกับแนวคอลัมน์ทั้งหมดจะต้องกำหนดให้ทำงานเป็นอินพุต และการมีตัวต้านทานต่อพูลอัปไว้เพื่อกำหนดสภาวะเริ่มต้นที่ไม่มีการกดสวิตซ์
ในการทำงานไมโครคอนโทรลเลอร์จะส่งข้อมูล "0" ไปยังขาพอร์ตที่ต่อกับสายโรว์ของสวิตช์เมตริกซ์
เริ่มจาก R1 ไล่ไปจนถึง R4 นั่นคือข้อมูลที่ส่งออกไปจะมีด้วยกัน 4 ค่าคือ 1110, 1101, 1011 เละ 0111
ในทุกครั้งที่มีการส่งข้อมูลไปยังสายโรว์หรือแถวของสวิตช้เมตริกซ์ ไมโครคอนโทรลเลอร์จะอ่านค่าที่ขาพอร์ตซึ่งต่อกับสายคอลัมน์ทั้ง 4 ขาเข้ามาด้วย
หากไม่มีการกดสวิตช์ค่าของขาพอร์ตที่ต่อกับสายคอลัมน์ของสวิตช้เมตริกจะเป็น 1111 ทั้งหมด
ถ้าหากมีการกดคีย์ ค่าของข้อมูลก็จะไม่เป็น 1111 อีกต่อไป เป็นการแจ้งให้ทราบว่ามีการกคสวิตช้เมตริกซ์ขึ้นแล้ว จากนั้นไมโครคอนโทรลเลอร์ก็จะนหาตำแหน่งต่อไป
ในการทดลองเพื่อเรียนรู้การเชื่อมต่อกับสวิตช์เมตริกซ์หรือคีย์แพดของฮาร์ดเเวร์ ในเวบ tinkercad เราสามารถใช้ Keypadมาใช้ประกอบในการทดลอง ในรูป
การจัดวางตำเเหน่งของสวิตช์บนแผงวงจร keypad ซึ่งภายในจะมีการกำหนดต่ำแหน่งและโครงสร้างดังรูป
วงจรสมบูรณ์ของ Keypad
ซึ่ง keypad โดยทั่วไปจะได้รับการออกแบบให้สามารถลือกติดตั้งตัวต้านทานทั้งแบบพูลอัปหรือพุลดาวน์เพื่อกำหนดสถานะของสายสัญญาณในขณะที่ไม่มีการกดสวิตช์ โดยตัวต้านทานที่เนะนำคือ ตัวค้นทานเเบบเน็ตเวิร์ก 5 ขา ซึ่งกายในจะมีโครงสร้างป็นตัวค้นทาน 4 ตัวที่ต่อขาหนึ่งร่วมกัน ดังแสดงในรูป
จุดต่อที่ไม่ได้กำหนดชื่อหรือจุดต่อรูปสี่เหลี่ยมจะเป็นจุดบัดกรีลอย นักศึกษาสามารถต่อเข้ากับไฟเลี้ยงหรือกราวน์ก็ได้ หากต่อเข้ากับไฟเลี้ยงก็จะเป็นการกำหนคให้การต่อตัวต้นทานเข้ากับแผงวงจร
สวิตซ์นี้เป็นแบบพูลอัป นั่นคือ มีการกำหนดสถานะลอจิก "1" ให้กับสายคอลัมน์ในขณะที่ไม่มีการกดสวิตช์
หากต่อกราวด์ก็จะเป็นการกำหนดให้การต่อตัวต้านทานเข้ากับแผงวงจรสวิตช์นี้ป็นแบบพูลดาวน์ นั่นถือ มีการกำหนดสถานะลอจิก "0" ให้กับสายคอลัมน์ในขณะที่ไม่มีการกดสวิตช์
Example 5.1เชื่อมต่อสวิตซ์เมตริกซ์กับบอร์ด Arduino และ monitoring ผ่าน Serial Monitor
วิธีการดู Serial Monitor ใน tinkercad
ในหน้าต่าง code เราสามารถดูค่าที่ได้รับทาง serial port ได้ด้วย Serial Monitor
Assignment 5.1
เชื่อมต่อสวิตซ์เมตริกซ์กับบอร์ด Arduino และ output ผ่านหลอดไฟ LED โดยที่เมื่อกด 1 ไฟกระพริบช้า กด 2 ไฟกระพริบปานกลาง กด 3 ไฟกระพริบเร็ว
1
Assignment 5.2 สร้างตัวล๊อกด้วยรหัส โดยเชื่อมต่อสวิตซ์เมตริกซ์กับบอร์ด Arduino และ output ผ่านหลอดไฟ LED RGB โดยที่เมื่อกดเลข สามหลัก ตรงกับ ID 3 ตัวท้ายของรหัสนักศึกษา ให้แสดงผลเป็นสีเขียว
โฆษณา