Smart IoT 설계 시스템 Lecture 07. 센서와 액츄에이터 실습
목차 센서에 대해 센서 종디지털 값으로 컬리브레이션 아날로그 폴링 인터럽트 2. 센서 디지털 아날로그 컬리브레이션 3. 액츄 pwm 4. 액츄에이터Smart IoT 설계 시스템 5.
센서란 Sensor의 의미 센서란 주변의 물리 화학 생물학적 정보를 감지하여 전기적 신호로 변환하는 장치(Device) ○ 라틴어로 지각, 느낌 등의 의미 ○ 인간의 5감 기능(시각·청각·후각·미각·촉각)을 센스(SENSE)라 함. ○ 리드SW. 패턴 인식을 하는 시스템 레벨의 센서. ○ 최근에는 인텔리전트 센서로CPU 내장형. 복잡 다양성을 띠고 있다. 센서란 주변의 물리 화학 생물학적 정보를 감지하여 전기적 신호로 변환하는 장치(Device) 인간의 오감과 Sensor ○ 눈-시각: 광센서{광도전소자, 카메라 CCD, 영상(이미지)센서, 포토다이오드} ○ 귀-청각: 음향센서(마이크로폰, 압력소자) ○ 피부-촉각: 촉각센서 ○ 혀-미각: 미각센서(백금, 산화물, 반도체가스센서, 입자센서, 산화계열 선형소결반도체) ○ 코-후각: 후각센서(가스, 메탄, 바이오케미칼센서, 실리콘산티탄산염)
스마트폰 센서 센서 분야에서 200편 이상의 논문을 발표하며 ‘센서의 아버지’라고 불리는 Janusz Bryzek 교수는 향후 10년 이내에 지구상에 사용되는 센서의 개수가 1조 개를 넘게 될 것이라고 예상.(2013년 10월 스탠포드 대학 ‘Trillion Sensors Summit’). 스마트 폰에 적용된 센서들 (www.jopenbusiness.com)
센서 분류 센서의 활용분야 따른 분류 ○ 구성에 의한 분류 : 기본센서, 조립센서, 응용센서 ○ 기구에 의한 분류 : 기구형(또는구조형), 물성형, 기구, 물성혼합형 ○ 검출신호에 의한 분류 : 아날로그센서, 디지털센서, 주파수형센서, 2진형센서 ○ 감지기능에 의한 분류 : 공간량, 역학량, 열역학량, 전자기학량 공학량, 화학량, 시각, 촉각 ○ 변환방법에 의한 분류 : 역학적, 열역학적, 전기적, 자기적, 전자기적, 광학적, 전기화학적, 촉매화학적, 미생물학적, 효소화학적 ○ 재료별 : 세라믹, 반도체, 금속, 고분자, 효소, 미생물 ○ 용도별 : 계측용, 감시용, 검사용, 제어용 ○ 특징별 : 다차원센서, 다기능센서 ○ 분야별 : 산업용, 민수용, 의료용, 화학 실험용, 우주용, 군사용
센서 분류 센서의 역학량에 따른 분류 물리량과 화학량에 따른 센서의 분류 감지대상 센 서 변위 길이 차동트랜스, 스트레인게이지, 이미지센서, 콘덴서(정전형) 변위계 속도 가속도 회전형 속도계, 동전형 가속도계 회전수 진동 로터리 엔코더, 스코프, 압전형 검출기 압 력 다이어프램, 로드셀, 수정압력계 힘(토크) 저울, 천칭, 토션바(비틀림 바) 물리량과 화학량에 따른 센서의 분류 구분 감지대상 센서 주요 효과 물리센서 온도 열전대, 서미스터, 온도계 열저항, 열복사 빛 색 광전도, 광결합형, 이미지센서, 포토다이오드 광전도, 패러데이 필터 자기 홀(hall)소자, 자기저항소자 Hall, Josephoson 전류 분류기, 변류기 전류의 크기 변화 자외선, 방사선 조도계, 광량계, GM계수계 화학센서 습도 세라믹센서, 결로센서, 고분자막센서 저항, 유전율의 변화 가스 매연센서, 반도체 가스 센서, 동성가스센서 저항 변화, 기전력 변화 이온 PH전극센서, 이온선택 기전력, 저항
센서의 발전
GPIO 제어와 Wiring Pi 설치 패키지 관리 서버로부터 이용 가능한 프로그램 패키지의 목록을 최신버전으로 업데이트 $sudo apt-get update 컴퓨터에 설치된 프로그램이 업데이트 되었으면 새로운 버전으로 설치하게 해주는 명령어 $sudo apt-get upgrade 1. 소스관리툴 git 를 다운로드한다. (오픈소스 https://github.com/WiringPi/WiringPi 의 소스를 체크아웃하기 위해서) $sudo apt-get install git-core 2. “wiringPi” 프로젝트를 통째로 받아온다. $git clone git://git.drogon.net/wiringPi 3. 빌드 및 설치를 진행한다. $cd wiringPi $./build 4. 설치가 잘 되었는지 아래의 명령어로 확인해 본다. $gpio -v $gpio readall
온도 습도 센서 특징 전기적 특성 1. 모델명 : AM2302 2. 정밀도 및 해상도 : 0.1 3. 습도 측정 범위 : 0-100%RH 4. 온도 측정 범위 : -40~80℃ 5. 습도 측정 오차 : ±2%RH 6. 온도 측정 오차 : ±0.5℃ 7. 저전력소모 8. 부가회로가 불필요 - 사용 전압 : 3.3-6V DC - 싱글핀 디지털 데이터 출력 - 측정 응답 시간 : min 2초 - 측정 조건 VDD = 5V , T = 25 ℃ - Pin Connection Pin 1 – 전원 VCC 3.5~5.5V DC Pin 2 - DATA (시리얼 양방향) Pin 3 – 사용안함(No Connection) Pin 4 - GND
온도 습도 센서 소스코드 온도데이터 : get_temperature.c 파일 습도데이터 : get_humidity.c 파일 #include <wiringPi.h> ~ static int DHTPIN = 11; //GPIO Port static uint8_t sizecvt(const int read) { ~ } int read_dht22_dat() { ~ } int main (void) { DHTPIN = 11; while (read_dht22_dat() == 0) delay(500); // wait to refresh } received_temp = ret_temp ; printf("Temperature = %d\n", received_temp); return 0;
Analog to Digital – ADC 컨버터 사용 ADC 컨버터 MCP3208 사용 MCP3208 Pin Description MCP3208 Pin Map SPI 연결 회로 (CD 첨부 파일 참고)
조도(빛) 센서 Analog 출력 연결 특징 전기적 특성 1. 감도 조절 (파란색 가변저항 조정)밝기와 주 변 빛의 세기를 감지 2. 출력 : 아날로그 전압 출력, 디지털 스위치 출력 (0, 1) 3. 온도 측정 범위 : -40~80℃ 4. 습도 측정 오차 : ±2%RH 5. 온도 측정 오차 : ±0.5℃ 6. 저전력소모 7. 부가회로가 불필요 - 작동 전압 : 3.3V ~ 5V DC - 출력 : 아날로그 전압 출력, 디지털 스위치 출력 (0, 1) - lm393 칩 - 측정 조건 VDD = 5V , T = 25 ℃ - Pin Connection Pin 1 – 아날로그 출력 Pin 2 – 디지털 출력 Pin 3 - GND) Pin 4 - 전원 VCC 3.5~5.5V DC
조도(빛) 센서 Analog 실습 SPI및I2C활성화 $sudo nano /etc/modprobe.d/raspi-blacklist.conf # blacklist spi and i2c by default (many users don't need them) #blacklist spi-bcm2708 #blacklist i2c-bcm2708 blacklist snd-soc-pcm512x blacklist snd-soc-wm8804 소스코드 #include <wiringPi.h> #include <wiringPiSPI.h> #define CS_MCP3208 8 //GPIO 8 #define SPI_CHANNEL 0 int read_mcp3208_adc(unsigned char adcChannel) { ~ } int main(void) { pinMode(CS_MCP3208, OUTPUT); adcValue_light = read_mcp3208_adc(adcChannel_light); }
조도(빛) 센서 Digital 출력 연결 가변저항을 사용하여 밝기의 기준값을 설정하여 High, Low 신호 출력을 사용한다. #include <wiringPi.h> #define LIGHTSEN_OUT 2 //gpio27 - J13 connect int main(void) { pinMode(LIGHTSEN_OUT, INPUT); if(digitalRead(LIGHTSEN_OUT) == 0) printf("light full ! \n"); if(digitalRead(LIGHTSEN_OUT) == 1) printf("dark \n"); } 컴파일 명령 $gcc –o lightdetect lightdetect.c –lwiringPi 실행명령 $sudo ./lightdetect
액츄에이터 실습 액츄에이터(actuator)란 신호처리기에 의하여 다듬어져 나온 신호에 대응하여 동작을 하는 장치 또는 수단이다. 입력된 전기적 신호에 대응하여 작동을 수행하는 작동기(作動器), 또는 명령신호에 따라서 작동하는 집행기(執行器)이다. 즉 에너지 전달매체로부터 에너지를 전달받아 기계적 운동으로 바꾸어주는 장치를 통칭하여 액츄에이터라고 한다. 모터, 로봇의 동작기관, 솔레노이드 밸브, 실린더등이 가장 대표적인 액츄에이터라고 할 수 있다. 엑츄에이터의 요구사항으로는 1)안전성 및 운전성, 2)속응성, 3)용량, 4)소형경량, 5) 유지보수 용이, 6)수명과 가격과 같은 고려요소가 적당한 수준에서 선정해야 한다.
액츄에이터 연결도
워터펌프 실습 DWP-2760 워터펌프 외관 DWP2760 전기적 사양 정격전압 DC 12V 구동전압 DC 9V ~ DC15V 전류 무부하시 280mA 이하 최대입력 >14.5 PSI Water Flow ≥400(±20%)mL/Min at 90℃ 소음 65dB 용도 커피머신용, 90℃ 뜨거운 물 사용가능 수명 정격전류에서 50초 동작, 20초 멈춤이 1Cycle - 6,000번 #include <signal.h> //Signal 사용 헤더파일 #include <stdlib.h> //exit() 사용 헤더파일 #include <wiringPi.h> #define PUMP 21 // BCM_GPIO 5 void sig_handler(int signo); // 마지막 종료 함수 int main (void) { digitalWrite (PUMP, 1) ; // On digitalWrite (PUMP, 0) ; // Off } 컴파일 $gcc –o pumpon pumpon.c -lwiringPi 실행 $sudo ./pumpon
Fan 제어실습 FAN KD1205 PFS1 KD1205PFS1 특징 컴파일 Size (㎜) 50*50*10mm 정격전압(VDC) 12 전류 (A) 0.1 기동전압(V) 10.8~13.8 속도 (RPM) 5500 풍량(㎥/min) 0.29 풍압(Pa) 36 소음(db) 28 권장사용온도(℃) 10~60 무게(g) 20 컴파일 $gcc –o fanon fanon.c –lwiringPi 실행 $sudo ./fanon