Arduino 브레이크아웃 기판을 사용하는 MEMS 기반 운동 및 방향 센서 설계로 시작하기

작성자: Clive "Max" Maxfield

DigiKey 북미 편집자 제공

설계자들은 점점 더 시스템에 방향 및 운동 기능을 제공해야 하는 필요성을 느끼고 있습니다. 다행히, 반도체 및 마이크로 전자 기계 시스템(MEMS) 기술을 기반으로 하는 센서가 제공되어 설계자들이 이를 수행하는 데 도움을 줄 수 있습니다. 이러한 센서의 작은 크기와 낮은 비용 덕분에 드론, 로봇은 물론 스마트폰 및 태블릿 컴퓨터와 같은 핸드헬드 제품을 비롯한 광범위한 시스템에 운동 및 방향 감지 기능을 배치할 수 있습니다. 이러한 센서는 또한 산업용 사물 인터넷(IIoT)을 위한 예측 유지 보수 시스템에도 사용되어 에지에서의 인공 지능(AI) 및 머신 러닝(ML)을 사용한 분석을 위해 데이터를 제공할 수 있습니다.

운동 및 방향을 감지하는 데 사용되는 MEMS 센서의 주요 유형은 가속도계, 자이로스코프, 자력계 및 이들의 다양한 조합입니다. 많은 설계자들이 운동 및 방향 센서를 설계에 통합하는 데 관심을 갖고 있지만 어디서 시작해야 하는지 잘 모르는 경우가 많습니다.

한 가지 옵션은 솔루션을 지원하기 위해 MEMS 센서 벤더가 제공하는 평가 및 개발 키트를 사용하는 것입니다. 충분한 지원이 있을 경우 이는 완벽한 접근 방식입니다. 그러나, 이 옵션을 선택하는 경우 설계자들이 단일 벤더가 제공하는 센서만 사용해야 하거나 여러 센서 벤더에서 제공하는 소프트웨어 툴을 학습해야 하는 제약이 있습니다.

그 대신에, 운동 및 방향 센서를 사용하는 데 익숙하지 않은 설계자의 경우 Arduino의 저가형 오픈 소스 마이크로 컨트롤러 개발 기판 및 해당 단일 통합 개발 환경(IDE)과 함께 다양한 벤더에서 제공하는 센서를 갖춘 저가형 오픈 소스 센서 브레이크아웃 기판(BOB)을 사용하여 실험하고 시제품 제작을 수행할 수 있습니다.

설계자가 시작하는 데 도움을 주기 위해, 이 기사에서는 센서 용어를 설명하고 운동 및 방향 센서의 역할에 대해 간략하게 논의합니다. 그런 다음 Adafruit의 특정 센서 BOB와 그 사용에 대해 소개합니다.

센서 용어

운동 및 방향 센서를 언급할 때 일반적으로 사용되는 두 가지 용어는 “축 개수”와 “자유도”(DOF)입니다. 안타깝게도, 이 두 용어는 대부분 같은 의미로 사용되므로 혼돈을 일으킬 수 있습니다.

일반적으로, 축이라는 용어는 시스템에서 사용되는 데이터의 차원을 설명하는 데 사용될 수 있습니다. 운동 및 방향의 측면에서 3개의 관심 축 X, Y, Z가 있습니다.

이러한 축을 시각화하는 방법은 해당 시스템에 따라 달라집니다. 예를 들어, 세로 방향의 스마트폰에서 X축은 화면에 수평으로 오른쪽을 가리키고 Y축은 화면에 수직으로 위쪽 방향을 가리키며 Z축은 다른 두 축에 수직으로 화면 밖을 가리킨다고 간주됩니다(그림 1).

물리 시스템은 최대 6DOF를 가질 수 있음을 보여주는 구성도그림 1: 물리적 시스템은 3D 공간(3개의 선 및 3개의 각)에서 이동할 수 있는 최대 6가지 방법이 있으므로 최대 6DOF를 가질 수 있습니다. (이미지 출처: Max Maxfield)

스마트폰과 같은 장치와 관해서는 선과 각이라는 두 가지 유형의 관심 운동이 있습니다. 선형 운동의 경우, 시스템은 X축에서 좌우로, Y축에서 위아래로, Z축에서 앞뒤로 이동할 수 있습니다. 각 운동의 경우, 시스템은 세 축 중 하나 이상을 중심으로 회전할 수 있습니다.

