전체 글 212

[간단한 아두이노 코딩] 12. 스텝 모터 드라이버(DM741, ULN2003) 사용하기

스텝 모터 드라이버(DM741) 사용하기스텝 모터 드라이버(DM741, ULN2003) 사용하기 1. 스텝 모터 스텝 모터는 디지털 펄스에 맞추어 한개의 step 단위로 회전하는 모터이다. 즉 단순히 전원 인가, 차단을 통해 모터를 움직이는 것이 아니라 미리 계산된 각도만큼 코드로 모터를 회전시킬 수 있다. 주로 저렴한 가격의 스텝모터는 전류의 방향에 따라서 시계, 반시계 회전을 하는 유니폴라 구동 방식을 이용한다. 이 각도 계산은 모터별로 상이한데, DM741에 포함된 28BYJ48은 5.625도가 1스텝이며 360도 회전에 총 64번의 스텝이 필요하다. 이 스테핑 과정은 직접 제어하기 복잡하기 때문에 ULN2003을 이용하는 스텝 모터 드라이버를 주로 이용한다. 구동 방법은 ULN2003 데이터 시트..

[간단한 아두이노 코딩] 11. 피에조 부저 사용하기 + 젓가락 행진곡

피에조 부저 사용하기 + 젓가락 행진곡 1. 피에조 부저란 피에조 부저는 크리스털 혹은 세라믹 결정체에 전압을 가하여 응축,신장 하는 압전효과를 이용하여 진동을 만들어내어 소리를 낸다. 소리의 크기를 코드상으로 설정하지 못하지만 싸고 간단하여 많이 사용된다. 부저는 능동형과 수동형이 있으며, 능동형의 경우 전류가 흐르면 소리가 발생하지만 수동 부저는 인가된 전원의 주파수에 따라 소리의 높낮이가 결정된다. 능, 수동 구분법이 많이 존재하는데, 단순히 전원을 인가시켜보는 것이 가장 빠르다. 2. 옥타브별 음계 피에조 부저를 이용해서 소리를 내기 위해서는 옥타브별 음계에 대한 주파수를 이용하면 된다. 각 주파수는 아래와 같다. 옥타브 음계 0 1 2 3 4 5 6 7 8 C(도) 16 33 65 131 262..

[간단한 아두이노 코딩] 10. 조도 센서 사용하기 (CDS)

조도 센서 사용하기 (CDS) 1. CDS 조도 센서 빛 세기를 측정할 때 사용되는 CDS 센서(포토레지스터)는 이름에서 알 수 있듯 황화 카드뮴으로 만들어져있다. CDS 센서는 빛의 밝기에 따라 저항 값이 변화는 가변 저항과 같다. 빛의 밝아지면 저항 값이 떨어지고, 어두워지면 저항이 떨어진다. 센서 제조사마다 조금씩 다르지만 20옴~200k옴까지 변한다. 문제는 빛이 세질 수록 저항이 떨어져서 연결된 아두이노에 과전류가 흐를 수 있다. 아두이노에서 아날로그 데이터는 전압으로 측정하므로, 풀업 저항을 이용하여 과전류를 예방하고 조도 값을 측정할 수 있다. 다만, CDS센서는 싼 만큼 엄청난 오차범위를 가지므로 Lux 계산에는 사용하지 말고 단순히 Threshold값에 대한 동작에 사용하는 것이 좋다. ..

[간단한 아두이노 코딩] 9. XYZ 가속도 센서 사용하기(GY-61)

