บทนี้เราจะมาพูดถึงเรื่องการรับอินพุทของไมโครคอนโทรลเลอร์
บทนำ เมื่อสมัยที่ผมทำโพรเจคในช่วงปีสามปริญญาตรีในเมืองไทยในโพรเจคก็ต้องใช้ไมโครคอนโทรลเลอร์ด้วย ปัญหาที่ผมได้พบมาก็คือผมจะหาวงจรได้จากที่ไหนบ้าง เนื่องจากประสบการณ์เรื่องการต่อวงจรก็ไม่เยอะ ที่เจอมาก็เฉพาะใน LAB(แต่ตอนนั้นไม่ได้สนใจเรื่องทำแล็บเท่าไร ก็เลยไม่สามารถนำวงจรบางวงจรใน LAB มาใช้ได้ จริงๆแล้วทุกอย่างอยู่ใน LAB นะครับ มาทราบเอาตอนจบแล้วนี่เอง) โดยเฉพาะวงจรที่ทำให้ไมโครคอนโทรลเลอร์ติดต่อกับโลกภายนอกได้ หาค่อนข้างยาก ถ้าเจอก็ไม่ค่อยหลากหลาย ผมจึงได้ค้นเรื่องนี้มาให้ครับ การรับอินพุทของไมโครคอนโทรลเลอร์โดยเฉพาะเบอร์ 8051 ที่เมืองไทยนิยมใช้กัน(น่าจะมีนักศึกษาในเมืองไทย ทำ อินเทอร์พรีเตอร์ที่เป็นภาษาเบสิกหรือภาษาซีนะ ผมว่าน่าจะดีเพราะมันเพิ่มมูลค่าของไอซีตัวนั้นขึ้นมาอีก อาจจะทำเป็นซอฟท์แวร์หรือเฟิร์มแวร์ก็ได้นะ)
ไอซีที่เป็น TTL โดยปกติจะมีระดับการตัดสินใจว่าโวลท์เตจระดับใดควรเป็นลอจิก 1 หรือ 0 สามารถดูได้ในคู่มือไอซีนั้นๆ ส่วนมากจะถือว่าตั้งแต่หรือมากกว่า 2.4 โวลท์มีค่าเป็นลอจิก 1 และเท่ากันหรือน้อยกว่า 0.9 โวลท์มีค่าเป็นลอจิก 0 ส่วนกระแสนั้นถ้าไม่มีกระแสไหลเข้าเลยถือว่ามีค่าเป็นลอจิก 0 หากมีกระแสประมาณ 1.6 mA ไหลเข้าถึอว่ามีค่าเป็นลอจิก 0 สามารถดูในรูปที่ 1

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

การต่อสวิทช์เพื่อป้อนอินพุทให้กับคอนโทรลเลอร์ควรใช้ตัวต้านทานมาต่อเป็น Pull up หรือ Pull down เพื่อไม่ให้มี Noise เข้าไปรบกวนในพอร์ตนั้น

จากในรูปถ้าสวิทช์ดังกล่าวปิดวงจร ก็จะทำให้ข้อมูลที่เข้าไปเป็นข้อมูลที่เราต้องการ แต่ถ้าเมื่อไรเปิดวงจรขึ้นมาจะทำให้พอร์ตนั้นอยู่ในสถานะที่ไม่สามารถกำหนดได้ว่ามีค่าเป็นศูนย์หรือหนึ่ง
Debouncing
การกดสวิทช์หนึ่งครั้ง ซึ่งในขณะที่หน้าสัมผัสของสวิทช์แตะกันจะทำให้เกิด bouncing ขึ้นเป็นคลื่นตามกราฟในรูปที่ 4 ซึ่งถ้าไม่มีการป้องกัน อาจจะทำให้เกิดความผิดพลาดได้เพราะความเร็วของไมโครคอนเลอร์เร็วมากๆเมื่อเทียบกับความเร็วในกดสวิทช์ของคน ซึ่งการกดหนึ่งครั้งโปรแกรมอาจจะรับได้เป็นร้อยๆครั้งก็ได้ ที่เป็นเช่นนั้นเพราะมี bouncing ขึ้นมา วิธีแก้ไขคือต่อตัวเก็บประจุขนานเข้าไปเพื่อไปลด bouncing ซึ่งผลที่ได้ก็จะเป็นตามในกราฟที่สอง เท่านั้นยังไม่พอ เพราะสัญญาณที่เข้าไปในพอร์ตควรเสถึยรมากกว่านี้ เราทำได้โดยการใช้ไอซีเบอร์ 7414 ซึ่งในไอซีจะมีระดับของ Threshold เพื่อเป็นตัวในการตัดสินว่าระดับความต่างศักย์ในระดับนี้ควรเป็น 0 หรือ 1 ซึ่งสัญญาณที่ออกมาจาก 7414 จะมีสองค่าเท่านั้น

