![ทำประตู XOR ออกจากทรานซิสเตอร์: 6 ขั้นตอน ทำประตู XOR ออกจากทรานซิสเตอร์: 6 ขั้นตอน](https://img.gwsigeps.com/img/circuits/make-an-xor-gate-out-of-transistors.png)
สารบัญ:
- วัสดุ:
- ขั้นตอนที่ 1: ออกแบบ
- ขั้นตอนที่ 2: การเพิ่มทรานซิสเตอร์ปุ่มและ LED
- ขั้นตอนที่ 3: การเพิ่มตัวต้านทาน
- ขั้นตอนที่ 4: การเพิ่มสาย
- ขั้นตอนที่ 5: การทดสอบและการแก้ไขปัญหา
- ขั้นตอนที่ 6: ต้องการมากขึ้น?
หรือประตูมีประโยชน์มาก แต่มีคุณลักษณะแปลก ๆ ที่สามารถทำงานได้ดี แต่ในบางแอปพลิเคชันอาจทำให้เกิดปัญหา นั่นคือความจริงที่ว่าถ้าทั้งสองอินพุทเป็นอินพุทนั้นก็เป็นอีกหนึ่ง หากเรามีแอปพลิเคชันที่เราไม่ต้องการสิ่งนี้บางทีเรากำลังสร้าง 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 จะดับลง
ปัญหาทั่วไป
- หากอินพุตหนึ่งดูเหมือนว่าจะไม่ทำงานอย่างที่ควรจะเป็นและในกรณีที่อินพุตทั้งสองยังคงมีค่าเป็นศูนย์ให้ตรวจสอบแรงดันไฟฟ้าที่อินพุตของเกต AND ที่มาจากเกต OR เมื่อกดปุ่มนั้น หากต่ำ (<2V) ให้ลดความต้านทานของตัวต้านทานที่ไปจากหรือไปที่ประตูและ
- หากเกตยังคงทำหน้าที่เหมือนเกต OR หรือหมายความว่าเมื่ออินพุตทั้งสองอยู่ที่เอาต์พุตเปิดให้ตรวจสอบแรงดันไฟฟ้าที่เข้าสู่อินพุตของเกต AND ที่มาจากเกต NAND หากสูงเมื่อกดปุ่มทั้งสองให้ตรวจสอบให้แน่ใจว่าทรานซิสเตอร์ในประตู AND ทำงานและตรวจสอบความต้านทานจากที่หนึ่งไปยังอีกที่หนึ่งเมื่อกดปุ่มทั้งสอง หากความต้านทานนั้นสูงและ / หรือแรงดันไฟฟ้าต่ำให้เปลี่ยนทรานซิสเตอร์ทั้งสองหรือลดความต้านทานของอินพุตไปที่ประตู NAND
ขั้นตอนที่ 6: ต้องการมากขึ้น?
ถ้าคุณชอบคำแนะนำนี้ไปข้างหน้าและดูหนังสือของฉันใน Amazon ที่เรียกว่า "คู่มือเริ่มต้นสำหรับ Arduino" มันจะไปตามหลักการวงจรพื้นฐานเช่นเดียวกับการไปรหัส C ++ ที่ใช้ในการเขียนโปรแกรม Arduino