ในโลกปัจจุบัน คอมพิวเตอร์มีอยู่ทั่วไปทุกหนทุกแห่งและโดยทั่วไปมีจุดประสงค์หลักสองประการ
ประการแรกคือการประมวลผลเพื่อวัตถุประสงค์ทั่วไป โดยจะจัดการกับงานที่หลากหลาย รวมถึงการรันแอปพลิเคชันและโปรแกรมที่หลากหลาย ตัวอย่าง ได้แก่ แล็ปท็อป เดสก์ท็อป เซิร์ฟเวอร์ และซูเปอร์คอมพิวเตอร์
ประการที่สองคือระบบฝังตัวซึ่งเป็นคอมพิวเตอร์เฉพาะที่ออกแบบมาเพื่อฟังก์ชันเฉพาะ พบได้ทั่วไปในอุปกรณ์ต่างๆ เช่น ตัวควบคุมอุณหภูมิ ตู้เย็น รถยนต์ และเครื่องใช้ไฟฟ้าอัจฉริยะอื่นๆ โดยอาศัยเซ็นเซอร์ในการรวบรวมข้อมูลด้านสิ่งแวดล้อมและดำเนินงานอย่างมีประสิทธิภาพ
บทบาทของเซ็นเซอร์
เซ็นเซอร์มีบทบาทสำคัญในการประมวลผลทั้งสองประเภท ในระบบฝังตัว เซ็นเซอร์จะรวบรวมข้อมูลด้านสิ่งแวดล้อมเพื่อช่วยให้อุปกรณ์ต่างๆ เช่น ยานพาหนะขับเคลื่อนอัตโนมัติ เครื่องใช้ในบ้าน และเครื่องจักรอุตสาหกรรมสามารถทำงานได้ ในคอมพิวเตอร์ที่ใช้งานทั่วไป เซ็นเซอร์จะตรวจสอบสภาวะภายในเป็นหลัก เช่น อุณหภูมิและแรงดันไฟฟ้า เพื่อให้มั่นใจถึงการทำงานที่ปลอดภัย และป้องกันปัญหาต่างๆ เช่น ความร้อนสูงเกินไปหรือไฟฟ้าขัดข้อง
ในขณะที่ปัญญาประดิษฐ์ (AI) และอินเทอร์เน็ตของสรรพสิ่ง (IoT) พัฒนาขึ้น เซ็นเซอร์จึงกลายเป็นสิ่งที่ขาดไม่ได้ในการรวบรวมข้อมูลในโลกแห่งความเป็นจริงเพื่อรองรับการตัดสินใจที่ชาญฉลาด ระบบฝังตัวใช้ประโยชน์จากเซ็นเซอร์ในการรับรู้สภาพแวดล้อม เปลี่ยนข้อมูลดิบให้เป็นข้อมูลเชิงลึกที่นำไปใช้ได้จริงซึ่งเป็นระบบอัตโนมัติด้านพลังงาน และปรับปรุงประสิทธิภาพในอุตสาหกรรมต่างๆ
ซึ่งหมายความว่าการทำความเข้าใจอินเทอร์เฟซเซ็นเซอร์และการออกแบบซอฟต์แวร์ที่ขับเคลื่อนด้วยเซ็นเซอร์ที่มีประสิทธิภาพกลายเป็นทักษะที่สำคัญสำหรับวิศวกรและผู้ที่ชื่นชอบงานอดิเรก
ไม่ว่าคุณจะเป็นวิศวกรมือใหม่หรือมีประสบการณ์ คู่มือนี้จะช่วยให้คุณมีความเข้าใจที่มั่นคงเกี่ยวกับซอฟต์แวร์เชื่อมต่อเซ็นเซอร์
สิ่งที่คุณจะได้เรียนรู้และขอบเขตของบทความ
ในบทความนี้ คุณจะได้เรียนรู้วิธีการเชื่อมต่อเซ็นเซอร์กับไมโครคอนโทรลเลอร์ (MCU) และการออกแบบไปป์ไลน์ซอฟต์แวร์เซ็นเซอร์ที่เปลี่ยนข้อมูลดิบให้เป็นข้อมูลที่มีความหมายและใช้งานได้ นอกจากนี้ คุณยังจะได้สำรวจเทคนิคเชิงปฏิบัติสำหรับการประมวลผลข้อมูลเซ็นเซอร์อย่างถูกต้องและมีประสิทธิภาพในระบบฝังตัว
ต่อไปนี้เป็นรายละเอียดเกี่ยวกับสิ่งที่เราจะกล่าวถึง:
-
เซ็นเซอร์คืออะไรและทำงานอย่างไร – ข้อมูลเบื้องต้นเกี่ยวกับเซ็นเซอร์ ประเภททั่วไป และวิธีที่ท่อส่งเซ็นเซอร์ช่วยประมวลผลข้อมูลเซ็นเซอร์
-
ลักษณะเฉพาะของเซ็นเซอร์ที่สำคัญ – พารามิเตอร์ที่สำคัญ เช่น ความไว ความแม่นยำ ความแม่นยำ ช่วง การดริฟท์ และเวลาตอบสนอง เพื่อช่วยคุณเลือกเซ็นเซอร์ที่เหมาะสมสำหรับโครงการของคุณ
-
วิธีเชื่อมต่อเซ็นเซอร์กับไมโครคอนโทรลเลอร์ – การเชื่อมต่อฮาร์ดแวร์และโปรโตคอลการสื่อสาร เช่น SPI, I²C และ GPIO ที่ช่วยให้ไมโครคอนโทรลเลอร์อ่านข้อมูลเซ็นเซอร์ได้
-
สถาปัตยกรรมซอฟต์แวร์สำหรับข้อมูลเซ็นเซอร์ – ภาพรวมระดับสูงของไปป์ไลน์ซอฟต์แวร์ที่ประมวลผลข้อมูลเซ็นเซอร์ รวมถึงไดรเวอร์ การรองรับ ADC การปรับขนาด การสอบเทียบ และหลังการประมวลผล
-
การออกแบบส่วนประกอบไปป์ไลน์โดยละเอียด – ดูแต่ละขั้นตอนในไปป์ไลน์อย่างละเอียด โดยมุ่งเน้นไปที่การปรับขนาดข้อมูลดิบ การปรับเทียบเซ็นเซอร์ และการใช้ตัวกรองเพื่อล้างสัญญาณรบกวน
-
เคล็ดลับที่เป็นประโยชน์สำหรับการจัดการพลังงาน – แนวทางปฏิบัติที่ดีที่สุดในการจัดการพลังงานอย่างมีประสิทธิภาพโดยใช้โหมดพลังงานต่ำ บัฟเฟอร์ FIFO และ DMA เมื่อทำงานกับข้อมูลเซ็นเซอร์ในระบบฝังตัว
ในตอนท้ายของบทความนี้ คุณจะรู้วิธีการออกแบบและใช้งานไปป์ไลน์ข้อมูลเซ็นเซอร์ที่สมบูรณ์สำหรับระบบฝังตัว ตั้งแต่การอ่านข้อมูลเซ็นเซอร์ดิบไปจนถึงการเตรียมข้อมูลสำหรับการใช้งานจริงในอุปกรณ์อัจฉริยะที่เชื่อมต่อกัน
หมายเหตุ :การประมวลผลข้อมูลขั้นสูง ADC ความละเอียดสูง และการออกแบบวงจรฮาร์ดแวร์สำหรับเซ็นเซอร์อยู่นอกเหนือขอบเขตของบทความนี้
ข้อกำหนดเบื้องต้น
เพื่อให้ได้รับประโยชน์สูงสุดจากบทความนี้ คุณควรมี:
-
ความรู้พื้นฐานของไมโครคอนโทรลเลอร์:ความเข้าใจเกี่ยวกับอุปกรณ์ต่อพ่วงทั่วไป เช่น ADC (ตัวแปลงอนาล็อกเป็นดิจิทัล), SPI (อินเทอร์เฟซอุปกรณ์ต่อพ่วงแบบอนุกรม), I2C (วงจรรวมระหว่างกัน) และ GPIO (อินพุต/เอาท์พุตวัตถุประสงค์ทั่วไป) หากคุณยังใหม่กับโปรโตคอลเหล่านี้ บทความนี้จะให้ภาพรวมที่ดี
-
ความรู้พื้นฐานด้านอิเล็กทรอนิกส์:ความคุ้นเคยกับวงจรและสัญญาณ รวมถึงอินเทอร์เฟซแบบอะนาล็อกและดิจิทัล
-
การเขียนโปรแกรมในภาษา C:ความคุ้นเคยในการพัฒนาซอฟต์แวร์แบบฝังตัว รวมถึงการพัฒนาไดรเวอร์
-
(ไม่บังคับ) ความรู้พื้นฐานเกี่ยวกับเซ็นเซอร์:การทำความเข้าใจเซ็นเซอร์ประเภทต่างๆ (เช่น อุณหภูมิ ความดัน การเคลื่อนไหว) มีประโยชน์แต่ไม่จำเป็น
นอกจากนี้ บทความนี้ถือว่าสิ่งต่อไปนี้:
-
คุณกำลังทำงานกับไมโครคอนโทรลเลอร์ที่มีอุปกรณ์ต่อพ่วงที่จำเป็นสำหรับการรวมเซ็นเซอร์ รายละเอียดอุปกรณ์ต่อพ่วงไมโครคอนโทรลเลอร์สามารถพบได้ในคู่มืออ้างอิง เช่น ไมโครคอนโทรลเลอร์ซีรีส์ STM32F4 จะมีรายละเอียดทั้งหมด:
-
คุณคุ้นเคยกับคอมไพเลอร์ ดีบักเกอร์ และ IDE ที่ใช้ในระบบฝังตัว เครื่องมือทั่วไปบางอย่างได้แก่:
-
คอมไพเลอร์:GCC, เสียงดังกราว,
-
ตัวดีบักเกอร์:GDB, LLDB
-
IDE:Visual Studio Code (VSCode) เป็นตัวเลือกยอดนิยม โดยเฉพาะอย่างยิ่งกับส่วนขยายสำหรับการพัฒนาและการดีบักแบบฝัง
-
-
คุณมุ่งมั่นที่จะสร้างระบบฝังตัวที่ขับเคลื่อนด้วยเซ็นเซอร์ที่เชื่อถือได้ ซึ่งสามารถรวบรวมและประมวลผลข้อมูลในโลกแห่งความเป็นจริงได้อย่างมีประสิทธิภาพ
สารบัญ
-
ท่อส่งเซ็นเซอร์และเซ็นเซอร์คืออะไร
-
ลักษณะของเซนเซอร์
-
วิธีเชื่อมต่อกับไมโครคอนโทรลเลอร์
-
สถาปัตยกรรมซอฟต์แวร์
-
ภาพรวมส่วนประกอบระดับสูง
-
การเข้าถึงข้อมูลจากเซ็นเซอร์
-
การจัดการพลังงานของเซ็นเซอร์
-
-
การออกแบบส่วนประกอบโดยละเอียด
-
1. ไดรเวอร์เซนเซอร์
-
2. รองรับ ADC
-
3. การปรับขนาด
-
4. การสอบเทียบ
-
5. การประมวลผลข้อมูลภายหลัง
-
-
บทสรุป
ไปป์ไลน์เซ็นเซอร์และเซ็นเซอร์คืออะไร
เซ็นเซอร์ตรวจจับการเปลี่ยนแปลงในคุณสมบัติทางกายภาพ เช่น อุณหภูมิ ความดัน หรือแสง แล้วแปลงเป็นสัญญาณไฟฟ้าที่สามารถวัดหรือตีความได้ ตัวอย่างเช่น เทอร์มิสเตอร์คือตัวต้านทานชนิดหนึ่งซึ่งความต้านทานเปลี่ยนแปลงไปตามอุณหภูมิ เมื่ออุณหภูมิเปลี่ยนแปลง ความต้านทานของเทอร์มิสเตอร์จะเปลี่ยนไป แรงดันไฟฟ้าที่คร่อมเทอร์มิสเตอร์จะเปลี่ยนไป จากนั้นระบบจะตีความการเปลี่ยนแปลงแรงดันไฟฟ้านี้เพื่อกำหนดอุณหภูมิ
เพื่อให้เข้าใจเซ็นเซอร์ได้ดีขึ้น ให้พิจารณาเซ็นเซอร์ตามธรรมชาติในร่างกายมนุษย์ ได้แก่ ตา หู ผิวหนัง จมูก และลิ้น เซ็นเซอร์ธรรมชาติเหล่านี้จะส่งสัญญาณเกี่ยวกับสภาพแวดล้อมไปยังสมองเพื่อประมวลผลอย่างต่อเนื่อง ส่วนต่างๆ ของสมองตีความสัญญาณเหล่านี้ และใช้ข้อมูลเพื่อขับเคลื่อนการกระทำและการตอบสนอง เช่นเดียวกับที่สมองประมวลผลสัญญาณจากเซ็นเซอร์ตามธรรมชาติ ไมโครคอนโทรลเลอร์จะประมวลผลสัญญาณจากเซ็นเซอร์อิเล็กทรอนิกส์โดยใช้ไปป์ไลน์เซ็นเซอร์
เซ็นเซอร์มีหลายประเภท แต่ละประเภทได้รับการออกแบบมาเพื่อตรวจจับคุณสมบัติทางกายภาพที่เฉพาะเจาะจง เซ็นเซอร์บางตัวมีองค์ประกอบการตรวจจับที่เปลี่ยนแปลงคุณสมบัติในการตอบสนองต่อสภาวะต่างๆ เช่น ความร้อน แสง หรือความดัน ตัวอย่าง ได้แก่ เทอร์มิสเตอร์ เครื่องรับอินฟราเรด และโฟโตไดโอด
สำหรับการตรวจจับการเคลื่อนไหว เช่น ความเร่งและการหมุน เซ็นเซอร์ MEMS (ระบบเครื่องกลไฟฟ้าจุลภาค) เช่น มาตรความเร่งและไจโรสโคป ถูกนำมาใช้กันอย่างแพร่หลาย
ในการวัดระยะทาง เซ็นเซอร์ต่างๆ เช่น โซนาร์ เซ็นเซอร์อัลตราโซนิค และเรดาร์ถือเป็นเรื่องธรรมดา นี่เป็นเพียงตัวอย่างเล็กๆ น้อยๆ ของเซ็นเซอร์หลายประเภทที่มีจำหน่าย
นอกเหนือจากคุณสมบัติทางกายภาพประเภทต่างๆ ที่ตรวจพบแล้ว เซ็นเซอร์ยังมีระดับการรวมที่แตกต่างกันอีกด้วย เซ็นเซอร์บางตัวเป็นเซ็นเซอร์ดิบ ซึ่งประกอบด้วยองค์ประกอบการตรวจจับและทรานสดิวเซอร์ที่มีสายแบบธรรมดาสำหรับการเชื่อมต่อโดยตรงกับวงจรภายนอก
ส่วนอื่นๆ ที่เรียกว่าเซ็นเซอร์อัจฉริยะ มีส่วนประกอบเพิ่มเติม เช่น ADC (ตัวแปลงแอนะล็อกเป็นดิจิทัล) และความสามารถในการประมวลผลในตัว ซึ่งช่วยให้สามารถจัดการการประมวลผลข้อมูลได้อย่างอิสระมากขึ้น
ตัวเลือกระหว่างเซ็นเซอร์ดิบและเซ็นเซอร์อัจฉริยะขึ้นอยู่กับข้อกำหนดการใช้งานของคุณ รวมถึงปัจจัยต่างๆ เช่น ต้นทุน ขนาด และภาระในการประมวลผลบนไมโครคอนโทรลเลอร์ที่เชื่อมต่อ
กลับมาที่การเปรียบเทียบของมนุษย์ ลองพิจารณาว่าการมองเห็นทำงานอย่างไรในฐานะท่อส่งเซ็นเซอร์ เมื่อแสงเข้าสู่ดวงตาของเรา เซลล์รับแสง (แท่งและกรวย) ในเรตินาทำหน้าที่เป็นองค์ประกอบในการตรวจจับ โดยแปลงแสงให้เป็นสัญญาณไฟฟ้า สัญญาณเหล่านี้เดินทางผ่านเส้นประสาทตาไปยังคอร์เทกซ์การมองเห็นของสมอง ซึ่งสัญญาณเหล่านี้จะผ่านการประมวลผลเพื่อสร้างภาพที่จดจำได้ จากนั้นสมองจะตีความข้อมูลนี้และเริ่มตอบสนอง เช่น การยิ้มเมื่อคุณเห็นทิวทัศน์ที่สวยงาม
ในทำนองเดียวกัน ไปป์ไลน์เซ็นเซอร์สำหรับระบบฝังตัวสามารถกำหนดได้ดังที่แสดงในภาพด้านล่าง:

