การเขียนโปรแกรม low pass filter

May 26, 2019 00:36 · 60 words · 1 minute read Electronic

ในงานด้าน hardware ที่มีการอ่านข้อมูลจาก sensor แน่นอนว่าข้อมูลที่ได้มาในแต่ละครั้งอาจจะมีข้อมูลที่ error หรือข้อมูลที่เพี้ยนไปจากความเป็นจริงบางช่วงเวลา ซึ่งเราไม่ต้องการข้อมูลพวกนั้นเช่น ถ้าเราต้องการวนลูปอ่านข้อมูลจาก Accelerometer เป็น sensor วัดความเร่ง ปกติแล้วเมื่อเราวนลูปอ่านข้อมูลจาก sensor พวกนี้จะได้ค่า error หรือสัญญานรบกวน ค่อนข่างสูง

Accelerometer

Accelerometer

เราสามารถเขียนโปรแกรมลดสัญญานรบกวนได้จากสมการนี้

y[now] = ( k*y[t] ) + ( ( 1-k )*y[t-1] )

อธิบายสูตร

  • y[now] คือ ค่าที่ถูก filter แล้ว ณ. เวลานั้น(รอบปัจจุบัน)
  • k คือ ระดับการกรองตั้งแต่ 0-1(1=ไม่ได้กรองเลย, 0=กรองออกหมดเลย)  ค่ายิ่งใกล้เคียง 0 มากจะยิ่งกรองมาก
  • y[t] คือ ค่าที่อ่านได้จาก sensor ในรอบปัจจุบัน
  • y[t-1] คือ ค่าที่ได้จาก sensor ในรอบก่อนหน้านี้(ค่าจาก sensor ที่อ่านได้จากครั้งที่แล้ว)