มีตัวเปลี่ยนระดับ 5v-3.3v สองทิศทางหรือไม่


27

มี IC ใดที่เชื่อมต่อ 3.3V Input / Output กับ 5V Output / Input หรือไม่ ฉันต้องการมันเป็นหลักสำหรับ Arduino Due แต่ถ้ามี IC แบบสองทิศทางที่ทำงานเหมือนมันจะยอดเยี่ยม

บางคนแนะนำให้ฉันใช้ไอซี SN74AHC125 และ CD4050 แต่ฉันไม่เข้าใจว่าพวกเขาทำงานอย่างไรหรือจะติดต่อกับพวกเขาอย่างไร


2
ช่วงความถี่ที่ต้องการคืออะไร
alexan_e

1
ตัวอย่างเช่นสมมติว่าฉันต้องการเชื่อมต่ออุปกรณ์ 5V เข้ากับ Arduino 3.3V ฉันไม่สามารถทราบได้ว่าจะเชื่อมต่อสัญญาณ 5V และอินพุต 3.3V อย่างไร แล้วเอาท์พุท 3.3V จาก aarduino ไปยังอุปกรณ์ 5V ล่ะ? ช่วงความถี่หมายถึงอะไร
3bdalla

1
ฉันไม่แน่ใจว่าฉันได้รับจุดของคุณฉันไม่ได้จัดการกับความถี่มาก่อนวัตถุประสงค์ของฉันสำหรับอุปกรณ์อิเล็กทรอนิกส์ที่เรียบง่าย: |
3bdalla

3
sparkfun มีบอร์ดเรียกว่า 'เครื่องแปลงระดับ'
geometrikal

1
ฉันมักจะใช้ไอซีจากเครื่องมือเท็กซัส ซีรี่ส์ TXS และ TXB มีตัวแปลแรงดันไฟฟ้าสองทิศทาง (เช่น TXS0102 มีสองช่องทาง)
frarugi87

คำตอบ:


44

เครื่องมือแปลระดับสองทิศทางที่ง่ายมากสามารถทำได้ด้วย N-mosfet เดียว:

ป้อนคำอธิบายรูปภาพที่นี่

mosfet ที่ใช้ควรเป็นแบบจำลองที่มีค่า Vgs ต่ำเพื่อให้สามารถมี Rds-ON (ความต้านทาน ON) ที่ค่อนข้างต่ำที่ระดับแรงดันไฟฟ้าอินพุตที่ตั้งใจ (3.3v ในกรณีนี้)
BSS138ในตัวอย่างหนึ่งมันมี Vgs-th ของ 1.5v สูงสุดและถูกระบุว่ามีความต้านทานแหล่งที่มาของการระบายน้ำต่ำด้วยแรงดันไฟฟ้า Vgs ต่ำสุดที่ 2.5v (อาจต่ำกว่าเล็กน้อยเช่นกัน)

ตัวอย่างที่แสดงใช้การแปล 3.3v <-> 5v แต่ยังสามารถทำงานกับ 2.5v <-> 3.3v หรือ 2.5v <-> 5v แม้ระหว่าง 2.5v <-> 12v ช่วงจะถูก จำกัด ด้วยคุณสมบัติของ mosfet ที่ใช้เท่านั้น

วงจรที่แสดงนั้นเป็นไปตามบันทึกการใช้งานจาก NXP
AN97055 shifter ระดับสองทิศทางสำหรับ I2C บัสและระบบอื่น ๆ
รุ่นสั้นใหม่ใหม่: AN10441 เทคนิคการเลื่อนระดับในการออกแบบ I2C บัส

เมื่อ L1 สูง (3v3) หรือลอย R1 จะปิด mosfet ดังนั้น R2 จะดึงด้านระบายออกสูง (ถึง 5v)

เมื่อ L1 ถูกดึงต่ำ mosfet จะดำเนินการและท่อระบายน้ำจะลดลง

