ทำประตู XOR ออกจากทรานซิสเตอร์: 6 ขั้นตอน

ทำประตู XOR ออกจากทรานซิสเตอร์: 6 ขั้นตอน

สารบัญ:

Anonim

หรือประตูมีประโยชน์มาก แต่มีคุณลักษณะแปลก ๆ ที่สามารถทำงานได้ดี แต่ในบางแอปพลิเคชันอาจทำให้เกิดปัญหา นั่นคือความจริงที่ว่าถ้าทั้งสองอินพุทเป็นอินพุทนั้นก็เป็นอีกหนึ่ง หากเรามีแอปพลิเคชันที่เราไม่ต้องการสิ่งนี้บางทีเรากำลังสร้าง adder เราจะใช้สิ่งที่เรียกว่า Exclusive or Gate ซึ่งเป็นตัวย่อ XOR หรือ EOR

วัสดุ:

ขั้นตอนที่ 1: ออกแบบ

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

การปรับหนึ่งอย่างที่ฉันทำในวงจรสุดท้ายคือการสลับชุดค่าผสม AND / NOT สำหรับเกต NAND ซึ่งเป็นเพียงการกลับด้านและเกต วิธีการทำงานนี้จะชัดเจนในภายหลัง

ทีนี้ลองเขียนแผนผังที่เหมือนกัน แต่กับทรานซิสเตอร์และตัวต้านทาน ประเภทของทรานซิสเตอร์ที่ฉันใช้คือ 2N2222 BJT ซึ่งค่อนข้างธรรมดา (2N4401 และ 2N3904 ก็ใช้งานได้เช่นกัน) ฉันใช้ทรานซิสเตอร์ 6 ตัวตัวต้านทาน 3 20k โอห์มตัวต้านทาน 3 47k โอห์มตัวต้านทาน 1 510 โอห์มตัวต้านทานสองปุ่มกดและไฟ LED ฉันเลือกค่าตัวต้านทานเหล่านี้ตามแหล่งพลังงาน 5v ของฉันและ 0.1mA หรือกระแสต่ำสุด 0.0001A สำหรับ 2N2222 ถ้าคุณใช้กฎของโอห์มเพื่อคำนวณความต้านทานที่ถูกต้องกับพื้นสำหรับค่าเหล่านั้นคุณจะได้รับ 50,000 โอห์ม 47k ohms ใกล้พอสำหรับประตู NAND ด้านล่าง แต่ทำไมค่าที่ต่ำกว่าสำหรับเกต OR และอินพุตแรกของประตู AND ที่สอง? เหตุผลคือเนื่องจากตัวส่งของทรานซิสเตอร์ที่ประกอบขึ้นเป็นเกทหรือถูกยึดผ่านฐานของทรานซิสเตอร์ตัวอื่นดังนั้นจึงวิ่งผ่านตัวต้านทานตัวที่สองไม่ใช่โดยตรงกับกราวด์ (ตัวต้านทาน จำกัด ปัจจุบันของ LED มีค่าต่ำพอที่จะไม่สำคัญในการคำนวณนี้)

ขั้นตอนที่ 2: การเพิ่มทรานซิสเตอร์ปุ่มและ LED

ขั้นตอนที่ 3: การเพิ่มตัวต้านทาน

ขั้นตอนที่ 4: การเพิ่มสาย

วิธีที่ฉันเปิดเครื่องบอร์ดของฉันกำลังต่อรางไฟเข้ากับแหล่งจ่ายไฟสำหรับห้องปฏิบัติการซึ่งตั้งค่าไว้ที่ 5v และ 500mA สูงสุดในปัจจุบัน อินพุตชนิดเดียวกันสามารถทำได้โดยเชื่อมต่อกำลังไฟเข้ากับขา 5V และพินของ Arduino แต่จริงๆแล้วเป็นแหล่งจ่ายไฟ 5v ใช้งานได้จริง (แม้ว่าจะมีข้อ จำกัด ในปัจจุบันแนะนำให้ลดความเสี่ยงของการระเบิดส่วนประกอบ)

ขั้นตอนที่ 5: การทดสอบและการแก้ไขปัญหา

ตอนนี้มันติดกันฉันจะให้คุณทดสอบด้วยตัวเอง หากกดปุ่มใดปุ่มหนึ่งหรือหนึ่งปุ่มไฟ LED จะสว่างขึ้น หากทั้งคู่ถูกผลักออกมา LED จะดับลง

ปัญหาทั่วไป

  1. หากอินพุตหนึ่งดูเหมือนว่าจะไม่ทำงานอย่างที่ควรจะเป็นและในกรณีที่อินพุตทั้งสองยังคงมีค่าเป็นศูนย์ให้ตรวจสอบแรงดันไฟฟ้าที่อินพุตของเกต AND ที่มาจากเกต OR เมื่อกดปุ่มนั้น หากต่ำ (<2V) ให้ลดความต้านทานของตัวต้านทานที่ไปจากหรือไปที่ประตูและ
  2. หากเกตยังคงทำหน้าที่เหมือนเกต OR หรือหมายความว่าเมื่ออินพุตทั้งสองอยู่ที่เอาต์พุตเปิดให้ตรวจสอบแรงดันไฟฟ้าที่เข้าสู่อินพุตของเกต AND ที่มาจากเกต NAND หากสูงเมื่อกดปุ่มทั้งสองให้ตรวจสอบให้แน่ใจว่าทรานซิสเตอร์ในประตู AND ทำงานและตรวจสอบความต้านทานจากที่หนึ่งไปยังอีกที่หนึ่งเมื่อกดปุ่มทั้งสอง หากความต้านทานนั้นสูงและ / หรือแรงดันไฟฟ้าต่ำให้เปลี่ยนทรานซิสเตอร์ทั้งสองหรือลดความต้านทานของอินพุตไปที่ประตู NAND

ขั้นตอนที่ 6: ต้องการมากขึ้น?

ถ้าคุณชอบคำแนะนำนี้ไปข้างหน้าและดูหนังสือของฉันใน Amazon ที่เรียกว่า "คู่มือเริ่มต้นสำหรับ Arduino" มันจะไปตามหลักการวงจรพื้นฐานเช่นเดียวกับการไปรหัส C ++ ที่ใช้ในการเขียนโปรแกรม Arduino