오실로 스코프는 사양에 따라서 몇십만원에서 몇백만원까지 다양한 종류가 있습니다. 전기및 전자 분야에서는 실험 실습과 연구에 필수 장비입니다. 요즘은 아두이노를 이용하여 오실로스코프를 자작하여 사용하는 기술들이 공개되어 있습니다. 물론 성능과 기능면에 있어서 제약이 있지만 기초 실험을 할 수 있을 정도는 가능합니다. 물론 공개된 기술이 있군요. 다음의 장소에서 다운로드 받아서 사용이 가능합니다. 원래의 프로젝트 Github 주소는 다음과 같습니다. 설치와 사용법에 대한 내용이 자세히 설명되어 있습니다. 기본적으로 아두이노를 연결한 컴퓨터에서 아두이노 프로그램을 실행하고 프로세싱도구를 이를 이용하여 컴퓨터에 디지털 오실로스코프의 화면을 구성하여 아두이노로 부터 받은 데이터를 화면에 보여줍니다. 이와 같이 셋업된 내용에서 샘플회로의 파형을 측정하는 동영상은 아래와 같습니다.
측정 결과는 4채널인데 각 채널은 연결된 마디의 전압을 보여줍니다. 채널간의 상대적 전압을 도시하기 위해서 프로그램을 수정하였습니다. 가령 A마디와 B마디의 전압을 각각 확인하는 것보다 A마디와 B 마디 간의 전압을 구할 필요가 자주있습니다. 각 채널에 다른 채널의 전압과 상대 전압을 구할 수 있도록 체크박스를 달았습니다. 예를 들어 채널 2의 채널 1의 상대 전압을 구하고 싶으면, Ch-2에서 체크박스 1을 선택하면 됩니다.
다음은 이를 위해서 Processing 부분의 코드를 수정한 내용입니다. 자바 기반으로 아두이노를 이용한 다양한 데이터 및 IOT 기능을 융합하기에 매우 편리한 도구입니다. 고친 부분 위주로 설명해 보겠습니다.
위의 내용이 활용된 모든 프로세싱 클래스들입니다. 포르투칼어로 되어 있네요. Tela는 스크린, Painel은 패널, Botao는 버튼, Canal은 채널입니다.
oscilloscope 4ch 파일에서 핵심은 아두이노측으로 부터 readString Until(10); 하는 부분입니다. 아두이노에서는 측정한 값은 미리 정한 프로토콜에 맞추어 보내주며 readStringUntil을 통하여 받은 정보를 그려주는 것이 프로세싱의 역할입니다.
선택된 체크박스를 알아내서 해당 상대 전압을 차이로 구하는 연산을 수행하여 채널에 전달하거나 그럴 필요가 없을 때는 그냥 전압을 전달합니다.
여기서 ch 행렬은 각 채널에 있는 체크박스의 값을 뜻하며 이를 이용하여 본 채널과 값을 빼어줄 상대 전압의 차이를 계산하기 됩니다. 이 ch 체크박스는 Canal(채널)에서 추가했고 display() 명령을 보내면 화면에 나타납니다.
프로세싱은 원래 자바와는 다른 드로윙 메커니즘을 가지고 있는 것 같습니다. 자바에서는 paint, setVisible이 draw, display 등으로 대체되는 것 같습니다. 이벤트 메커니즘도 신축성이 있는것 같습니다. Canal>mouseClicado에서 ch의 마우스 클릭시의 이벤트를 추가하여 처리할 수 있었습니다.
detect freq에서 각 채널의 파형 주파수를 확인할 수 있는데 새로 추가한 ch의 영역과 충돌이 납니다. 이벤트를 찾아서 선택시 ch 정보가 살짝 안보이게 하려고 했는데 시간상 생략했습니다.
회로 결선은 다음과 같습니다. 내부 펄스를 확인하고 그중의 하나를 가변저항을 사용한 RC회로로 연결하였습니다. RC회로를 사용하여 정현파를 만들고 RLC회로의 전압을 측정하는 실험을 만들 계획입니다.
타이머 회로를 시험하기 위해 결선한 결선도 입니다.
다음 영상과 같이 프로그램 확인이 가능합니다. 변경된 코드는 여기서 다운로드 받을 수 있습니다.