Computer >> 컴퓨터 >  >> 시스템 >> Mac

마이크로컨트롤러에서 센서 데이터 마스터하기:단계별 초보자 튜토리얼

마이크로컨트롤러에서 센서 데이터 마스터하기:단계별 초보자 튜토리얼

오늘날 컴퓨터는 어디에나 존재하며 일반적으로 두 가지 주요 목적을 수행합니다.

첫 번째는 다양한 응용 프로그램 및 프로그램 실행을 포함하여 광범위한 작업을 처리하는 범용 컴퓨팅입니다. 예로는 노트북, 데스크톱, 서버, 슈퍼컴퓨터 등이 있습니다.

두 번째는 특정 기능을 위해 설계된 특수 컴퓨터인 임베디드 시스템입니다. 온도 조절기, 냉장고, 자동차 및 기타 스마트 가전제품과 같은 장치에서 흔히 볼 수 있는 이 장치는 센서를 사용하여 환경 데이터를 수집하고 작업을 효율적으로 실행합니다.

센서의 역할

센서는 두 가지 컴퓨팅 유형 모두에서 중요한 역할을 합니다. 임베디드 시스템에서 센서는 환경 데이터를 수집하여 자율주행차, 가전제품, 산업용 기계 등의 장치가 작업을 수행하도록 돕습니다. 범용 컴퓨터에서 센서는 주로 온도, 전압 등 내부 상태를 모니터링하여 안전한 작동을 보장하고 과열이나 전기적 결함과 같은 문제를 방지합니다.

인공 지능(AI)과 사물 인터넷(IoT)이 발전함에 따라 센서는 지능적인 의사 결정을 지원하기 위해 실제 데이터를 수집하는 데 없어서는 안 될 요소가 되었습니다. 임베디드 시스템은 센서를 활용하여 환경을 인식하고 원시 데이터를 자동화를 강화하고 산업 전반의 효율성을 향상시키는 실행 가능한 통찰력으로 변환합니다.

이는 센서 인터페이스를 이해하고 강력한 센서 기반 소프트웨어를 설계하는 것이 엔지니어와 애호가 모두에게 중요한 기술이 되었음을 의미합니다.

초보자이든 숙련된 엔지니어이든 이 가이드는 센서 인터페이스 소프트웨어에 대한 확실한 이해를 구축하는 데 도움이 될 것입니다.

학습 내용 및 기사 범위

이 기사에서는 센서를 마이크로컨트롤러(MCU)에 연결하는 방법과 원시 데이터를 의미 있고 유용한 정보로 전환하는 센서 소프트웨어 파이프라인을 설계하는 방법을 알아봅니다. 또한 임베디드 시스템에서 센서 데이터를 정확하고 효율적으로 처리하기 위한 실용적인 기술을 살펴보겠습니다.

우리가 다룰 내용은 다음과 같습니다:

  • 센서의 정의 및 작동 방식 – 센서 소개, 일반적인 유형, 센서 파이프라인이 센서 데이터를 처리하는 데 도움이 되는 방식.

  • 주요 센서 특성 – 프로젝트에 적합한 센서를 선택하는 데 도움이 되는 민감도, 정확도, 정밀도, 범위, 드리프트 및 응답 시간과 같은 중요한 매개변수입니다.

  • 센서와 마이크로컨트롤러의 인터페이스 방법 – 마이크로컨트롤러가 센서 데이터를 읽을 수 있도록 하는 SPI, I²C, GPIO와 같은 하드웨어 연결 및 통신 프로토콜입니다.

  • 센서 데이터를 위한 소프트웨어 아키텍처 – 드라이버, ADC 지원, 스케일링, 교정 및 사후 처리를 포함하여 센서 데이터를 처리하는 소프트웨어 파이프라인에 대한 높은 수준의 개요입니다.

  • 파이프라인 구성 요소의 세부 설계 – 원시 데이터 크기 조정, 센서 보정, 필터 적용에 중점을 두고 파이프라인의 각 단계를 자세히 살펴보고 잡음이 있는 신호를 정리합니다.

  • 전력 관리를 위한 실용적인 팁 – 임베디드 시스템에서 센서 데이터로 작업할 때 저전력 모드, FIFO 버퍼 및 DMA를 사용하여 효율적으로 전력을 처리하기 위한 모범 사례입니다.

이 기사를 마치면 원시 센서 데이터를 읽는 것부터 지능적이고 연결된 장치에서 실제 사용하기 위해 준비하는 것까지 임베디드 시스템을 위한 완전한 센서 데이터 파이프라인을 설계하고 구현하는 방법을 알게 될 것입니다.

참고 :고급 데이터 처리, 고해상도 ADC 및 센서용 하드웨어 회로 설계는 이 기사의 범위를 벗어납니다.