แต่ละขั้นตอนเหล่านี้อาจมีข้อกำหนดที่แตกต่างกันขึ้นอยู่กับแอปพลิเคชัน การสร้างเอกสารข้อกำหนดสำหรับเซ็นเซอร์จะมีประโยชน์เมื่อเลือกเซ็นเซอร์ที่เหมาะสมและกำหนดค่าไปป์ไลน์
คุณลักษณะของเซนเซอร์
ก่อนที่คุณจะดำดิ่งลงไปในบล็อกของไปป์ไลน์เซ็นเซอร์ เรามาตรวจสอบคุณลักษณะที่สำคัญบางประการของเซ็นเซอร์กันก่อน
ความไว
ความไวคือความสามารถของเซ็นเซอร์ในการตรวจจับการเปลี่ยนแปลงเล็กน้อยในคุณสมบัติทางกายภาพที่ออกแบบมาเพื่อวัด
ความไวอาจแตกต่างกันไปตามปัจจัยต่างๆ เช่น กระบวนการผลิต ต้นทุน และการออกแบบองค์ประกอบการตรวจจับ
เซ็นเซอร์ที่ออกแบบมาสำหรับคุณสมบัติเฉพาะมักมีระดับความไวที่แตกต่างกัน ทำให้ผู้ใช้สามารถเลือกความไวที่เหมาะสมตามความต้องการใช้งาน
ความแม่นยำ
ความแม่นยำคือระดับที่การวัดของเซนเซอร์ตรงกับมูลค่าที่แท้จริงของคุณสมบัติทางกายภาพที่เซนเซอร์กำลังวัด โดยทั่วไปการทดสอบความแม่นยำของเซ็นเซอร์จะต้องมีการเปรียบเทียบการอ่านค่ากับอุปกรณ์อ้างอิง
เซ็นเซอร์อาจมีข้อผิดพลาดเกนและออฟเซ็ต ซึ่งเป็นปัญหาที่การสอบเทียบสามารถช่วยแก้ไขได้ การปรับเทียบจะปรับตามข้อผิดพลาดที่เป็นระบบเหล่านี้ ซึ่งมักเกิดจากความทนทานต่อการผลิตหรือปัจจัยการออกแบบ
เมื่อปรับเทียบแล้ว เอาต์พุตของเซนเซอร์จะสามารถตรวจสอบเทียบกับข้อมูลอ้างอิงเพื่อยืนยันความถูกต้องได้ ควรกำหนดระดับความแม่นยำที่ต้องการตามความต้องการของแอปพลิเคชัน
ความแม่นยำ
ความแม่นยำหมายถึงความสม่ำเสมอหรือความสามารถในการทำซ้ำของการวัดของเซนเซอร์ ไม่ว่าการวัดเหล่านั้นจะใกล้เคียงกับค่าจริงแค่ไหนก็ตาม ซึ่งบ่งชี้ถึงความสามารถของเซ็นเซอร์ในการสร้างเอาต์พุตเดียวกันภายใต้สภาวะที่เหมือนกัน ตลอดจนความละเอียดของเซ็นเซอร์ที่สามารถแก้ไขและรายงานค่าได้
ตัวอย่างเช่น หากอุณหภูมิที่แท้จริงของวัตถุคือ 12.53°C:
-
เซ็นเซอร์ที่แม่นยำจะวัดค่า เช่น 12.52°C, 12.53°C หรือ 12.54°C อย่างสม่ำเสมอ แม้ว่าค่าเหล่านั้นจะชดเชยจากอุณหภูมิจริงเล็กน้อยก็ตาม
-
ในทางกลับกัน เซ็นเซอร์ที่มีความแม่นยำสูงจะวัดค่าได้ใกล้กับ 12.53°C แต่อาจขาดความแม่นยำหากค่าที่อ่านได้แตกต่างกันอย่างมาก (เช่น 12.50°C, 12.53°C และ 12.56°C)
สำหรับการใช้งานที่ต้องการการวัดที่แม่นยำ เซ็นเซอร์ที่มีทั้งความแม่นยำสูง (ใกล้เคียงกับค่าจริง) และความแม่นยำสูง (มีความแปรปรวนต่ำ) เป็นสิ่งจำเป็น นี่เป็นสิ่งสำคัญอย่างยิ่งในการแยกแยะความแตกต่างเล็กๆ น้อยๆ เช่น ระหว่าง 12.5°C ถึง 12.53°C
ในทางตรงกันข้าม การใช้งานที่มีข้อกำหนดที่เข้มงวดน้อยกว่าอาจใช้เซ็นเซอร์ที่มีความคลาดเคลื่อนกว้างกว่า เช่น ±1°C ซึ่งเพียงพอสำหรับวัตถุประสงค์ในการตรวจสอบทั่วไป
พิสัย
ช่วงของเซ็นเซอร์หมายถึงช่วงระหว่างค่าสูงสุดและต่ำสุดของคุณสมบัติทางกายภาพที่สามารถวัดได้ ในขณะที่ยังคงความแม่นยำและความแม่นยำตามที่ระบุ ช่วงการทำงานของเซ็นเซอร์อาจขยายเกินช่วงการวัด แต่ช่วงการวัดจะกำหนดขีดจำกัดที่เซ็นเซอร์จะยึดตามความไว ความแม่นยำ และเวลาตอบสนองที่ระบุได้อย่างน่าเชื่อถือ
ดริฟท์
การดริฟท์คือการที่เอาต์พุตของเซ็นเซอร์เปลี่ยนแปลงเมื่อเวลาผ่านไปเนื่องจากสภาวะต่างๆ เช่น อุณหภูมิหรือความชื้น ส่วนประกอบภายในเซ็นเซอร์ รวมถึงองค์ประกอบการตรวจจับ อาจไวต่อสภาวะเหล่านี้ ส่งผลให้การวัดมีการเปลี่ยนแปลงอย่างค่อยเป็นค่อยไป
ตัวอย่างเช่น ส่วนประกอบจำนวนมากได้รับผลกระทบจากการเปลี่ยนแปลงของอุณหภูมิและความชื้น ซึ่งสามารถเปลี่ยนแปลงการอ่านค่าของเซ็นเซอร์ได้ นอกจากนี้ เซ็นเซอร์ที่มีออสซิลเลเตอร์ภายในอาจพบการเคลื่อนตัวตามเวลา ซึ่งส่งผลกระทบต่อความแม่นยำ
การสอบเทียบเป็นประจำพร้อมการอ้างอิงภายนอกที่แม่นยำ (เช่น นาฬิกาที่แม่นยำ) สามารถช่วยแก้ไขการเบี่ยงเบนและรักษาการวัดที่เชื่อถือได้ สำหรับการใช้งานบางอย่าง การเลือกเซ็นเซอร์ที่มีลักษณะการดริฟท์ที่ยอมรับได้ถือเป็นสิ่งสำคัญ
เวลาตอบสนอง
เวลาตอบสนองคือระยะเวลาที่เซ็นเซอร์ใช้ในการตรวจจับและสะท้อนการเปลี่ยนแปลงในคุณสมบัติทางกายภาพที่วัดได้ ตัวอย่างเช่น หากอุณหภูมิสูงขึ้น 5°C เวลาตอบสนองจะระบุว่าเซ็นเซอร์อุณหภูมิใช้เวลานานเท่าใดเพื่อสะท้อนถึงการเปลี่ยนแปลงในเอาท์พุต
เวลาตอบสนองขึ้นอยู่กับการออกแบบเซ็นเซอร์ คุณภาพการผลิต และส่วนประกอบภายใน เช่น ADC (ตัวแปลงอนาล็อกเป็นดิจิทัล) วงจรเฉลี่ย และตัวกรองภายในไปป์ไลน์ของเซ็นเซอร์
พารามิเตอร์ทั้งหมดที่กล่าวถึงข้างต้นได้รับการบันทึกไว้อย่างละเอียดในเอกสารข้อมูลของเซ็นเซอร์ ในทางปฏิบัติ เป็นความคิดที่ดีที่จะสร้างเอกสารข้อกำหนดเซ็นเซอร์สำหรับการใช้งานเฉพาะแต่ละอย่าง โดยมีรายละเอียดพารามิเตอร์หลักเหล่านี้เป็นพื้นฐานสำหรับการเลือกเซ็นเซอร์
ตอนนี้คุณได้ตรวจสอบคุณลักษณะที่สำคัญของเซ็นเซอร์แล้ว มาดูวิธีเชื่อมต่อเซ็นเซอร์เข้ากับไมโครคอนโทรลเลอร์สำหรับการใช้งานในชีวิตจริงกันดีกว่า
วิธีเชื่อมต่อกับไมโครคอนโทรลเลอร์
การเลือกโปรโตคอลการสื่อสาร
ข้อกำหนดที่สำคัญอีกประการหนึ่งของเซ็นเซอร์คือการระบุอินเทอร์เฟซการสื่อสารระหว่างเซ็นเซอร์กับ MCU หรือโปรเซสเซอร์ในระบบ สิ่งสำคัญคือต้องเข้าใจว่าเซ็นเซอร์จะเชื่อมต่อกันอย่างไรตามประเภทสัญญาณเอาท์พุตและพินที่มีอยู่บนไมโครคอนโทรลเลอร์
ตัวอย่างเช่น เซ็นเซอร์บางตัวอาจเชื่อมต่อโดยตรงกับพินอินพุตแบบอะนาล็อกหรือดิจิทัลบนไมโครคอนโทรลเลอร์ เซ็นเซอร์ดิบ เช่น เซ็นเซอร์อุณหภูมิ โดยทั่วไปจะเชื่อมต่อกับพินอินพุตแบบอะนาล็อก ซึ่งจากนั้นจะถูกอ่านโดย ADC ภายในของไมโครคอนโทรลเลอร์ (ตัวแปลงแอนะล็อกเป็นดิจิทัล)
ในทางตรงกันข้าม เซ็นเซอร์เอาต์พุตดิจิทัลจะเชื่อมต่อกับพิน GPIO แบบดิจิทัล (อินพุต/เอาท์พุตวัตถุประสงค์ทั่วไป) ตัวอย่างเช่น เซ็นเซอร์ความเร็วจะสร้างคลื่นสี่เหลี่ยมที่มีความกว้างพัลส์แปรผันเพื่อระบุความเร็ว โดยปกติแล้วสัญญาณเหล่านี้จะเชื่อมต่อกับพิน GPIO ที่กำหนดค่าให้เป็นอินเทอร์รัปต์ภายนอกหรืออินพุตการจับตัวจับเวลา ซึ่งช่วยให้ไมโครคอนโทรลเลอร์วัดความกว้างพัลส์ได้อย่างแม่นยำ
ในทางกลับกัน เซ็นเซอร์อัจฉริยะมักจะรองรับโปรโตคอลการสื่อสาร เช่น SPI (Serial Peripheral Interface) หรือ I2C (Inter-Integrated Circuit) อินเทอร์เฟซเหล่านี้ช่วยให้ไมโครคอนโทรลเลอร์สามารถกำหนดค่าเซ็นเซอร์ ตรวจสอบสถานะ และดึงข้อมูลผ่านการลงทะเบียนการอ่านและเขียน
การเลือกโปรโตคอลการสื่อสารที่เหมาะสมสำหรับการเชื่อมต่อเซ็นเซอร์จะขึ้นอยู่กับพินที่มีอยู่ในระบบและข้อกำหนดเฉพาะของการใช้งาน
เคล็ดลับ :เมื่อทำงานกับโปรโตคอล เช่น I²C หรือ SPI การใช้เครื่องมือ เช่น เครื่องวิเคราะห์ตรรกะ Saleae ช่วยลดความยุ่งยากในการดีบักและการตรวจสอบได้อย่างมาก เครื่องวิเคราะห์ลอจิกจับและแสดงภาพสัญญาณการสื่อสาร และเครื่องมืออย่าง Saleae มีตัวแปลโปรโตคอลในตัวเพื่อช่วยคุณถอดรหัสการสื่อสารของเซ็นเซอร์แบบเรียลไทม์ ซึ่งจะมีประโยชน์อย่างยิ่งเมื่อแก้ไขปัญหาการกำหนดค่า ปัญหาเกี่ยวกับเวลา หรือข้อผิดพลาดในการสื่อสารระหว่างการเชื่อมต่อเซ็นเซอร์
รูปที่ 2 ด้านล่างแสดงตัวอย่างของไมโครคอนโทรลเลอร์ที่เชื่อมต่อกับเซ็นเซอร์ 4 ตัวที่มีอินเทอร์เฟซต่างกัน

