คุณกำลังทำงานกับ I2C บัสใช่ไหม ฉันจะเรียกเส้นบนด้าน 3.3 วีsda3และSCL3 ; สองบรรทัดที่ด้าน 5.0 V sda5และSCL5
" MOSFETและตัวต้านทานสองตัว"
ดังที่ todbot และ cyphunk ได้ชี้ให้เห็นแล้ววงจร "MOSFET และตัวต้านทานสองตัว" ที่อธิบายไว้ในบทช่วยสอน "SparkFun" การเชื่อมต่อเซนเซอร์ "ทำในสิ่งที่คุณต้องการ: การไหลของข้อมูลเชิงตรรกะนั้นสมมาตร - การไหลของข้อมูลทั้งสองทิศทาง ด้านต่ำถึงด้านสูงและมิลลิวินาทีในภายหลังจากด้านสูงไปด้านล่าง
หมายเหตุ "จะไม่ทำงานในทิศทางอื่น" ชี้ให้เห็นว่าวงจรนั้นไม่สมมาตรทางกายภาพ: อุปกรณ์ 5.0 V I²Cของคุณจะต้องเชื่อมต่อกับ "ด้านสูง" อุปกรณ์ 3.3 V ของคุณจะต้องเชื่อมต่อกับ "ด้านต่ำ" เนื่องจากวงจรมีความไม่สมดุลทางกายภาพจึงไม่ชัดเจนว่าเป็นสมมาตรเชิงตรรกะ (บทช่วยสอนนั้นเชื่อมโยงกับบันทึกย่อของแอปพลิเคชัน AN97055 ที่แสดงวงจร "MOSFET สองตัวและตัวต้านทานสองตัว" ที่มีความสมมาตรทางร่างกาย
บรรทัดที่มีป้ายกำกับ "TX" บนตัวแปลง SparkFunซึ่งโปสเตอร์ต้นฉบับชี้ให้เห็น - ใช้วงจรแบบสองทิศทาง "MOSFET และตัวต้านทานสองตัว" ดังนั้นเชื่อมต่อ SDA3 กับ TX_LV, SDA5 ถึง TX_HV, SCL3 ถึง TX2_LV, และ SCL5 ถึง TX2_HV
จากนั้นข้อมูลจะไหลทั้งสองทิศทาง: เมื่ออุปกรณ์ด้านล่างของคุณขับหมุด SDA3 และ SCL3 แรงดันไฟฟ้าที่เหมาะสมจะเห็นได้ในหมุด SDA5 และ SCL5 ระดับสูง มิลลิวินาทีหลังจากนั้นเมื่ออุปกรณ์ระดับสูงขับหมุด SDA5 และ SCL5 แรงดันไฟฟ้าที่เหมาะสมจะเห็นบนหมุด SDA3 และ SCL3
(ไม่สอดคล้องกันบรรทัดที่มีป้ายกำกับ "RX" บนบอร์ดตัวแปลงนั้นจะส่งข้อมูลในทิศทางแรงดันสูงถึงแรงดันต่ำเท่านั้น)
optoisolator แบบสองทิศทาง
เนื่องจากคุณกำลังใช้I²Cคุณอาจจะสนใจในoptoisolator สองทิศทางสำหรับI²C วงจร optoisolator สองตัวนั้นมีราคาแพงกว่าและช้ากว่าวงจร "MOSFET และตัวต้านทานสองตัว" แต่ทำงานเมื่อด้านหนึ่งมีสัญญาณที่แกว่งระหว่าง 0 V ถึง 5.0 V และอีกด้านหนึ่งมีสัญญาณที่แกว่งระหว่าง 500.0 V และ 505.0 โวลต์
วงจรสองออปโตโอเลเตอร์นั้นมีความสมมาตรทางร่างกายอย่างสมบูรณ์ - และสมมาตรทางตรรกะ - มันไม่สำคัญว่าด้านใดเป็นด้านสูงและด้านใดเป็นด้านต่ำ