전제조건

이 기사를 최대한 활용하려면 다음이 필요합니다:

  1. 마이크로 컨트롤러에 대한 기본 지식:ADC(아날로그-디지털 변환기), SPI(직렬 주변 장치 인터페이스), I2C(집적 회로) 및 GPIO(범용 입력/출력)와 같은 일반적인 주변 장치에 대한 이해. 이러한 프로토콜을 처음 사용하는 경우 이 문서에서 훌륭한 개요를 얻을 수 있습니다.

  2. 전자공학에 대한 기본 지식:아날로그 및 디지털 인터페이스를 포함한 회로 및 신호에 대한 지식

  3. C 프로그래밍:드라이버 개발을 포함한 임베디드 소프트웨어 개발에 대한 지식

  4. (선택사항) 센서에 대한 기본 지식:다양한 유형의 센서(예:온도, 압력, 동작)를 이해하는 것이 도움이 되지만 필수는 아닙니다.

또한 이 글에서는 다음을 가정합니다:

  • 센서 통합에 필요한 주변 장치가 장착된 마이크로 컨트롤러를 사용하여 작업하고 있습니다. 마이크로컨트롤러 주변 장치에 대한 자세한 내용은 참조 설명서에서 확인할 수 있습니다. 예를 들어 STM32F4 시리즈 마이크로컨트롤러에 대한 자세한 내용은 다음과 같습니다.

  • 임베디드 시스템에서 사용되는 컴파일러, 디버거 및 IDE에 익숙합니다. 몇 가지 일반적인 도구는 다음과 같습니다:

    • 컴파일러:GCC, Clang,

    • 디버거:GDB, LLDB

    • IDE:Visual Studio Code(VSCode)는 특히 임베디드 개발 및 디버깅을 위한 확장과 함께 널리 사용되는 선택입니다.

  • 실제 데이터를 효율적으로 수집하고 처리할 수 있는 안정적인 센서 기반 임베디드 시스템을 구축하는 것이 목표입니다.

목차

  • 센서와 센서 파이프라인이란 무엇입니까?

  • 센서 특성

  • 마이크로컨트롤러와 인터페이스하는 방법

  • 소프트웨어 아키텍처

    • 구성 요소에 대한 높은 수준의 개요

    • 센서의 데이터에 액세스

    • 센서 전원 관리

  • 부품 상세 설계

    • 1. 센서 드라이버

    • 2. ADC 지원

    • 3. 스케일링

    • 4. 교정

    • 5. 데이터 후처리

  • 결론

센서 및 센서 파이프라인이란 무엇입니까?

센서는 온도, 압력, 빛과 같은 물리적 특성의 변화를 감지하고 이를 측정하거나 해석할 수 있는 전기 신호로 변환합니다. 예를 들어, 서미스터는 온도에 따라 저항이 변하는 일종의 저항기입니다. 온도가 변화함에 따라 서미스터의 저항이 변하고 그에 따른 전압도 변경됩니다. 그런 다음 시스템은 이 전압 변화를 해석하여 온도를 결정합니다.

센서를 더 잘 이해하려면 눈, 귀, 피부, 코, 혀 등 인체의 자연적인 센서를 고려하십시오. 이러한 자연 센서는 처리를 위해 환경에 대한 신호를 뇌에 지속적으로 보냅니다. 뇌의 다양한 영역은 이러한 신호를 해석하고 정보를 사용하여 행동과 반응을 유도합니다. 뇌가 자연 센서의 신호를 처리하는 것처럼 마이크로컨트롤러는 센서 파이프라인을 사용하여 전자 센서의 신호를 처리합니다.

센서는 다양한 유형으로 제공되며 각 유형은 특정 물리적 특성을 감지하도록 설계되었습니다. 일부 센서에는 열, 빛 또는 압력과 같은 조건에 반응하여 속성을 변경하는 감지 요소가 있습니다. 예로는 서미스터, 적외선 수신기, 포토다이오드 등이 있습니다.

가속도, 회전 등의 움직임을 감지하기 위해 가속도계, 자이로스코프와 같은 MEMS(Microelectromechanical Systems) 센서가 널리 사용됩니다.

거리를 측정하기 위해서는 소나, 초음파 센서, 레이더 등의 센서가 일반적이다. 이는 사용 가능한 다양한 유형의 센서 중 몇 가지 예일 뿐입니다.

센서는 감지하는 물리적 특성 유형 외에도 통합 수준도 다릅니다. 일부 센서는 감지 요소와 외부 회로에 직접 연결하기 위한 간단한 리드가 있는 변환기로만 구성된 원시 센서입니다.

스마트 센서로 알려진 다른 센서에는 ADC(아날로그-디지털 변환기) 및 온보드 처리 기능과 같은 추가 구성 요소가 포함되어 있어 더 많은 데이터 처리를 독립적으로 처리할 수 있습니다.

