포화 가속도계에서 데이터 복구


10

나는이 ADXL345 가속도계 및 출시에 하이브리드 로켓에 장착. 불행히도, 나는 기본값을 +/- 2g에서 +/- 8g로 설정하는 것을 잊었다.

+/- 2g 범위의 경우 데이터 시트에는 10 비트의 출력 해상도가 나열되고 +/- 8g에는 12 비트의 해상도가 나열됩니다.

DATA_FORMAT레지스터 (0x31) 아래의 링크 된 데이터 시트에서이를 발견했습니다 .

DATA_FORMAT 레지스터는 레지스터 0x37을 통해 레지스터 0x32에 대한 데이터 표시 를 제어합니다 . 롤오버를 피하기 위해 +/- 16g 범위를 제외한 모든 데이터를 클리핑해야합니다. ( 중점 광산 )

이 진술과 기능적 블록 다이어그램 (3 축 센서는 "센스 전자 장치"에 연결되고 ADC에 연결됨)을 바탕으로 올바른 데이터를 해결할 수있는 방법이 있기를 바랍니다. 스케일 팩터는 데이터 시트의 3 페이지에 나열되어 있습니다.

적어도 1 ~ 2 개의 유효 숫자로이 데이터를 해결할 수있는 방법이 있습니까? (예를 들어, 나는 1.9414g의 탐지를 가지고 있습니다-이것은 약 6이어야합니다). 나는 센서가 포화되어 있다고 생각하지 않고 단지 데이터 레지스터의 숫자-스케일 팩터와 창의적인 비트 시프트 (해상도를 변경할 때 10에서 12 비트로 얻는 방법이 완전히 명확하지 않음)를 감안할 수 있기를 바랍니다. 내 데이터에서 유용한 것을 복구하십시오 .


롤오버로 2g 디스플레이를 가정하여 데이터를 플롯하면 더 긴 단어의 아래쪽 2g가 표시됩니다. 결과는 어떻게 표시됩니까? 오름차순으로 당신은 일련의 톱니를보기를 원합니다. 0-2 = 0-2. 2-4 = 0-2. 4-6 = 0-2.
Russell McMahon

로켓을 복구하면 그 샷을 드리겠습니다. 구름 뒤에서 잃어버린 이후로 내가 가지고있는 데이터가 충분하지 않습니다.
Dang Khoa

답변:


7

실제로 "Register 0x31—DATA_FORMAT"에 어떤 값을 저장 했습니까?

해당 레지스터에 아무것도 저장하지 않았다고 가정하여 여전히 재설정 값 00으로 설정되어 있습니다. 즉, 데이터를 수집하는 동안 (표 16 및 ADXL345 데이터 시트의 17 페이지 ) :

  • 레지스터 0x31—DATA_FORMAT == 00.
  • FULL_RES == 0. 따라서 장치는 10 비트 모드에 있으며 범위 비트는 최대 g 범위 및 스케일 팩터를 결정합니다.
  • Justify Bit == 0. 부호 확장이있는 오른쪽 정렬 모드.
  • 범위 비트 == 00. 따라서 +-2g 범위.

