스피커 동작 원리
1. 압력파(pressure wave)
- 소리는 공기로 전달되는 압력파
- 물체(공기 분자)가 진동하면 주변 공기에 진동 전파 -> 이 연쇄 반응으로 인간의 고막에 소리 전달
2. 주파수(frequency)
- 공기 입자가 얼마나 빨리 진동하는지
- 주파수 높아지면 음이 높아지고 낮아지면 음이 낮아진다.
- 중간 도 음의 주파수는 261.63Hz이다. (1초동안 2361.63번 진동 => 음의 주기 1/261.63=3.822ms다)
3. 진폭(amplitude)
- 진동의 크기
- 진폭이 클수록 소리가 커지고 작으면 소리가 작아진다.
- 진폭은 흐르는 전류의 양으로 조절한다. (가변 저항을 이용해 음량 조절)
네모파
- 실제 소리는 사인 곡선 형태의 파형이다.
->디지털-아날로그 변환기(Digital Analog Converter)를 가진 아두이노 Due를 제외하곤 실제같은 사인파 생성 불가능
- 네모파는 디지털 주기 파형 HIGH와 LOW값 사이를 즉시 바꾸는 형태다.
- 네모파로도 압력파 생성 가능 -> 단, 아날로그 형태의 사인파처럼 자연스러운 소리가 아니다.
ex) MP3 등 음악, 영화도 고해상도 네모파로 만든 사인파. (DAC를 사용하면 가능)
스피커 작동 원리
- 원통형 영구자석(안쪽 N극, 바깥쪽 S극), 영구자석을 둘러싼 보이스 코일, 보이스 코일과 연결된 떨린판으로 구성
-> 영구자석에 의해 안쪽(N) -> 바깥(S)로 향하는 자기장 형성 (S N S형태 : S가 N을 둘러쌈)
- 보이스 코일은 N극을 둘러싼 코인로 소리에 따라 전류 세기(진폭), 방향을 바꾼다.
- 자기장에 높인 코일에 전류가 흐르면 플레밍의 왼손 법칙에 따라 로렌츠 힘을 받게 된다.
-> 로렌츠 힘 : 전류가 흐르는 도선 주위에 자기장이 있을 때 도선이 받게 되는 힘
-> 로렌츠 힘으로 인해 보이스 코일이 좌우 진동 (N S극과 수직으로 힘을 받음)
=> 보이스 코일과 연결된 떨림판이 진동
스피커 구조
- 모터와 마찬가지로 전기를 운동으로 변환하기 위해 전자기력 사용
- 전압 신호(네모파, 사인파)가 보이스 코일로 보내지면 전류 변화에 따라 힘을 받는 방향이 달라진다.
tone() 함수
- 특정 주파수의 PWM 신호를 출력 핀으로 스피커에 출력하여 단음을 재생하는 함수.
- tone(speaker, note, duration);
1) speaker : 소리를 출력할 핀 번호 지정 (보통 9번핀 사용)
2) note : 출력할 소리 주파수 지정 (음)
3) duration : 출력할 소리 지속 시간 지정 (default = 0), noTone()함수 호출 전까지 계속 소리 발생
=> 250ms : 8분음표 , 500ms : 4분음표
- tone()함수 사용으로 소리 출력하는 동안 하드웨어 타이머 일부분 사용 불가능
-> 아두이노 하드웨어에 타이머 3개 중 tone()함수가 1개 사용
=> tone()이 쓰는 1개의 타이머 사용이 불가능하다는 것.
tone()을 이용한 음악 출력 : #include "pitches.h"
- 아두이노 IDE는 각 주파수 별 음계를 설정한 pitches.h 제공
- 각 주파수, 계이름 미리 매핑된 설정 파일 사용하면 편리해짐 -> 음 주파수대신 '도' '레' 등 계이름 사용 가능
- 사용하기 위해 pitches.h파일을 아두이노 스케치 프로그램과 같은 파일에 복사 후 #include를 통해 불러온다.
스피커 저항값 계산
- 아두이노 입출력 핀이 너무 많은 전류 소모를 하지 않도록 스피커에 전류 제한 저항 연결
-> 아두이노는 40mA의 전류를 사용하니 저항을 잘 계산해야함 (일반 스피커는 내부저항이 8Ω)
옴의 법칙으로 V=IR
V = 5V
I = 40mA
R = 5/0.04(40mA) = 125Ω -> 내부저항이 8Ω이니까 117Ω필요 -> 가장 쉽게 구하고 범용적인 저항인 150Ω으로 사용
가변 저항을 이용 :
최대 저항 =>10kΩ
- I = 5V/10kΩ+150Ω 대략 5mV/10Ω => 0.5mA : 소리가 안들리는 수준 (스피커 음량 최소)
최소 저항 => 0Ω
- I = 5V/0Ω + 150Ω 대략 5V/150Ω => 33.3..mA : 스피커 최대 음량
'학교수업' 카테고리의 다른 글
가상현실 프로그래밍 5주차 (0) | 2021.10.08 |
---|---|
정보보호개론 5주차 (0) | 2021.10.06 |
사물인터넷의이해 5주차 (0) | 2021.10.05 |
웹개발기초 5주차 (0) | 2021.10.01 |
객체지향프로그래밍 5주차 (0) | 2021.10.01 |