운동 측면에서, DOF는 운동이 발생할 수 있는 임의 방향을 의미합니다. 이를 근거로, 물리적 시스템은 최대 6DOF를 가질 수 있습니다. 3D 공간에서 이동할 수 있는 방법이 6가지(3개 선 및 3개 각) 뿐이기 때문입니다.

"방향"이라는 용어는 물리적 위치 또는 다른 것과 관련된 무언가의 방향을 나타냅니다. 스마트폰의 경우 방향은 전화가 뒷면으로 놓여 있는지, 한쪽 모서리로 세워져 있는지(가로 또는 세로 모드) 또는 그 중간 어디에 있는지를 결정합니다.

이를 확인할 수 있는 한 가지 방법으로 장치의 방향은 특정 시간 tX에서 가능한 모든 DOF 값으로 지정할 수 있습니다. 이와 비교하여, 장치의 운동은 시간 t0과 t1 사이에서 가능한 모든 DOF의 값 간의 차이로 결정할 수 있습니다.

가속도계, 자이로스코프, 자력계와 같은 센서는 1축, 2축 또는 3축으로 제공됩니다. 예를 들어 1축 가속도계는 정렬되는 3개 축 중 한 축의 변경 사항만 감지하고 2축 센서는 3개 축 중 2개 축에 대한 변경 사항을 감지하며 3축 센서는 3개 축 모두에서 변경 사항을 감지합니다.

센서 플랫폼이 6개가 넘는 축에서의 추적으로 설명되는 경우 이는 X축, Y축, Z축에서 여러 데이터점을 추적하여 고도의 정확도를 제공함을 나타냅니다. 한 예로 3축 가속도계 4개에서의 선형 가속 측정값을 활용하는 12축 가속도계 제품군을 들 수 있습니다.

하지만 DOF는 흔히 축 개수와 혼동됩니다. 예를 들어, 3축 가속도계, 3축 자이로스코프, 3축 자력계의 조합의 경우 일부 벤더는 9DOF 센서로 설명하기도 합니다. 하지만 더 정확히 설명하자면 이는 6DOF 9축 센서입니다.

센서 융합

가속도 측정 이외에 가속도계는 중력도 측정합니다. 예를 들어, 스마트폰의 경우 3축 가속도계는 사용자가 가만히 있고 장치에 움직임이 없는 경우에도 아래 방향을 결정할 수 있습니다.

3축 가속도계를 사용하여 장치의 가로 및 세로 방향을 확인할 수도 있으며, 이 정보를 통해 디스플레이를 가로 모드 또는 세로 모드로 나타낼 수 있습니다 그러나 가속도계는 그 자체적으로는 지구의 자기장 측면에서 스마트폰의 방향을 결정할 수 없습니다. 이 기능은 사용자가 관심 영역을 향해 장치를 가리킴으로써 밤 하늘의 별, 위성 및 별자리를 식별할 수 있는 플라네타륨(천체 투영관) 앱과 같은 작업에 필수적입니다. 이 경우 자기 탐지기가 필요합니다. 스마트폰이 항상 테이블에 평평하게 놓여져 있다면 1축 자기 탐지기면 충분할 것입니다. 그러나 스마트폰은 다양한 방향으로 사용될 수 있으므로 3축 자기 탐지기를 사용해야 합니다.

가속도계는 주변 자기장의 영향을 받지는 않지만 움직임 및 진동의 영향을 받습니다. 그에 비해, 자기 탐지기는 움직임 및 진동 그 자체의 영향은 받지 않지만 부근에 있는 자기 재료 및 전자기장의 영향을 받을 수 있습니다.

