팬텀 요요 고감도 수위 센서를 MCP3008 ADC와 라즈베리파이에 연동하기
이 가이드에서는 팬텀 요요 고감도 수위 센서를 MCP3008 8채널 10비트 ADC에 연결한 뒤, 윈도우 10 IoT Core가 실행되는 라즈베리파이 2와 C#으로 데이터를 읽는 과정을 안내합니다. MCP3008은 아날로그 신호를 10비트 디지털 값(0~1023)으로 변환하며 이를 임의의 기준 전압으로 스케일링할 수 있습니다.
MCP3008을 사용하는 이유?
MCP3008은 SPI 인터페이스를 가진 소형 저가 ADC입니다. 10비트 해상도로 1024개의 이산 레벨을 제공해 미세한 전압 구분이 가능합니다. 3.3V 기준 전압으로 센서 출력을 전압으로 변환하는 공식:
voltage = (reading / 1023.0) * Vref
예를 들어 원시 읽기 값 523은:
523 / 1023 * 3.3 ≈ 1.687 V
실제 공급 전압(예: 내 파이의 3.301V)을 항상 측정해 Vref로 사용하면 정확도가 향상됩니다.
하드웨어 개요
- 센서: 팬텀 요요 수위 센서 – 3핀(-, +, s). -를 파이 그라운드에, +를 3.3V(또는 5V)에, s를 MCP3008 채널 1에 연결.
- MCP3008: 8 입력 채널, SPI 핀, Vref, Vdd, AGND. Vref를 3.3V에, AGND를 파이 그라운드에, Vdd를 3.3V에, 그라운드를 파이 그라운드에 연결.
- 포텐셔미터: 선택 사항 – 채널 0에서 ADC 변환 시연용.
배선도
포함된 회로도의 핀 매핑 참조. 주요 연결:
- MCP3008 Vref (핀 15) → 파이 3.3V
- MCP3008 AGND (핀 14) → 파이 GND
- MCP3008 Vdd (핀 16) → 파이 3.3V
- MCP3008 CH0 (핀 1) → 포텐셔미터 출력
- MCP3008 CH1 (핀 2) → 수위 센서 s-핀
- SPI 라인 (CS, CLK, DO, DI) → 파이 SPI 핀
소프트웨어 설정
프로젝트 유형: Universal Windows Platform. 두 개의 게이지 표시:
- 포텐셔미터 원시 전압 (채널 0).
- 수위 센서 정규화 수위 (0~100) (채널 1).
MCP3008 초기화
private Mcp3008 _mcp3008;
protected override async void OnNavigatedTo(NavigationEventArgs e) {
_mcp3008 = new Mcp3008(0); // SPI 버스 0
await _mcp3008.InitializeAsync();
}
채널 읽기
float voltage = _mcp3008.Read(Mcp3008.Channels.Single0).AsScaledValue(3.3f);
차동 측정 시 Single0을 Differential0로 대체. 네비게이션 이탈 시 객체 해제:
_mcp3008.Dispose();
_mcp3008 = null;
보정 및 측정
멀티미터로 포텐셔미터 전압과 MCP3008 읽기 값을 비교 검증하세요. 미터를 DC 전압 모드로 설정하고 두 값을 비교해 정확도를 확인합니다.
앱 실행
- ARM 구성으로 빌드, Remote Machine 선택.
- 프로젝트 속성에서 파이 IP 주소 설정, 인증 비활성화.
- F5로 배포 및 실행.
앱은 수위용 360° 게이지를 표시합니다. 참고: 센서 출력이 엄격하게 선형이 아니며, 높은 값이 더 많은 물을 의미하지만 관계는 경험적입니다. 게이지는 설명용입니다.
소스 코드와 추가 문서는 프로젝트 페이지에서 확인 가능합니다.