ใช้ SPST สลับเป็นอินพุตดิจิตอลหรือไม่


10

ฉันยังใหม่กับ "วิศวกรรมไฟฟ้า" และฉันกำลังทำงานในโครงการ arduino เล็กน้อย ฉันต้องการให้สวิตช์ SPST ใช้เป็นอินพุตดิจิตอลบนบอร์ด

ฉันมีสวิตช์ตัวหนึ่งที่นำไปสู่การเชื่อมต่อกับเชิงบวกและอีกอันหนึ่งเชื่อมต่อกับอินพุตดิจิตอล ปัญหานี้คือเมื่อปิดสวิตช์ฉันไม่แน่ใจว่าอินพุตจะต่อสายดินหรือไม่ ฉันจะมั่นใจได้อย่างไรว่าอินพุตนั้นต่อสายดินเมื่อสวิตช์ปิดอยู่

มันจะใช้งานได้หรือไม่ถ้าฉันเชื่อมต่ออินพุตดิจิตอลเข้ากับตัวต้านทานที่ต่อกับกราวด์ดังนั้นเมื่อสวิตช์ปิดการทำงานจะถูกต่อลงดิน แต่เมื่อสวิตช์เปิดอยู่จะไม่สั้นลงหรือไม่

คำตอบ:


9

ทางออกที่ธรรมดาที่สุดคือการเชื่อมต่อสวิตช์ด้านหนึ่งกับกราวด์ เชื่อมต่อตัวอื่นเข้ากับอินพุตดิจิตอลและตัวต้านทานระหว่าง 1 ถึง 10 K โอห์มที่กำลังจ่ายเป็นบวก

การใช้วิธีอื่นด้วยตัวต้านทานแบบดึงลงตามที่ Bruno อธิบายนั้นเป็นไปได้ แต่เป็นที่ต้องการน้อยกว่า อินพุตจำนวนมากมีการดึงระดับโดยนัยแล้วและจะอ่าน '1' หากไม่เชื่อมต่อแม้ว่าจะไม่น่าเชื่อถือ แต่ถ้าสวิตช์ของคุณเชื่อมต่อกับรางบวกอยู่แล้วการดึงลงก็เป็นวิธีที่ใช้ได้ แต่หลายคนชอบที่จะใช้ตัวต้านทานขนาดเล็กเมื่อเชื่อมต่ออินพุตตรรกะกับรางบวก

ไมโครคอนโทรลเลอร์หลายตัวยังมีการดึงและ / หรือดึงตัวต้านทานภายในบนพิน GPIO ซึ่งสามารถใช้งานได้โดยการเขียนลงทะเบียนการกำหนดค่า หากคุณกำลังขับอินพุตของไมโครคอนโทรลเลอร์เช่นนั้นคุณอาจไม่จำเป็นต้องมีตัวต้านทานแบบดึงขึ้น / ลงภายนอก แต่อาจไม่ได้มีไมโครคอนโทรลเลอร์ทุกตัวที่ใช้คุณสมบัติเหล่านี้


4
นอกจากนี้หากคุณกำลังใช้ uC ที่มี pull-in หรือ pull down อยู่ในตัวก็เป็นวิธีปฏิบัติที่ดีในการเปิดใช้งานหมุดที่ไม่ได้ใช้เพื่อให้อยู่ในสถานะที่รู้จัก
Matt Young

มันง่ายกว่าจริง ๆ สำหรับโครงการของฉันที่จะเชื่อมต่อสวิตช์กับกราวด์ ดังนั้นฉันจะลองใช้ตัวต้านทานแบบดึงขึ้น ขอบคุณ!
ฟองน้ำบ๊อบ

2
ที่ดี! กลับมาอีกครั้งเมื่อคุณต้องการถามเราเกี่ยวกับ "switch bounce" :)
gbarry