การกำหนดข้อกำหนดด้านพลังงาน
ข้อกำหนดด้านกำลังไฟถือเป็นข้อพิจารณาสำคัญอีกประการหนึ่งเมื่อเชื่อมต่อเซ็นเซอร์ เซ็นเซอร์อาจทำงานที่แรงดันไฟฟ้าที่แตกต่างกัน (เช่น 3.3V หรือ 5V) ดังนั้นการตรวจสอบให้แน่ใจว่าไมโครคอนโทรลเลอร์สามารถรองรับระดับเหล่านี้ได้ถือเป็นสิ่งสำคัญ ตัวแปลงระดับสามารถเชื่อมแรงดันไฟฟ้าที่ไม่ตรงกันได้ เพื่อให้มั่นใจว่าระดับแรงดันไฟฟ้าของเซ็นเซอร์และไมโครคอนโทรลเลอร์เข้ากันได้
ข้อกำหนดด้านเวลาและการสุ่มตัวอย่างต้องได้รับการประเมินด้วย โดยเฉพาะอย่างยิ่งสำหรับเซ็นเซอร์ที่สร้างข้อมูลความถี่สูง การกำหนดค่าการขัดจังหวะภายนอกบนพิน GPIO ช่วยให้มั่นใจในการเก็บข้อมูลได้ทันท่วงที ในขณะที่เทคนิคเช่นการใช้ DMA สามารถปรับปรุงการถ่ายโอนข้อมูลสำหรับการสุ่มตัวอย่างเซ็นเซอร์ที่ความถี่สูงโดยไม่ต้องเกี่ยวข้องกับ CPU
เมื่อคุณได้เรียนรู้เกี่ยวกับโปรโตคอลการสื่อสารและการเชื่อมต่อฮาร์ดแวร์แล้ว เรามาเน้นที่การออกแบบสถาปัตยกรรมซอฟต์แวร์ที่รับ ประมวลผล และเตรียมข้อมูลเซ็นเซอร์เพื่อใช้งานกันดีกว่า การออกแบบซอฟต์แวร์ที่มีประสิทธิภาพเป็นสิ่งสำคัญอย่างยิ่งในการได้รับข้อมูลที่สะอาดและเชื่อถือได้จากเซ็นเซอร์
สถาปัตยกรรมซอฟต์แวร์
ตอนนี้เราได้เลือกเซ็นเซอร์และโปรโตคอลการสื่อสารแล้ว เรามาออกแบบสถาปัตยกรรมซอฟต์แวร์สำหรับไปป์ไลน์เซ็นเซอร์กันดีกว่า ซอฟต์แวร์นี้ทำงานบนไมโครคอนโทรลเลอร์ที่เชื่อมต่อกับเซ็นเซอร์ และประมวลผลข้อมูลดิบเพื่อให้สะอาดและใช้งานได้
แม้ว่าการประมวลผลข้อมูลระดับแอปพลิเคชันจะอยู่นอกเหนือขอบเขตของบทความนี้ แต่เรามามุ่งเน้นที่การเชื่อมต่อกับเซ็นเซอร์และการเตรียมข้อมูลสำหรับการใช้งานแอปพลิเคชันกันดีกว่า
ไปป์ไลน์การประมวลผลเซ็นเซอร์สามารถแบ่งออกเป็นองค์ประกอบต่อไปนี้:
-
ไดรเวอร์เซนเซอร์
-
รองรับการแปลงแอนะล็อกเป็นดิจิทัล (ADC)
-
การปรับขนาด
-
การสอบเทียบ
-
การประมวลผลข้อมูลภายหลัง
เรามาตรวจสอบภาพรวมระดับสูงของส่วนประกอบเหล่านี้สำหรับทั้งเซ็นเซอร์อัจฉริยะและเซ็นเซอร์ดิบกัน
ภาพรวมระดับสูงของส่วนประกอบ
-
ไดรเวอร์เซนเซอร์ ป>
-
เซ็นเซอร์อัจฉริยะ:ไดรเวอร์กำหนดค่าเซ็นเซอร์ จัดการพลังงาน และจัดการการอ่านและเขียนไปยังเซ็นเซอร์ที่ลงทะเบียนผ่านโปรโตคอลการสื่อสาร เช่น SPI, I2C
-
เซ็นเซอร์ดิบ:ไดรเวอร์สามารถควบคุมเฉพาะ GPIO สำหรับการจัดการพลังงาน เนื่องจากเซ็นเซอร์ดิบมักจะขาดรีจิสเตอร์
-
-
การสนับสนุนการแปลงแอนะล็อกเป็นดิจิทัล (ADC) ป>
-
เซ็นเซอร์อัจฉริยะ:รวม ADC ในตัว ซึ่งกำหนดค่าผ่านไดรเวอร์เซ็นเซอร์
-
เซ็นเซอร์ดิบ:ต้องใช้ ADC ภายนอก ซึ่งเป็นไดรเวอร์ ADC ที่ใช้งานในซอฟต์แวร์เพื่อกำหนดค่า ADC เริ่มการแปลง และดึงข้อมูล
-
-
การปรับขนาด :การปรับขนาดเป็นสิ่งจำเป็นสำหรับทั้งเซ็นเซอร์อัจฉริยะและเซ็นเซอร์ดิบ โดยจะแปลงจำนวนดิจิทัลหลังจากการแปลงแอนะล็อกเป็นดิจิทัลให้เป็นปริมาณทางกายภาพที่มีความหมายโดยใช้สูตรที่ให้ไว้ในเอกสารข้อมูลเซ็นเซอร์ ตัวอย่างเช่น เซ็นเซอร์อุณหภูมิจะใช้สูตรในการแปลงจำนวนดิจิทัลเป็นองศาเซลเซียส
-
การปรับเทียบ :เมื่อได้ปริมาณทางกายภาพที่วัดได้ การสอบเทียบจะปรับค่าโดยใช้ค่าออฟเซ็ต ค่าเกน หรือทั้งสองอย่างเพื่อแก้ไขข้อผิดพลาด กระบวนการนี้ช่วยให้แน่ใจว่าเอาต์พุตของเซ็นเซอร์สอดคล้องกับค่าอ้างอิงตลอดช่วงการวัดทั้งหมด การอภิปรายโดยละเอียดเกี่ยวกับกระบวนการสอบเทียบจะตามมาในหัวข้อถัดไป
-
การประมวลผลข้อมูลภายหลัง :ใช้เทคนิคหลังการประมวลผล เช่น การกรอง เพื่อปรับปรุงคุณภาพข้อมูลและลดสัญญาณรบกวน ตัวกรองทั่วไป เช่น ตัวกรองความถี่ความถี่ต่ำหรือความถี่สูงสามารถลบส่วนประกอบความถี่ที่ไม่ต้องการได้
การเข้าถึงข้อมูลจากเซ็นเซอร์
วิธีการเข้าถึงข้อมูลขึ้นอยู่กับว่าเป็นเซ็นเซอร์ดิบหรือเซ็นเซอร์อัจฉริยะ เซ็นเซอร์อัจฉริยะจะมี ADC และ FIFO ในตัว ก่อนที่จะเจาะลึกถึงวิธีการเข้าถึงข้อมูล สิ่งสำคัญคือต้องทำความเข้าใจความถี่ในการสุ่มตัวอย่างก่อน
ความถี่ในการสุ่มตัวอย่าง:
ความถี่ของการวัดจากเซนเซอร์จะต้องเป็นไปตามทฤษฎีบทสุ่มตัวอย่างแบบ Nyquist-Shannon โดยระบุว่าอัตราการสุ่มตัวอย่างจะต้องเป็นสองเท่าขององค์ประกอบความถี่สูงสุดของสัญญาณที่จะวัดเพื่อสร้างข้อมูลที่วัดได้อย่างแม่นยำ
ความถี่ในการสุ่มตัวอย่างจะกำหนดความถี่ที่เซ็นเซอร์จับข้อมูล ซึ่งส่งผลต่อวิธีการเข้าถึงข้อมูล วิธีการจัดการข้อมูลตัวอย่างนี้จะแตกต่างกันไป ขึ้นอยู่กับว่าเซ็นเซอร์นั้นเป็นเซ็นเซอร์ดิบหรือเซ็นเซอร์อัจฉริยะ
เซ็นเซอร์อัจฉริยะ: ป>
-
การลงทะเบียนข้อมูล:เซ็นเซอร์จะเขียนข้อมูลตัวอย่างลงในรีจิสเตอร์โดยตรงตามความถี่ตัวอย่างที่ตั้งไว้ซึ่งอัปเดตระหว่างการตั้งค่า ไมโครคอนโทรลเลอร์จะอ่านการลงทะเบียนข้อมูลนี้โดยอิงตามการขัดจังหวะการแปลงข้อมูลให้เสร็จสิ้น
-
FIFObBuffer:เซ็นเซอร์บางตัวมีบัฟเฟอร์ FIFO (เข้าก่อน, ออกก่อน) เพื่อจัดเก็บจุดข้อมูลหลายจุด เมื่อเปิดใช้งาน FIFO จะอัปเดตตามความถี่การสุ่มตัวอย่างที่กำหนดค่าไว้ และทริกเกอร์การขัดจังหวะเมื่อความถี่เต็มหรือถึงระดับที่กำหนดไว้ล่วงหน้า
ประโยชน์ของ FIFO ได้แก่:-
ประสิทธิภาพการใช้พลังงาน:MCU สามารถประมวลผลข้อมูลเป็นชุด ลดโอเวอร์เฮดของ CPU และอนุญาตให้เข้าสู่โหมดพลังงานต่ำระหว่างการรวบรวมข้อมูล
-
การจับคู่อัตราการสุ่มตัวอย่างและการประมวลผล:บัฟเฟอร์ FIFO ช่วยปรับความแตกต่างระหว่างอัตราการสุ่มตัวอย่างของเซ็นเซอร์และอัตราการประมวลผลข้อมูลของ MCU
-
สำหรับ MCU ที่มี Direct Memory Access (DMA) การถ่ายโอนข้อมูลจากเซ็นเซอร์ไปยังหน่วยความจำ MCU สามารถเกิดขึ้นได้โดยไม่ต้องมีการแทรกแซงของ CPU ซึ่งช่วยลดการใช้พลังงานได้อีก
-
เซ็นเซอร์ดิบ: ป>
สำหรับเซ็นเซอร์ดิบ MCU จะทริกเกอร์การแปลง ADC ที่ความถี่ในการสุ่มตัวอย่าง ซึ่งมักใช้การขัดจังหวะของตัวจับเวลา ข้อมูลจะถูกอ่านเมื่อมีการขัดจังหวะการแปลง ADC โดยสมบูรณ์ ทำให้ MCU เข้าสู่โหมดสลีประหว่างการแปลงและระหว่างตัวอย่างเพื่อประหยัดพลังงาน
การจัดการพลังงานของเซ็นเซอร์
การจัดการพลังงานถือเป็นสิ่งสำคัญสำหรับการใช้งานที่คำนึงถึงพลังงาน กลยุทธ์ได้แก่:
-
โหมดพลังงานต่ำ:เซ็นเซอร์จำนวนมากรองรับโหมดพลังงานต่ำที่กำหนดค่าได้ผ่านรีจิสเตอร์เซ็นเซอร์
-
การหมุนเวียนพลังงานที่ควบคุมโดย GPIO (การปั่นจักรยานตามหน้าที่):สำหรับเซ็นเซอร์ที่ไม่มีโหมดพลังงานต่ำในตัว ไมโครคอนโทรลเลอร์สามารถสลับสายไฟของเซ็นเซอร์โดยใช้พิน GPIO ซึ่งช่วยลดการใช้พลังงานเพิ่มเติม รูปที่ 3 ด้านล่างแสดงแผนภาพของเซ็นเซอร์วัดอุณหภูมิดิบซึ่งควบคุมพลังงานโดยใช้ GPIO จาก MCU ตัวอย่างเช่น เซ็นเซอร์อุณหภูมิในโหมดสลีปสามารถเปิดใช้งานได้เมื่อจำเป็นต้องอ่านอุณหภูมิเท่านั้น

