라디오 전자 및 전기 공학의 백과사전 아두이노. 아날로그 입출력의 작동은 소리와 함께 작동합니다. 무선전자공학 및 전기공학 백과사전 무선 전자 및 전기 공학 백과사전 / 라디오 아마추어 디자이너 디지털 입출력 작업을 통해 광범위한 문제를 해결할 수 있지만 Arduino 보드의 마이크로 컨트롤러에 내장된 아날로그-디지털 변환기(ADC)가 있고 펄스 폭 변조를 사용하여 아날로그 신호를 출력하는 기능( PWM)은 아날로그 센서 및 모든 종류의 액추에이터와의 작동을 보장하여 제어 신호에 비례하여 물체에 영향을 미칩니다. 엄밀히 말하면 출력 모드에서 모든 Arduino 포트 라인은 두 가지 상태만 갖는 개별 신호만 전송할 수 있습니다. 그러나 마이크로컨트롤러는 이러한 상태를 매우 빠르게 변경하여 직사각형 펄스를 생성할 수 있습니다. 이러한 펄스가 관성 속성을 가진 장치에 적용되면 장치에 공급되는 전압이 펄스의 평균값과 동일하게 일정하고 높음과 낮음 사이가 점프하지 않고 부드럽게 변하는 것처럼 동작하기 시작합니다. 논리적 수준. PWM 모드에서 포트는 일정한 주파수와 가변 듀티 사이클(펄스 반복 주기와 지속 시간의 비율)의 펄스 신호를 생성합니다. 종종 듀티 사이클 대신 역값, 즉 0(펄스 없음)에서 100%(펄스가 일시 중지 없이 병합되고 병합됨)로 변경될 수 있는 듀티 사이클로 작동합니다. 따라서 특정 순간에 출력 전압이 높거나 낮은 논리 레벨에 해당하더라도 평균값은 듀티 사이클에 비례합니다. 일반 멀티미터를 이 출력에 연결하면 이 값이 표시됩니다(물론 펄스 주파수가 충분히 높은 경우). Arduino UNO에서는 출력 D3, D5, D6, D9, D10 및 D11이 PWM 모드에서 작동할 수 있습니다. 일반적으로 보드에는 "~" 기호 또는 약어 "PWM"이 표시되어 있습니다. 다른 수정 사항을 적용한 Arduino 보드에는 이러한 출력이 다소 있을 수 있다는 점에 유의해야 합니다. 가장 간단한 경우에는 PWM을 사용하여 LED의 밝기를 제어할 수 있습니다. 이 장치는 실질적으로 관성이 없지만 인간의 시각에는 일련의 빠른 LED 플래시가 채우기 비율에 따라 밝기가 달라지는 연속 발광으로 인식될 만큼 충분한 관성이 있습니다. PWM을 생성할 수 있는 개별 출력은 기본적으로 이 모드를 사용하도록 구성되므로 이 모드에서 작동하기 위해 pinMode() 함수를 호출할 필요가 없습니다. PWM 신호의 듀티 사이클을 설정하려면 표준 함수인 AnalogWrite(N, M)이 있습니다. 여기서 N은 핀 번호이고 M은 필요한 듀티 사이클에 비례하는 숫자입니다. 이 값은 0~255 범위에 있어야 하며, 0은 듀티 사이클 255(출력에서 일정한 낮은 레벨), 100~1% 듀티 사이클(출력에서 일정한 높은 레벨)에 해당합니다. 특정 M 값에서 출력 전압의 타이밍 다이어그램과 이에 따른 단락 듀티 사이클이 그림 XNUMX에 나와 있습니다. XNUMX.
예를 들어, 표에 주어진 것을 생각해 보십시오. 디지털 출력 D1에 연결된 LED의 밝기를 점차적으로 증가시킨 다음 점차적으로 감소시키는 9개의 프로그램입니다. 이는 Arduino IDE와 함께 제공되는 표준 example3.AnalogFading을 기반으로 합니다. 펄스 듀티 사이클 값의 열거는 [1]에서 이미 설명한 for 루프 연산자를 사용하여 구현됩니다. 1 표. Arduino의 외부 장치로부터 아날로그 신호를 수신하기 위해 입력 A0-A5가 의도되었으며 기본적으로 이를 위해 원하는 상태로 설정되므로 추가 초기화가 필요하지 않습니다. Arduino UNO에 내장된 ADC는 10비트 바이너리 코드를 생성하고 0~+5V 범위의 입력 전압을 0~1023(210-1)의 정수로 변환합니다. 변환 결과를 읽으려면 AnalogRead(N) 함수를 사용하십시오. 여기서 N은 아날로그 입력 번호입니다. 다양한 센서를 Arduino 아날로그 입력에 연결할 수 있으며, 출력 전압은 측정된 값(가변 저항기, 서미스터, 포토레지스터 등)에 비례합니다. 그러나 아날로그 입력에는 0 ~ +5 V의 전압만 공급할 수 있다는 점을 기억해야 합니다. 센서의 출력 전압이 다른 범위에 있거나 음극인 경우 신호는 먼저 지정된 범위 내에 배치되어야 합니다. 간격. 아날로그 입력은 10kHz[2] 미만의 속도로 폴링되는데, 이는 빠르게 변화하는 일부 신호를 분석하는 데 충분하지 않을 수 있습니다. 아날로그 입력이 있으면 Arduino를 0~+5V의 DC 전압을 측정하고 측정 결과를 컴퓨터로 전송하는 간단한 디지털 전압계로 전환할 수 있습니다. 이렇게 하려면 표에 제공된 프로그램을 Arduino에 로드하면 됩니다. 2. 표 2 프로그램에서 참조 ADC 전압 Uref(밀리볼트 단위)와 ADC 출력 코드의 전압 Ku에 대한 변환 계수는 상수로 지정됩니다. 계수 값은 주어진 기준 전압을 1023으로 나누어 계산됩니다. 계수는 일반적으로 분수이므로 Ki 상수는 float(부동 소수점 수) 유형입니다. Uref 상수는 계수를 올바르게 계산하기 위해 동일한 유형을 갖습니다. 수식의 오른쪽에는 상수만 포함되어 있으므로 계수는 프로그램 실행 시 마이크로컨트롤러에 의해 계산되지 않고 번역 단계에서 컴파일러 자체에 의해 계산됩니다. 이 모든 기능을 사용하면 Arduino 보드의 Uref 핀에서 기준 전압의 정확한 값을 멀티미터로 측정하고 이를 프로그램에 기록하여 Uref 상수에 할당함으로써 전압계의 정확도를 높일 수 있습니다. [3, 4]에서 아날로그-디지털 변환의 정확도를 향상시키는 다른 방법을 읽을 수 있습니다. 해당 프로그램이 실행되면 보드의 TX LED가 깜박이면서 직렬 포트를 통해 정보가 전송되고 있음을 나타냅니다. 컴퓨터가 아무 것도 보내지 않기 때문에 RX LED가 켜지지 않습니다. 내장된 Arduino IDE 터미널에는 수신된 정보(그림 2), 즉 3332 갈바닉 배터리의 전압 측정 결과가 표시됩니다.
Arduino는 빛뿐만 아니라 소리 신호도 제공할 수 있습니다. 이렇게 하려면 ZP-1과 같은 압전 사운드 이미터를 해당 출력 중 하나에 연결해야 합니다(그림 3).
사운드 작업을 위해 특수 기능이 제공됩니다: 톤(N, F, T), 여기서 N은 직사각형 펄스가 생성되는 핀 번호입니다. F - 소리 주파수, Hz; T - 사운드 지속 시간(ms) 마지막 매개변수는 선택사항입니다. 그것이 없으면 소리는 계속됩니다. 이를 끄기 위해 noTone(N) 기능이 제공됩니다. 물론, 압전세라믹 사운드 이미터는 고품질 재생 장치라고 할 수 없으며 마이크로 컨트롤러에서 생성된 신호는 직사각형 모양이지만 이러한 기능을 사용하면 간단한 멜로디를 재생할 수 있습니다. 표에 예가 나와 있습니다. 3. Arduino IDE에 포함된 02.Digital oneMelody 프로그램 예제를 약간 수정한 것입니다. 멜로디의 각 음표의 빈도를 수동으로 설정하는 것은 불편하기 때문에 #include 지시어를 사용하여 프로그램 헤더에itches.h 파일이 첨부됩니다. 이 작업은 프로그램에 이 파일의 전체 텍스트를 포함하는 것과 같습니다. 이 경우 연주할 수 있는 음표 이름과 주파수 목록이 포함되어 있습니다. 표 3 사운드 이미터는 출력 D8에 연결해야 합니다. 프로그램의 경우 멜로디는 동일한 유형(주파수 값)의 일련의 상수이며, 이는 동일한 유형의 요소 번호가 매겨진 목록인 배열로 편리하게 결합됩니다. 배열을 선언할 때 배열의 모든 요소를 나열하거나 총 개수를 표시해야 합니다. 배열 요소의 번호는 항상 XNUMX부터 시작됩니다. 고려 중인 예에서는 두 개의 배열이 사용됩니다. int melody[]에는 멜로디 음표의 이름이 포함되어 있고, int note Durations[]는 밀리초 단위의 지속 시간입니다. 배열 요소를 참조하려면 대괄호 안에 일련번호를 붙여 이름을 표시합니다. 멜로디의 음표 수를 쉽게 변경할 수 있도록 마이크로컨트롤러 메모리에서 해당 인수(변수 또는 배열)가 차지하는 바이트 수를 반환하는 sizeof(V) 함수를 사용하여 계산됩니다. 이 경우 멜로디 배열은 16바이트를 차지하고 int 요소의 길이는 8바이트입니다. 따라서 Note 변수는 값 XNUMX을 받으며 이는 for 루프의 본문이 하나씩 음을 연주하면서 반복되는 횟수입니다. melody[] 배열에 두 개 이상의 음표를 추가하면 그에 따라 음표 값이 변경됩니다. 이 노트의 지속 시간과 함께 noteDurations[] 배열을 추가하는 것을 기억하면 됩니다. 멜로디는 한 번만 실행되므로 필요한 모든 작업은 setup() 함수 내부에 배치됩니다. 다시 실행하려면 Arduino 보드에 있는 RESET 버튼을 눌러 마이크로컨트롤러를 원래 상태로 재설정해야 합니다. 기사에서 논의된 Arduino용 프로그램은 ftp://ftp.radio.ru/pub/2016/09/aninout.zip에서 다운로드할 수 있습니다. 문학
저자: D. Lekomtsev 다른 기사 보기 섹션 라디오 아마추어 디자이너. 읽고 쓰기 유용한 이 기사에 대한 의견. 과학 기술의 최신 뉴스, 새로운 전자 제품: 광신호를 제어하고 조작하는 새로운 방법
05.05.2024 프리미엄 세네카 키보드
05.05.2024 세계 최고 높이 천문대 개관
04.05.2024
다른 흥미로운 소식:
무료 기술 라이브러리의 흥미로운 자료: ▪ 사이트 섹션 개인 교통수단: 육상, 해상, 항공. 기사 선택 ▪ 기사 비디오 촬영의 구성 요소로서의 조명. 비디오 아트 ▪ 기사 거의 모든 주민들이 같은 집에 사는 도시는 어디입니까? 자세한 답변 ▪ 기사 EPU ARKTUR-006-STEREO용 증폭기 보정기. 무선 전자 및 전기 공학 백과사전 ▪ 기사 전계 효과 트랜지스터 KP150 - KP640. 무선 전자 및 전기 공학 백과사전 이 페이지의 모든 언어 홈페이지 | 도서관 | 조항 | 사이트 맵 | 사이트 리뷰 www.diagram.com.ua |