GPIO: ทำไมปุ่ม wire ถึงกราวด์มากกว่า + 3.3v


14

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

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


หมายเหตุ: เมื่อฉันพูดว่า 'pull up resistor' ฉันหมายถึงตัวต้านทานภายนอกแบบฟิสิคัลหรือตัวต้านทาน pull-up ภายในกำหนดค่าในรหัส
howard10

คำตอบ:


19

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

  • การดึงพิน LOW พร้อมตัวต้านทานไปยัง GND มีค่าใช้จ่าย 0 วัตต์
  • การดึงพิน HIGH พร้อมตัวต้านทานเป็น + Vcc จะใช้พลังงาน

ในวงจรที่ซับซ้อนหรือวงจรที่ต้องใช้แบตเตอรี่พลังงานนี้มีค่ามาก

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


3
การดึงขึ้นหรือลงด้วยตัวต้านทานจะใช้พลังงานอย่างไร กระแสจะไหลไปยังอินพุตอิมพีแดนซ์ที่สูงมากบน Pi ซึ่งจะลดกระแสใด ๆ ลงไปที่ sub-microAmps ซึ่งเป็นพลังงานไมโครวัตต์
stefandz

ตกลง แต่แค่บอกฉันว่าฉันผิด การดึงพินลงซึ่งเป็นการ0v = 0wattsใช้งาน แต่การดึงพินขึ้น>0watts- ไม่ว่าจะเป็นขนาดเล็กไมโครพันนาโนใดก็ตาม ดังที่ได้กล่าวไปแล้วในเรื่องการใช้พลังงานแบตเตอรี่นาโนวัตต์ทุกอันจะช่วยได้ แต่ตามคำตอบแล้วที่นี่ ... บน USB มันไม่มีความหมายอะไรเลย ฉันเข้าใจผิด
Piotr Kula

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

หากคุณต้องออกแบบอุปกรณ์ฝังตัวที่ทำงานด้วยแบตเตอรี่ 2AA และลูกค้าต้องการอุปกรณ์นั้นอย่างน้อย 12 เดือน และคุณต้องดึง GPIO ขึ้น / ลง ซึ่งคุณจะใช้เพื่อประหยัดพลังงานมากที่สุด (เรากำลังพูดถึงการจัดการขนาดเล็กที่นี่)
Piotr Kula

4
สำหรับสิ่งที่คุ้มค่าฉันได้ทำการวัดบางอย่างเกี่ยวกับเรื่องนี้ - และการชนะแบบดึงลง (สำหรับการใช้พลังงาน) แต่เพียงเท่านั้น 10k pullup เป็น 3.3V = 9fW (ใช่ femtowatts) - 10k pulldown to ground = 5fW สิ่งนี้ไม่ได้แม้แต่ช่วยประหยัดพื้นที่ใช้งานแบตเตอรี่สักนิด
stefandz

10

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

อย่างไรก็ตามเหตุผลเหล่านี้ไม่เกี่ยวข้องกับการใช้งานอดิเรกของ Raspberry Pi ใช้สิ่งที่เหมาะสมกับคุณ

หากคุณกำลังทำผลิตภัณฑ์เชิงพาณิชย์หรือต้องการให้การออกแบบของคุณดีขึ้นเล็กน้อยคุณจะต้องเลือก pull-ups พร้อมสวิตช์กราวด์ด้วยเหตุผลเชิงปฏิบัติดังต่อไปนี้:

  • สายกราวด์ยาวมีความเสี่ยงต่อการแผ่รังสี EMI / EMC น้อยกว่าการเชื่อมต่อกับพลังงาน
  • การต่อสายดินบางอย่างและการหาจุดกราวด์เพื่อเชื่อมต่อนั้นง่ายกว่าสายไฟ
  • หากสวิทช์หรือสายไฟโดยปกติวางอยู่ห่างจากวงจรบางอย่างเสียหายและทำให้กางเกงขาสั้นลวดหรือชิ้นส่วนสวิตช์ภายในกับเคสหรือผู้ใช้ไม่มีอันตรายใด ๆ เกิดขึ้น - ทั้งหมดอยู่ที่พื้น

2

BMC GPIO มีความต้านทาน pull-up ภายในซึ่งเปิดใช้งานเมื่อตั้งโปรแกรมเป็นอินพุตแม้ว่าจะไม่เป็นอันตราย แต่อย่างใด

เป็นเรื่องยากที่จะเชื่อมต่อพิน GPIO โดยตรงกับ 3V3 หรือ GND GPIO นั้นเป็นแบบสองทิศทางและหากตั้งโปรแกรมเป็นอินพุตสิ่งนี้จะไม่ทำให้เกิดปัญหา ในทางกลับกันหากตั้งโปรแกรมเป็นเอาต์พุตจะทำให้เกิดกระแสไฟฟ้ามากเกินไปที่จะวาด

การออกแบบที่ดี (ปลอดภัย) จะใช้ตัวต้านทานอนุกรม (1 kΩ) ในซีรีย์ที่มีปุ่มกดเพื่อ จำกัด กระแส สำหรับเหตุผลที่ทำโดย Adam Davis จะดีกว่าในการเชื่อมต่อปุ่มกดกับกราวด์และค้นหาตัวต้านทานป้องกันใกล้กับ GPIO pin


ปัญหาเดียวคือในระหว่างเฟสการบู๊ต 1-3 พินเหล่านี้ลอย (การส่งมอบ GPU ไปยัง CPU) จากนั้นในเฟส 4 ระหว่างการบู๊ต Linux เคอร์เนล PIN จะถูกตั้งค่าเป็นสถานะที่ถูกต้อง สิ่งนี้อาจทำให้เกิดปัญหาร้ายแรงกับประตูที่รอลอจิก ดังนั้นจึงแนะนำให้ดึงลงมาเพื่อให้ช่วงเวลาลอยตัวในระหว่างการบู๊ตไม่ได้ทำให้วงจรของคุณเป็นไปตามหลักจิต!
Piotr Kula

1

ฉันไม่คิดว่าจะมีเหตุผลอะไรที่จะชอบอีกฝ่ายใน RPi คนส่วนใหญ่อาจเป็นเพียงการคัดลอกหรือย้ายวงจรที่พวกเขาได้เห็นที่อื่น

เมื่อเชื่อมต่อวงจร (ด้วยสายไฟหรือ PCB) คุณสามารถเลือกได้ว่าจะสะดวกกว่าและแปลให้ถูกต้องในซอฟต์แวร์ของคุณ


0

ในสมัยก่อนของ TTL มันใช้กระแสมากขึ้นในการดึงพินต่ำกว่าเพื่อดึงสูง ดังนั้นตัวต้านทานแบบดึงขึ้นอาจเป็นตัวต้านทานที่สูงกว่า มันไม่สำคัญกับ CMOS ที่ทันสมัย ​​แต่นิสัยเก่าตายยาก


-1

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

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