가장 먼저해야 할 일은 가속도계에서 읽은 원래 16 비트 값을 복구하는 것입니다. (즉, 내가 원래 데이터를 부주의하게 버리고 남은 것은 오프셋을 빼서 계산하고 잘못된 스케일 팩터를 곱하여 계산 한 "g"단위의 숫자이면 수집 된 데이터를 동일한 (잘못된) 배율로 나눈 다음 오프셋을 추가하여 원래 값에 가까운 것을 복구하십시오.

그런 다음 데이터를 그래프로 표시하고 "포화", "선형"또는 "롤오버"(아래 설명 참조)와 유사한 지 확인합니다.

센서가 2g보다 큰 가속을 경험할 때 발생하는 일에 대해서는 데이터 시트가 매우 모호합니다.

접선

기술 작가가 수동적 인 목소리로 글을 쓰려고 할 때 얼마나 짜증나는지 말해 주었습니까? 작가가 당신이 인용 한 문장에서 수동태를 사용하면

"롤오버를 피하려면 ± 16g 범위를 제외한 모든 데이터를 클리핑해야합니다." (17 페이지)

이 클리핑을 누가 정확히 수행해야하는지 알 수 없습니다.

많은 사람들이 적극적인 목소리를 사용하는 것이 좋습니다 . 이러한 권장 사항을 따르면 일반적으로 누가 무엇을하는지에 대한 글이 더 명확 해집니다. 사람들이 "보다 전문적인"또는 "보다 학술적으로"생각하는 속임수를 쓰는 스타일을 사용하는 것보다 이해하기 쉬운 물건을 쓸 때 더 좋지 않습니까?

자동 클리핑

가장 좋은 추측은 가속도계가 자동으로이 클리핑을 수행한다는 것입니다.

포화 : 당신이 그럴듯한 값을 통해 가속 램프가 올라가는 것을 볼 때, 신비롭게 고원에 붙어 + 2g에 가까워지면서 가속도계가 데이터를 "도움이되도록"잘랐습니다. 클리핑 후 "top"값은 더 이상 "+ 2g에 매우 가까운 가속도"를 나타내지 않지만 이제는 "적어도 2g 이상, 아마도 훨씬 더 많은 가속도를 말할 방법이 없음"을 나타냅니다.

10 비트 오른쪽 정렬 모드에 있었기 때문에 16 비트 값을 일반적인 16 비트 부호있는 정수로 해석하면

  • 0x01FF = +511로 1.992g 이상을 나타냅니다. 아마도 훨씬 더.
  • 0x01FE = +510, 510 / 256g ~ = 1.992g
  • 0x01FD = +509, 510 / 256g ~ = 1.988g
  • ...
  • 1 / 256g = 0.0039g을 나타내는 0x0001 = +1
  • 0g을 나타내는 0x0000 = 0
  • 0xFFFF = -1, -1 / 256g = 0.0039를 나타냄
  • ...
  • 0xFE02 = -510, -510/256 = -1.992g을 나타냅니다.
  • 0xFE01 = -511, -511/256 = -1.996g
  • 0xFE00 = -512, 더 부정적인 것을 나타냅니다 -1.996g. 아마도 훨씬 더 부정적 일 것입니다.

(예,이 센서에는 소수점 이하 4 자리의 정밀도가 필요하지 않습니다.) (일부 장치는 -511 또는 -510과 같은 다른 지점에서 포화되는 것을 보았습니다. 일반적으로 데이터를보고 실제 포화 점을 알아낼 수 있습니다).

당신은 복구 할 수 있습니다 어떤 이 클리핑 된 데이터 세트에서 유용한 데이터를. 예를 들어 가속이 1.5 g 이상인 밀리 초 수를 측정하는 데 사용할 수 있습니다. 아아, 이런 종류의 데이터 세트에서 고원을 볼 때 최대 가속도 또는 총 임펄스를 측정하는 것은 불가능합니다. "최고 가속도는 최소 2g 이상일 것입니다. ", 총 임펄스가 적어도 (일부) 뉴턴 * 초인 것으로 계산합니다 ."

대안

가속도계가 데이터에서 클리핑되는지 여부를 파악할 수 있어야합니다. (램프 업 측면에서 "포화", "선형"및 "롤오버"에 대해 설명했습니다. 일부 데이터 세트에서는 램프 다운을보다 명확하게 볼 수 있습니다.)

linear : 그럴듯한 값을 통해 가속 램프가 증가한 경우 계속 높은 값 (512 이상의 값 또는 -512보다 음의 값)으로 계속 상승하면 가속도계가 실제로 클리핑을 수행하지 않은 것입니다. 전체 범위에 유효한 데이터가 있습니다.

롤오버 : 가속 값이 그럴듯한 값을 통해 증가하고 +2 g에 도달하기 직전에 -2 g 근처의 비 물리적으로 현실적인 값으로 즉시 점프 한 다음 계속 상승합니다. 0을 통해 + 2g에 다시 접근하고 다시 -2g 근처로 다시 점프하면 롤오버 랩 어라운드가 발생합니다. 운이 좋으면 값이 매우 매끄럽게 변경되어 각 롤오버를 감지하고 이러한 값을 "포장 해제" 하여 실제 g 힘을 회복 할 수 있습니다.

ps : Open Circuits : Rocket Computer를 자유롭게 편집하십시오 .


큰! 우리가 로켓을 복구하자마자 이것을 시도 할 것입니다. 지금까지 우리는 그것을 찾기 위해 Cessna를 헌장해야했다. 그러나 희망적으로 우리는 운이 좋게된다.
Dang Khoa

우리가 로켓을 복구 할 수 없을 것 같아서,이 논의는 약간 무섭습니다 (지상국으로부터 몇 개의 데이터 포인트 만 있습니다). 그러나 감사합니다!
Dang Khoa

@davidcary, 개방 회로 : 로켓 컴퓨터 링크가 깨진
마헨드라 Gunawardena에게

@MahendraGunawardena : 말해 주셔서 감사합니다. 지금 작동합니까?
davidcary
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.