Arduino Due 임의 파형 발생기: 다중 주파수, Linux/Windows 호환
부품 및 소모품
프로젝트 소개
일반 설명
이 프로젝트는 이제 Linux와 Windows 모두에서 실행됩니다.
아날로그 파형 최대 주파수: 100kHz. 사각파 최대 주파수: 42MHz.
듀티 사이클: 사실상 0% ~ 100% 조정 가능
매우 간단한 구성 - 아래 설치 방법 참조
이 프로젝트는 두 부분으로 구성됩니다: Arduino Due 보드 자체와 PC에서 사용할 컨트롤러 GUI. Arduino 보드는 포트, 스위치, LED만으로도 단독 사용 가능합니다.
별도 회로가 필요하지 않으나, 선택적으로 출력 보호 회로를 추가하면 Arduino 보드를 실수로 ±30V 전압에 연결해도 보호할 수 있습니다.
PC의 컨트롤러 GUI를 사용하면 임의 파형을 그리기, 편집, 저장, 열기, Arduino Due로 업로드(자동 USB 연결)할 수 있습니다. 종합적인 도움말 파일도 포함되어 있습니다.
"계단형(Stepped)" 파형 기능으로 파형 내 원하는 위치에 날카로운(1샘플) 계단을 쉽게 만들 수 있습니다. 또한 출력을 사인파, 삼각파/톱니파로 전환할 수도 있습니다.
사각파는 동시에 생성되며, 아날로그 파형과 동기화하거나 완전히 독립적으로 설정할 수 있습니다. 파형은 주파수 또는 주기로 제어 가능하며, 듀티 사이클은 사실상 0%~100%까지, 또는 펄스 폭을 주기 내에서 고정할 수 있습니다.
새 설정은 PC 키보드나 프로그램 키패드로 직접 입력하거나, "MODE" 키를 눌러 슬라이드 방식으로 조정할 수 있습니다.
정확 모드(Exact Mode)는 DDS(직접 디지털 합성) 파형 발생기의 일반적인 "주파수 단계" 문제를 해결합니다. 정확 모드에서는 출력이 Arduino 클록 주파수의 나눗셈이 아니므로, 그 사이의 주파수에도 접근할 수 있어 더 정밀한 주파수 생성이 가능합니다.
(로그) 주파수 스위프 기능이 두 파형 모두에 포함되어 있으며, 양수/음수 Arduino 출력이 가능한 타이머도 제공됩니다.
사양
아날로그 파형
- 해상도: 12비트, 최대 4096 웨이포인트
- 주파수 범위: 0.05mHz (20,000초) ~ 100kHz
- 샘플 레이트: 1kHz 이상에서 DMA 사용 시 최대 1.6MHz
- 샘플 레이트: 1kHz 이하에서 400kHz
- 정확 모드 샘플 레이트: 모든 주파수에서 400kHz
- 최소 펄스 폭 (반 파형 주기):
- 0% 듀티 사이클: 모든 주파수에서 약 350나노초
- 0.01% 듀티 사이클: 최대 2.5~25마이크로초 (1kHz 초과 + 정확 모드/동기화 켜짐 시, 그렇지 않으면 350나노초)
사각파
- 주파수 범위: 0.05mHz (20,000초) ~ 42MHz
- 최소 펄스 폭:
- 동기화 모드 [0.05mHz ~ 100kHz]:
- 0% 듀티: 모든 주파수에서 48나노초
- 0.01% 듀티: 약 2.5~25마이크로초
- 비동기화 모드 [0.093mHz (10,737초) ~ 42MHz]:
- 1.3kHz ~ 42MHz: 12ns (PWM 사용)
- 650Hz ~ 1.29999kHz: 24ns (PWM 사용)
- 325Hz ~ 649.99999Hz: 48ns (PWM 사용)
- 163Hz ~ 324.99999Hz: 96ns (PWM 사용)
- 163Hz 미만: 인터럽트 사용, 0% 듀티 96ns, 0.01% 듀티 5마이크로초
설치 방법
PC용 GUI 프로그램
"포터블" 방식이라 설치 불필요.
- Windows: .zip 파일을 원하는 폴더에 압축 해제 후 .exe 파일에 바로가기 생성.
DueAWGController-Win64.zip은 64비트용이나, Java가 내장된 32비트 버전이 더 안정적일 수 있음.
- Linux:
DueAWGController-LinuxXX.zip 압축 해제 후 DueAWGControllerLinux 파일 더블클릭 또는 시스템 메뉴에 추가.
- OpenJDK 8 필요:
sudo apt-get install openjdk-8-jre (최신 버전은 작동 안 할 수 있음)
- USB 접근 권한 필요:
sudo usermod -a -G dialout $USER
- 라즈베리파이용 ARM 파일 2개 포함되어 있으나 미테스트. 작동 여부 제보 바람.
Arduino 스케치
- 특수 라이브러리 불필요, 일반 Arduino IDE만 있으면 Due에 업로드 가능
- PC가 Arduino Due를 인식했다면(스케치 업로드 성공 시), GUI 프로그램이 자동으로 찾아 연결하므로 COM 포트 설정 불필요. 자동 실패 시 수동 선택 가능.
Arbitrary Waves 폴더에 예제 파형 파일 몇 개 포함 (시작용)
- Arduino 시리얼 모니터(115200 baud)로도 제어 가능.
? 입력 시 도움말 표시
- 포트, 스위치, LED로 제어하려면 스케치 상단의 핀 연결 참고
파형 출력 핀 연결
스케치 상단에 명시되어 있음. 간단히 Arduino 3번 핀과 7번 핀을 링크로 연결(초신중하면 47~100옴 저저항 사용). 사각파 출력은 7번 핀, 아날로그 출력은 DAC0에서 나옴.
코드
중요: "Download as zip" 버튼을 클릭하지 마세요. (README만 다운로드됨)
파일 다운로드는 아래 "Read More" 클릭: GitHub 저장소
회로도 (선택적 보호 회로)
이 회로는 생략 가능하나, 사용 시 출력을 실수로 ±25V 이상에 연결해도 Arduino를 보호하며 라이즈/폴 타임을 크게 증가시키지 않습니다. D2, D3는 고용량 고속 복구 다이오드 필요(쇼트키 다이오드는 너무 느림). 퓨즈(F1, F2)는 폴리퓨즈 사용 가능.