원시 센서와 스마트 센서 사이의 선택은 비용, 크기, 인터페이스 마이크로컨트롤러의 처리 부하 등의 요소를 포함한 애플리케이션 요구 사항에 따라 달라집니다.

인간의 비유로 돌아가서 비전이 센서 파이프라인으로 어떻게 작동하는지 생각해 보세요. 빛이 우리 눈에 들어오면 망막의 광수용기 세포(간상체와 원추체)가 감지 요소 역할을 하여 빛을 전기 신호로 변환합니다. 이러한 신호는 시신경을 통해 뇌의 시각 피질로 이동하며, 그곳에서 처리를 거쳐 인식 가능한 이미지를 형성합니다. 그러면 뇌는 이 정보를 해석하고 아름다운 풍경을 볼 때 미소를 짓는 것과 같은 반응을 시작합니다.

마찬가지로 임베디드 시스템의 센서 파이프라인은 아래 그림과 같이 정의할 수 있습니다.

마이크로컨트롤러에서 센서 데이터 마스터하기:단계별 초보자 튜토리얼

이러한 각 단계는 애플리케이션에 따라 요구 사항이 다를 수 있습니다. 센서에 대한 요구사항 문서를 작성하면 적절한 센서를 선택하고 파이프라인을 구성할 때 도움이 됩니다.

센서 특성

센서 파이프라인의 블록을 살펴보기 전에 센서의 몇 가지 중요한 특성을 검토해 보겠습니다.

민감도

감도는 측정하도록 설계된 물리적 특성의 작은 변화를 감지하는 센서의 능력입니다.

감도는 제조 공정, 비용, 감지 요소 설계 등의 요인에 따라 달라질 수 있습니다.

특정 속성을 위해 설계된 센서는 다양한 감도 수준으로 제공되는 경우가 많으므로 사용자는 응용 분야 요구 사항에 따라 적절한 감도를 선택할 수 있습니다.

정확성

정확도는 센서의 측정값이 측정하는 물리적 특성의 실제 값과 일치하는 정도입니다. 센서의 정확도를 테스트하려면 일반적으로 판독값을 기준 기기의 판독값과 비교해야 합니다.

센서에는 게인 및 오프셋 오류가 있을 수 있습니다. 이러한 문제는 교정을 통해 해결하는 데 도움이 될 수 있습니다. 보정은 제조 공차나 설계 요인으로 인해 발생하는 이러한 체계적인 오류를 조정합니다.

교정이 완료되면 센서의 출력을 참조와 비교하여 정확도를 확인할 수 있습니다. 필요한 정확도 수준은 애플리케이션의 요구 사항에 따라 결정되어야 합니다.

정밀도

정밀도는 측정값이 실제 값에 얼마나 가까운지에 관계없이 센서 측정값의 일관성 또는 반복성을 나타냅니다. 이는 동일한 조건에서 동일한 출력을 생성하는 센서의 능력과 값을 얼마나 정밀하게 분석하고 보고할 수 있는지를 나타냅니다.

예를 들어, 물체의 실제 온도가 12.53°C인 경우:

  • 정밀한 센서는 12.52°C, 12.53°C, 12.54°C와 같은 값을 일관되게 측정합니다. 해당 값이 실제 온도에서 약간 벗어나더라도 마찬가지입니다.

  • 반면, 매우 정확한 센서는 12.53°C에 가까운 값을 측정하지만 판독값이 크게 다를 경우(예:12.50°C, 12.53°C, 12.56°C) 정밀도가 부족할 수 있습니다.

정확한 측정이 필요한 애플리케이션의 경우 높은 정확도(참값에 근접함)와 높은 정밀도(낮은 변동성)를 모두 갖춘 센서가 필수적입니다. 이는 12.5°C와 12.53°C 사이와 같은 작은 차이를 구별하는 데 특히 중요합니다.

반면, 요구 사항이 덜 엄격한 애플리케이션에서는 ±1°C와 같이 일반적인 모니터링 목적에 충분한 허용 오차 범위가 더 넓은 센서를 사용할 수 있습니다.

범위

센서의 범위는 지정된 정밀도와 정확도를 유지하면서 측정할 수 있는 물리적 특성의 최대값과 최소값 사이의 범위를 나타냅니다. 센서의 작동 범위는 측정 범위 이상으로 확장될 수 있지만 측정 범위는 센서가 지정된 민감도, 정확도 및 응답 시간을 안정적으로 준수하는 한계를 정의합니다.

드리프트

드리프트는 온도나 습도와 같은 조건으로 인해 시간이 지남에 따라 센서의 출력이 변하는 것을 말합니다. 감지 요소를 포함한 센서 내부 구성 요소는 이러한 조건에 민감하여 측정값이 점진적으로 바뀔 수 있습니다.

