ข่าวดี! มันจะถูก! :-)
ตัวแบ่งความต้านทานที่เรียบง่ายจะนำ 12 V ลงไปที่ 5 V ที่ Arduino สามารถย่อยได้ สามารถคำนวณแรงดันเอาท์พุทเป็น
VO UT= R 2R 1 + R 2Vผมยังไม่มีข้อความ
ค่าตัวต้านทานในช่วง 10 kΩเป็นตัวเลือกที่ดี หาก R2 ของคุณคือ 10 kΩดังนั้น R1 ควรเป็น 14 kΩ ตอนนี้ 14 kΩไม่ใช่ค่ามาตรฐาน แต่ 15 kΩคือ แรงดันไฟฟ้าขาเข้าของคุณจะเป็น 4.8 V แทน 5 V แต่ Arduino จะเห็นว่ายังอยู่ในระดับสูง นอกจากนี้คุณยังมีพื้นที่เหลือเฟือเล็กน้อยในกรณีที่ 12 V ควรสูงเกินไป แม้ 18 kΩจะยังให้คุณสูงพอ 4.3 V แต่แล้วคุณต้องเริ่มคิดเกี่ยวกับ 12 V บิตต่ำเกินไป แรงดันไฟฟ้าจะยังคงสูงหรือไม่? ฉันจะติดกับ 15 kΩ
แก้ไข
คุณพูดถึงสภาพแวดล้อมของยานยนต์และจากนั้นคุณต้องการการปกป้องเป็นพิเศษ 12 โวลต์ของรถไม่เคยมีขนาด 12 โวลต์ แต่ส่วนใหญ่จะสูงกว่าโดยมียอดเขาหลายโวลต์เหนือ 12 โวลต์ (จริง ๆ แล้วจะเป็น 12.9 โวลต์ที่ 2.15 V ต่อเซลล์) คุณสามารถวางซีเนอร์ 5 V ไดโอดขนานกับ R2 และสิ่งนี้ควรตัดแรงดันไฟฟ้าใด ๆ ที่สูงกว่าของ 5 ซีเนอร์ แต่แรงดันซีเนอร์จะแปรผันตามกระแสไฟฟ้าและที่กระแสอินพุตต่ำตัวต้านทานจะให้คุณตัดที่แรงดันไฟฟ้าต่ำ ทางออกที่ดีกว่าคือการมี Schottky diode ระหว่างอินพุตของ Arduino และแหล่งจ่ายไฟ 5 V จากนั้นแรงดันไฟฟ้าอินพุตใด ๆ ที่สูงกว่าประมาณ 5.2 V จะทำให้ Schottky diode conductor และแรงดันไฟฟ้าอินพุตจะถูก จำกัด ไว้ที่ 5.2 V คุณจำเป็นต้องมี Schottky diode สำหรับสิ่งนี้จริง ๆ แล้ว PN diode จะมี 0
ออพโตคัป
เปลอร์ที่ดีกว่าของ Michael เป็นทางเลือกที่ดีแม้ว่าจะมีราคาแพงกว่าเล็กน้อย คุณมักจะใช้ออปโตคัปเปลอร์เพื่อแยกอินพุตจากเอาต์พุต แต่คุณสามารถใช้เพื่อป้องกันอินพุตเหมือนที่คุณต้องการที่นี่
วิธีการทำงาน: ไฟกระแสอินพุท LED อินฟราเรดอินฟราเรดภายในซึ่งเป็นสาเหตุของกระแสไฟขาออกผ่านโฟโต้ทรานซิสเตอร์ อัตราส่วนระหว่างอินพุตและเอาต์พุตปัจจุบันเรียกว่าCTRสำหรับอัตราส่วนการโอนปัจจุบัน CNY17มี CTR ต่ำสุด 40% ซึ่งหมายความว่าคุณต้องป้อนข้อมูล mA 10 สำหรับ 4 mA เอาท์พุท ไปหาอินพุต 10 mA กัน ดังนั้น R1 ควรเป็น (12 V - 1.5 V) / 10 mA = 1 kΩ ตัวต้านทานเอาต์พุตจะต้องทำให้เกิดการตก 5 V ที่ 4 mA จากนั้นควรเป็น 5 V / 4 mA = 1250 Ω มันจะดีกว่าถ้ามีค่าสูงกว่านี้แรงดันไฟฟ้าจะไม่ลดลงมากกว่า 5 V 4.7 kΩจะ จำกัด กระแสที่ประมาณ 1 mA
Vcc เป็นตัวจ่ายไฟ 5 V ของ Arduino Vout ไปที่อินพุตของ Arduino โปรดทราบว่าอินพุตจะถูก inversed: จะต่ำหากมี 12 V อยู่สูงเมื่อไม่มี หากคุณไม่ต้องการคุณสามารถสลับตำแหน่งของเอาต์พุตของออปโตคัปเปลอร์และตัวต้านทานแบบดึงขึ้นได้
แก้ไข 2
วิธีแก้ปัญหา optocoupler ไม่สามารถแก้ไขปัญหาแรงดันไฟฟ้าเกินได้อย่างไร ตัวแบ่งความต้านทานคืออัตราส่วน: แรงดันไฟฟ้าขาออกเป็นอัตราส่วนปันส่วนคงที่ของอินพุต หากคุณคำนวณ 5 V จาก 12 V แล้ว 24 V ในจะให้ 10 V ไม่เป็นไรดังนั้นไดโอดป้องกัน
ในวงจร optocoupler คุณจะเห็นว่าด้านขวาซึ่งเชื่อมต่อกับขาอินพุตของ Arduino ไม่มีแรงดันไฟฟ้าใด ๆ สูงกว่า 5 V เลย หากเปิดใช้ออปโตคัปเปลอร์แล้วทรานซิสเตอร์จะดึงกระแสฉันใช้ 4 mA ในตัวอย่างด้านบน 1.2 kΩจะทำให้แรงดันตกที่ 4.8 V เนื่องจากกฎของโอห์ม (ความต้านทานกระแส = แรงดันปัจจุบัน) จากนั้นแรงดันเอาต์พุตจะเป็น 5 V (Vcc) - 4.8 V ผ่านตัวต้านทาน = 0.2 V นั่นคือระดับต่ำ หากกระแสไฟฟ้าจะลดลงแรงดันไฟฟ้าตกก็จะเล็กลงเช่นกันและแรงดันไฟฟ้าขาออกจะเพิ่มขึ้น ตัวอย่างเช่นกระแส 1 mA จะทำให้เกิดการตก 1.2 V และเอาต์พุตจะเป็น 5 V - 1.2 V = 3.8 V กระแสขั้นต่ำเป็นศูนย์ จากนั้นคุณไม่มีแรงดันไฟฟ้าข้ามตัวต้านทานและเอาต์พุตจะเป็น 5 V นั่นคือค่าสูงสุดนั่นคือ '
เกิดอะไรขึ้นถ้าแรงดันไฟฟ้าขาเข้าสูงเกินไป? คุณบังเอิญเชื่อมต่อแบตเตอรี่ 24 V แทน 12 V จากนั้นกระแสไฟ LED จะเพิ่มเป็นสองเท่าในรูปแบบ 10 mA ถึง 20 mA CTR 40% จะทำให้เกิดกระแสเอาต์พุต 8 mA แทนการคำนวณ 4 mA 8 mA ผ่านตัวต้านทาน 1.2 kΩจะลดลง 9.6 V แต่จากอุปทาน 5 V ที่จะเป็นลบและเป็นไปไม่ได้ คุณไม่สามารถลงต่ำกว่า 0 V ได้ที่นี่ ดังนั้นในขณะที่ออปโตคัปเปลอร์ต้องการวาด 8 mA มากตัวต้านทานจะถูก จำกัด กระแสสูงสุดที่ผ่านคือเมื่อเต็ม 5 V เอาต์พุตจะเป็น 0 V จริงๆและกระแส 5 V / 1.2 kΩ = 4.2 mA ดังนั้นแหล่งจ่ายไฟใด ๆ ก็ตามที่คุณแนบเอาท์พุทกระแสจะไม่สูงกว่านั้นและแรงดันไฟฟ้าจะอยู่ระหว่าง 0 V ถึง 5 V. ไม่ต้องการการป้องกันเพิ่มเติม
หากคุณคาดว่า overvoltage คุณจะต้องตรวจสอบว่า OPTOCOUPLER ของไฟ LED สามารถจัดการเพิ่มขึ้นในปัจจุบัน แต่ 20 mA จะไม่เป็นปัญหาสำหรับ optocouplers มากที่สุด (ที่พวกเขากำลังจัดอันดับมักที่ 50 mA สูงสุด) และนอกจากนั้นสำหรับคู่แรงดันไฟฟ้าขาเข้าซึ่งอาจจะไม่เกิดขึ้น IRL