Digital Read Serial tutorial - การคำนวณค่าตัวต้านทาน


9

บทแนะนำเกี่ยวกับArduino Digital Read Serialจะแนะนำคุณเกี่ยวกับการต่อสายไฟของปุ่มต่างๆ คำถามของฉันอยู่กึ่งกลางตัวต้านทาน

ทำไมตัวต้านทานจำเป็น?

ฉันคิดว่าฉันเข้าใจสิ่งนี้ แต่แก้ไขฉันถ้าฉันผิด เพื่อให้แน่ใจว่าพินอินพุตอ่านสัญญาณต่ำและไม่ลอยเราควรเชื่อมต่อพินกับกราวด์เมื่อไม่ได้กดปุ่ม เมื่อกดปุ่มเราจะมีสัญญาณ 5V ไหลไปทั้งขาและต่อลงดิน กฎแรงดันไฟฟ้าของ Kirchhoff ระบุว่าแรงดันไฟฟ้ารวมในลูปปิดต้องเท่ากับศูนย์ดังนั้นเราต้องจัดการกับ 5V นี้ที่ไหลโดยตรงกับพื้น นั่นคือเหตุผลที่เราใส่ตัวต้านทานระหว่างปุ่มกับกราวด์

ค่าตัวต้านทานถูกเลือกอย่างไร?

นี่คือสิ่งที่ฉันไม่ชัดเจน กฎของโอห์มระบุว่า ...

resistance = voltage / current

นี่เป็นแหล่งจ่ายไฟ 5V และสเป็คArduino Unoบอกว่าพินจ่ายกระแสไฟ 40 mA ดังนั้น..

resistance = 5V / 0.04A = 125 Ohms

ในบทแนะนำการอ่าน Digital Read Serial เหตุใดเราจึงมีตัวต้านทาน 10K Ohms นั่นเป็นวิธีที่มากไปใช่ไหม? ซึ่งนำไปสู่คำถามอื่น: คุณเคยใส่แนวต้านมากเกินไปถ้าเป้าหมายเดียวของคุณคือกำจัดแรงดันไฟฟ้า?

ขอบคุณล่วงหน้าสำหรับข้อเสนอแนะใด ๆ !

คำตอบ:


6

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

หากไม่มีความต้านทานเกินกว่าหมุดป้อนข้อมูลจะอ่านตรงกลางของเส้นทางโดยตรงที่ไม่ได้ให้ประโยชน์ในเชิงบวกหรือเชิงลบ นอกเหนือจากช่วงสั้น ๆ โดยตรงที่จะเกิดขึ้นซึ่งรัฐอาร์ดูโนนั้นจะอ่านฉันสงสัยว่าอาจเป็นแบบสุ่มหรือคุณสมบัติบางอย่างของแหล่งจ่ายไฟ; มันอาจจะยังอ่านพื้นดิน

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

ขนาดที่แน่นอนของตัวต้านทานมีผลเพียงเล็กน้อย เล็กเกินไปและคุณสูญเสียกระแสไฟ แต่ความต้านทานมากเกินไปเพียงตัดการเชื่อมต่อของพื้นดินอีกครั้งอย่างมีประสิทธิภาพ มีค่าที่หลากหลายมากซึ่งจะทำงานได้ดีระหว่างค่าเหล่านั้น

ฉันต้องการที่จะทราบว่าเมื่อพิน arduino ถูกตั้งค่าเป็นโหมดอินพุตมันจะไม่จ่ายกระแสได้อย่างมีประสิทธิภาพ มันสามารถ moddeled อยู่ในซีรีส์ที่มีตัวต้านทาน 100 megaOhm ดูhttp://arduino.cc/en/Tutorial/DigitalPins สำหรับรายละเอียด


2
สิ่งสำคัญที่นี่คือถ้าคุณไม่ได้ใช้ตัวต้านทานเมื่อปิดสวิตช์คุณได้ลด +5 โวลต์ลงกราวด์ สั้น ๆ ตรงจะเกินแหล่งจ่ายไฟและเดินทางวงจรป้องกันในแหล่งจ่ายไฟทำให้ Arduino ทั้งหมดจะปิดตัวลง คุณต้องการตัวต้านทานที่มีความต้านทานสูงพอที่จะทำให้กระแสไฟไหลต่ำ ฉันมักจะใช้ตัวต้านทาน 100k ซึ่งมีมากมายที่จะดึงสัญญาณอินพุทเป็น 0 โวลต์เมื่อสวิตช์เปิดและอนุญาตให้กระแสไหลไหลเพียง 0.00005 pas ซึ่งเป็นปริมาณกระแสเล็กน้อย ตัวต้านทาน 10k ทำงานได้เช่นกัน แต่นั่นทำให้กระแสไหลได้มากขึ้น 10 เท่า
Duncan C

2

ทำไมตัวต้านทานจำเป็น?

อินพุต Arduino มีความต้านทานสูงมาก datasheed ของ Atmega328 บอกว่า 100 MOhm สำหรับ ADC ค่าสูงเช่นนี้ดี แต่ก็มีข้อเสียเปรียบในการจัดการกับผลกระทบของกาฝาก (ความต้านทานการเหนี่ยวนำและความจุ) เอฟเฟกต์ดังกล่าวสามารถใช้เป็นเซ็นเซอร์ความจุได้

ค่าตัวต้านทานถูกเลือกอย่างไร?

ตัวต้านทานต้องมีค่าตามอำเภอใจซึ่งมีขนาดเล็กกว่าความต้านทานอินพุต 10k ขึ้นไปเป็นสิ่งที่ดีสำหรับการปิดใช้งานการรั่วไหลของอินพุต

อย่างไรก็ตามคุณสามารถออกจากตัวต้านทานเมื่อคุณใช้ตัวต้านทานแบบดึงขึ้นภายใน ในกรณีนี้คุณจัดการกับตรรกะเชิงลบ:

pinMode(3, INPUT);
digitalWrite(3, HIGH);

ที่ขา 3 คุณจะวัดได้HIGHและปุ่มจะต้องเชื่อมต่อกับหมุดและพื้น ตัวต้านทานการดึง I / 0 ภายในมีค่า 50k


1

คุณได้รับคำตอบที่ดีมาสองข้อแล้วว่าทำไมจึงต้องใช้ตัวต้านทานแบบดึงลง

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

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

จากนั้นคุณสามารถเชื่อมต่อสวิตช์ของคุณกับกราวด์แทนที่จะเป็น + 5V จากนั้นคุณต้องเปลี่ยนลอจิกรหัสของคุณเพื่อรักษาค่า HIGH ที่ไม่ได้กดและค่า LOW ที่ถูกกด สิ่งนี้ช่วยให้คุณลดความซับซ้อนของการเดินสายเพียงเล็กน้อยเนื่องจากคุณไม่ต้องการตัวต้านทานภายนอก

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