예를 들어, 많은 구성 요소는 온도 및 습도 변화의 영향을 받아 센서 판독값이 변경될 수 있습니다. 또한 내부 발진기가 있는 센서에서는 시간 기반 드리프트가 발생하여 정확도에 영향을 줄 수 있습니다.

정확한 외부 기준(예:정밀 시계)을 사용한 정기적인 교정은 드리프트를 수정하고 안정적인 측정을 유지하는 데 도움이 됩니다. 특정 응용 분야의 경우 허용 가능한 드리프트 특성을 갖춘 센서를 선택하는 것이 중요합니다.

응답 시간

응답 시간은 센서가 측정된 물리적 특성의 변화를 감지하고 반영하는 데 걸리는 시간입니다. 예를 들어, 온도가 5°C 상승하면 응답 시간은 온도 센서가 이 변화를 출력에 반영하는 데 걸리는 시간을 나타냅니다.

응답 시간은 센서의 설계, 제조 품질, 그리고 ADC(아날로그-디지털 변환기), 평균화 회로, 센서 파이프라인 내의 필터와 같은 내부 구성 요소에 따라 달라집니다.

위에 언급된 모든 매개변수는 센서의 데이터 시트에 철저하게 문서화되어 있습니다. 실제로는 각 특정 응용 분야에 대한 센서 요구 사항 문서를 작성하고 이러한 주요 매개변수를 센서 선택의 기준으로 자세히 설명하는 것이 좋습니다.

이제 센서의 주요 특성을 살펴보았으므로 실제 애플리케이션을 위해 센서를 마이크로컨트롤러에 연결하는 방법을 살펴보겠습니다.

마이크로컨트롤러와 인터페이스하는 방법

통신 프로토콜 선택

센서 요구 사항의 또 다른 필수 측면은 센서와 시스템의 MCU 또는 프로세서 간의 통신 인터페이스를 지정하는 것입니다. 출력 신호 유형과 마이크로 컨트롤러에서 사용 가능한 핀에 따라 센서가 어떻게 인터페이스되는지 이해하는 것이 중요합니다.

예를 들어, 특정 센서는 마이크로컨트롤러의 아날로그 또는 디지털 입력 핀에 직접 연결할 수 있습니다. 온도 센서와 같은 원시 센서는 일반적으로 아날로그 입력 핀에 연결되며, 그런 다음 마이크로 컨트롤러의 내부 ADC(아날로그-디지털 변환기)에서 이를 읽습니다.

이와 대조적으로 디지털 출력 센서는 디지털 GPIO(범용 입력/출력) 핀에 연결됩니다. 예를 들어, 속도 센서는 속도를 나타내기 위해 가변 펄스 폭을 갖는 구형파를 생성합니다. 이러한 신호는 일반적으로 외부 인터럽트 또는 타이머 캡처 입력으로 구성된 GPIO 핀에 연결되므로 마이크로컨트롤러가 펄스 폭을 정확하게 측정할 수 있습니다.

반면에 스마트 센서는 SPI(Serial Peripheral Interface) 또는 I2C(Inter-Integrated Circuit)와 같은 통신 프로토콜을 지원하는 경우가 많습니다. 이러한 인터페이스를 통해 마이크로컨트롤러는 센서를 구성하고, 상태를 확인하고, 레지스터 읽기 및 쓰기를 통해 데이터를 검색할 수 있습니다.

센서 인터페이스에 적합한 통신 프로토콜을 선택하는 것은 시스템에서 사용 가능한 핀과 애플리케이션의 특정 요구 사항에 따라 다릅니다.

도움말 :I²C 또는 SPI와 같은 프로토콜로 작업할 때 Saleae 로직 분석기와 같은 도구를 사용하면 디버깅 및 검증을 크게 단순화할 수 있습니다. 로직 분석기는 통신 신호를 캡처하고 시각화하며 Saleae와 같은 도구는 내장된 프로토콜 해석기를 제공하여 센서 통신을 실시간으로 디코딩하는 데 도움을 줍니다. 이는 구성 문제, 타이밍 문제 또는 센서 인터페이스 중 통신 오류를 해결할 때 특히 유용할 수 있습니다.

아래 그림 2는 서로 다른 인터페이스를 갖는 4개의 센서에 연결된 마이크로 컨트롤러의 예를 보여줍니다.

마이크로컨트롤러에서 센서 데이터 마스터하기:단계별 초보자 튜토리얼

전력 요구 사항 결정

