- Switch Bouncing คืออะไร?
- Software Debouncing คืออะไร?
- เปลี่ยนวิธีการแก้ปัญหา
- 1. ฮาร์ดแวร์ Debouncing
- 2.
- 3. สลับการแก้ปัญหา IC
Switch Bouncing คืออะไร?
เมื่อเรากดปุ่มกดหรือสวิตช์สลับหรือไมโครสวิตช์ชิ้นส่วนโลหะสองชิ้นจะสัมผัสกันเพื่อทำให้อุปทานขาด แต่ไม่ได้เชื่อมต่อในทันที แต่ชิ้นส่วนโลหะจะเชื่อมต่อและตัดการเชื่อมต่อหลายครั้งก่อนที่จะทำการเชื่อมต่อที่เสถียรจริง สิ่งเดียวกันนี้เกิดขึ้นในขณะที่ปล่อยปุ่ม ส่งผลให้เกิดการทริกเกอร์ที่ผิดพลาดหรือการทริกเกอร์หลายครั้งเช่นการกดปุ่มหลาย ๆ ครั้ง มันเหมือนกับการล้มลูกบอลกระดอนจากที่สูงและมันก็ยังคงกระเด้งขึ้นบนผิวน้ำจนกว่าจะหยุดนิ่ง
เพียงแค่เราสามารถพูดได้ว่าสวิทช์ใหญ่เป็นพฤติกรรมที่ไม่เหมาะของสวิทช์ใด ๆ ซึ่งจะสร้างหลายเปลี่ยนของการป้อนข้อมูลเดียวการตีกลับของสวิตช์ไม่ใช่ปัญหาหลักเมื่อเราจัดการกับวงจรไฟฟ้า แต่มันทำให้เกิดปัญหาในขณะที่เรากำลังจัดการกับลอจิกหรือวงจรดิจิทัล ดังนั้นในการลบการตีกลับจากวงจรSwitch Debouncing Circuitจึงใช้
Software Debouncing คืออะไร?
การแก้ปัญหาเกิดขึ้นในซอฟต์แวร์ด้วยในขณะที่โปรแกรมเมอร์การเขียนโปรแกรมเพิ่มความล่าช้าในการกำจัดการดีบักซอฟต์แวร์ การเพิ่มการหน่วงเวลาบังคับให้คอนโทรลเลอร์หยุดในช่วงเวลาหนึ่ง แต่การเพิ่มความล่าช้าไม่ใช่ทางเลือกที่ดีในโปรแกรมเนื่องจากจะหยุดโปรแกรมชั่วคราวและเพิ่มเวลาในการประมวลผล วิธีที่ดีที่สุดคือใช้การขัดจังหวะในโค้ดสำหรับการตีกลับซอฟต์แวร์ Arduino มีรหัสเพื่อป้องกันไม่ให้ซอฟต์แวร์ตีกลับ
เปลี่ยนวิธีการแก้ปัญหา
ครั้งแรกที่เราจะแสดงให้เห็นวงจรโดยไม่ต้องสลับ debounce
คุณยังสามารถดูรูปคลื่นในออสซิลโลสโคปในขณะที่ปุ่มกดกระดอน แสดงให้เห็นว่ามีการตีกลับมากน้อยเพียงใดในระหว่างการเปลี่ยนปุ่มกด
มีสามที่ใช้กันทั่วไปมีวิธีการป้องกันวงจรจากสวิทช์ตีกลับมา
- ฮาร์ดแวร์ Debouncing
- RC Debouncing
- สลับ Debouncing IC
1. ฮาร์ดแวร์ Debouncing
ในเทคนิคการดีบักฮาร์ดแวร์เราใช้ฟลิปฟล็อป SR เพื่อป้องกันวงจรไม่ให้สวิตช์ตีกลับ นี่เป็นวิธีการหักบัญชีที่ดีที่สุดในบรรดาทั้งหมด
ส่วนประกอบที่จำเป็น
- Nand Gate IC 74HC00
- สลับสวิตช์
- ตัวต้านทาน (10k -2nos.)
- ตัวเก็บประจุ (0.1uf)
- LED
- เขียงหั่นขนม
แผนภูมิวงจรรวม
การทำงานของ Hardware Debounce Circuit
วงจรประกอบด้วยประตู Nand สองอัน (74HC00 IC) ที่สร้างฟลิปฟลอป SR ดังที่คุณเห็นในแผนภาพวงจรเมื่อใดก็ตามที่สวิตช์สลับไปที่ด้าน A ลอจิกเอาต์พุตจะได้รับ 'สูง' ที่นี่เราได้ใช้ออสซิลโลสโคปเพื่อตรวจจับการตีกลับ และดังที่คุณเห็นในรูปคลื่นที่ระบุด้านล่างตรรกะจะเปลี่ยนไปด้วยเส้นโค้งเล็กน้อยแทนที่จะตีกลับ ตัวต้านทานที่ใช้ในวงจรคือตัวต้านทานแบบดึงขึ้น
เมื่อใดก็ตามที่สวิตช์เคลื่อนที่ไปมาระหว่างหน้าสัมผัสเพื่อสร้างการตีกลับฟลิปฟล็อปจะรักษาเอาต์พุตเนื่องจาก '0' ถูกป้อนกลับจากเอาต์พุตของประตู Nand
2.
RC ถูกกำหนดโดยชื่อเท่านั้นวงจรใช้เครือข่าย RC เพื่อป้องกันการตีกลับของสวิตช์ ตัวเก็บประจุในวงจรจะกรองการเปลี่ยนแปลงทันทีของสัญญาณสวิตชิ่ง เมื่อสวิตช์อยู่ในสถานะเปิดแรงดันไฟฟ้าทั่วตัวเก็บประจุจะยังคงเป็นศูนย์ ในขั้นต้นเมื่อสวิตช์เปิดประจุตัวเก็บประจุผ่านตัวต้านทาน R1 และ R2
เมื่อปิดสวิตช์ตัวเก็บประจุจะเริ่มปล่อยประจุเป็นศูนย์ดังนั้นแรงดันไฟฟ้าที่ขั้วอินพุตของทริกเกอร์ Schmitt แบบกลับด้านจึงเป็นศูนย์ดังนั้นเอาต์พุตจึงกลายเป็น HIGH
ในสภาพการตีกลับตัวเก็บประจุจะหยุดแรงดันไฟฟ้าที่ Vin จนกว่าจะถึง Vcc หรือกราวด์
ในการเพิ่มความเร็วของ RC debouncing เราสามารถเชื่อมต่อไดโอดดังที่แสดงในภาพด้านล่าง ดังนั้นจึงช่วยลดเวลาในการชาร์จของตัวเก็บประจุ
3. สลับการแก้ปัญหา IC
มีไอซีที่มีจำหน่ายในตลาดสำหรับการดีบักสวิตช์ บางส่วนของวงจรรวมการ debouncing มี MAX6816, MC14490 และ LS118
ด้านล่างนี้เป็นแผนภาพวงจรสำหรับการดีบักสวิตช์โดยใช้ MAX6818
ดังนั้นที่นี่เราได้เรียนรู้วิธีสร้างปุ่มกดสวิทช์ผลกำยำและวิธีที่จะสามารถป้องกันได้โดยการใช้สวิทช์ Debouncing วงจร