내구성이 뛰어나고 수명이 긴 고급 IMU를 사용하여 산업용 장치의 수명 보장
DigiKey 북미 편집자 제공
2020-04-28
로봇 시스템, 스마트 전동 공구, 자산 추적 장치 및 기타 동작 기반 산업용 제품을 제작하려는 개발자가 증가함에 따라, 관성 측정 장치(IMU)는 성능, 안전 등을 관리하는 데 필요한 데이터를 제공하는 데 중요한 역할을 합니다. 수명이 긴 산업용 제품을 생산하는 제조업체에서는 IMU 장치의 고성능 기능뿐만 아니라 뛰어난 내구성에 의존하고 있습니다. 뛰어난 내구성으로 새롭게 주목받는 산업용 IMU는 개발자에게 성능과 가용성 요구 사항을 모두 충족할 수 있는 솔루션을 제공합니다.
이 기사에서는 제조업체의 10년 수명 프로그램의 일환으로 열악한 산업 환경에서 정확한 측정을 보장하도록 고안된 Bosch Sensortec 및 STMicroelectronics의 IMU에 대해 설명합니다. 또한 IMU 기반 설계를 빠르게 개발할 수 있도록 위의 두 산업용 IMU 장치 제조업체와 Adafruit Industries에서 제공하는 소프트웨어 개발 기판에 대해 살펴봅니다.
IMU란?
IMU는 가속도계와 자이로스코프를 결합하여 선형 이동과 회전 이동을 6가지 자유도로 감지하는 데 필요한 데이터를 제공하는 감지 장치입니다. 마이크로 일렉트로닉스 시스템(MEMS) 기술로 구축된 고급 IMU의 가속도계 및 자이로스코프 센서(예: Bosch Sensortec의 BMI088)는 전용 신호 체인, 아날로그 디지털 컨버터(ADC) 및 논리와 통합되어 단일 패키지에서 완벽한 동작 감지 시스템을 제공합니다(그림 1).
그림 1: Bosch Sensortec의 BMI088과 같은 고급 IMU는 센서, 신호 체인 및 논리를 통합하여 표준 직렬 인터페이스를 통해 호스트 프로세서와 빠르게 통합되는 완벽한 동작 감지 시스템을 제공합니다. (이미지 출처: Bosch Sensortec)
포괄적인 통합 기능을 사용하여 IMU는 시스템 설계에 쉽게 통합되며, 일반적으로 I2C 또는 SPI 연결만 있으면 호스트 프로세서에 디지털 결과를 제공할 수 있습니다.
산업용 IMU 성능 및 안정성
Bosch의 BMI088과 같은 산업용 IMU는, 일정한 열응력과 기계적 진동 또는 충격으로 인해 견고하지 않은 장치의 경우 성능이 저하될 수 있는 열악한 환경에서 견디는 데 필요한 온도 안정성 및 진동 내구성을 제공하도록 특별히 고안되었습니다. BMI088은 각각 0.09mg 및 0.004°/s 분해능을 제공하는 16비트 3축 가속도계와 16비트 3축 자이로스코프를 통합합니다. 이 장치는 125°/s에서 최대 2,000°/s 사이의 다양한 전체 범위 각 속도에서 자이로스코프 측정을 지원합니다. 대부분의 동급 장치와 마찬가지로 BMI088은 -40°C ~ +85°C 사이의 전체 산업 온도 범위에서 작동을 지원합니다. 대부분의 동급 장치를 능가하는 BMI088의 가속도계는 최대 24g의 전체 범위 측정을 지원하여, 산업 응용 분야에서 종종 발견되는 높은 진동 레벨에서의 신호 클리핑으로부터 추가적으로 보호합니다.
이와 동시에 산업 환경에서의 높은 온도 또는 빠르게 변화하는 온도와 관련된 일반적인 요구 사항을 충족합니다. BMI088 가속도계는 단 0.002%/K의 감도 온도 드리프트와 0.2mg/K 미만의 0-g 오프셋 온도 드리프트를 나타냅니다. 마찬가지로 자이로스코프는 단 0.015°/s/K의 오프셋 온도 계수(TCO)와 0.03%/K의 감도 온도 계수(TCS)를 나타냅니다.
고성능을 제공하는 제품임에도 불구하고 MEMS 기반 IMU는 일반적으로 최소한의 전류를 소비합니다. 예를 들어 BMI088의 가속도계는 표준 모드에서 150mA를 소비하고, 자이로스코프는 5mA가 필요합니다. 대부분의 저전력 장치와 마찬가지로 개발자는 비활성 기간 중에 BMI088을 저전력 모드로 전환할 수 있습니다. 저전력 일시 중지 모드에서 가속도계와 자이로스코프의 전류가 각각 3mA 및 25mA로 감소합니다. 실제로 BMI088 자이로스코프는 5mA 미만의 전류를 소비하는 중간 일시 중지 모드를 제공합니다.
물론 휴대용 전동 공구, 자산 추적 장치와 같은 배터리 구동 응용 분야에서는 저전력 작동이 중요할 수 있지만, 산업 응용 분야에서는 일상적인 측정을 빠르게 재개하는 기능도 마찬가지로 중요합니다. 실제로 BMI088은 웨어러블 장치 및 기타 개인용 전자 제품과 같은 소비자 응용 제품에서 일반적으로 사용되는 IMU에서 사용 가능한 것보다 훨씬 더 빠르게 일시 중지 및 중간 일시 중지 모드에서 절전 해제할 수 있습니다.
수명이 긴 제품 지원
소비자 장치와 산업용 장치에서 IMU에 대한 요구 사항을 구분하는 더 근본적인 차이가 있습니다. 모든 제품 종류와 마찬가지로 소비자 제품과 산업용 제품의 수명 주기는 도입, 성장, 성숙 및 쇠퇴 패턴을 유사하게 따릅니다(그림 2).
그림 2: 일반적으로 소비자 가전 제품 수명 주기의 후반부에는 최신 기능에 대한 소비자 수요가 감소하지만 대부분의 산업용 사용자는 안정적이고 완성된 제품 라인의 확장된 가용성을 많이 활용합니다. (이미지 출처: Wikipedia)
소비자의 경우 제품 수명 주기의 성숙 및 쇠퇴 단계에서는 풍부한 기능을 갖춘 모바일 제품에 대한 수요가 급격하게 감소합니다. 소비자 가전의 짧아진 수명 주기와는 극명하게 대조적으로 다양한 유형의 산업용 장비에서는 몇 년 동안 서비스가 유지될 것으로 기대됩니다. 완성된 산업용 등급 전동 공구 라인은 일반적으로 "부가 기능"보다 기본 기능의 안정성에서 더 충실한 성능을 나타냅니다. 자산 추적, IIoT 모니터링과 같은 다른 산업용 응용 분야에서는 계속해서 향상되는 기능을 지원하기 위한 장치 교체의 필요성 또는 실용성보다 장치 제품군의 긴 수명을 더 우선시할 수 있습니다.
수명이 긴 제품에 대한 요구를 충족하기 위해 개발자는 종종 제품 도입 날짜부터 일정 기간 동안 사용 가용성을 보장하는 반도체 제조업체의 수명 프로그램을 통해 주요 제품을 찾을 수 있습니다. 예를 들어 Bosch는 10년 수명 프로그램의 일환으로 BMI090L IMU를 제공합니다. BMI088의 핀 호환 버전인 BMI090L은 BMI088과 동일한 기능 및 성능 사양을 제공합니다.
머신 러닝 산업용 IMU
10년 수명 프로그램의 일환으로 STMicroelectronics는 고성능 ISM330DHCX 산업용 IMU를 제공합니다. ISM330DHCX는 STMicroelectronics LSM6DSOX 및 LSM6DSRX를 포함하는 특수 계열 iNEMO 시스템 인 패키지(SiP) 모듈 제품군입니다. 이 장치는 3축 가속도계 및 3축 자이로스코프를 내장형 머신 러닝 코어와 결합합니다. iNEMO 머신 러닝 코어 및 사용법에 대한 자세한 내용은 "스마트 센서의 내장된 머신 러닝 코어를 사용하여 "상시 작동" 동작 추적 최적화"를 참조하십시오.
배터리 구동 소비자 제품용으로 설계된 LSM6DSOX는 이 계열의 특수 장치 중에서 최소 전력을 소비합니다. 또한 LSM6DSRX는 가상 현실(VR), 증강 현실(AR) 및 드론 응용 분야에 맞게 설계되었으며, LSM6DSOX 및 확장된 머신 러닝 코어보다 우수한 안정성을 제공합니다.
고성능 산업용 응용 분야에 맞게 설계된 ISM330DHCX는 소비자 등급 기능을 기반으로 구축되었지만 LSM6DSRX는 LSM6DSRX의 -40°C ~ +85°C에 비해 -40°C ~ +105°C의 훨씬 폭넓은 작동 온도 범위를 제공합니다. 최대 16g의 선형 가속 범위를 제공하면서 ISM330DHCX는 동급 장치 중 가장 높은 범위 중 하나인 4,000°/s의 최대 각 속도 측정 범위를 제공합니다. 산업용 응용 분야에 필요한 ISM330DHCX는 온도 의존도가 낮습니다. 가속도계는 단 0.005%/°C의 감도와 0.1mg/°C 0-g 드리프트를 제공하고, 자이로스코프는 0.007%/°C 감도와 0.005°/s/°C 제로 등급 드리프트를 나타냅니다.
대부분의 고급 IMU와 마찬가지로 ISM330DHCX는 I2C 또는 SPI 연결을 사용하여 호스트 프로세서와 쉽게 통합됩니다. 개발자는 다음과 같은 네 가지 구성으로 장치를 연결할 수 있습니다.
- 호스트에 단독으로 연결된 상태로 사용(모드 1)
- 센서 허브 기능과 함께 사용(모드 2)
- 자이로스코프 데이터만 읽을 수 있는 보조 호스트와 기본 호스트에 연결된 상태로 사용(모드 3)
- 자이로스코프 데이터와 가속도계 데이터를 모두 읽을 수 있는 보조 호스트와 기본 호스트에 연결된 상태로 사용(모드 4)
모드 2에서 ISM330DHCX는 센서 허브로 작동하여, 슬레이브 모드에서 호스트에 서비스를 제공하고, I2C 인터페이스에 연결된 외부 센서에 마스터로 서비스를 제공할 수 있습니다(그림 3).
그림 3: STMicroelectronics ISM330DHCX를 모드 2를 비롯한 여러 작동 모드에서 실행하도록 구성할 수 있습니다. 여기서는 호스트에 결합한 데이터를 제공하여 ISM330DHCX가 외부 센서에 대한 센서 허브 역할을 할 수 있습니다. (이미지 출처: STMicroelectronics)
빠른 IMU 개발
디지털 IMU는 최소한의 하드웨어 요구 사항을 제공하므로 개발자는 주로 개발 초기 단계에서 하드웨어 설계를 중단하고 산업용 IMU 장치 제조업체의 광범위한 개발 기판을 사용하여 즉시 소프트웨어 개발로 전환할 수 있습니다. 예를 들어 Bosch 애플리케이션 기판은 Bosch BMI090L 셔틀 기판을 비롯한 광범위한 도터 기판을 허용하도록 설계되었습니다. Arm® Cortex®-M4 프로세서를 기반으로 하는 Bosch 애플리케이션 기판은 여러 테스트 포인트 및 커넥터와 호스트 개인용 컴퓨터의 전력 및 개발용 USB 연결을 제공합니다.
STMicroelectronics ISM330DHCX를 기반으로 산업용 응용 제품을 빠르게 평가하고 시제품을 제작하기 위해 개발자는 Adafruit Industries 4382 STM32F405 Feather 개발 기판에 연결된 Adafruit Industries 4502 ISM330DHCX 평가 기판을 하드웨어 플랫폼으로 사용할 수 있습니다.
소프트웨어 개발의 경우 Adafruit CircuitPython LSM6DS github 소프트웨어 리포지토리는 ISM330DHCX, LSM6DSOX 및 LSM6DS33을 비롯한 많은 STMicroelectronics IMU를 지원합니다. 따라서 개발자는 ISM330DHCX 센서에서 데이터를 읽는 단 몇 줄의 Python 코드를 사용하여 응용 제품의 시제품을 빠르게 제작할 수 있습니다(목록 1).
복사 import time import board import busio from adafruit_lsm6ds import ISM330DHCT i2c = busio.I2C(board.SCL, board.SDA) sensor = ISM330DHCT(i2c) while True: print("Acceleration: X:%.2f, Y: %.2f, Z: %.2f m/s^2" % (sensor.acceleration)) print("Gyro X:%.2f, Y: %.2f, Z: %.2f degrees/s" % (sensor.gyro)) print("") time.sleep(0.5)
목록 1: 개발자는 Adafruit CircuitPython 모듈을 사용하여 ISM330DHCX 개체의 특성에 액세스하여 ISM330DHCX 센서 데이터를 읽을 수 있는 응용 제품의 시제품을 빠르게 제작할 수 있습니다. (코드 출처: Adafruit Industries)
또한 STMicroelectronics는 STM32F401VE 마이크로 컨트롤러를 기반으로 DIL 24 어댑터를 통해 회사의 STEVAL-MKI109V3 개발 기판에 연결하는 고유한 ISM330DHCX 기반 STEVAL-MKI210V1K 애드온 기판을 제공합니다. 이 기판을 설정하여 ISM330DHCX를 평가하기 위해 STMicroelectronics는 Linux(STSW-MKI109L), Mac OSX(STSW-MKI109M) 및 Windows(STSW-MKI109W)용 소프트웨어 패키지를 제공합니다.
이 STEVAL 하드웨어 플랫폼은 ISM330DHCX에 철저히 초점을 맞추고 있지만 개발자는 다른 센서와 결합하여 ISM330DHCX를 평가하기 위해 STMicroelectronics의 X-NUCLEO-IKS02A1 확장 기판으로 전환할 수 있습니다. ISM330DHCX IMU와 함께 X-NUCLEO-IKS02A1 확장 기판은 STMicroelectronics IIS2MDC 자력계, IIS2DLPC 저전력 가속도계 및 IMP34DT05 MEMS 디지털 전방향성 마이크를 포함합니다. NUCLEO-IKS02A1 확장 기판은 NUCLEO-L476RG와 같은 STMicroelectronics NUCLEO 기판에 연결하여 모든 기능을 갖춘 하드웨어 플랫폼을 제공하도록 설계되었습니다.
프로덕션 코드 개발을 위해 STMicroelectronics STM32Cube 소프트웨어 패키지 및 연결된 X-CUBE-MEMS1 소프트웨어 애드온은 포괄적인 소프트웨어 플랫폼을 제공합니다. 기판 및 장치 구동기와 함께 X-CUBE-MEMS1 패키지는 센서 및 기본 기판 세트로 실행되거나 맞춤형 개발을 위한 기반으로 사용될 수 있는 많은 샘플 응용 제품을 제공합니다. 예를 들어 진동 모니터링 응용 제품은 X-NUCLEO-IKS02A1 확장 기판에서 ISM330DHCX 가속도계의 데이터를 지속적으로 읽는 간단한 루프를 보여 줍니다(목록 2).
복사 while (fftIsEnabled == 0) { if (((HAL_GetTick() - start) > 6000)) { Restart_FIFO(); return 0; } IKS02A1_MOTION_SENSOR_FIFO_Get_Tag(IKS02A1_ISM330DHCX_0, &tag); if (tag == (uint8_t)ISM330DHCX_XL_NC_TAG) { IKS02A1_MOTION_SENSOR_FIFO_Get_Axes(IKS02A1_ISM330DHCX_0, MOTION_ACCELERO, &acceleration); } /* Store data */ single_data.AXIS_X = (float)acceleration.x; single_data.AXIS_Y = (float)acceleration.y; single_data.AXIS_Z = (float)acceleration.z; /* Remove DC offset */ MotionSP_accDelOffset(&single_data_no_dc, &single_data, DC_SMOOTH, RestartFlag); /* Fill the accelero circular buffer */ MotionSP_CreateAccCircBuffer(&AccCircBuffer, single_data_no_dc); if (AccCircBuffer.Ovf == 1) { fftIsEnabled = 1; AccCircBuffer.Ovf = 0; } MotionSP_TimeDomainProcess(&sTimeDomain, (Td_Type_t)MotionSP_Parameters.td_type, RestartFlag); RestartFlag = 0; }
목록 2: STMicroelectronics X-CUBE-MEMS1 패키지에 있는 진동 모니터링 샘플 응용 제품의 이 코드 조각은 ISM330DHCX IMU에서 가속도계 데이터를 읽는 간단한 루프를 보여 줍니다. (코드 출처: STMicroelectronics)
이 루프 내에서 IKS02A1_MOTION_SENSOR_FIFO_Get_Tag() 함수는 ISM330DHCX의 특정 소스 센서 또는 외부 센서(모드 1 구성에서 작동하는 경우)를 식별하는 태그를 반환하는 ISM330DHCX 특정 루틴인 ism330dhcx_fifo_sensor_tag_get()를 호출합니다. ISM330DHCX를 기반으로 구축된 이 태그 지정 기능은 장치의 3KB FIFO(First-in First-out) 버퍼에 저장된 다양한 유형 및 소스의 데이터를 쉽게 식별할 수 있는 메커니즘을 제공합니다. 이 예제의 응용 제품에는 가속도계 태그 ISM330DHCX_XL_NC_TAG가 필요합니다.
이후 IKS02A1_MOTION_SENSOR_FIFO_Get_Axes() 호출에서는 ISM330DHCX 특정 루틴인 가속도계 데이터용 ISM330DHCX_FIFO_ACC_Get_Axes() 또는 자이로스코프 데이터용 ISM330DHCX_FIFO_GYRO_Get_Axes()를 호출합니다. 이 예제의 호출에서는 FIFO 버퍼 데이터를 읽은 다음 각각의 세 축에 대한 감도 범위 가속도 데이터를 반환하는 데 필요한 레지스터 레벨 작업을 수행하는 하위 수준 루틴 ISM330DHCX_FIFO_Get_Data()를 호출하는 ISM330DHCX_FIFO_ACC_Get_Axes()를 사용합니다(목록 3).
복사 int32_t ISM330DHCX_FIFO_ACC_Get_Axes(ISM330DHCX_Object_t *pObj, ISM330DHCX_Axes_t *Acceleration) { uint8_t data[6]; int16_t data_raw[3]; float sensitivity = 0.0f; float acceleration_float[3]; if (ISM330DHCX_FIFO_Get_Data(pObj, data) != ISM330DHCX_OK) { return ISM330DHCX_ERROR; } data_raw[0] = ((int16_t)data[1] << 8) | data[0]; data_raw[1] = ((int16_t)data[3] << 8) | data[2]; data_raw[2] = ((int16_t)data[5] << 8) | data[4]; if (ISM330DHCX_ACC_GetSensitivity(pObj, &sensitivity) != ISM330DHCX_OK) { return ISM330DHCX_ERROR; } acceleration_float[0] = (float)data_raw[0] * sensitivity; acceleration_float[1] = (float)data_raw[1] * sensitivity; acceleration_float[2] = (float)data_raw[2] * sensitivity; Acceleration->x = (int32_t)acceleration_float[0]; Acceleration->y = (int32_t)acceleration_float[1]; Acceleration->z = (int32_t)acceleration_float[2]; return ISM330DHCX_OK; }
목록 3: 여러 센서 및 개발 기판을 지원하도록 설계된 STMicroelectronics X-CUBE-MEMS1 패키지는 여기에 표시된 것처럼 하위 수준 루틴 ISM330DHCX_FIFO_Get_Data()를 호출하여 필요한 레지스터 레벨 작업을 수행하는 장치별 함수를 제공합니다. (코드 출처: STMicroelectronics)
X-CUBE-MEMS1 소프트웨어 패키지에 있는 다른 샘플 코드 세트는 패키지에 포함된 MotionFX 센서 융합 라이브러리를 사용하여 전자 나침반, 기울기 감지, 센서 보정 및 데이터 융합을 보여 줍니다. NUCLEO 기판 세트와 결합된 STMicroelectronics STM32Cube 및 X-CUBE-MEMS1 소프트웨어 패키지는 즉시 생산 가능한 동작 기반 산업용 응용 제품을 구축할 수 있는 포괄적인 개발 플랫폼을 제공합니다.
결론
산업용 제품 설계는 열악한 작업 조건에 대응하는 것 외에도 제품 라인의 수명을 연장해야 합니다. 동작 기반 산업용 응용 분야의 경우 산업용 IMU는 열 및 기계적 응력에도 불구하고 정확한 측정을 제공하는 데 필요한 강력한 특성과 안정성을 함께 제공합니다. 수명이 긴 산업용 IMU의 출시로 개발자는 강력한 동작 데이터와 장치의 긴 수명에 의존하는 산업용 제품 라인에 효과적인 설계 솔루션을 제공할 수 있습니다.
면책 조항: 이 웹 사이트에서 여러 작성자 및/또는 포럼 참가자가 명시한 의견, 생각 및 견해는 DigiKey의 의견, 생각 및 견해 또는 DigiKey의 공식 정책과 관련이 없습니다.