센서 인터페이스 시 전력 요구 사항은 또 다른 주요 고려 사항입니다. 센서는 다양한 전압(예:3.3V 또는 5V)에서 작동할 수 있으므로 마이크로컨트롤러가 이러한 레벨을 수용할 수 있는지 확인하는 것이 중요합니다. 레벨 변환기는 전압 불일치를 해소하여 센서와 마이크로컨트롤러 전압 레벨 간의 호환성을 보장할 수 있습니다.

특히 고주파 데이터를 생성하는 센서의 경우 타이밍 및 샘플링 요구 사항도 평가해야 합니다. GPIO 핀에 외부 인터럽트를 구성하면 적시에 데이터를 캡처할 수 있으며, DMA 사용과 같은 기술은 CPU 개입 없이 고주파수에서 센서 샘플링을 위한 데이터 전송을 간소화할 수 있습니다.

이제 통신 프로토콜과 하드웨어 연결에 대해 배웠으므로 사용할 센서 데이터를 수집, 처리 및 준비하는 소프트웨어 아키텍처를 설계하는 데 중점을 두겠습니다. 센서로부터 깨끗하고 신뢰할 수 있는 데이터를 얻으려면 효과적인 소프트웨어를 설계하는 것이 중요합니다.

소프트웨어 아키텍처

이제 센서와 통신 프로토콜을 선택했으므로 센서 파이프라인을 위한 소프트웨어 아키텍처를 설계해 보겠습니다. 이 소프트웨어는 센서에 연결된 마이크로 컨트롤러에서 실행되며 원시 데이터를 처리하여 깨끗하고 사용 가능하게 만듭니다.

애플리케이션 수준 데이터 처리는 이 기사의 범위를 벗어나지만, 센서와의 인터페이스 및 애플리케이션 사용을 위한 데이터 준비에 중점을 두겠습니다.

센서 처리 파이프라인은 다음 구성요소로 나눌 수 있습니다:

  1. 센서 드라이버

  2. 아날로그-디지털 변환(ADC) 지원

  3. 스케일링

  4. 교정

  5. 데이터 후처리

스마트 센서와 원시 센서 모두에 대한 이러한 구성 요소에 대한 높은 수준의 개요를 살펴보겠습니다.

구성요소에 대한 상위 수준 개요

  1. 센서 드라이버

    1. 스마트 센서:드라이버는 SPI, I2C와 같은 통신 프로토콜을 통해 센서를 구성하고, 전원을 관리하고, 센서 레지스터에 대한 읽기 및 쓰기 작업을 처리합니다.

    2. 원시 센서:원시 센서에는 일반적으로 레지스터가 없기 때문에 드라이버는 전원 관리를 위해 GPIO만 제어할 수 있습니다.

  2. 아날로그-디지털 변환(ADC) 지원

    1. 스마트 센서:센서 드라이버를 통해 구성되는 온보드 ADC를 포함합니다.

    2. 원시 센서:ADC를 구성하고, 변환을 시작하고, 데이터를 검색하려면 소프트웨어에 구현된 ADC 드라이버인 외부 ADC가 필요합니다.

  3. 확장 :스마트 센서와 원시 센서 모두 스케일링이 필요합니다. 센서 데이터 시트에 제공된 공식을 사용하여 아날로그에서 디지털로 변환한 후 디지털 카운트를 의미 있는 물리량으로 변환합니다. 예를 들어 온도 센서는 공식을 사용하여 디지털 수치를 섭씨 온도로 변환합니다.

  4. 보정 :측정된 물리량이 획득되면 교정에서는 오프셋, 게인 또는 둘 다를 적용하여 오류를 수정하여 값을 조정합니다. 이 프로세스는 센서 출력이 전체 측정 범위에서 기준 값과 일치하도록 보장합니다. 보정 과정에 대한 자세한 논의는 다음 섹션에서 이어집니다.

  5. 데이터 후처리 :필터링 등의 후처리 기술을 적용하여 데이터 품질을 향상시키고 노이즈를 줄입니다. 저역 통과 또는 고역 통과 필터와 같은 일반적인 필터는 원치 않는 주파수 성분을 제거할 수 있습니다.

센서에서 데이터 액세스

데이터에 액세스하는 방법은 원시 센서인지 스마트 센서인지에 따라 다릅니다. 스마트 센서에는 온보드 ADC 및 FIFO가 있습니다. 데이터에 액세스하는 방법을 자세히 알아보기 전에 먼저 샘플링 빈도를 이해하는 것이 중요합니다.

샘플링 빈도:

센서에서 측정을 수행하는 빈도는 Nyquist-Shannon 샘플링 정리를 따라야 합니다. 측정된 데이터를 정확하게 재구성하려면 샘플링 속도가 측정할 신호의 가장 높은 주파수 구성 요소의 두 배여야 한다고 명시되어 있습니다.

