การลดสัญญาณรบกวนในไมโครคอนโทรลเลอร์
เคยมีเมลมาถามผมเกี่ยวกับการแก้ปัญหาความไม่เสถียรของไมโครคอนโทรลเลอร์ตระกูล
MCS-51 ความจริงแล้วไมโครคอนโทรลเลอร์ตัวนี้ไม่ใช่รุ่นที่เสถียรที่สุด
แต่ด้วยการใช้งานที่ง่าย, หาซื้อได้สะดวก อีกทั้งยังมีราคาถูก ทำให้หลายคนนิยมพัฒนาด้วยไมโครคอนโทรลเลอร์ตระกูลนี้
แท้จริงแล้วสัญญาณรบกวนจากแหล่งจ่ายไฟมีผลต่อ ต่อเสถียรภาพต่อการทำงานของไมโครคอนโทรลเลอร์เป็นอย่างมาก
ถ้าเราสามารถจัดการกับสัญญาณรบกวน ก็หมายถึงระบบจะมีเสถียรภาพมากขึ้น เราสามารถจัดการกับสัญญาณรบกวนได้ดังนี้
- ใช้แหล่งจ่ายไฟที่มีประสิทธิภาพ จ่ายกระแสให้กับโหลดได้พอ และไม่เกิดความร้อนมาก
- ติดตั้งตัวเก็บประจุบายพาส ตัวเก็บประจุบาสพาสช่วยในการลดอิมพิแดนซ์ของสาย
และยังช่วยลดสัญญาณรบกานจากภายในและภายนอกเข้ามารบกวน โดยเฉพาะวงจรลอจิกที่ทำงานด้วยความถี่สูงๆ
การต่อตัวเก็บประจุบาสพาสสามารถทำได้ดังนี้
- ต่อตัวเก็บประจุบาสพาสที่แหล่งจ่ายไฟ โดยทั่วไปแล้วจะใช้ตัวเก็บประจุชนิดแทนทาลัมขนาดความจุจะอยู่ทีไมโครฟารัดจนถึงหลาย10ไมโครฟารัด |
- ต่อตัวเก็บประจุบาสพาสระหว่างไอซีมักใช้ตัวเก็บประจุแบบเซรามิกขนาด
0.01uF - 0.1uF |
- ต่อตัวเก็บประจุบาสพาสที่ขาจ่ายไฟของไอซี โดยพยายามติดตั้งให้ใกล้กับขาไอซีมากที่สุดเท่าที่จะทำได้ และต้องตัดขาตัวเก็บประจุให้สั้นที่สุด เมื่อมีสัญญาณความที่สูงที่เกิดจากการทำงานของไอซีตัวเก็บประจุจะช่วยลดลูปความถี่สูงให้ไหลผ่านตัวเก็บประจุแทน แต่มีข้อแม้ว่าต้องเลือกความจุให้สอดคล้องกับช่วงความถี่ของสัญญาณรบกวนด้วย ไม่งั้นค่า Lกับ C ในวงจรจะก่อให้เกิดเรโซแนนต์ นอกจากช่วยลดสัญญาณความถี่สูงแล้ว ยังสามารถลดสัญญาณรบกวนความถี่ต่ำได้อีกด้วย |
การต่อ C Decoupling ที่ผิด เนื่องจากการวาง C ที่ไกลจาก MCU มากทำให้เกิด High Current Loop ไปยัง Power Plane และ Ground Plane ส่งผลไปยังอุปกรณ์อื่นๆ ที่อยู่บนแผงวงจร
|
การต่อ C Decoupling ที่ถูกต้อง สังเกตุดูว่า High Current Loop ไม่ส่งผลไปยัง Power Plane และ Ground Plane
|
การต่อวงจร decoupling ที่ดีขึ้น โดยการเพิ่ม L มาอนุกรมระหว่าง VCC และ Power Plane เพื่อลด switching noise การต่อแบบนี้ต้องมั่นใจว่าค่าของ L น้อยพอ ที่จะไม่ทำให้เกิด ไฟ(DC) คร่อม L
|
Package ของ MCU ชนิด DIP จะมีขา VCC และ GND อยู่ที่มุมของ IC ซึ่งจะทำให้เกิด Loop ที่กว้างขึ้น เราสามารถเลือก Package แบบ TQFP ซึ่งจะมีขา VCC และ GND อยู่ใกล้กัน ทำให้ Loop เป็นวงแคบ |
|
- การออกแบบแผ่นวงจร มีอยู่หลายคนที่ใช้สาย wire แทนการกัดแผ่น pcb สายสัญญาณเหล่านั้นก่อให้เกิดสัญญาณรบกวนได้บางทีบัดกรีไม่แน่
หรือใช้สายที่มีพื้นที่หน้าตัดน้อยไป หรือการออกแบบลายวงจร ให้มีลักษณะเป็นเส้นตรงขนานกัน
จะทำให้เกิดค่าความจุแฝง ซึ่งล้วนก่อให้เกิดสัญญาณรบกวนได้ทั้งสิ้น
- แยกโซน Analog กับ Digital และ GND Analog กับ GND Digital ออกจากกัน เพื่อที่ไม่ให้สัญญาณ Analog และสัญญาณ Digital มารบกวนกัน ให้ใช้ส่งสัญญาณผ่านทาง Opto coupler แทนเช่นเบอร์ PC817
- Oscillator เป็นส่วนหนึ่งที่มีความสำคัญเป็นอย่างมาก เพราะ MCU ทำงานสัมพันธ์กับ Clock ถ้า Clock มีสัญญาณเพี้ยนย่อมมีผลต่อการทำงาน โดย MCU ที่ทำงานด้วย Clock ที่สูงจะเกิดสัญญาณรบกวนได้ง่ายกว่า MCU ที่ทำงานด้วย
Clock ความถี่ต่ำ
ดังนั้นขารับสัญญาณ Clock (XTAL1, XTAL2) จึงไวต่อ ESD(electrostatic discharge) มากกว่าขา I/O ทั่วไป |
-เพื่อที่จะหลีกเลี่ยงปัญหาสามารถทำได้ดังนี้
1. ให้ Loop ของ Oscillator เล็กที่สุดเท่าที่จะทำได้ ให้วาง crystal/resonator ให้ใกล้กับขาของ MCU มากที่สุด ให้ต่อ C decoupling จากขาของ crystal ลง GND plane และ GND plane จะต้องต่อเข้ากับ ขา GND ของ MCU
2. ในกรณีที่รับสัญญาณ Clock มาจากภายนอก ให้ระวังในกรณีที่สายสัญญาณยาวเกินไป เพราะสายที่ยาวเกินไปจะทำตัวเป็นเสาอากาศรับสัญญาณรบกวนเข้ามา (antenna for transients) |
|
References:
AVR040: EMC Design Considerations
Hardware and firmware noise reduction techniques |