เมื่อระดับต่ำ (0) ถูกนำไปใช้กับ H1 จากนั้นแรงดันไฟฟ้านั้นจะถูกส่งผ่านไดโอดของวัสดุพิมพ์ไปทางด้านแหล่งที่มา (L1)

โปรดทราบว่าขนาดความต้านทานอาจมีผลต่อความเร็ว ( แหล่งภาพ )

ป้อนคำอธิบายรูปภาพที่นี่

โซลูชันทรานซิสเตอร์ทางเลือก ป้อนคำอธิบายรูปภาพที่นี่


บทความที่เกี่ยวข้องคุณอาจพบว่ามีประโยชน์:


11

เนื่องจากคำถามดูเหมือนว่าจะมุ่งเน้นไปที่ IC ที่ให้การเลื่อนระดับแบบสองทิศทางพิจารณาชิ้นส่วนตระกูล Texas Instruments TXB010x: TXB0102มี 2 ​​ช่องสัญญาณTXB0104มี 4 ช่องและTXB0108มี 8 ช่อง

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

การสลับความเร็วสูงถึง 10 MHz ทำงานได้อย่างน่าเชื่อถือ ความเร็วสูงสุดทางทฤษฎีอาจสูงกว่า - เอกสารข้อมูลไม่ชัดเจนเกี่ยวกับเรื่องนี้จากสิ่งที่ฉันสามารถพิจารณาได้

ฉันมี TXB0108 ทำงานระหว่าง Launchpad 3.6 มิลลิวินาที MSP430 กับ Arduino 5 โวลต์นาโนดังนั้นกรณีการใช้คำถามจะครอบคลุม

เพื่อจุดประสงค์ในการทดลองใช้ Adafruit นำเสนอโมดูลที่สร้างไว้ล่วงหน้าพร้อมกับ TXB0108ซึ่งช่วยให้คุณไม่ต้องลำบากในการบัดกรีชิ้นส่วน SMD อาจมีตัวเลือกที่คล้ายกันสำหรับ 0102 และ 0104 จากพวกเขาหรือคนอื่น ๆ

8-channel Bi-directional Logic Level Converter - TXB0108

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

ตัวเปลี่ยนระดับ I2C

โมดูลนี้จะใช้BSS138 MOSFETในวิธีการที่อธิบายไว้ในคำตอบโดย alexan_e แม้ว่ามันจะไม่ใช่ IC เดียวเช่นคำถามที่ถาม แต่อาจตอบสนองวัตถุประสงค์ที่ตั้งใจไว้ หรือจะสร้างวงจรนี้ด้วยตัวเองโดยใช้ MOSFET


+1 ดีมาก! ... ลิงก์ของคุณไปยัง TXB0102 เป็นจริงไปยัง TXS0102 ฉันไม่ได้กำหนดความแตกต่าง แต่มีการบันทึกไว้ในแผ่นข้อมูลของ TXS0102: "การใช้งานแอปพลิเคชันเป้าหมายหลักของมันคือการเชื่อมต่อกับไดรเวอร์แบบ open-drain บนข้อมูล I / O เช่น I2C หรือ 1-wire ซึ่งข้อมูล เป็นแบบสองทิศทางและไม่มีสัญญาณควบคุม TXS0102 ยังสามารถใช้ในแอพพลิเคชั่นที่มีไดรเวอร์ push-pull เชื่อมต่อกับ data I / Os แต่ TXB0102 อาจเป็นตัวเลือกที่ดีกว่าสำหรับแอพพลิเคชั่น push-pull ดังกล่าว " นี่คือลิงค์ที่แท้จริงไปยังTXB0102
Tut

@ut๊ะโอ๊ะขอบคุณนะ TXB0108 เป็นไปตามความต้องการของฉันเองดังนั้นสิ่งอื่น ๆ จึงเป็น "สิ่งที่น่ารู้" สำหรับฉัน :-)
Anindo Ghosh

10