샘플링 빈도는 센서가 데이터를 캡처하는 빈도를 정의하며, 이는 데이터에 액세스하는 방법에 영향을 미칩니다. 센서가 원시 센서인지 스마트 센서인지에 따라 샘플링된 데이터를 처리하는 접근 방식이 달라집니다.

스마트 센서:

  1. 데이터 레지스터:센서는 설정 중에 업데이트된 설정된 샘플 주파수를 기반으로 레지스터에 직접 샘플링된 데이터를 씁니다. 마이크로컨트롤러는 데이터 변환 완료 인터럽트를 기반으로 이 데이터 레지스터를 읽습니다.

  2. FIFObBuffer:일부 센서에는 여러 데이터 포인트를 저장하기 위한 FIFO(선입선출) 버퍼가 포함되어 있습니다. 활성화되면 FIFO는 구성된 샘플링 주파수로 업데이트되고 가득 차거나 사전 정의된 수준에 도달하면 인터럽트를 트리거합니다.
    FIFO의 이점은 다음과 같습니다:

    1. 전력 효율성:MCU는 데이터를 일괄 처리하여 CPU 오버헤드를 줄이고 데이터 수집 중에 저전력 모드로 들어갈 수 있습니다.

    2. 샘플링 및 처리 속도 일치:FIFO 버퍼는 센서의 샘플링 속도와 MCU의 데이터 처리 속도 간의 차이를 조정하는 데 도움이 됩니다.

    3. DMA(직접 메모리 액세스) 기능이 있는 MCU의 경우 CPU 개입 없이 센서에서 MCU 메모리로 데이터를 전송할 수 있으므로 전력 소비가 더욱 줄어듭니다.

원시 센서:

원시 센서의 경우 MCU는 종종 타이머 인터럽트를 사용하여 샘플링 주파수에서 ADC 변환을 트리거합니다. ADC 변환 완료 인터럽트 시 데이터가 판독되므로 MCU가 변환 중 및 샘플 사이에 절전 모드로 전환되어 전력을 절약할 수 있습니다.

센서 전원 관리

전력 관리는 에너지에 민감한 애플리케이션에 매우 중요합니다. 전략에는 다음이 포함됩니다:

  1. 저전력 모드:많은 센서가 센서 레지스터를 통해 구성 가능한 저전력 모드를 지원합니다.

  2. GPIO 제어 전원 사이클링(Duty-Cycling):저전력 모드가 내장되지 않은 센서의 경우 마이크로 컨트롤러는 GPIO 핀을 사용하여 센서의 전력선을 전환하여 전력 소비를 더욱 줄일 수 있습니다. 아래 그림 3은 MCU의 GPIO를 사용하여 전력이 제어되는 원시 온도 센서의 다이어그램을 보여줍니다. 예를 들어, 절전 모드의 온도 센서는 온도 판독이 필요할 때만 활성화될 수 있습니다.

마이크로컨트롤러에서 센서 데이터 마스터하기:단계별 초보자 튜토리얼

위의 기술은 필요한 데이터 샘플링 속도와 센서 응답성을 유지하면서 효율적인 전력 사용을 보장합니다.

높은 수준의 아키텍처를 염두에 두고 이제 각 파이프라인 구성 요소의 세부 설계를 살펴보겠습니다.

구성요소의 세부 설계

이 섹션에서는 소프트웨어 아키텍처 섹션에 설명된 센서 파이프라인의 주요 구성 요소를 자세히 살펴보겠습니다.

1. 센서 드라이버

센서 드라이버는 스마트 센서와 원시 센서 모두에 대한 통신, 구성, 전원 및 데이터 수집을 관리하는 역할을 담당합니다.

스마트 센서 드라이버:

  1. 통신 드라이버:래퍼 기능을 사용하여 MCU의 일반 I2C 또는 SPI 드라이버를 조정하여 1바이트, 2바이트 또는 4바이트 전송과 같은 센서별 요구 사항을 처리할 수 있습니다.

  2. 구성:일반적인 작업에는 샘플링 속도 설정, 인터럽트 구성, FIFO 버퍼 관리 및 필요한 경우 클럭 설정이 포함됩니다.

  3. 전원 관리:API는 내장 전원 모드가 없는 센서에 대해 특정 레지스터에 쓰거나 GPIO 라인을 제어함으로써 상위 소프트웨어 계층이 센서를 전원 모드 간에 전환할 수 있도록 허용해야 합니다.

원시 센서 드라이버:

원시 센서의 경우 드라이버는 주로 GPIO 제어 토글을 통해 전력을 관리합니다.

2. ADC 지원

ADC 지원은 원시 센서에만 필요합니다. 이 기사에서는 일반적으로 마이크로 컨트롤러에 내장되는 SAR ADC에 중점을 두고 있습니다.

SAR ADC는 어떻게 작동하나요?