XYZ 가속도 센서 사용하기(GY-61) 1. 가속도와 가속도 센서의 동작 원리 가속도 센서는 쉽게 말해 속도의 변화량을 측정하는 센서이다. 가속도를 가장 쉽게 느낄 수 있는 것은 차량의 속도를 올리거나 줄일 때 몸이 기울어지는 현상이 있다. 이처럼 속도가 단위 시간동안 변화한 양을 가속도라고 부른다. ( 속도 = 거리/시간, 가속도 = 속도/시간) 또 다른 예로는 우리가 늘 느끼는 중력 가속도가 있다. 중력 가속도는 잘 알려진바와 같이 약 9.8m/s^2이며, 가속도 센서에도 중력은 존재하기 때문에 중력 방향(지구의 중심)으로 가속도가 측정된다. 가속도 센서의 동작 원리는 뉴턴 제 2법칙(가속도 법칙) F=ma (m 질량, a 가속도)와 용수철 법칙으로 잘 알려진 후크의 법칙 F=kx(k 용수철 상수,..

[간단한 아두이노 코딩] 8. 세븐 세그먼트 + 디코더 사용하기

세븐 세그먼트 + 디코더 사용하기 1. 세븐 세그먼트 디코더 디코더란, n개의 데이터라인으로 2^n의 출력을 뽑아내는 장치이다. 쉽게 말해서 7세그먼트에는 총 7개의 LED가 있고, 숫자는 0-9까지 총 10개이다. 이때 숫자를 2진법으로 표현한다면 4개의 데이터 선만 있으면 가능하고, 이를 7개의 LED에 연결하여 출력할 수 있게 된다. 이처럼 디코더를 이용하면 더 적은 수의 GPIO를 이용하여 많은 값을 출력할 수 있다. 이와 반대로 동작하는 것을 인코더라고 한다. 7 세그먼트는 한 자리 숫자를 출력하기 위해서 총 7개의 GPIO를 이용하기 때문에 디지털 시계와 같이 4개의 7 세그먼트를 출력하기 위해서는 총 32개의 GPIO가 필요하게 된다. 이를 4개의 디코더를 이용하여 16개의 GPIO로 줄일 ..

[간단한 아두이노 코딩] 7. 세븐 세그먼트 사용하기

세븐 세그먼트 사용하기 1. 세븐 세그먼트란 아라비안 숫자를 표현하기 위해 7개의 LED로 구성된 표시 장치로, 전자 시계에서 가장 자주 접할 수 있다. 즉, LED를 7개 사용하여 숫자를 한자리 표현하는 표시 장치이다. 아래의 88:88 시계를 보면 바로 이해할 수 있다. 이러한 세븐 세그먼트에서 우측하단 점까지 포함하여 총 8개의 LED를 조합하여 숫자를 표현한다. 따라서 가장 첫번째 포스팅이었던 LED 조작에서와 같이 저항과 8개의 digital gpio가 필요하다. 각 저항은 7 세그먼트를 제작한 제조사의 메뉴얼을 참고하여 구하는 것이 좋으나, 적당히 200~300옴 정도를 사용하면 무방하겠다. 2. 애노드와 캐소드 애노드와 캐소드는 쉽게 말해서 +와 -라고 생각하면 된다. 주로 LED와 같이 전..

[간단한 아두이노 코딩] 6. 온습도 센서 사용하기(DHT11)

온습도 센서 사용하기(DHT11) 1. 온습도 센서(DHT11) DHT11은 직전 포스팅인 온도센서 DS18B20과 같이 디지털 센서이다. 일반적으로 습도 센서를 알아보다가 온도와 합쳐져 있어서 DHT11을 많이 사용한다. 아두이노 특성상 어떤 프로젝트를 하다보면 전체적인 핀 사용 갯수를 줄여야 하는 경우가 많기도 하고, 모듈로 구성되어 있는 센서가 풀업 회로등을 신경쓰지 않아서 편리하기 때문이다. DHT11은 정전식 습도 센서와 써미스터(온도에 따라 저항이 변하는 장치)를 사용하는데, 습도는 20~90%(오차 5%), 온도는 0~50도(오차 2도) 그리고 반응 속도는 50ms이하이다. 2. 회로의 구성 회로도 프로그램에 DHT11이 없어서 우선 RTH03의 회로를 그렸다. RHT03과 다른 것은 없고,..

[간단한 아두이노 코딩] 5. 온도 센서 사용하기(DS18B20, LM35)

온도 센서 사용하기(DS18B20, LM35) 1. 온도 센서 (DS18B20, LM35) 가장 흔하게 볼 수 있는 온도 센서는 아날로그 LM35와 디지털 DS18B20이다. 아날로그 센서는 아두이노의 아날로그 핀으로 0~1023까지 값에 해당하는 결과를 반환한다. 이 값은 각 센서 제조사에서 제공하는 공식을 통하여 실제 온도 값을 구할 수 있다. 반면 디지털 센서는 직접 그 값을 반환하기 때문에 별도로 계산할 필요는 없지만 일부 센서의 경우 해당 업체의 라이브러리가 필요한 경우가 있다. 이번 포스팅에서는 아날로그 온도 센서인 LM35와 디지털 온도 센서인 DS18B20을 이용하여 온도를 구해보고, 두 개의 온도 센서의 평균 값이 30이 넘는 경우 LED를 동작하는 간단한 코드를 작성한다. 2. LM35..

[간단한 아두이노 코딩] 4. 버튼 입력 제어하기 (인터럽트)

버튼 입력 제어하기 (인터럽트) 1. Busy waiting vs Interrupt [간단한 아두이노 코딩] 3. 버튼 입력 제어하기에서 다뤘던 방식은 loop 함수를 이용하여 지속적으로 BUTTON이 연결된 GPIO를 확인하는 방식이었다. void loop(){ if(digitalRead(BUTTON)==HIGH) doSomething(); } 이와 같이 원하는 결과가 들어올 때까지 확인하면서 대기하는 방식을 Busy waiting이라고 한다. 유사한 개념으로는 Polling이 있으나, 약간의 차이는 있다. (Busy waiting은 끊임 없이 확인하는 방식이고 Polling은 주기적으로 확인하는 방식이다.) Busy waiting의 문제는 확인하는 동작이 반복되는 동안 다른 작업을 수행할 수 없다는 ..

[간단한 아두이노 코딩] 3. 버튼 입력 제어하기

버튼 입력 제어하기 1. 버튼 동작 방식 우리가 일상 생활에서 접하는 버튼들은 아래와 같이 간단한 구조로 되어 있다. 위와 같이 버튼을 눌렀을 때는 A와 B 사이에 끊어진 도선이 연결되면서 전기가 흐르는 형식이다. 이렇게 직접적으로 전류를 제어하는 버튼들이 있는 반면 반대로 처음에는 연결되어 있다가 눌렀을 때 떨어지는 반대 버튼도 있고, 전류의 흐름을 직접 제어하지 않고 간접적으로 제어하는 버튼들도 있다. 우리는 가장 기본적인 형태의 버튼을 이용하여 버튼 입력을 받고, 그에 따른 동작을 수행할 수 있도록 코드를 구성할 예정이다. 2. 푸시 버튼 이번에 사용할 푸시 버튼은 앞에서 말한 것과 같이 눌렀을 때 도선이 연결되어 동작하는 버튼으로, 4개의 접점을 가진다. 이 4개의 접점을 통해서 기존 버튼의 동작..

페이스북으로 공유카카오톡으로 공유카카오스토리로 공유트위터로 공유URL 복사