또한 3축 가속도계는 회전 데이터를 도출하는 데 사용할 수 있지만 3축 자이로스코프는 각 운동량과 관련하여 더 정확한 데이터를 제공합니다. 자이로스코프는 회전 속도를 측정할 경우에 적합하며 직선 방향의 가속도 또는 자기장의 영향을 받지 않습니다. 그러나, 자이로스코프는 정지되는 경우에도 작은 "잔여" 회전 속도를 생성하는 경향이 있습니다. 이는 "제로 드리프트 오프셋"으로 알려져 있습니다. 이 문제는 사용자가 자이로스코프를 사용하여 절대각을 확인하려고 할 때 발생하며 이 경우 각 위치를 획득하기 위해 회전 속도를 통합해야 합니다. 이 시나리오에서의 통합과 관련한 문제는 오차가 누적될 수 있다는 것입니다. 예를 들어 첫 번째 측서정값에서 0.01도의 작은 오차는 100개 측정값 이후 1도까지 증가할 수 있습니다. 이는 "자이로 드리프트"로 알려져 있습니다.

“센서 융합”이라는 용어는 완전히 다른 소스에서 파생된 센서 데이터의 결합을 나타내며, 결과로 나타나는 정보는 이러한 소스에서의 데이터를 개별적으로 사용할 경우에 가능한 것보다 불확실성이 적습니다.

예를 들어 3축 가속도계, 3축 자이로스코프, 3축 자력계로 구성된 센서 배열의 경우 가속도계와 자력계의 데이터를 사용하여 자이로 드리프트를 상쇄할 수 있습니다. 한편, 자이로의 데이터를 사용하여 가속도계에서의 진동 유도 잡음과 자력계에서의 자기 재료/장 유도 잡음을 상쇄할 수 있습니다.

센서 유합의 결과 출력의 정확도는 개별 센서의 정확도보다 뛰어납니다.

대표적 센서 소개

응용 분야에 따라 설계자는 가속도계, 자이로스코프 또는 자력계 형태로 단일 유형의 운동/방향 센서만 사용하도록 결정할 수 있습니다.

입문자들을 위한 좋은 가속도계로 Adafruit의 2019 BOB를 들 수 있는데, 이 장치는 14비트 아날로그-디지털 컨버터(ADC)를 사용하는 3축 가속도계를 갖추고 있습니다(그림 2).

Adafruit의 2019 BOB 이미지그림 2: Adafruit의 2019 BOB는 운동, 기울기, 기본 방향을 탐지하는 데 사용할 수 있는 3축 가속도계를 갖추고 있습니다. (이미지 출처: Adafruit)

이 고정밀 3축 센서는 ±2g ~ ±8g의 넓은 범위를 가지며 운동, 기울기 및 기본 방향을 감지하는 데 사용할 수 있습니다. 이 센서는 3.3V 공급 장치를 필요로 하지만 BOB에 저드롭아웃 3.3V 조정기 및 레벨 시프트 회로망이 포함되어 있으므로 3V 또는 5V 전력 및 논리에서 안전하게 사용할 수 있습니다. BOB와 Arduino(또는 다른 마이크로 컨트롤러) 간의 통신은 I2C를 사용하여 수행됩니다.

비틀림 및 회전 동작을 감지하는 데 하나의 자이로스코프 센서만 있으면 되는 응용 제품의 경우 초보용으로 좋은 기판은 STMicroelectronicsL3GD20H 3축 자이로스코프를 갖춘 Adafruit의 1032 BOB입니다. Arduino(또는 다른 마이크로 컨트롤러)에 대한 I2C 및 SPI 인터페이스를 지원하는 iL3GD20H는 폭넓은 민감도에 대해 ±250dps, ±500dps 또는 ±2000dps 범위로 설정할 수 있습니다. 다시 말하지만, 센서는 3.3V 공급 장치를 필요로 하지만 BOB에는 3.3V 조정기와 레벨 시프트 회로망이 포함되어 있어 3V 또는 5V 전력 및 논리에서 사용할 수 있습니다.

마찬가지로, 하나의 자기 센서만 필요로 하는 응용 제품의 경우 우수한 평가 옵션은 STMicroelectronics의 LIS3MDL 3축 자력계를 갖춘Adafruit의 4479 BOB입니다. LIS3MDL은 ±4가우스(±400microtesla(µT)) ~ ±16가우스(±1600µT 또는 1.6millitesla(mT))의 범위를 감지할 수 있습니다. BOB와 Arduino(또는 다른 마이크로 컨트롤러) 간의 통신은 I2C를 사용하여 수행됩니다. 거듭 말하지만, BOB에는 3.3V 조정기와 레벨 시프트 회로망이 포함되어 있어 3V 또는 5V 전력 및 논리에서 사용할 수 있습니다.