อีกสิ่งหนึ่งที่คุณควรพิจารณาคือว่าคุณต้องการเลื่อนระดับจริงหรือไม่ ชิปหลายตัวมีพินอินพุต 5V ที่ทนต่อแม้ว่าจะทำงานที่แรงดันไฟฟ้าต่ำเช่น 3.3 ซีพียู atmega ยังตีความอะไรที่สูงกว่า 0.6 * Vcc หรือ 3V สำหรับ a rduino เป็นลอจิกสูงดังนั้นสัญญาณ 3.3 โวลต์สามารถขับ arduino pin โดยตรงโดยไม่มีการขยับระดับ

สมมติว่าคุณกำลังใช้ Arduino 5 โวลต์และจำเป็นต้องพูดคุยกับส่วน 3.3V หากส่วนนั้นมีอินพุตความทนทาน 5V (หลาย ๆ ตัวทำในปัจจุบัน) เพียงแค่เชื่อมต่อ em up และมันจะทำงาน หากสายแบบสองทิศทางของคุณคือการออกแบบตัวสะสมแบบเปิดเช่น i2c ที่อุปกรณ์ดึงเส้นต่ำเท่านั้นจากนั้นเพียงแนบตัวต้านทานแบบดึงขึ้นกับ 3.3V แทน 5V และสิ่งต่างๆจะใช้งานได้

มิฉะนั้นสิ่งที่คุณต้องทำก็คือตรวจสอบให้แน่ใจว่าเส้นไม่สูงเกิน 3.3V คุณสามารถทำเช่นนั้นได้ด้วยตัวต้านทานและซีเนอร์ใส่ตัวต้านทานลงบนเส้นอาร์ดิโน (ที่มา: repetae.net )แคลมป์ตัวต้านทานซีเนอร์

คุณอาจถูกล่อลวงให้ใช้ชีวิตอย่างมีอันตรายและเพียงแค่ใช้ตัวต้านทาน 10k และไม่มีอะไรอื่น เหตุผลที่การทำงาน (บางครั้ง!) นี้เกิดขึ้นเพราะมีไดโอดจับยึดอยู่ภายในชิปที่รับซึ่งจะแบ่งแรงดันส่วนเกินเป็น vcc หรือ 3.3V ไดโอดนี้จะไหม้ถ้าคุณพยายามดึงสาย 3.3V ทั้งหมดขึ้นไปถึง 5V ผ่าน (นอกเหนือจากความเสียหายใด ๆ ที่เกิดจากการดึงสายนั้นไปที่ 5V) แต่ด้วยตัวต้านทานที่กระแสไม่ไหลมากและสมมติว่าสาย 3.3V ของคุณ มีภาระที่ไม่น่ารำคาญกับมันมันจะไม่เปลี่ยนระดับของสายไฟของคุณอย่างมีนัยสำคัญ แต่มีจำนวนมาก caveats โดยทั่วไปแล้วอย่าทำอย่างนี้จนกว่าคุณจะมีรถบัส 3.3V ในท้องถิ่นที่แยกได้และจริง ๆ ไม่สามารถสำรองสองเซ็นต์พิเศษสำหรับซีเนอร์ได้ ฉันพูดถึงมันเพียงเพราะคุณจะเห็นมันในแผนงานสำหรับสิ่งสกปรกฝ่าวงล้อมราคาถูกที่คุณได้รับบนอีเบย์และอาจถูกล่อลวงให้คัดลอก อย่าปล่อยให้มันผ่านเขียงไปในการออกแบบการผลิต :)

