วันอาทิตย์ที่ 16 กุมภาพันธ์ พ.ศ. 2557

วงจร input/output ที่ใช้ได้กับ gpio ของ rpi

สำหรับวงจรง่ายๆที่สามารถใช้ร่วมกับบอร์ด rpi ได้ สามารถดูได้ที่ http://elinux.org/RPi_GPIO_Interface_Circuits โดยได้อธิบายไว้ดังนี้


วงจรสำหรับรับค่า input (Input circuit)

วงจรปุ่มกด switch input (push button)
วงจร switch ง่ายๆ ที่เอาไว้ใช้ต่อกับ gpio ของ rpi
เมื่อกด switch (วงจรปิด) ค่าที่ rpi ได้รับก็คือ "0"
และเมื่อปล่อย switch (วงจรเปิด) ค่าที่ rpi ได้รับก็คือ "1"
จากรูป R1 เราเรียกว่า pull-up resistor ซึ่งมีไว้ "ดึง" gpio ให้มีค่าเป็น 3.3 โวลต์ในขณะที่ปล่อย switch

วงจร voltage divider
ใช้สำหรับรับสัญญาณ digital 5V ของอุปกรณ์หนึ่งๆ ต่อเข้ากับ gpio port ของบอร์ด rpi ซึ่งต้องการ สัญญาณเพียง 3.3 โวลต์ ส่วน 0 โวลต์ในรูป ให้ต่อเข้ากับ ground จุดใดจุดหนึ่งของบอร์ด rpi และต่อเข้ากับ ground ของอุปกรณ์ที่ปล่อยสัญญาณเข้ามาที่บอร์ด rpi
และสิ่งที่สำคัญที่สุด สำหรับวงจรนี้ก็คือ ค่า resistor R1 และ R2 โดยที่ R1 จะต้องมีค่ามากกว่าครึ่งหนึ่งของ R2 เล็กน้อย ซึ่งจะทำให้สัญญาณ 5 โวลต์ลดลงเหลือ 3.3 โวลต์ ซึ่งผู้อ่านสามารถใช้ค่าที่แสดงในรูปได้ทันที เหมาะสำหรับการใช้งานทุกกรณี


วงจร output (output circuit)
gpio port ของบอร์ด rpi ได้ต่อโดยตรงกับ ic BCM2835 ซึ่งเป็น ic ที่ทำงานที่ 3.3 โวลต์เท่านั้น ทำให้มีพลังในการจ่ายไฟค่อนข้างน้อย และที่สำคัญ ถ้าหากใช้ไม่ถูกวิธี ก็จะสร้างความเสียหายให้ port ได้ (ไม่สามารถเปลี่ยน หรือ ซ่อมแซมได้)
ดังนั้น ถ้าหากผู้อ่านจะต่อใช้งานที่นอกเหนือจาก LED ท่านควรจะใช้วงจรเพิ่มเติมเพื่อเพิ่ม โวลต์/กระแส

ใช้ npn transistor
วงจรถูกๆ ที่ใช้ NPN transistor เพื่อ เปิด/ปิด อุปกรณ์ที่มาต่อ (Load)
เมื่อ gpio มีค่าเป็น "1" อุปกรณ์ที่มาต่อ ก็จะทำงาน
เมื่อ gpio มีค่าเป็น "0" อุปกรณ์ที่ต่อ ก็จะปิด
จากรูปภาพ ใช้ transistor เบอร์ 2N3904 ซึ่งสามารถทนแรงดันได้ถึง 40โวลต์ (Vce)/ 100mA
 สำหรับอุปกรณ์ที่ต้องการใช้กระแสที่มากกว่า ก็ต้องใช้ transistor ที่ให้โวลต์(Vce)/กระแส ที่มากกว่านี้ โดยสังเกตได้ที่ค่า hfe ใน datasheet
note : ในวงจรที่ต้องการใช้กำลังไฟมากๆ ควรใช้ heat sink เพื่อระบายความร้อนด้วย

ใช้ FET
Field-effect transistor (FET) ก็เป็นอีกทางเลือกหนึ่งนอกเหนือจาก bipolar transistor
จากรูป ถ้า gpio มีค่าเป็น "1"  อุปกรณ์ทำงาน
แต่ถ้า gpio มีค่าเป็น "0" อุปกรณ์ไม่ทำงาน
การเลือกใช้ R1 100K เนื่องจากต้องการความปลอดภัย ถ้าหากเราเผลอกำหนดค่า gpio เป็น input
transistor 2N7000 สามารถใช้ได้กับแหล่งจ่ายไฟ 60โวลต์/100mA
ถ้า หากต้องการใช้กับ Load ที่ใช้พลังงานมากกว่านี้ วิธีดู datasheet จะไม่เหมือนกับ transistor ให้ดูที่ "threshold" voltage. ที่เริ่มต้นที่ 3โวลต์

ใช้ Relay

วงจร Level shifter
MOSFET level shifter
วงจรนี้นิยมใช้กับ I2C

วงจร simple diode circuit
 เป็นวงจรที่ง่ายและใช้ได้ผลเสมอ ไว้ใช้ต่อกับ serial port 5Volt ATMega328 processor


IC SN7407
เป็น IC oprn-collector ซึ่งสามารถนำไปใช้ได้หลากหลาย


ถ้า gpio มีค่าเป็น "0"output ก็จะเป็น "0" ด้วย

แต่ถ้า gpio มีค่าเป็น "1"IC จะไม่ทำงาน ส่งผลให้ R1 ดึงให้วงจรที่ต่อพ่วงอยู่มีค่าเป็น high.
ซึ่งวงจรนี้สามารถรองรับได้ถึง 30โวลต์/30mA

สรุป
วงจร input มี 2 วงจร ได้แก่ push button และ voltage divider
วงจร output มีให้เลือกหลากหลาย ได้แก่ npn transistor, FET, Relay, Level shifter มี 3 วงจร
1. Mosfet level shifter
2. simple diode
3. IC 7407

แสดงความคิดเห็น