여러 센서를 서로 함께 사용하는 것은 매우 일반적입니다. 예를 들어, 가속도계와 자이로스코프를 함께 사용하여 3D 운동 캡처 및 관성 측정과 같은 작업을 수행할 수 있습니다. 즉 사용자가 객체가 3D 공간에서 움직이는 방식을 확인할 수 있습니다. 이러한 조합의 한 예로 STMicroelectronics의 LSM6DS33 센서 칩을 갖춘 Adafruit의 4480 BOB를 들 수 있습니다(그림 3).

Adafruit의 4480 BOB 이미지그림 3: Adafruit의 4480 BOB에는 3D 운동 캡처 및 관성 측정과 같은 작업을 수행하는 데 사용할 수 있는 LSM6DS33TR 3축 가속도계 및 3축 자이로스코프가 포함되어 있습니다. (이미지 출처: Adafruit)

3축 가속도계는 중력 측정을 통해 지구를 향하는 방향과, 3D 공간에서 기판이 얼마나 빠르게 가속되는지에 대한 데이터를 제공할 수 있습니다. 한편, 3축 자이로스코프는 회전 및 비틀림을 측정할 수 있습니다. 앞에서 소개한 다른 센서 BOB와 마찬가지로, 4480 BOB에는 3.3V 조정기와 레벨 시프트 회로망이 포함되어 있어 3V 또는 5V 전력 및 논리에서 안전하게 사용할 수 있습니다. 또한, 센서 데이터는 I2C 또는 SPI 인터페이스를 사용하여 액세스할 수 있으므로 복잡한 하드웨어 설치 없이 Arduino(또는 다른 마이크로 컨트롤러)에서 사용할 수 있습니다.

이중 센서 BOB의 또 다른 예로 Adafruit의 1120을 들 수 있습니다. 이 장치에는 3축 가속도계와 3축 자력계가 STMicroelectronics의 LSM303 센서 칩 형태로 조합되어 있습니다. 마이크로 컨트롤러와 1120 간의 통신은 I2C 인터페이스를 통해 수행되며 BOB에는 3.3V 조정기와 레벨 시프트 회로망이 포함되어 있어 3V 또는 5V 전력 및 논리에서 안전하게 사용할 수 있습니다.

일부 응용 제품의 경우 가속도계, 자이로스코프, 자력계를 사용해야 합니다. 이 경우 입문용으로 유용한 BOB는 2개의 센서 칩 즉, 3축 자이로스코프와 3축 자력계를 사용하는 3축 가속도계를 갖춘 Adafruit의 3463입니다. BOB와 마이크로 컨트롤러 사이의 통신은 SPI 인터페이스를 통해 구현됩니다. 또한 3.3V 조정기와 레벨 시프트 회로망이 포함되어 있어 3V 또는 5V 전력 및 논리에서 안전하게 사용할 수 있습니다.

3463 BOB의 장점 중 하나는 설계자에게 3개 센서의 데이터에 대한 원시 액세스 권한을 제공한다는 것입니다. 대응하는 단점으로는 이 센서를 사용하는데(데이터 조작 및 처리) 약 15KB의 마이크로 컨트롤러 플래시 메모리가 필요하고 여러 클록 주기가 소비된다는 것입니다.

이에 대한 대안으로, Adafruit의 2472 BOB는 BoschBNO055 센서 칩을 갖추고 있습니다. BNO055에는 3축 가속도계, 3축 자이로스코프, 3축 자력계가 모두 하나의 패키지에 포함되어 있습니다(그림 4).

Adafruit 2472 BOB의 BNO055 센서 이미지그림 4: 3축 가속도계, 3축 자이로스코프, 3축 자력계 이외에도 Adafruit 2472 BOB의 BNO055 센서에는 센서 융합을 수행하는 Arm Cortex-M0 프로세서가 포함되어 있습니다. (이미지 출처: Adafruit)