แก้ไขเพิ่งสังเกตว่าคุณกำลังใช้ Arduino 3.3V ที่ใหม่กว่าดังนั้นเพียงย้อนกลับไปที่สิ่งที่ฉันกล่าวไว้ข้างต้นเคล็ดลับตัวต้านทานซีเนอร์จะยังคงทำงานแม้ว่าจะเห็นได้ว่าสาย i / o บางตัวในรุ่นต่อไปอาจมีความทนทาน 5v บนฟอรัม teensy 3.1 ยังเป็นบอร์ด ARM ตัวเล็ก ๆ ที่มีหมุดความทนทาน 5V ทั้งหมดและมีค่าใช้จ่ายน้อยกว่าครึ่งหนึ่งของ IMHO ที่ได้รับการออกแบบมาให้ดีกว่านี้และที่http://www.pjrc.com/store/teensy31.html


3

จากราคาถูก [เอ้อ?] แผนกการแก้ปัญหาที่ FET (จากคำตอบที่ได้รับการยอมรับขึ้นอยู่กับ appnote NXP) ที่สามารถถูกแทนที่ด้วย BJT และกีไดโอดในขณะที่Silicon Labs AN883 แผนผังของพวกเขาค่อนข้างซับซ้อนกับสิ่งอื่น ๆ ดังนั้นฉันจึงแยกบิตที่สำคัญที่นี่และ reoriented ดังนั้นจึงดูเหมือนว่าในคำตอบที่ได้รับการยอมรับสำหรับการเปรียบเทียบง่ายของสองแผนงาน:

ป้อนคำอธิบายรูปภาพที่นี่

BJT ไม่แปลต่ำ> การทิศทางสูงเท่านั้น ... ตรงตามที่กล่าวไว้ในระดับทรานซิสเตอร์เดี่ยวขึ้นจำแลง Schottky แทนที่ body diode ของ FET สำหรับการแปลสูง -> ต่ำ

ด้านล่างคือการซูมในขอบเขตการวัดสำหรับนักแปล 3.3 <-> 1.8V พวกเขายังเสนอแผนผังนี้สำหรับการแปล 5 <-> 1.8V เป็นต้น 5 เมื่อทำการแปล 3.3 <-> 1.8V MMBT3904 มีเพียง 150mV (ความอิ่มตัว) ลดลง ไดโอด BAS40 มีการลดลง 350mV ในทิศทางตรงกันข้าม ออฟเซ็ตเหล่านี้ส่งผลกระทบต่อเอาต์พุตระดับต่ำตรรกะบนด้านต่ำและด้านสูงของนักแปลตามลำดับ

ป้อนคำอธิบายรูปภาพที่นี่

พวกเขามีอุปกรณ์ CMOS ที่ดีทั้งสองด้านดังนั้นความต้านทานอินพุตจึงไม่เป็นปัญหามากนัก ไม่มีการย่อยสลาย / หักล้างที่มองเห็นได้ของอัตรากำไรขั้นต้นตรรกะสูงในการติดตาม 1V / div ของพวกเขาดังนั้นฉันจึงไม่ได้ใส่ใจรวมถึงที่นี่ ความต้านทานอินพุตของอุปกรณ์ของพวกเขาอย่างน้อย 1Mohm จากสิ่งที่ฉันสามารถบอกได้จากการจำลอง อัตรากำไรขั้นต้นสูงตรรกะเริ่มลดลงต่ำกว่า 100K ความต้านทานอินพุตหรือดังนั้น

นอกจากนี้พวกเขายังแนะนำนักแปลที่ใช้ BJT เพียงไม่เกิน 300KHz หรือมากกว่านั้น

ฉันไม่แน่ใจว่าวิธีการเหล่านี้มีราคาถูกกว่าในทางปฏิบัติ FET หรือกี + BJT ... แต่คนนี้อย่างแน่นอนส่วนความต้องการมากขึ้น ... ถ้าคุณใช้ไดโอดทรานซิสเตอร์ + แพคเกจเหล่านั้นซึ่งทำอยู่เช่นPZMT1101 แต่คุณต้องการตัวต้านทาน 3 ตัว


อะไรคือความคาดหวังของการดึง / การใช้พลังงานในปัจจุบันของวิธีนี้เมื่อเปรียบเทียบกับวิธีที่ใช้ FET
KyranF

