Wolfram 언어

I2C 데이터 필터링

I2C(Inter-Integrated Circuit) 통신에서 마스터 장치는 최대 128개의 슬레이브 장치와 통신할 수 있습니다. 각 슬레이브는 고유한 주소로 식별되고, 데이터의 전송은 시리얼 데이터(SDA) 라인에서 이루어집니다. 또 하나의 라인은 직렬 클럭(SCL) 라인입니다. I2C는 2선식 인터페이스(TWI)로도 알려져 있습니다.

전체 Wolfram 언어 입력 표시하기

이 예는 Arduino Nano에 코드를 배치하고 MPU-6050 I2C 센서에서 가속도계와 자이로의 판독값을 얻을 수 있습니다. 센서의 지향각은 가속도계 혹은 자이로의 판독 값으로 계산할 수 있습니다. 전자는 잡음이 많고 후자는 안정적 상태에서 표류하기 때문에, 이러한 계산은 정확하지 않습니다. 따라서, 두 값을 혼합 보완하는 필터도 배포됩니다. 필터링 되지 않은 값과 필터링된 값이 직렬 통신을 통해 다시 전송되어 시각화됩니다.

축과 축에 따른 가속도, 온도, 그리고 축에 따른 각속도가 각각 주소 0x3D로 시작하는 2바이트에 저장됩니다. 다음은 이들의 8바이트를 얻을 수 있는 지정입니다.

초기화 지정을 봅니다.

MPU-6050의 주소는 0x68입니다. 다음은 전체 지정입니다.

각 입력 채널의 변환을 알아봅니다.

전체 Wolfram 언어 입력 표시하기

마이크로 컨트롤러 전체를 지정합니다.

사전에 필터링된 블록은 가속도계 데이터로부터의 각도를 도 단위로 계산합니다. 또한 자이로스코프 데이터로부터의 각속도를 초당 각도로 계산합니다.

상보 필터는 사전에 필터링된 출력을 가지고 필터링된 각도의 값을 계산합니다.

적분기는 속도를 적분함으로써 각도를 계산합니다.

전체 시스템 모델을 살펴봅니다.

코드를 배포합니다.

Arduino Nano의 접속을 엽니다.

데이터 읽기 작업을 전송합니다.

데이터를 분석하고 플롯합니다.

전체 Wolfram 언어 입력 표시하기

작업을 삭제하고 장치에 대한 연결을 닫습니다.

관련 예제