임베디드-07

기타튀김·2025년 5월 20일

임베디드

목록 보기
7/8
post-thumbnail

📘 Lecture 07 – Analog IO 정리


✅ 1. 아날로그와 디지털의 차이

● 디지털 신호

  • 값이 0 또는 1, 즉 **이산적(discrete)**임
  • 예: 스위치 on/off, LED 켜짐/꺼짐, 3.3V 또는 0V

● 아날로그 신호

  • 값이 연속적인 실수(real value) 범위
  • 예: 온도(23.7°C), 전압(1.56V), 빛의 세기, 음압 등

아날로그는 현실 세계 대부분의 물리량을 표현하며,
디지털은 MCU가 이해 가능한 이진 데이터이다.


✅ 2. 왜 아날로그 IO가 필요한가?

  • 실제 센서(온도센서, 조도센서, 가속도계 등)는 연속적인 아날로그 값을 출력
  • 이를 MCU가 처리하려면 디지털 값으로 변환해야 함
  • 반대로 MCU가 **아날로그 출력장치(스피커, 아날로그 모터 등)**를 구동하려면 디지털에서 아날로그로 변환해야 함

ADC (Analog to Digital Converter): 입력용

DAC (Digital to Analog Converter): 출력용


✅ 3. 아날로그 입력 (ADC)

● 정의

아날로그 신호를 디지털 숫자 값으로 변환하는 장치

● 동작 원리

  1. 아날로그 입력 전압이 들어옴 (예: 0V ~ 3.3V)
  2. ADC가 기준 전압과 비교해 정해진 비트 수만큼의 이진수로 변환
비트 수표현 가능한 값의 개수해상도 (Resolution)
8-bit256 (0~255)약 0.013V
10-bit1024약 0.0032V
12-bit4096약 0.0008V

해상도는 전압을 얼마나 정밀하게 측정할 수 있는지를 의미함

● ADC 예시

  • 조도센서: 밝기 → 전압 → ADC → 0~1023 숫자
  • 온도센서: 섭씨 → 전압 → ADC → 디지털값

✅ 4. 아날로그 출력 (DAC)

● 정의

디지털 값을 전압의 형태로 변환하여 출력하는 장치

● 응용 예시

  • 오디오 출력: 디지털 음원을 아날로그 신호로 변환
  • 모터 제어: 속도에 비례하는 전압 출력
  • 조명: 조명 밝기를 아날로그 전압으로 제어

대부분의 MCU는 DAC를 직접 갖고 있지 않기 때문에
PWM + RC 필터를 이용하여 유사 아날로그 출력을 구현한다.


✅ 5. PWM으로 아날로그 출력 대체

PWM은 디지털 신호이지만 Duty Cycle 조절을 통해 평균 전력을 제어할 수 있어 유사 아날로그 동작을 구현할 수 있다.

PWM 주기Duty Cycle 30%Duty Cycle 70%
30%출력 평균 전압 ↓출력 평균 전압 ↑

● RC 필터

  • PWM 출력에 **저역 통과 필터(RC)**를 연결하면 스무딩된 전압 생성 가능
  • 이 방식은 소형 오디오, 저전력 모터 제어에 많이 사용됨

✅ 6. Mbed에서의 아날로그 입력 – AnalogIn

● 사용 예시

#include "mbed.h"

AnalogIn sensor(A0);  // A0 핀에 아날로그 센서 연결

int main() {
    while (1) {
        float val = sensor.read();       // 0.0 ~ 1.0 사이 실수
        uint16_t raw = sensor.read_u16(); // 0 ~ 65535 정수값 (16-bit 해상도)
        wait(0.5);
    }
}
메서드설명
.read()0.0 ~ 1.0 사이 float 값 반환
.read_u16()0 ~ 65535의 16-bit 값 반환

실제 ADC는 10-bit 또는 12-bit 해상도인 경우도 있으나,
Mbed에서는 이를 내부적으로 16-bit로 정규화해서 반환한다.


✅ 7. Mbed에서의 아날로그 출력 – AnalogOut

주의: AnalogOut은 DAC가 탑재된 보드에서만 작동
그렇지 않은 경우 PWM + 필터 방식으로 대체해야 함

#include "mbed.h"

AnalogOut speaker(PA_4);  // DAC 출력 핀

int main() {
    float val = 0.0;
    while (1) {
        speaker.write(val);   // 0.0 ~ 1.0 사이 값 출력 (0V ~ Vref)
        val += 0.01;
        if (val > 1.0) val = 0.0;
        wait(0.1);
    }
}

✅ 8. 실제 시스템과의 연결

● 센서 연결 흐름

[온도 센서]
     ↓ (전압)
[MCU A0 핀 → ADC]
     ↓ (디지털 값)
[프로그램에서 처리]
     ↓
[LCD에 온도 표시 or 출력 제어]

● 출력 제어 흐름

[디지털 PWM 생성 (e.g., 30%)]
     ↓
[RC 필터 → 평균 전압 생성]
     ↓
[모터 제어 or LED 밝기 조절]

아날로그 IO는 센서와 제어기가 현실 세계와 MCU를 연결해주는 다리 역할을 한다.


✅ 9. 응용 사례 연계

센서측정 방식입력 방식출력 방식
조도센서밝기 → 전압ADC디스플레이
서미스터온도 → 저항 → 전압ADCLCD
스피커음압DAC (또는 PWM)사운드 출력
모터속도 제어PWM회전 제어

Analog IO는 단독으로는 의미 없고, 디지털 제어, RTOS, 인터럽트, 타이머 등과 결합되어 전체 시스템을 구성한다.


🧾 정리 요약

항목설명
Analog Signal연속값(전압 등), 현실 세계 대부분의 물리량
Digital Signal0과 1로 구성된 이산 값
ADC아날로그 입력 → 디지털 값으로 변환
DAC디지털 값 → 아날로그 전압으로 출력
PWM디지털 방식으로 아날로그 동작 흉내 (필터 연계 시 DAC 대체 가능)
해상도ADC에서 측정 가능한 최소 단위 (bit 수 증가 → 정밀도 증가)
Mbed APIAnalogIn, AnalogOut 클래스 사용
센서 연계온도, 빛, 소리 등 아날로그 센서와 직접 연결
출력 응용스피커, 조명, 모터 등 구동 가능
시스템 연계디지털 IO, 인터럽트, 타이머와 함께 현실 세계와 MCU를 연결함

profile
부산대 정보컴퓨터공학부

0개의 댓글