진공에 대해 알려주마.

센서 그리고 자동제어 본문

진공/노하우

센서 그리고 자동제어

하이백 2020. 4. 6. 23:18

요즘 학교에서 코딩 교육을 한다고 한다. 아두이노를 기반으로 한 마이크로컨트롤러와 센서를 연결하고 여기에 프로그래밍하여 원하는 기능을 수행토록 하는 것이다. 

아두이노는 마이크로 컨트롤러를 사용하고 센서를 연결하고 마이크로 컨트롤러에 프로그램을 다운로드하여 기능을 수행하게 된다. 여러가지 교육용 센서들이 있어 어떠한 환경을 인식할 것인지를 결정하고 그에 해당하는 센서를 연결하고 마이크로 컨트롤러에 프로그램으로 해당 센서에서 값을 가져와 처리하면 된다. 인터넷 상에 굉장히 많은 예제가 있어 이를 응용하여 원하는 기능을 구현할 수 있다.

또한 라즈베리파이는 싱글보드 컴퓨터이다. 싱글보드 컴퓨터는 한개의 보드로 구성된 컴퓨터 메인 보드이다. 여기에 모니터, 키보드, 마우스, 전원을 연결하면 말 그대로 컴퓨터가 된다. PC에서 처럼 구성하고 사용할 수 있다.

 

아두이노 (Arduino)
https://ko.wikipedia.org/wiki/%EC%95%84%EB%91%90%EC%9D%B4%EB%85%B8

아두이노 우노 R3

 

라즈베리파이 (Raspberry Pi)
https://ko.wikipedia.org/wiki/%EB%9D%BC%EC%A6%88%EB%B2%A0%EB%A6%AC_%ED%8C%8C%EC%9D%B4

라즈베리파이4
라즈베리파이 싱글보드 컴퓨터

 

이러한 장치와 센서를 연결하여 주변의 상황을 판단할 수 있다. 가장 쉽게 접근할 수 있는 것이 아두이노 이다.

아두이노는 주변의 환경을 인식할 수 있는 각종 센서를 이용하여 온도, 밝기, 습기, 먼지, 충격, 근접 등의 상태를 인식하고 이를 디지털화하여 아두이노 보드가 인식할 수 있다. 이렇게 읽힌 값을 이용하여 다시 주변의 상태를 제어할 수 있다. 

참고
https://create.arduino.cc/projecthub/iasonas-christoulakis/make-an-arduino-temperature-sensor-thermistor-tutorial-b26ed3?ref=platform&ref_id=424_trending___&offset=1

아두이노 구성 다이어그램

 

실제로 센서를 연결한 사진

 

아두이노는 학생들이 쉽게 접근하게 하기 위해 가장 단순화된 기능을 가진다. 브레드보드에 전원과 센서 그리고 점퍼선을 연결하면 보드에서 바로 값을 읽고 쓸 수가 있다. PC에서 프로그램하고 이를 보드에 다운로드하면 센서를 읽어 올 수 있다. 산업용과 비교하면 기능은 비슷한 것이다.

자연현상에(온도, 밝기, 습도 등) 반응하는 장치를 만들고 이를 전압(Voltage), 전류(Ampere), 저항(Resistance) 값으로 변환하고 PC가 인식할 수 있도록 이를 증폭하고 정제하여 PC가 인식할 수 있는 디지털 신호로 변환하게 된다. 

 

빛을 받아 밝기를 인식하고 등을 켜는 회로

조도센서는 빛의 밝기를 저항값으로 변환한다. 이 저항값을 전압으로 변환하는 회로를 꾸미고 전압을 아날로그 보드에 연결하여 값을 인식할수 있다. (아두이노는 보드에 아날로그 보드를 내장하고 있어 바로 연결한다.)

제대로 연결이 되면 PC에서 아래와 같이 코딩하여 다운로드하면 밝기를 수치화 읽어 들이고 이 값으로 밝고 어두움을 판단하여 어둡다고 판단되면 LED를 켜는 자동제어(?) 기능을 수행한다. 여기서는 5V를 이용하여 LED를 켜지만 실제 등을 켜기 위해서는 릴레이를 사용하여 220V 등을 제어할 수 있다.

 

//
// 조도센서를 읽고 LED켜기
//

// CDS센서를 Analog input 1번에 연결
// LED를 D10번에 연결
int cdsSensor = A1;
int ledOutput = 10;

// 기본함수 : 프로그램 시작시 1회 동작하는 init 함수
void setup()
{
    pinMode(ledOutput, OUTPUT);
}

// 기본함수 : 무한루프
void loop()
{
    // A1 Analog 값을 읽어온다.
    int cdsVal = analogRead(cdsSensor);

    // cdsVal은 주변 밝기에 따라 0~1023 값으로 밝기를 표시한다.
    if (cdsVal < 50)
    {
    	// 밝기가 50이하면 어두운 것으로 판단하고 LED를 켠다.
        digitalWrite(ledOutput, HIGH);
    }
    else
    {
    	// LED 끄기
        digitalWrite(ledOutput, LOW);
    }
    
    delay(500);
}

 

여기까지는 교육을 위해서 만든 교육용으로 제작 되었다. 교육용과 산업용의 차이는 안정과 정밀함 일것이다. 노이즈와 충격에 강해야 하며 해상도가 높은 센서를 사용하여 오차를 최대한 줄여야 한다.

아두이노 대신 산업용PC를 사용해야 하며
CDS센서 대신에 Optic light sensor
내장된 디지털, 아날로드 대신 산업용 DAQ 보드를 사용하며 
AC 등을 켜기위해 포토 커플러를 사용한 프로텍션 기능
정밀, 고속 제어 프로그램 
그리고 노이즈, 충격을 막아주는 케이싱

원리를 동일하지만 하드웨어, 소프트웨어의 가격에 많은 차이가 있다.

 

'진공 > 노하우' 카테고리의 다른 글

PHENOMENON 002  (0) 2020.08.26
PHENOMENON 001  (0) 2020.08.20
모드버스  (3) 2020.04.01
RS-232 시리얼 통신  (10) 2019.12.08
PC에서 PLC ACCESS 하기 (2)  (16) 2019.12.02
Comments