เทคนิคข้างต้นช่วยให้มั่นใจได้ถึงการใช้พลังงานอย่างมีประสิทธิภาพ ขณะเดียวกันก็รักษาอัตราการสุ่มตัวอย่างข้อมูลที่ต้องการและการตอบสนองของเซ็นเซอร์
เมื่อคำนึงถึงสถาปัตยกรรมระดับสูงแล้ว ตอนนี้เราจะเจาะลึกการออกแบบโดยละเอียดของส่วนประกอบไปป์ไลน์แต่ละรายการ
การออกแบบส่วนประกอบโดยละเอียด
ในส่วนนี้ คุณจะเจาะลึกองค์ประกอบสำคัญของไปป์ไลน์เซ็นเซอร์ตามที่ระบุไว้ในส่วนสถาปัตยกรรมซอฟต์แวร์
1. ไดรเวอร์เซนเซอร์
ไดรเวอร์เซ็นเซอร์มีหน้าที่จัดการการสื่อสาร การกำหนดค่า พลังงาน และการได้มาของข้อมูลสำหรับทั้งเซ็นเซอร์อัจฉริยะและเซ็นเซอร์ดิบ
ไดรเวอร์เซนเซอร์อัจฉริยะ:
-
ไดรเวอร์การสื่อสาร:ไดรเวอร์ I2C หรือ SPI ทั่วไปบน MCU สามารถปรับเปลี่ยนได้โดยใช้ฟังก์ชัน wrapper เพื่อจัดการข้อกำหนดเฉพาะของเซ็นเซอร์ เช่น การถ่ายโอน 1 ไบต์ 2 ไบต์ หรือ 4 ไบต์
-
การกำหนดค่า:งานทั่วไป ได้แก่ การตั้งค่าอัตราการสุ่มตัวอย่าง การกำหนดค่าการขัดจังหวะ การจัดการบัฟเฟอร์ FIFO และการตั้งค่านาฬิกา หากจำเป็น
-
การจัดการพลังงาน:API ควรอนุญาตให้เลเยอร์ซอฟต์แวร์ที่สูงกว่าเปลี่ยนเซ็นเซอร์ระหว่างโหมดพลังงานโดยการเขียนไปยังรีจิสเตอร์เฉพาะหรือควบคุมสาย GPIO สำหรับเซ็นเซอร์ที่ไม่มีโหมดพลังงานในตัว
ไดรเวอร์เซ็นเซอร์ดิบ:
สำหรับเซ็นเซอร์ดิบ ไดรเวอร์จะจัดการพลังงานเป็นหลัก โดยมักจะผ่านการสลับที่ควบคุมโดย GPIO
2. การสนับสนุน ADC
จำเป็นต้องมีการรองรับ ADC สำหรับเซ็นเซอร์ดิบเท่านั้น ในบทความนี้ เรากำลังมุ่งเน้นไปที่ SAR ADC ซึ่งโดยทั่วไปจะฝังอยู่ในไมโครคอนโทรลเลอร์
SAR ADC ทำงานอย่างไร
SAR ADC แปลงสัญญาณแอนะล็อกเป็นค่าดิจิทัลในหลายรอบสัญญาณนาฬิกา โดยจำนวนรอบเท่ากับความละเอียดบิตของสัญญาณ (เช่น 10 รอบสำหรับ ADC 10 บิต)
-
แรงดันอ้างอิง (VRef):แสดงถึงแรงดันไฟฟ้าสูงสุดที่ ADC สามารถวัดได้ สัญญาณแอนะล็อกที่เกินขีดจำกัดนี้จะต้องถูกลดขนาดลง
-
ความละเอียด:กำหนดการเปลี่ยนแปลงแรงดันไฟฟ้าที่ตรวจพบได้น้อยที่สุด ตัวอย่างเช่น ADC 10 บิตที่มี 3.3V VRef มีความละเอียด 3.22 mV
$$V_{\text{Res}} =V_{\text{Ref}} /2^{10}$$
ผลลัพธ์ของ ADC จะถูกจัดเก็บไว้ในการลงทะเบียนข้อมูล ซึ่งสามารถปรับขนาดเป็นหน่วยทางกายภาพที่มีความหมายได้
3. การปรับขนาด
การปรับขนาดจะแปลงการนับ ADC ให้เป็นค่าทางกายภาพที่มีความหมาย เช่น อุณหภูมิ (°C) หรือการเร่งความเร็ว (g) ขึ้นอยู่กับประเภทของเซ็นเซอร์ โดยทั่วไปเอกสารข้อมูลเซนเซอร์จะมีสูตรหรือตารางการค้นหาที่จำเป็น
ตัวอย่างเช่น วิธีการแปลงแรงดันไฟฟ้าที่วัดโดยเซ็นเซอร์อุณหภูมิดิบเป็นค่าอุณหภูมิแสดงไว้ด้านล่าง:
$$V_{\text{Measured}} =Counts_{\text{ADC}} / 2^{10} * V_{\text{Ref}} \quad \text{(รับ V_Measured จากจำนวน ADC)}$$
$$Temperature_{\text{Measured}} =V_{\text{Measured}} * T_{\text{C/mV}} \quad \text{(รับค่าทางกายภาพของอุณหภูมิ)}$$
ในทำนองเดียวกัน ตัวตรวจวัดความเร่งแบบ 3 แกนจะแมปบนแกน X, Y และ Z เป็นค่าความเร่งในหน่วย g หรือมิลลิกรัม
4. การสอบเทียบ