ส่วนการแก้ปัญหาอีกทางหนึ่งก็คือการแก้ด้วยซอฟท์แวร์โดยการทำ sampling เข้าไปยังพอร์ตนั้นๆซึ่งไม่ดีเท่ากับวิธีแรกที่แก้ปัญหาด้วยฮาร์ดแวร์ ถ้าดูจากกราฟการ sampling จะทำให้เกิดความผิดพลาดได้มากกว่าดูในรูปที่ 5

Level Shifting

กรณีที่ต้องการับอินพุทจากจุดที่มีความต่างศักย์ไฟฟ้าที่สูงมากๆ ควรนำ R มาต่อเพื่อลดระดับของความต่างศักย์ลง เราเรียกว่า Voltage Devider หรืออีกในกรณีหนึ่งนำทรานซิสเตอร์เข้ามาเพื่อให้อินพุทไปไบอัสทรานซิสเตอร์แทน ซึ่งวิธีนี้จะดีกว่าวิธีแรก ถ้าค่า B(เบต้า) =100 และที่ Ic 2 mA ,Vbe=0.7 กระแสที่ไบอัสปกติ 20 uA แต่เพื่อให้แน่ใจว่าทรานซิสเตอร์อยู่ในสถาน saturation ผมจะให้กระแสไบอัสเป็น 40 uA จะคำนวนค่า Rs ได้ดังนี้ (24-0.7)/40 uA =582 Kohms ซึ่งเราอาจจะใช้ 470 kohms ก็ได้นะ
วงจร AC to TTL

ไฟ AC มีความถี่ 50-60 Hz เพราะฉนั้นสัญญาณที่ผ่านไอโอดมาก็จะมีค่าเป็นเป็นบวก 16-20 มิลลิวินาที เพราะฉนั้นจะต้องทำให้สัญญาณดังกล่าวเป็น DC ก่อน เราสมมุติว่าต้องการให้ลอจิก 0 กับพอร์ต TTL เมื่อมีการป้อนไฟ AC เข้ามา 110 โวลท์ การคำนวนหาค่าตัวเก็บประจุไฟฟ้าทำได้ดังนี้ เนื่องจาก 110 โวลท์เป็นค่า rms ของสัญญาณ AC ดังนั้น peak สูงสุดคือ 1.7*110 เท่ากับ 187 โวทล์ค่าตัวเป็นประจุควรมีค่าเป็นครึ่งหนึ่งคือ 94 โวลท์ กระแสไปอัสเรากำหนดให้เป็น 40 uA เราต้องหาค่า R ก่อน R=94/40 uA ได้ R= 23 Mohms ดังนั้นสูตรการหาค่า C คือ C=1/RT ได้ค่า C= 1/(23Mohms*1.7 mSec) 1.7 mSec คือช่วงเวลาการ Recovery time เราก็จะได้วงจรที่สามารถป้อนอินพุทให้กับไมโครคอนโทรลเลอร์จากแหล่งที่มีความต่างศักย์สูงๆ
Optical Devices
opto-interrupts โดยทั่วไปจะเป็นอุปกรณ์ที่มีทั้งตัวรับและตัวส่งใน package เดียวกันแสงที่ใช้ปกติจะเป็น IR (เรามองไม่เห็นแสงนี้) บาง package ภายในจะประกอบไปด้วยวงจร Comparator ซึ่งจะให้สัญญาณที่มีค่าเป็นลอจิกออกมาดังรูป

อัลตราโซนิก
อัลตราโซนิก มีหลักการทำงานเหมือนเรดาร์ เรดาร์จส่งคลื่นวิทยุไปกระทบกับวัตถุจากนั้นจะมีคลื่นสะท้อนกลับมา ซึ่งสามารถวัดระยะทางระหว่างตัวส่งเรดาร์ กับวัตถุได้ว่าห่างจากกันเท่าไร ใช้ความเร็วของคลื่นกับเวลาที่จับได้มาคำนวน อัลตราโซนิกจะใช้คลื่นความถี่ 40 kHz ตัวส่งจะใช้ได้ทั้งลำโพงและไมโครโฟน

1
Hosted by www.Geocities.ws