SAR ADC는 비트 분해능과 동일한 사이클 수를 사용하여 여러 클록 사이클에 걸쳐 아날로그 신호를 디지털 값으로 변환합니다(예:10비트 ADC의 경우 10사이클).

  1. 기준 전압(VRef):ADC가 측정할 수 있는 최대 전압을 나타냅니다. 이 한도를 초과하는 아날로그 신호는 축소되어야 합니다.

  2. 분해능:감지 가능한 가장 작은 전압 변화를 결정합니다. 예를 들어, 3.3V VRef를 갖는 10비트 ADC의 분해능은 3.22mV입니다.

$$V_{\text{Res}} =V_{\text{Ref}} /2^{10}$$

ADC 결과는 데이터 레지스터에 저장되며, 이후 의미 있는 물리적 단위로 확장될 수 있습니다.

3. 확장

스케일링은 센서 유형에 따라 ADC 카운트를 온도(°C) 또는 가속도(g)와 같은 의미 있는 물리적 값으로 변환합니다. 센서 데이터시트는 일반적으로 필요한 공식이나 조회 테이블을 제공합니다.

예를 들어 원시 온도 센서에서 측정한 전압을 온도 값으로 변환하는 방법은 아래와 같습니다.

$$V_{\text{측정된}} =Counts_{\text{ADC}} / 2^{10} * V_{\text{Ref}} \quad \text{(ADC 카운트에서 V_측정됨)}$$

$$Temperature_{\text{측정됨}} =V_{\text{측정됨}} * T_{\text{C/mV}} \quad \text{(온도 물리적 값 가져오기)}$$

마찬가지로 3축 가속도계는 X, Y, Z축의 개수를 g 또는 milli-g 단위의 가속도 값에 매핑합니다.

4. 교정

마이크로컨트롤러에서 센서 데이터 마스터하기:단계별 초보자 튜토리얼

위 왼쪽 그림(4a)은 게인과 오프셋을 사용한 교정을 보여주고, 위 오른쪽 그림(4b)은 고정 오프셋을 사용한 교정을 보여줍니다.

$$x_{\text{보정}} =게인 * x_{\text{원시}} + 오프셋 \quad \text{(그림 4a - 선형 보정)}$$

$$x_{\text{보정됨}} =x_{\text{원시}} + 오프셋 \쿼드 \text{(그림 4b - 고정 오프셋 보정)}$$

보정은 센서의 출력이 기준 측정값과 일치하도록 보장하여 설계, 재료 또는 제조로 인해 발생한 오류를 수정합니다.

오류 유형:

  1. 오프셋 오류:입력 크기에 관계없이 실제 기준 값에서 센서 출력의 일정한 편차입니다.

  2. 게인 오류:센서의 출력 스케일이 예상 값에서 벗어나 입력에 비해 출력이 잘못 증가하거나 감소하는 비례 오류입니다.

보정 방법:

  1. 2/3점 교정:이 유형의 교정에는 원시 값에 고정 오프셋을 적용하거나 게인과 오프셋을 모두 적용하는 것이 포함될 수 있습니다. 그림 4a는 게인/오프셋 교정의 예를 보여주고, 그림 4b는 오프셋 교정을 보여줍니다. 두 그림 모두에서 y축은 정확한 장비로 측정한 기준값을 나타내고, x축은 ADC 이후 센서에서 측정한 raw 값을 나타냅니다.

  2. N-포인트 교정:더 복잡하고 비선형적인 오류 수정을 위해 여러 포인트가 필요합니다.

구현:

  1. 교정 지점은 정확성을 위해 센서의 전체 측정 범위를 포괄해야 합니다.

  2. 일단 추정된 이득 및 오프셋과 같은 매개변수는 전원 주기 전반에 걸쳐 지속성을 위해 시스템의 비휘발성 메모리에 저장되어야 합니다.

5. 데이터 후처리

이 섹션에서 다루는 후처리에서는 노이즈와 원치 않는 신호 구성요소를 제거하여 데이터 신뢰성을 높이는 방법에 대해 설명합니다.

필터링

필터링은 데이터 품질을 향상시키기 위해 신호에서 원치 않는 주파수 성분을 제거하는 프로세스입니다. 필터에는 여러 가지 유형이 있습니다:

  • 저역 통과 필터:고주파 소음을 감쇠시키면서 저주파 신호는 통과시킵니다.

  • 고역 통과 필터:저주파 잡음을 감쇠시키면서 고주파 신호를 통과시킵니다. (예:가속도계 데이터의 중력 가속도).

  • 대역 통과 필터:특정 주파수 범위 내의 신호만 유지하고 원하는 대역 밖의 낮은 주파수와 높은 주파수를 모두 제거합니다.