รูปด้านบนทางซ้าย (4a) แสดงการปรับเทียบด้วยเกนและออฟเซ็ต ในขณะที่รูปด้านบนทางขวา (4b) แสดงการปรับเทียบด้วยออฟเซ็ตคงที่
$$x_{\text{calibrated}} =ได้รับ * x_{\text{raw}} + ออฟเซ็ต \quad \text{(รูปที่ 4a - การปรับเทียบเชิงเส้น)}$$
$$x_{\text{calibrated}} =x_{\text{raw}} + ออฟเซ็ต \quad \text{(รูปที่ 4b - การปรับเทียบออฟเซ็ตคงที่)}$$
การสอบเทียบช่วยให้แน่ใจว่าเอาต์พุตของเซ็นเซอร์สอดคล้องกับการวัดอ้างอิง การแก้ไขข้อผิดพลาดที่เกิดจากการออกแบบ วัสดุ หรือการผลิต
ประเภทของข้อผิดพลาด:
-
ข้อผิดพลาดออฟเซ็ต:ค่าเบี่ยงเบนคงที่ของเอาท์พุตของเซนเซอร์จากค่าอ้างอิงที่แท้จริง โดยไม่คำนึงถึงขนาดของอินพุต
-
ข้อผิดพลาดที่ได้รับ:ข้อผิดพลาดตามสัดส่วนที่สเกลเอาต์พุตของเซ็นเซอร์เบี่ยงเบนไปจากค่าที่คาดไว้ ทำให้เอาต์พุตเพิ่มหรือลดลงอย่างไม่ถูกต้องเมื่อเทียบกับอินพุต
วิธีการสอบเทียบ:
-
การสอบเทียบ 2/3 จุด:การสอบเทียบประเภทนี้อาจเกี่ยวข้องกับการใช้ออฟเซ็ตคงที่กับค่าดิบ หรือใช้ทั้งเกนและออฟเซ็ต รูปที่ 4a แสดงตัวอย่างของการสอบเทียบเกน/ออฟเซ็ต ในขณะที่รูปที่ 4b แสดงให้เห็นการสอบเทียบออฟเซ็ต ในทั้งสองรูป แกน y แสดงถึงค่าอ้างอิงที่วัดโดยเครื่องมือที่แม่นยำ ในขณะที่แกน x แสดงถึงค่าดิบที่เซ็นเซอร์วัดหลังจาก ADC
-
การสอบเทียบ N-Point:เกี่ยวข้องกับหลายจุดเพื่อการแก้ไขข้อผิดพลาดที่ไม่ใช่เชิงเส้นที่ซับซ้อนมากขึ้น
การนำไปปฏิบัติ:
-
จุดสอบเทียบจะต้องครอบคลุมช่วงการวัดทั้งหมดของเซ็นเซอร์เพื่อความแม่นยำ
-
พารามิเตอร์ เช่น อัตราขยายและค่าชดเชยเมื่อประมาณไว้จะถูกจัดเก็บไว้ในหน่วยความจำแบบไม่ลบเลือนในระบบเพื่อให้คงอยู่ตลอดวงจรกำลังไฟฟ้า
5. การประมวลผลข้อมูลภายหลัง
หลังการประมวลผลที่ครอบคลุมในส่วนนี้พูดถึงการลบสัญญาณรบกวนและส่วนประกอบสัญญาณที่ไม่ต้องการ ซึ่งช่วยเพิ่มความน่าเชื่อถือของข้อมูล
การกรอง
การกรองเป็นกระบวนการลบส่วนประกอบความถี่ที่ไม่ต้องการออกจากสัญญาณเพื่อปรับปรุงคุณภาพข้อมูล มีตัวกรองหลายประเภท:
-
ตัวกรองความถี่ต่ำผ่าน:อนุญาตให้สัญญาณความถี่ต่ำผ่านในขณะที่ลดทอนสัญญาณรบกวนความถี่สูง
-
ตัวกรองความถี่สูงผ่าน:อนุญาตให้สัญญาณความถี่สูงผ่านในขณะที่ลดทอนสัญญาณรบกวนความถี่ต่ำ (เช่น ความเร่งโน้มถ่วงในข้อมูลมาตรความเร่ง)
-
Band-Pass Filters:เก็บเฉพาะสัญญาณภายในช่วงความถี่ที่กำหนด โดยลบทั้งความถี่ต่ำและความถี่สูงที่อยู่นอกแบนด์ที่ต้องการ
ตัวกรองเหล่านี้มักถูกนำมาใช้เป็นตัวกรอง FIR (Finite Impulse Response) หรือ IIR (Infinite Impulse Response) ตัวกรอง IIR นั้นใช้งานง่ายและมีประสิทธิภาพในการคำนวณ ในขณะที่ตัวกรอง FIR นั้นมีความเข้มข้นในการคำนวณ แต่สามารถควบคุมการตอบสนองความถี่ได้ดีกว่า
ที่นี่ เราจะสำรวจตัวกรองความถี่ต่ำผ่านง่ายๆ ที่เรียกว่า Exponential Moving Average (EMA) ซึ่งเป็นตัวกรอง IIR ประเภทหนึ่ง ตัวกรองค่าเฉลี่ยเคลื่อนที่เป็นเทคนิคทางคณิตศาสตร์ที่ทำให้ความผันผวนในระยะสั้นราบรื่นขึ้นพร้อมทั้งเน้นย้ำแนวโน้มในระยะยาว
ต่างจากตัวกรองค่าเฉลี่ยเคลื่อนที่อื่นๆ ตรงที่ EMA ไม่ต้องการการบำรุงรักษาบัฟเฟอร์ ทำให้มีประสิทธิภาพด้านหน่วยความจำมากขึ้น นอกจากนี้ยังตอบสนองต่อการเปลี่ยนแปลงข้อมูลได้ดีกว่าในขณะที่ยังคงความราบรื่น ทำให้เหมาะสำหรับการกรองแบบเรียลไทม์ EMA กำหนดน้ำหนักให้กับตัวอย่างข้อมูลล่าสุดมากกว่าตัวอย่างเก่า ทำให้สามารถปรับให้เข้ากับการเปลี่ยนแปลงในการอ่านค่าของเซ็นเซอร์ได้อย่างรวดเร็ว
EMA สามารถคำนวณได้ดังนี้:
$$EMA_{\text{t}} =\อัลฟา * x_{\text{t}} + (1 - \อัลฟา) * EMA_{\text{t - 1}}$$
$$\alpha =2 / (N + 1) \quad \text{(ปัจจัยการปรับให้เรียบ, N - ขนาดหน้าต่างตัวกรอง)}$$
$$EMA_{\text{t}} \quad \text{(ค่าเฉลี่ยเคลื่อนที่แบบเอ็กซ์โปเนนเชียลในการวนซ้ำปัจจุบัน)}$$
$$x_{\text{t}} \quad \text{(ตัวอย่างข้อมูลใหม่ในการวนซ้ำปัจจุบัน)}$$
$$EMA_{\text{t - 1}} \quad \text{(ค่าเฉลี่ยเคลื่อนที่แบบเอ็กซ์โพเนนเชียลในการวนซ้ำครั้งล่าสุด)}$$
ตอนนี้เราเข้าใจตัวกรอง Exponential Moving Average (EMA) แล้ว ต่อไปนี้เป็นปัจจัยหลักสองประการที่ควรพิจารณาเมื่อปรับแต่งตัวกรองสำหรับแอปพลิเคชัน:
-
การปรับให้เรียบเทียบกับการตอบสนอง:ปัจจัยการปรับให้เรียบที่สูงกว่า (ใกล้กับ 1 ขนาดหน้าต่างตัวกรองเล็กลง) ให้น้ำหนักกับข้อมูลล่าสุดมากขึ้น ทำให้ตัวกรองตอบสนองต่อการเปลี่ยนแปลงได้มากขึ้น แต่มีประสิทธิภาพน้อยลงในการลดสัญญาณรบกวน ปัจจัยการปรับให้เรียบที่ต่ำกว่า (ใกล้กับ 0 ขนาดหน้าต่างตัวกรองที่ใหญ่ขึ้น) ช่วยลดสัญญาณรบกวนได้ดีขึ้น แต่จะตอบสนองต่อการเปลี่ยนแปลงข้อมูลได้ช้ากว่า
-
การปรับแต่งเฉพาะการใช้งาน:ควรเลือกปัจจัยการปรับให้เรียบโดยพิจารณาจากอัตราการสุ่มตัวอย่าง ความไวของเซ็นเซอร์ และข้อกำหนดในการใช้งาน ระบบเรียลไทม์มักต้องการความสมดุลระหว่างการตอบสนองที่รวดเร็วและเอาต์พุตที่เสถียร
นี่คือตัวอย่างโค้ดสำหรับ EMA:
#include <stdio.h>
#include <stdint.h>
// Exponential Moving Average (EMA) filter implementation
#define FILTER_WINDOW 5
// Function to calculate EMA
float calculateEMA(float ema, float new_value, float alpha) {
return (alpha * new_value) + (1 - alpha) * ema;
}
int main() {
float sensorReadings[] = {26.0, 27.5, 28.2, 27.0, 26.8, 26.5, 27.2};
int numReadings = sizeof(sensorReadings) / sizeof(sensorReadings[0]);
float alpha = 2.0f / (FILTER_WINDOW + 1); // Standard EMA formula
float ema = sensorReadings[0]; // Initialize EMA with the first reading
printf("EMA Filtered Sensor Data:\n");
for (int i = 0; i < numReadings; i++) {
ema = calculateEMA(ema, sensorReadings[i], alpha);
printf("Reading %d: Raw = %.2f, EMA = %.2f\n", i + 1, sensorReadings[i], ema);
}
return 0;
}
บทสรุป
โดยสรุป เซ็นเซอร์เป็นกระดูกสันหลังของอุปกรณ์อัจฉริยะสมัยใหม่ ซึ่งเชื่อมช่องว่างระหว่างโลกทางกายภาพและระบบดิจิทัล ตั้งแต่อุปกรณ์อิเล็กทรอนิกส์สำหรับผู้บริโภคไปจนถึงระบบอัตโนมัติทางอุตสาหกรรมและอุปกรณ์ทางการแพทย์ ช่วยให้อุปกรณ์รับรู้และโต้ตอบกับสภาพแวดล้อมได้
การทำความเข้าใจวิธีการทำงานของเซ็นเซอร์ ส่วนประกอบของไปป์ไลน์ข้อมูล และการบูรณาการกับไมโครคอนโทรลเลอร์ ถือเป็นสิ่งสำคัญสำหรับวิศวกรและผู้ที่ชื่นชอบงานอดิเรก ด้วยการออกแบบไปป์ไลน์ที่มีประสิทธิภาพ นักพัฒนาสามารถรับประกันข้อมูลที่ถูกต้อง สะอาด และเชื่อถือได้ ช่วยให้ระบบบรรลุเป้าหมายด้านประสิทธิภาพและประสิทธิภาพพลังงาน
หากคุณมีคำถามหรือต้องการพูดคุยเพิ่มเติมเกี่ยวกับหัวข้อนี้ โปรดติดต่อทาง Twitter หรือ LinkedIn ยินดีเสมอที่จะเชื่อมต่อ
เรียนรู้การเขียนโค้ดฟรี หลักสูตรโอเพ่นซอร์สของ freeCodeCamp ช่วยให้ผู้คนมากกว่า 40,000 คนได้งานในตำแหน่งนักพัฒนา เริ่มต้น