ปรากฎว่า Arduino จะทำการดึงโดยอัตโนมัติ ฉันไม่แน่ใจ แต่ในรหัสมีดิจิตอล "INPUT_PULLUP" และฉันไม่ต้องการตัวต้านทาน นั่นเป็นเรื่องง่าย นอกจากนี้เกี่ยวกับการตีกลับของสวิตช์ฉันสังเกตเห็นเมื่อฉันถูกตรวจสอบเอาท์พุทแบบอนุกรม ดังนั้นฉันเพิ่งเพิ่มความล่าช้า 3ms ในรหัส มันช่วยให้ฉันเดินทางไปที่ร้านอีกครั้ง :)
ฟองน้ำบ๊อบ

หากคุณลุยผ่านแผ่นข้อมูล ATMEGA คุณจะเห็นว่ามีบิตที่สามารถเขียนในการลงทะเบียนการกำหนดค่าเพื่อเปิดใช้งานการดึง ห้องสมุด Arduino นั้นช่วยให้สะดวกยิ่งขึ้น สำหรับการตีกลับให้เพิกเฉยอินพุต (นั้น) เป็นระยะเวลาหนึ่งซึ่งเป็นเรื่องปกติแม้ว่า 3ms อาจสั้นไปสักหน่อย หากการหน่วงเวลาบล็อกระบบทั้งหมดของคุณคุณอาจต้องทำให้มันสั้นถ้ามันละเว้นเฉพาะอินพุตนั้นเกินกว่าที่คุณจะทำได้นานขึ้นเล็กน้อยเนื่องจากการเปิดใช้งานอีกครั้งโดยเจตนาจะยังช้ากว่า
Chris Stratton

9

ใช่มันจะทำงานได้ตามที่คุณอธิบาย ที่เรียกว่าตัวต้านทานแบบดึงลงเพราะมั่นใจว่าเมื่อผู้ติดต่อเปิดอินพุตดิจิตอลอยู่ที่สถานะตรรกะ 0 (ต่ำ) โดยปกติคุณสามารถใช้ตัวต้านทาน 10 KΩเพื่อจุดประสงค์นี้


2

สิ่งนี้จะได้ผลและจะให้ตรรกะเชิงบวกแก่คุณ: ระดับสูง (ตรรกะ "1") เมื่อปิดสวิตช์

แต่อย่างที่ Chris บอกว่าสิ่งกลับด้านเป็นเรื่องธรรมดามากขึ้น: สวิตช์เชื่อมต่อกับกราวด์และตัวต้านทานแบบดึงขึ้น (แทนที่จะเป็นแบบดึงลง) ไปยังแหล่งจ่ายไฟ ตรรกะของคุณจะกลับด้าน: ตรรกะ "1" จะสอดคล้องกับสวิตช์เปิด

เหตุผลที่ดีสำหรับรุ่นพูลอัพคือไมโครคอนโทรลเลอร์ส่วนใหญ่มีส่วนร่วมและคุณสามารถเปิด / ปิดการใช้งานได้ตามความต้องการของคุณ ไมโครคอนโทรลเลอร์บางตัวยังมีพูลดาวน์ที่สามารถกำหนดค่าได้ แต่สิ่งเหล่านี้เป็นเรื่องธรรมดาน้อยกว่า

หากคุณต้องการแรงดึงภายนอก 10 kΩอาจจะคุ้มค่า อินพุตของไมโครคอนโทรลเลอร์สามารถมีกระแสรั่วไหลสูงถึง 1 µA และจากนั้น 10 kΩจะลดลงเล็กน้อย 10 mV ค่าที่ต่ำกว่านั้นเป็นไปได้อย่างแน่นอน แต่โปรดจำไว้ว่าพวกเขาจะมีกระแสไฟฟ้าที่มากขึ้นสู่พื้นดินเมื่อปิดสวิตช์ ตัวต้านทาน 1 kΩจะวาด 5 mA ที่ 5 V supply ซึ่งเป็นการสิ้นเปลืองพลังงานจริงๆ สำหรับ 10 kΩที่เพียง 500 µA สำหรับการใช้งานที่ใช้พลังงานต่ำมากคุณอาจเพิ่มค่าเป็น 100 kΩ แต่จำกระแสรั่วไหล 1 µA จะลดลง 100 mV!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.