이러한 필터는 FIR(Finite Impulse Response) 또는 IIR(Infinite Impulse Response) 필터로 구현되는 경우가 많습니다. IIR 필터는 구현하기 쉽고 계산적으로 효율적이며, FIR 필터는 계산 집약적이지만 주파수 응답을 더 잘 제어할 수 있습니다.

여기서는 IIR 필터의 일종인 지수 이동 평균(EMA)으로 알려진 간단한 저역 통과 필터를 살펴보겠습니다. 이동 평균 필터는 단기적인 변동을 완화하고 장기적인 추세를 강조하는 수학적 기법입니다.

다른 이동 평균 필터와 달리 EMA는 버퍼를 유지할 필요가 없으므로 메모리 효율성이 더 높습니다. 또한 평활화를 제공하는 동시에 데이터 변경에 더 잘 반응하므로 실시간 필터링에 적합합니다. EMA는 센서 판독값의 변화에 빠르게 적응할 수 있도록 이전 데이터 샘플보다 최신 데이터 샘플에 더 큰 가중치를 할당합니다.

EMA는 다음과 같이 계산할 수 있습니다:

$$EMA_{\text{t}} =\alpha * x_{\text{t}} + (1 - \alpha) * EMA_{\text{t - 1}}$$

$$\alpha =2 / (N + 1) \quad \text{(평활화 요소, N - 필터 창 크기)}$$

$$EMA_{\text{t}} \quad \text{(현재 반복의 지수 이동 평균)}$$

$$x_{\text{t}} \quad \text{(현재 반복의 새 데이터 샘플)}$$

$$EMA_{\text{t - 1}} \quad \text{(마지막 반복의 지수 이동 평균)}$$

이제 EMA(지수 이동 평균) 필터를 이해했으므로 애플리케이션에 맞게 조정할 때 고려해야 할 두 가지 주요 요소는 다음과 같습니다.

  • 평활화 대 반응성:평활화 요소가 높을수록(1에 가까울수록 필터 창 크기가 작아짐) 최근 데이터에 더 많은 가중치가 부여되어 필터가 변경 사항에 더 잘 반응하지만 노이즈 감소 효과는 떨어집니다. 평활화 계수가 낮을수록(0에 가까울수록 필터 창 크기가 커짐) 노이즈 감소 효과가 향상되지만 데이터 변경에 더 느리게 반응합니다.

  • 애플리케이션별 조정:평활화 계수는 샘플링 속도, 센서 감도 및 애플리케이션 요구 사항에 따라 선택해야 합니다. 실시간 시스템에서는 빠른 응답성과 안정적인 출력 간의 균형이 필요한 경우가 많습니다.

다음은 EMA의 코드 샘플입니다:

#include <stdio.h>
#include <stdint.h>
// Exponential Moving Average (EMA) filter implementation
#define FILTER_WINDOW 5
// Function to calculate EMA
float calculateEMA(float ema, float new_value, float alpha) {
 return (alpha * new_value) + (1 - alpha) * ema;
}
int main() {
 float sensorReadings[] = {26.0, 27.5, 28.2, 27.0, 26.8, 26.5, 27.2};
 int numReadings = sizeof(sensorReadings) / sizeof(sensorReadings[0]);
 float alpha = 2.0f / (FILTER_WINDOW + 1); // Standard EMA formula
 float ema = sensorReadings[0]; // Initialize EMA with the first reading
 printf("EMA Filtered Sensor Data:\n");
 for (int i = 0; i < numReadings; i++) {
 ema = calculateEMA(ema, sensorReadings[i], alpha);
 printf("Reading %d: Raw = %.2f, EMA = %.2f\n", i + 1, sensorReadings[i], ema);
 }
 return 0;
}

결론

요약하면, 센서는 현대 스마트 장치의 중추로서 실제 세계와 디지털 시스템 사이의 격차를 해소합니다. 가전제품부터 산업 자동화, 의료 기기에 이르기까지 기기가 환경을 인식하고 상호 작용할 수 있도록 해줍니다.

센서의 작동 방식, 데이터 파이프라인의 구성 요소, 마이크로 컨트롤러와의 통합을 이해하는 것은 엔지니어와 애호가 모두에게 필수적입니다. 효과적인 파이프라인을 설계함으로써 개발자는 정확하고 깨끗하며 신뢰할 수 있는 데이터를 보장하여 시스템이 성능 및 전력 효율성 목표를 달성할 수 있도록 할 수 있습니다.

질문이 있거나 이 주제에 대해 더 자세히 이야기하고 싶다면 Twitter나 LinkedIn을 통해 언제든지 문의하세요. 언제나 연결되어 행복합니다.

무료로 코딩을 배우세요. freeCodeCamp의 오픈 소스 커리큘럼은 40,000명 이상의 사람들이 개발자로 취업하는 데 도움을 주었습니다. 시작하세요