วิธีการติดตั้ง Hardware Debounce สำหรับสวิตช์และรีเลย์เมื่อ Software Debounce ไม่เหมาะสม
Contributed By DigiKey's North American Editors
2021-02-09
ในบริบทของวิศวกรรมไฟฟ้าและอิเล็กทรอนิกส์สวิตช์เป็นส่วนประกอบที่สามารถ "สร้าง" หรือ "ทำลาย" วงจรไฟฟ้าได้ซึ่งจะขัดขวางกระแสไฟฟ้าหรือเปลี่ยนทิศทางจากตัวนำหนึ่งไปยังอีกตัวนำหนึ่ง ตามที่วิศวกรสามารถรับรองได้ มีสวิตช์อยู่หลายประเภท เช่น สวิตช์สลับ, สวิตช์โยก, สวิตช์ปุ่มกด, สวิตช์ไมโครและลิมิต, สวิตช์แม่เหล็กและรีดสวิตช์ และรีเลย์ ทั้งหมดมีสิ่งหนึ่งที่เหมือนกันคือ การเด้ง มันเป็นหน้าที่เดียวของสวิตช์
โดยปกติแล้วการเด้งนี้มีผลต่อวงจรเพียงเล็กน้อยหรือไม่มีเลย แต่ถ้าวงจรดิจิทัลเร็วพอที่จะตรวจจับและตอบสนองต่อการตีกลับหลายครั้งอาจส่งผลร้ายแรงได้ งานของวิศวกรคือการหลีกเลี่ยงหรือลดผลกระทบของการเด้งกลับนี้หรือการ “debounce” สวิตช์ ในขณะที่อุตสาหกรรมได้ฝึกฝนการ debounce ฮาร์ดแวร์มาเป็นเวลานาน แต่เมื่อไม่นานมานี้ บริษัท ได้ย้ายไปใช้วิธีการ debounce ที่ใช้ซอฟต์แวร์มากขึ้น อย่างไรก็ตามมีสถานการณ์ที่การ debounce ฮาร์ดแวร์เป็นตัวเลือกที่ดีกว่า
บทความนี้จะอธิบายเกี่ยวกับการตีกลับและกล่าวถึงวิธีการแก้ปัญหาด้วยทางซอฟต์แวร์และฮาร์ดแวร์ จากนั้นจะชี้ไปที่กรณีที่ฮาร์ดแวร์ debounce เป็นตัวเลือกที่ดีกว่าก่อนที่จะแสดงวิธีการนำไปใช้งาน ตัวอย่างอุปกรณ์สวิตชิ่งและส่วนประกอบ debounce ของฮาร์ดแวร์ได้รับการแนะนำโดยใช้ตัวอย่างจาก NKK Switches ,ON Semiconductor ,Texas Instruments ,Maxim Integrated และLogiSwitch .
Switch Bounce คืออะไร?
เมื่อสวิตช์หรือรีเลย์ถูกดีดหรือสลับ สิ่งที่มนุษย์รับรู้ว่าเป็นการตอบสนองเพียงครั้งเดียวในแต่ละครั้งที่อุปกรณ์เปลี่ยนสถานะอาจเกี่ยวข้องกับการกระทำที่สร้างหรือทำลายอย่างน้อย 100 ครั้งซึ่งยังคงมีอยู่เป็นเวลาหลายพันวินาทีก่อนที่หน้าสัมผัสจะเข้าที่ในที่สุด
ตัวอย่างเช่น พิจารณา single pole, single throw (SPST) แผงสวิตช์เปิด/ปิด แบบปกติเปิด (NO) เช่น M2011SS1W01 จาก NKK สมมติว่าด้านหนึ่งของสวิตช์นี้ซึ่งถือได้ว่าเป็นอินพุตนั้นเชื่อมต่อกับกราวด์ (0 โวลต์) ในขณะที่อีกด้านหนึ่งซึ่งในกรณีนี้คือเอาต์พุตเชื่อมต่อกับแหล่งจ่ายไฟ 5 โวลต์ (แสดงเป็น + ve) ผ่านตัวต้านทานแบบดึงขึ้น (R1) (รูปที่ 1)
รูปที่ 1: ในกรณีของสวิตช์สลับ SPST-NO การเด้งกลับอาจเกิดขึ้นทั้งเมื่อเปิดใช้งานและปิดใช้งานสวิตช์ (แหล่งรูปภาพ: Max Maxfield)
สังเกตว่าการเด้งกลับของสวิตช์อาจเกิดขึ้นทั้งเมื่อเปิดใช้งานสวิตช์ (ปิด) และปิดใช้งาน (เปิด) บางครั้งการเด้งกลับอาจเปลี่ยนไปตลอดทางระหว่างรางจ่าย ในที่นี้ถือเป็นสถานะลอจิก 0 และ 1 ในกรณีนี้สิ่งเหล่านี้คือการตีกลับที่ "สะอาด" โดยการเปรียบเทียบหากสัญญาณไปถึงแรงดันไฟฟ้าระดับกลางเท่านั้นสิ่งเหล่านี้จะเรียกว่าการเด้งกลับ "สกปรก"
ในกรณีของ single pole, single throw (SPST) แผงสวิตช์สลับเช่นของ NKK M2012SS1W01-BCการเด้งกลับอาจเกิดขึ้นได้ทั้งในขั้วปกติเปิด (NO) และปกติปิด (NC) (รูปที่ 2) ในกรณีนี้จะแสดงเฉพาะการตีกลับ "สะอาด" เพื่อความเรียบง่าย
รูปที่ 2: ในกรณีของสวิตช์สลับ SPDT-NO การเด้งกลับอาจเกิดขึ้นทั้งเมื่อเปิดใช้งานและปิดใช้งานสวิตช์ (แหล่งรูปภาพ: Max Maxfield)
ในหลาย ๆ กรณีระยะเวลาการตีกลับของสัญญาณนี้จะไม่มีผลใด ๆ ปัญหาเกิดขึ้นเมื่อสวิตช์เชื่อมต่อกับอุปกรณ์อิเล็กทรอนิกส์ที่เร็วพอที่จะตรวจจับและตอบสนองต่อการตีกลับหลายครั้ง สิ่งที่จำเป็นคือวิธีการหักล้างสัญญาณที่มาจากสวิตช์ก่อนที่อุปกรณ์อิเล็กทรอนิกส์จะทำงาน
Debounce ซอฟต์แวร์เทียบกับฮาร์ดแวร์
ในทศวรรษที่ 1960 และ 1970 การ debounce สวิตช์ถูกนำมาใช้โดยใช้เทคนิคฮาร์ดแวร์ที่หลากหลายตั้งแต่วงจรหน่วงเวลาตัวต้านทาน - ตัวเก็บประจุ (RC) แบบธรรมดาที่ใช้กับสวิตช์ SPST ไปจนถึงฟังก์ชันสลัก set/reset (SR) ที่ซับซ้อนยิ่งขึ้น
เมื่อไม่นานมานี้และเนื่องจากระบบจำนวนมากมีหน่วยไมโครโปรเซสเซอร์ (MPU) หรือหน่วยไมโครคอนโทรลเลอร์ (MCU) จึงกลายเป็นเรื่องธรรมดาที่จะใช้เทคนิคซอฟต์แวร์เพื่อแก้ไขสัญญาณที่มาจากสวิตช์ใด ๆ อย่างไรก็ตามการดีบักซอฟต์แวร์ไม่ใช่แนวทางที่ดีที่สุดเสมอไป มีการใช้งานบางอย่างที่เกี่ยวข้องกับโปรเซสเซอร์ขนาดเล็ก ประสิทธิภาพต่ำและหน่วยความจำซึ่งมีพื้นที่โค้ดจำกัด และ/หรือ รอบสัญญาณนาฬิกาที่พร้อมใช้งานสำหรับการใช้งาน debounce ในชีวิตประจำวัน ในกรณีเหล่านี้การติดตั้งฮาร์ดแวร์อาจเป็นทางออกที่ดีกว่า
นอกจากนี้นักพัฒนาซอฟต์แวร์หลายรายไม่คุ้นเคยกับลักษณะทางกายภาพของสวิตช์ เช่นความจริงที่ว่านอกเหนือจากการเปิดใช้งานที่แตกต่างกันไปแล้วลักษณะการเด้งกลับของสวิตช์อาจได้รับผลกระทบจากสภาพแวดล้อม เช่น อุณหภูมิและความชื้น
ปัญหาของการขาดความเชี่ยวชาญด้านสวิตช์ของนักพัฒนาซอฟต์แวร์นั้นรุนแรงขึ้นจากข้อเท็จจริงที่ว่าวรรณกรรมที่มีอยู่เกี่ยวกับการเด้งกลับของสวิตช์มักจะสับสนและขัดแย้งกัน ตัวอย่างเช่น เป็นเรื่องปกติที่จะอ่านว่าสวิตช์จะหยุดตีกลับ 1 มิลลิวินาที (ms) หลังจากการเปิดใช้งานหรือการปิดใช้งาน อย่างไรก็ตาม Jack Ganssle ผู้เชี่ยวชาญด้านระบบฝังตัวที่รู้จักกันดีได้ทำการทดสอบเชิงประจักษ์เกี่ยวกับสวิตช์ประเภทต่าง ๆ โดยเปิดใช้งานสวิตช์แต่ละครั้ง 300 ครั้งและบันทึกจำนวนการตีกลับต่ำสุดและสูงสุดสำหรับทั้งการเปิดและปิดผู้ติดต่อ เขารายงานระยะเวลาตีกลับเฉลี่ย 1.6 มิลลิวินาทีและระยะเวลาตีกลับสูงสุด 6.2 มิลลิวินาที “แนวทางปฏิบัติที่ดีที่สุด” ทางอุตสาหกรรมและการทหารบางอย่างแนะนำให้รอ 20 ms หลังจากเปิดใช้งานครั้งแรกก่อนที่จะถือว่าสวิตช์หยุดเด้งกลับ คนอื่นสนับสนุนให้รอ 20 ms หลังจากการตีกลับที่ตรวจพบครั้งสุดท้ายก่อนที่จะทริกเกอร์การดำเนินการใด ๆ
นอกจากนี้ยังมีระบบที่ไม่ใช้ตัวประมวลผลแบบง่าย ๆ อีกมากมายที่ต้องใช้สวิตช์ในการ debounce ตัวอย่างบางส่วนของระบบดังกล่าวคือตัวนับไบนารีที่ขับเคลื่อนการแสดงผลเจ็ดส่วนการนับพัลส์จากรีเลย์ อินพุตทริกเกอร์ไปยังตัวจับเวลาแบบ 555 one-shot ที่ใช้เป็นตัวควบคุมมอเตอร์สำหรับประตูหรือประตู และเครื่อง จำกัด สถานะตามการลงทะเบียน (FSM) ที่ใช้ปัจจัยการผลิตที่สำคัญ นอกจากนี้ยังมีโพเทนชิโอมิเตอร์แบบอิเล็กทรอนิกส์ (หม้อ) ที่มีการแก้ไขค่าโดยใช้อินพุตสวิตช์ (ขึ้นลงและจัดเก็บในบางครั้ง) ซึ่งการตีกลับของสวิตช์จะเป็นปัญหา
ตัวอย่างทั้งหมดนี้ทำให้ชัดเจนว่าความรู้บางอย่างเกี่ยวกับวิธีดำเนินการ debounce ฮาร์ดแวร์อาจเป็นประโยชน์สำหรับนักออกแบบหรือนักพัฒนา
ฮาร์ดแวร์ดีบักสวิตช์ SPST กับเครือข่าย RC
หนึ่งในโซลูชันการแก้ปัญหาสวิตช์บนฮาร์ดแวร์ที่ง่ายที่สุดใช้เครือข่ายตัวต้านทาน-ตัวเก็บประจุ (RC) ร่วมกับสวิตช์ SPST วงจรดังกล่าวมีหลายรูปแบบ หนึ่งในการใช้งานที่หลากหลายกว่านั้นเกี่ยวข้องกับตัวต้านทานสองตัวและไดโอด (รูปที่ 3)
รูปที่ 3: เมื่อใช้เครือข่าย RC เพื่อหักล้างสวิตช์ SPST (ด้านบน) การเพิ่มไดโอด (D1) จะบังคับให้ตัวเก็บประจุ (C1) ชาร์จผ่านตัวต้านทาน R1 และปล่อยผ่านตัวต้านทาน R2 (แหล่งรูปภาพ: Max Maxfield)
เมื่อสวิตช์ถูกเปิดใช้งาน (ปิด) ตัวเก็บประจุ C1 จะถูกปล่อยผ่านตัวต้านทาน R2 หากตัดไดโอด D1 ออกจากวงจรนี้เมื่อปิดสวิตช์ (เปิด) C1 จะถูกชาร์จผ่านตัวต้านทาน (R1 + R2) อย่างไรก็ตามการมี D1 หมายความว่า C1 จะถูกเรียกเก็บเงินผ่านทาง R1 เท่านั้น
ในบางกรณีการเปิดใช้งานสวิตช์เท่านั้นที่น่าสนใจ (กล่าวคือกระตุ้นให้เกิดการดำเนินการ) ซึ่งในกรณีนี้อาจละเว้น D1 อย่างไรก็ตามหากต้องทริกเกอร์การดำเนินการเมื่อสวิตช์เปิดใช้งานและปิดใช้งานและหากพิจารณาถึงการลดความล่าช้าให้น้อยที่สุดขอแนะนำให้เพิ่ม D1
สังเกตเส้นโค้งการชาร์จแบบเอ็กซ์โพเนนเชียลและการคายประจุที่แสดงโดยแรงดันไฟฟ้าของตัวเก็บประจุ VC มันไม่ควรอย่างยิ่งที่จะป้อนสัญญาณนี้โดยตรงไปยังอินพุตของฟังก์ชันลอจิกดิจิทัลแบบดาวน์สตรีมซึ่งจะไม่เป็นผลดีต่อการเห็นสัญญาณที่สั่นไหวในพื้นที่ที่ไม่ได้กำหนดไว้ระหว่างค่าลอจิก 0 และลอจิก 1 ที่ "ดี" แต่สัญญาณนี้จะถูกป้อนไปยังอินพุตของบัฟเฟอร์ที่มีอินพุตทริกเกอร์ Schmitt นอกจากนี้โดยทั่วไปจะใช้บัฟเฟอร์ย้อนกลับเช่นหนึ่งช่องสัญญาณของ CD74HC14M96 จาก Texas Instruments เนื่องจากฟังก์ชันการกลับด้านจะเปลี่ยนได้เร็วกว่าฟังก์ชันที่ไม่กลับด้าน
การเปิดตัวสวิตช์ SPDT ด้วยสลัก SR
ในกรณีของสวิตช์ SPDT วิธีแก้ปัญหาการดีบักฮาร์ดแวร์ทั่วไปคือการใช้สลัก SR นับตั้งแต่บริษัทต่าง ๆ เช่น IBM ใช้เทคนิคนี้สำหรับแผงสวิตช์บนคอมพิวเตอร์เมนเฟรมของพวกเขาในช่วงทศวรรษที่ 1960 แนวทางนี้ได้รับการยกย่องว่าเป็น crème de la crème ของโซลูชันการแก้ปัญหาฮาร์ดแวร์อย่างง่าย สลักดังกล่าวสามารถสร้างขึ้นได้โดยใช้ประตู NAND สองอินพุตแบบย้อนกลับสองตัว ตัวอย่างเช่นโดยใช้สองช่องทางของ SN74HC00DR NAND IC รูปสี่เหลี่ยมสองอินพุตจาก Texas Instruments (รูปที่ 4)
รูปที่ 4: การใช้สลัก SR ที่ใช้ NAND เพื่อปลดล็อกสวิตช์ SPDT เป็นโซลูชันการดีบักฮาร์ดแวร์ที่มีประสิทธิภาพมาก (แหล่งรูปภาพ: Max Maxfield)
เมื่อขั้ว NC ของสวิตช์เชื่อมต่อกับกราวด์ดังแสดงในครึ่งบนของรูปที่ 4 จะบังคับให้เอาต์พุตของเกต g2 เป็นลอจิก 1 ในทางกลับกันลอจิก 1 สองตัวบนอินพุตไปยังเกต g1 บังคับให้เอาต์พุตเป็นลอจิก 0 จากการเปรียบเทียบเมื่อขั้ว NO ของสวิตช์เชื่อมต่อกับกราวด์ดังแสดงในครึ่งล่างของรูปที่ 4 จะบังคับให้เอาต์พุตของเกต g1 เป็นลอจิก 1 ในทางกลับกันลอจิก 1 สองตัวบนอินพุตไปยังเกต g2 บังคับให้เอาต์พุตเป็นลอจิก 0
เหตุผลที่วงจรนี้ทำงานได้ดีก็คือเมื่ออินพุตทั้งสองอยู่ในสถานะลอจิกที่ไม่ใช้งาน 1 สลัก SR จะจำค่าก่อนหน้านี้ โปรดจำไว้ว่าดังที่แสดงในรูปที่ 2 เมื่อสวิตช์ SPDT ถูกสลับขั้วใดก็ตามที่เชื่อมต่อกับกราวด์ในช่วงเวลานั้นจะเด้งก่อน เนื่องจากการตีกลับเหล่านี้อยู่ระหว่างค่าดั้งเดิม (ลอจิก 0) และค่าใหม่ (ลอจิก 1) จึงไม่มีผลต่อสถานะปัจจุบันของสลัก SR หลังจากที่เทอร์มินัลนี้หยุดตีกลับโดยที่คู่ของมันเริ่มตีกลับซึ่งในเวลานั้นสลัก SR จะเปลี่ยนสถานะ
การเปิดตัวสวิตช์ SPST ด้วยอุปกรณ์เฉพาะ
ปัญหาอย่างหนึ่งของโซลูชันก่อนหน้านี้คือนักออกแบบหลายคนชอบใช้สวิตช์ SPST เนื่องจากโดยทั่วไปมีค่าใช้จ่ายน้อยกว่า SPDT มีอุปกรณ์ดีบัก SPST เฉพาะที่เป็นที่รู้จักจำนวนมากในตลาด เช่น MC14490DWG จาก ON Semiconductor และ MAX6818EAP + T จาก Maxim Integrated
LogiSwitch ผู้ผลิตรายอื่นนำเสนอชุดโซลูชัน debounce สามแชนเนลหกแชนเนลและเก้าแชนเนลในแพ็คเกจอุปกรณ์ติดตั้งบนพื้นผิว (SMD) ตัวอย่างเช่น พิจารณาวงจรโดยใช้อุปกรณ์ LogiSwitch LS18-S (รูปที่ 5)
รูปที่ 5: การใช้ชิป LS18-S แบบสามแชนเนลโดยเฉพาะเพื่อหักล้างสวิตช์ SPDT (มีอุปกรณ์หกและเก้าช่องสัญญาณ) (แหล่งรูปภาพ: Max Maxfield)
เช่นเดียวกับสมาชิกทุกคนในตระกูล LogiSwitch LS18-S รองรับช่วงแรงดันไฟฟ้าที่ใช้งานได้ตั้งแต่ 2.5 ถึง 5.5 โวลต์ (ค่าของแรงดันไฟฟ้าไม่ส่งผลต่อเวลาตอบสนองของอุปกรณ์) นอกจากนี้ยังแตกต่างจากโซลูชัน IC เฉพาะอื่น ๆ อุปกรณ์ debounce ของ LogiSwitch ไม่ ต้องการส่วนประกอบเพิ่มเติมเช่น นาฬิกาภายนอก, เครือข่ายจับเวลา RC หรือตัวต้านทานแบบดึงขึ้นบนอินพุตหรือเอาต์พุต
LS18-S ใช้เทคโนโลยี NoBounce ที่ปรับเปลี่ยนได้ซึ่งเป็นลิขสิทธิ์เฉพาะของ LogiSwitch ซึ่งมีระบบป้องกันเสียงรบกวนในระดับสูง สัญญาณรบกวนที่เกิดอย่างรวดเร็วที่มีระยะเวลาน้อยกว่า 20 ms ไม่ได้รับอนุญาตจากการเริ่มต้นหรือยุติรอบการทำงานและเอาต์พุตจะล่าช้าเป็นระยะเวลา 20 มิลลิวินาทีหลังจากสวิตช์สุดท้ายเด้งขึ้นทั้งในการเปิดใช้งานและการเปิดตัวโดยไม่คำนึงถึงระยะเวลาการตีกลับ
สรุป
สวิตช์มีหลายประเภทรวมถึงสวิตช์สลับสวิตช์โยกและสวิตช์ปุ่มกดซึ่งทั้งหมดนี้อาจเด้งได้ หากไม่ลดการเด้งของสวิตช์อาจทำให้ไมโครโปรเซสเซอร์และวงจรอิเล็กทรอนิกส์อื่น ๆ เห็นว่าการเปิดใช้งานสวิตช์เพียงครั้งเดียวเกิดจากการเด้งหลายครั้ง
สัญญาณเด้งกลับจากสวิตช์มักจะถูกหักล้างโดยใช้ซอฟต์แวร์ที่ทำงานในไมโครคอนโทรลเลอร์ แม้ว่านี่จะเป็นโซลูชันที่มีต้นทุนต่ำดังที่แสดงไว้ แต่อาจไม่ใช่ตัวเลือกที่ดีที่สุดในทุกกรณี รวมถึงระบบที่อิงตามประสิทธิภาพและไมโครคอนโทรลเลอร์ที่จำกัดหน่วยความจำ, นักพัฒนาซอฟต์แวร์ที่ขาดความเชี่ยวชาญในปัญหาเกี่ยวกับสวิตช์ หรือระบบที่ดำเนินการโดยไม่ใช้ไมโครคอนโทรลเลอร์
อีกทางเลือกหนึ่งคือการ debouncing อาจทำได้ในฮาร์ดแวร์โดยใช้หลากหลายวิธีตั้งแต่เครือข่ายของตัวต้านทาน-ตัวเก็บประจุ ไปจนถึงสลัก SR ไปจนถึงวงจรรวมเฉพาะ
Disclaimer: The opinions, beliefs, and viewpoints expressed by the various authors and/or forum participants on this website do not necessarily reflect the opinions, beliefs, and viewpoints of DigiKey or official policies of DigiKey.