또한, BNO055에는 3개 센서에서 원시 데이터를 받아 정교한 센서 융합을 수행한 후 사원법, 오일러 각, 벡터와 같이 유용한 형식으로 설계자에게 처리된 정보를 제공하는 32비트 Arm Cortex-M0 프로세서가 포함되어 있습니다. 더 구체적으로 말하면, 2472 BOB의 I2C 인터페이스를 통해 설계자는 다음 정보에 쉽고 빠르게 액세스할 수 있습니다.

  • 절대 방향(오일러 벡터, 100Hz): 360° 구를 기반으로 하는 3축 방향 데이터.
  • 절대 방향(사원법, 100Hz): 보다 정확한 데이터 조작을 위한 4점 사원 출력.
  • 각속도 벡터(100Hz): 3축 “회전 속도”(단위: rad/s).
  • 가속 벡터(100Hz): 3축 가속도(중력 + 선형 운동)(단위: m/s2).
  • 자기장 강도 벡터(20Hz): 3축 자기장 감지(단위: µT).
  • 선형 가속도 벡터(100Hz): 3축 선형 가속도 데이터(가속도 - 중력)(단위: m/s2).
  • 중력 벡터(100Hz): 3축 중력 가속도(- 운동)(단위: m/s2).
  • 온도(1Hz): 주변 온도(단위: 섭씨 온도).

온칩으로 센서 융합을 수행하면 주 마이크로 컨트롤러의 메모리와 계산 주기가 확보되므로 저가형 실시간 시스템을 생성하는 설계자들에게 유용합니다. 또한, 센서 융합 알고리즘은 숙달하기가 어렵고 시간이 걸릴 수 있습니다. 온칩으로 센서 융합을 수행하면, 처음부터 알고리즘을 수행할 경우 수 일 또는 수 주가 걸리는 것과 대조적으로 수 분 내에 가동 및 실행할 수 있습니다.

결론

여러 설계자들이 설계에 운동 센서와 방향 센서를 통합하는 데 관심이 있지만 어디서 시작해야 하는지 확실히 알지 못합니다. 이러한 장치를 사용하는 데 익숙하지 않은 설계자의 경우 다양한 제조업체에서 제공하는 센서에 통달하는 것은 어려운 일일 수 있습니다. 실험 및 시제품 제작을 시작하는 한 가지 방법은 여러 벤더의 센서를 갖춘 저가형 오픈 소스 센서 BOB와 함께 Arduino와 같은 저가형 오픈 소스 마이크로 컨트롤러 개발 기판을 사용하는 것입니다.

추가 참조 자료:

  1. Arduino BOB를 사용하여 신속하게 센서 및 주변 장치 평가
  2. Fundamentals: The IoT, IIoT, AIoT, and Why They’re the Future of Industrial Automation(기본 사항: IoT, IIoT, AIoT가 산업용 자동화의 미래인 이유와 각각에 대한 설명)
  3. 모든 산업용 시스템에 인공 지능을 손쉽게 적용하는 방법
DigiKey logo

면책 조항: 이 웹 사이트에서 여러 작성자 및/또는 포럼 참가자가 명시한 의견, 생각 및 견해는 DigiKey의 의견, 생각 및 견해 또는 DigiKey의 공식 정책과 관련이 없습니다.

작성자 정보

Image of Max Maxfield

Clive "Max" Maxfield

Clive "Max" Maxfield는 1980년 영국 Sheffield Hallam University에서 제어 공학 학사 학위를 받았으며 이후 중앙 컴퓨터용 중앙 처리 장치(CPU) 설계자로 일하기 시작했습니다. 수년에 걸쳐 Max는 실리콘 칩에서 회로 기판, 뇌파 증폭기에서 스팀펑크 예언 엔진(steampunk Prognostication Engines)에 이르는 다양한 제품을 설계했습니다. 또한 30년 이상 전자 설계 자동화(EDA) 부문을 이끌어 왔습니다.

Max는 Designus Maximus Unleashed(앨라배마에서는 금서임), Bebop to the Boolean Boogie(전자 제품 관련 색다른 안내서), EDA: Where Electronics Begins, FPGA: Instant Access 및 How Computers Do Math 등 다양한 도서의 저자/공동저자입니다. Max가 운영 중인 “Max’s Cool Beans” 블로그에 방문해 보세요.

게시자 정보

DigiKey 북미 편집자