@KyranF: ฉันไม่ได้เปรียบเทียบพวกเขา แต่ถ้าคุณกังวลว่ามันจะไม่เป็นสีดอกกุหลาบเพราะ pull-ups รุ่น CMOS พลังงานต่ำดูเหมือนm.eet.com/media/1103155/Fig2.gifนั่นมาจากeetimes.com/document.asp?doc_id=1231111ซึ่งเป็นบทความที่ดีเมื่อเปรียบเทียบวิธีการต่าง ๆ
Fizz

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

@ KyranF: ฉันได้ดูมันในแบบจำลอง: ทรานซิสเตอร์และไดโอดจะกระจายพลังงาน uW ในขณะที่ตัวต้านทานกระจายไป mW ที่จริงแล้ว BJT จะกระจายประมาณ 100uW, diode 1uW FET หรือ BJT จะไม่สำคัญที่นี่ ... ตัวต้านทานที่มีเส้นทางสู่พื้นดินสำหรับการกระจายแบบคงที่คือสิ่งที่สำคัญ นี่คือด้วยความต้านทานอินพุต 1Meg
Fizz

@KyranF: ฉันลองใช้รุ่น BSS138LT1 ของ ON แต่มันให้พลังงานเฉลี่ยในเชิงลบใน LTspice (ของ -63uW) ... ดังนั้นฉันคิดว่าแบบจำลองของพวกมันอาจมีปัญหา ขยะใน ... ขยะหมด นอกจากนี้มันเริ่มสั่น (ที่ความถี่สูงกว่าสัญญาณมาก) เมื่อขับจากด้านสูง มันเป็นโมเดล subckt มากกว่า MOS แบบง่าย ๆ ดังนั้นจึงยากที่จะทราบว่าเกิดอะไรขึ้น [ดำเนินการต่อ]
Fizz

2

ก็มีอยู่มากมาย คุณต้องระบุความถี่สูงสุดของคุณจำนวนบิตที่คุณต้องการ ฯลฯ ในระยะสั้นคุณสามารถใช้ IC นักแปลระดับแรงดันไฟฟ้าใด ๆ Texas Instruments มีเครื่องมือการเลือกที่ประณีตสำหรับจุดประสงค์เดียวกัน: http://www.ti.com/logic/docs/translationresults.tsp?sectionId=458&voltageIn=5.0&searchDirection=2&voltageOut=3.3#voltintf


2

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



1

ทางออกที่ง่ายที่สุดคือการเรียกใช้วงจรทั้งหมดของคุณที่ 3.3V ชิป HC จะทำงานอย่างมีความสุขในระดับนั้น

เมื่อเป็นไปไม่ได้คุณสามารถทำสิ่งต่าง ๆ ได้ง่ายขึ้นเมื่อคุณ จำกัด ตัวเองในทิศทางเดียว ชิป HCT ที่ 5V จะยอมรับระดับ 3.3V ได้ดีและตัวแบ่งความต้านทานสองตัวที่เรียบง่ายสามารถลด 5V ถึง 3.3V uC บางตัวทนทานต่อ 5V บนพินดังนั้นคุณไม่จำเป็นต้องใช้ตัวแบ่ง และถ้าคุณใส่ 5V แบบดึงลงบนพินและสลับระหว่างกราวด์และแบบเปิด (= อินพุต) คุณจะมีเอาต์พุต 0-5V ที่ผ่านได้

สำหรับการเชื่อมต่อบัสแบบเปิดสะสม (I2C, ดัลลัส 1 สาย) เคล็ดลับ BS138 เป็นวิธีที่จะไป มีชิปขนาดเล็กสำหรับ I2C ที่วาง FET สองตัวในที่อยู่อาศัยเดียว (PCA9306 ฯลฯ )

แต่ถ้าคุณต้องการการแปลระดับ bi-drection จริง ๆ : มีชิพดังกล่าวอยู่ให้ตรวจสอบตัวอย่างเช่น TXB0108


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