คุณเก็บค่าอะไรลงใน "ลงทะเบียน 0x31 — DATA_FORMAT"
ฉันจะสมมติว่าคุณไม่ได้เก็บอะไรไว้ในรีจิสเตอร์นั้นดังนั้นจึงยังอยู่ในค่ารีเซ็ตเป็น 00 อีกนัยหนึ่งในขณะที่คุณกำลังรวบรวมข้อมูล (จากตารางที่ 16 และหน้า 17 ของแผ่นข้อมูล ADXL345 ):
- ลงทะเบียน 0x31 — DATA_FORMAT == 00
- FULL_RES == 0 ดังนั้นอุปกรณ์อยู่ในโหมด 10 บิตและบิตช่วงจะกำหนดช่วง g สูงสุดและตัวประกอบสเกล
- Justify Bit == 0 ดังนั้นโหมด justified ที่ถูกต้องพร้อมส่วนขยายสัญญาณ
- ช่วงบิต == 00 ดังนั้นช่วง + 2g
สิ่งแรกที่ฉันจะทำคือกู้คืนค่า 16 บิตดั้งเดิมจากการอ่านจาก accelerometer (เช่นถ้าฉันทิ้งข้อมูลดั้งเดิมอย่างไม่ระมัดระวังและที่เหลือคือตัวเลขในหน่วยของ "g" ที่คำนวณได้โดยการลบออฟเซ็ตและคูณด้วยตัวคูณสเกลที่ไม่ถูกต้องฉันจะคัดลอกข้อมูลที่รวบรวมไว้ลงใน สเปรดชีตและหารด้วยตัวคูณสเกล (ไม่ถูกต้อง) เดียวกันแล้วเพิ่มออฟเซ็ตนั้นเพื่อพยายามกู้คืนบางสิ่งที่ใกล้เคียงกับค่าดั้งเดิม)
จากนั้นฉันจะสร้างกราฟข้อมูลและดูว่ามันดูเหมือน "saturation", "linear" หรือ "roll-over" (ดังที่อธิบายไว้ด้านล่าง)
แผ่นข้อมูลมีความคลุมเครืออย่างไม่น่าเชื่อว่าเกิดอะไรขึ้นเมื่อเซ็นเซอร์มีความเร่งมากกว่า 2 กรัม
พูดจาโผงผาง
ฉันบอกคุณไหมว่ามันทำให้ฉันรำคาญมากแค่ไหนเมื่อนักเขียนด้านเทคนิคยืนยันในการเขียนด้วยเสียงที่ไม่โต้ตอบ? เมื่อผู้เขียนใช้เสียงแฝงในประโยคที่คุณยกมา
"ข้อมูลทั้งหมดยกเว้นว่าจะต้องมีการตัดช่วง± 16 g เพื่อหลีกเลี่ยงการโรลโอเวอร์" (หน้า 17)
ฉันไม่สามารถบอกได้ว่าใครควรจะทำการตัดนี้
หลายคนแนะนำให้ใช้เสียงที่ใช้งานอยู่ เมื่อฉันทำตามคำแนะนำเหล่านั้นข้อความของฉันมักจะชัดเจนว่าใครทำอะไร มันจะดีกว่าไหมถ้าฉันเขียนเนื้อหาที่เข้าใจง่ายกว่าแทนที่จะใช้สไตล์ที่ผู้คนถูกหลอกให้คิดว่าเสียง "เป็นมืออาชีพมากขึ้น" หรือ "มีความสามารถทางวิชาการมากขึ้น"?
การตัดอัตโนมัติ
การคาดเดาที่ดีที่สุดของฉันคือ accelerometer จะจับภาพนี้โดยอัตโนมัติ
ความอิ่มตัว : หากคุณเห็นความเร่งที่เพิ่มขึ้นตามค่าที่เป็นไปได้จากนั้นก็ติดอยู่ที่ที่ราบสูงที่อิ่มตัวหรือใกล้กับ + 2g จากนั้นมาตรวัดความเร่ง "ช่วย" ดึงข้อมูลมาให้คุณ หลังจากการตัดค่า "top" จะไม่ระบุ "การเร่งความเร็วใกล้กับ +2g" อีกต่อไป แต่ตอนนี้ระบุว่า "การเร่งความเร็วอย่างน้อย 2g และอาจเป็นไปได้มากขึ้น - ไม่มีทางที่จะบอก"
เพราะมันอยู่ในโหมด 10-bit Right-justified เมื่อฉันตีความค่า 16 บิตเหล่านั้นเป็นจำนวนเต็ม 16 บิตปกติที่เซ็นชื่อฉันคาดว่าจะเห็นค่าต่าง ๆ ตั้งแต่
- 0x01FF = +511 แสดงมากกว่า 1.992 กรัม เป็นไปได้มากยิ่งขึ้น
- 0x01FE = +510 หมายถึง 510/256 g ~ = 1.992 กรัม
- 0x01FD = +509 หมายถึง 510/256 g ~ = 1.988 g
- ...
- 0x0001 = +1 หมายถึง 1/256 g = 0.0039 กรัม
- 0x0000 = 0 หมายถึง 0 กรัม
- 0xFFFF = -1 หมายถึง -1/256 g = 0.0039
- ...
- 0xFE02 = -510 หมายถึง -510/256 = -1.992 กรัม
- 0xFE01 = -511 หมายถึง -511/256 = -1.996 กรัม
- 0xFE00 = -512 หมายถึงบางสิ่งที่เป็นลบมากกว่า -1.996 กรัม อาจเป็นไปได้มากในแง่ลบ
(ใช่ฉันรู้ว่าเซ็นเซอร์นี้มีความแม่นยำทศนิยม 4 ตำแหน่งสำหรับเซ็นเซอร์นี้) (ฉันเคยเห็นอุปกรณ์บางอย่างอิ่มตัวที่จุดอื่นเช่น -511 หรือ -510 ฉันมักจะสามารถดูข้อมูลและหาจุดอิ่มตัวที่แท้จริง)
คุณสามารถกู้คืนบางข้อมูลที่เป็นประโยชน์จากข้อมูลชุดนี้ถูกตัด คุณสามารถใช้มันเพื่อวัดตัวอย่างเช่นกี่มิลลิวินาทีการเร่งความเร็วเป็นอย่างน้อย 1.5 กรัม อนิจจาเมื่อคุณเห็นที่ราบในชุดข้อมูลชนิดนี้มันเป็นไปไม่ได้ที่จะวัดความเร่งสูงสุดหรือแรงกระตุ้นโดยรวม - สิ่งที่ดีที่สุดที่คุณทำได้คือพูดว่า "อืมเรารู้ว่าการเร่งความเร็วสูงสุดนั้นอย่างน้อย 2 กรัมและอาจมากกว่า "และคำนวณ" ดีเราคำนวณว่าแรงกระตุ้นรวมเป็นอย่างน้อย (อย่าง) นิวตัน * วินาที "
ทางเลือก
มันควรจะเป็นไปได้ที่จะคิดออกว่า accelerometer หรือไม่จากข้อมูล (ฉันอธิบายว่า "ความอิ่มตัว", "เชิงเส้น" และ "การหมุน" ในแง่ของทางลาดขึ้น - ด้วยชุดของข้อมูลบางอย่างมันอาจจะชัดเจนกว่าที่จะดูทางลาดลงแทน)
เป็นเส้นตรง : หากคุณเห็นอัตราเร่งเพิ่มขึ้นจากค่าที่เป็นไปได้ให้เพิ่มค่าสูงขึ้นเรื่อย ๆ (ค่าสูงกว่า 512 หรือลบมากกว่า -512) จากนั้นคุณก็โชคออก - accelerometer ไม่ได้ทำการตัดและ คุณมีข้อมูลที่ถูกต้องตลอดช่วงทั้งหมด
roll-over : หากคุณเห็นการเร่งความเร็วขึ้นไปตามค่าที่เป็นไปได้และก่อนที่มันจะถึง +2 g มันจะกระโดดไปที่ค่าที่ไม่เกี่ยวกับร่างกายจริง ๆ ในระยะใกล้ -2 กรัมจากนั้นก็เพิ่มขึ้นเรื่อย ๆ ผ่านศูนย์จากนั้นเข้าใกล้ +2g อีกครั้งและกระโดดกลับลงมาใกล้ -2 กรัมอีกครั้ง - จากนั้นคุณมีการพันรอบ หากคุณโชคดีค่าต่างๆจะเปลี่ยนไปอย่างราบรื่นมากทำให้สามารถตรวจจับแต่ละโรลโอเวอร์และ"แกะ"ค่าเหล่านี้เพื่อกู้คืนแรงจีที่แท้จริง
ps: อย่าลังเลที่จะแก้ไขOpen Circuits: Rocket Computer