임베디드시스템개론 -...

25
임베디드시스템개론 : Arduino 활용 Lecture #4: Analog Input 활용 2013. 4. 1 by 김영주

Upload: others

Post on 29-Dec-2019

0 views

Category:

Documents


0 download

TRANSCRIPT

  • 임베디드시스템개론: Arduino 활용

    Lecture #4: Analog Input 활용

    2013. 4. 1 by 김 영 주

  • 강의 목차

    아두이노 시리얼 입출력(Serial I/O) 아두이노 아날로그 입력(Analog Input) 가변 저항(Potentiometer) 입력 조도(CdS) 센서 입력

    2

  • 아두이노 시리얼 I/O (1) 아두이노 Serial I/O

    ISP(Flash Programming)과 Host와의 통신을 위해 USB I/F를 사용

    실제 USB 프로토콜에 기반하여 통신하는 것이 아님 UART Serial 통신 신호를 USB 인터페이스 신호로 변환하여 전달

    하는 방식으로 Serial 통신을 수행

    시리얼 통신(Serial Communication) 데이터를 비트(bit) 단위로 전송하는 방식 예: ASCII 문자 ‘B’ 전송

    기본적으로 2개의 신호선(송신Transmitter/수신 Receiver)을 사용

    3

  • 아두이노 시리얼 I/O (2) Arduino USB-to-serial H/W

    4

    Serial Comm. Indicator

  • 아두이노 시리얼 I/O (3) Arduino와 Host의 연결

    5

    Host는 아두이노를serial 통신 장치로 인식

  • 아두이노 시리얼 I/O (4) Arduino “Serial” 객체 Serial 통신을 구현한 클래스의 객체 “Serial”을 지원

    Arduino Mega에서는 “Serial”, “Serial1”, “Serial2”, Serial3”의 4 개의 객체를지원

    “Serial” 객체의 메소드(Methods) begin() / end() – serial 통신 준비 및 종료 available() – serial input buffer의 데이터 존재 여부 확인 read() / peek() – serial input buffer에서 데이터 읽기 write() / print() / println() – serial output buffer에 데이터 쓰기(format 허

    용) flush() – serial buffer를 비움

    6

  • 아두이노 시리얼 I/O (5) Serial 데이터 송신 “SerialHelloWorld”

    7

    데이터 전송속도 설정

    1. 임의의 데이터타입 출력 가능

    2. 정수값에 대해 출력형식을 지정 가능

  • 아두이노 시리얼 I/O (6) Serial 데이터 송신 print() 메소드 :

    센서 데이터, 프로그램 실행상태 등을 Host로 전송할 때 사용 가능 다양한 출력 형식을 지원(Function Overriding)

    write() 메소드 바이트 단위의 데이터 송신에 사용

    write(val) – 1 byte 값 송신 write(string) – 문자열 데이터 송신 write(buf, length) – 버퍼 데이터를 지정된 길이만큼 전송

    8

  • 아두이노 시리얼 I/O (7) Serial 데이터 수신 “SerialReadBasic”

    9

    입력 버퍼의 데이터 수신여부 확인

    입력 버퍼로부터 1 바이트데이터를 읽어옴. 읽혀진데이터는 버퍼에서 제거.cf) peek()

  • 아두이노 시리얼 I/O (8) Serial 데이터 수신

    문자열(String) 읽어오기

    10

  • 아날로그 입력 개요 (1) 아날로그 입력(Analog Input) : 아날로그 신호

    자연현상에 대한 센서의 입력 디지털 컴퓨터에서는 하나의 신호 덩어리

    디지털 값으로 변환하여 처리

    11

  • 아날로그 입력 개요 (2) 아날로그 입력(Analog Input) : ADC(Analog-to-Digital Converter)

    한 시점의 아날로그 신호값을 여러 비트의 디지털 값으로 변환

    정밀도(Resolution) : 디지털 값(또는 상태)의 수아날로그 신호값을 표현하기 위해 사용한 비트 수에 의해 결정

    일반적인 resolutions 8 bits = 256 values 16 bits = 65,536 values 32 bits = 4,294,967,296 values

    12

  • 아날로그 입력 개요 (3) 아두이노 Analog Input

    Arduino Mega : 15’s ADC 입력 지원 변환 가능 전압 범위 : 0 ~ 5 volts 정밀도(Resolution) : 10 bits (1024 (0~1023) values)

    5V/1024=4.8mV의 작은 전압 변화까지 측정 가능

    analogRead(port) 함수 지정된 port로 입력되는 전압값을 0~1023 사이의 값으로 변환하여 반환

    아날로그 입력 활용 가변저항 입력

    조도 , 온도, 무게, 휨 센서 등의 아날로그 센서 입력 피에조 센서, 마이크 등의 소리 입력 등

    13

  • 가변저항(Potentiometer) 활용 (1) 실험 목표

    가변저항(potentiometer)의 활용 방법 이해 가변저항으로 LED 출력 밝기를 조정

    아두이노 아날로그 입력 처리 이해

    14

  • 가변저항(Potentiometer) 활용 (2) 가변저항(Potentiometer)

    저항값을 조절할 수 있는 부품가변 전압을 생성할 때 사용

    15

    +5VmeasureGND

  • 가변저항(Potentiometer) 활용 (3) 가변저항(Potentiometer)

    일정한 범위를 가진 입력으로 사용현재 상태를 조절하기 위해 일정한 범위를 가진 입력이 필요노브 등을 이용하여 직접 제어

    회전 위치 측정 회전 바퀴(또는 축), 로봇 조인트(joint) 등의 위치 측정

    Resistive Sensor(저항 센서)와 동일하게 동작 Voltage divider : 하나의 전압을 두 개의 전압으로 분할

    16

  • 가변저항(Potentiometer) 활용 (4) 회로도 및 회로 구성

    17

    회로 연결회로도

  • 가변저항(Potentiometer) 활용 (5) 아누이노 프로그램 : PotDimmer

    18

    int potPin = a2;Int ledPin = 9;int val = 0;

    void setup(){

    pinMode(ledPin, OUTPUT);}

    void loop(){

    val = analogRead(potPin);val = val / 4;analogWrite(ledPin, val);

    }

  • 가변저항(Potentiometer) 활용 (6) 실험 개선

    PotDimmer 프로그램에서 읽은 가변저항 값을 Host의 Serial Monitor에 출력하여라.

    실험 리뷰

    19

    To turn On : digitalWrite(9, HIGH)To turn OFF : digitalWrite(9, LOW)

    To set brightness : analogaWrite(9, val)

    To turn On : digitalWrite(9, LOW)To turn OFF : digitalWrite(9, HIGH)

    To set brightness : analogaWrite(9, 255-val)

  • 조도센서(CdS Sensor) 활용 (1) 실험 목표

    조도 센서의 동작 및 활용 방법 이해 조도 센서 값을 읽어 출력하고 LED 밝기를 조절

    Resistive sensor의 분압 동작 이해

    20

  • 조도센서(CdS Sensor) 활용 (2) 사전 지식

    조도 센서(CdS Sensor) Photocell, Photo-resistor, Light sensor 등

    21

  • 조도센서(CdS Sensor) 활용 (3) 사전 지식

    조도 센서(CdS Sensor) 사용 예:

    22

  • 조도센서(CdS Sensor) 활용 (4) 회로도 및 회로 구성

    23

    회로 연결회로도

  • 조도센서(CdS Sensor) 활용 (5) 아누이노 프로그램 : CdsDimmer

    24

    int cdsPin = a2;Int ledPin = 9;int val = 0;

    void setup(){

    pinMode(ledPin, OUTPUT);}

    void loop(){

    val = analogRead(cdsPin);val = val / 4;analogWrite(ledPin, val);

    }

  • 조도센서(CdS Sensor) 활용 (6) 실험 개선

    CdsDimmer 프로그램에서 다음과 같이 동작하도록 수정하여라. 주변 밝기가 일정 이상으로 높으면 LED를 off한다. 주변 밝기에 반비례하여 LED의 밝기를 조절한다.

    25