[테크월드뉴스=장민주 기자] 버추얼 일렉트로닉스 랩(virtual electronics laboratory)은 소프트웨어 기반 계측기들의 집합이다. 소프트웨어 애플리케이션(앱)으로 가상 실험실(랩)을 만들어 실험 장비를 주머니에 넣고 다니며 개발할 수 있는 셈이다. 포괄적인 기능을 갖춘 물리적인 연구실 환경을 구축하려면 비용이 많이 들고 관리도 까다롭다. 반면 버추얼 일렉트로닉스 랩을 이용하는 사용자들은 누구나 어디서든 손쉽게 앱으로 다양한 전기전자 실험을 할 수 있다.

파이썬과 ADALM2000을 사용해서 오실로스코프, 신호 발생기, 디지털 멀티미터 같은 다양한 가상 실험실 장비를 개발할 수 있다. 오실로스코프는 실제 실험실에서 기본적이며 가장 많이 사용하는 장비 중 하나다.

가상 계측기는 유연성과 모듈성, 휴대성이 뛰어나다. 아나로그디바이스(Analog Devices)의 ADALM2000을 사용해서 엔지니어나 개발자는 각자의 필요에 맞는 가상의 실험실 장비를 개발한다.

2채널 버추얼 오실로스코프

앞서 설명한 코드에 몇 개의 코드 블록을 추가함으로써 2채널 버추얼 오실로스코프를 만들 수 있다.

또 다른 채널을 추가하기 위해 ocsi.enableChannel과 ocsi.setRange 라인을 복사하고 첫 번째 변수를 libm2k.ANALOG_IN_CHANNEL_1에서 libm2k.ANALOG_IN_CHANNEL_2로 변경한다.

그래프를 생성할 때 채널2를 위한 플롯도 추가해야 한다. 채널2 데이터는 어레이 data_y[1]에 들어있다. 구분을 쉽게 하기 위해서 두 플롯의 색상을 변경할 수 있다. 이 예시에서 채널1에는 light coral을 사용하고 채널2에는 steel blue를 색상값으로 사용했다.

이 코드를 실행하면 [그림1]과 같은 결과를 얻는다.

▲[그림1] 2채널 사인파 출력. 채널 1 신호 발생기 출력: 10Hz 2Vp-p, 채널 2 신호 발생기 출력: 5Hz 3Vp-p.
▲[그림1] 2채널 사인파 출력. 채널 1 신호 발생기 출력: 10Hz 2Vp-p, 채널 2 신호 발생기 출력: 5Hz 3Vp-p.

버추얼 오실로스코프의 추가 기능

이번에는 버추얼 오실로스코프를 더 액티브하게 만드는 기능들을 추가해보자. 이를 위해서는 matplotlib가 제공하는 다양한 위젯을 사용할 수 있다. 이 예시에서는 텍스트 레이블과 슬라이더 위젯을 사용하고 있다. 앞서 설명한 코드에 이어서 덧붙여 나간다.

matplotlib slider를 불러오기 위해서 또 다른 import문을 추가한다.

시간과 데이터 어레이를 NumPy 어레이로 변환한다. 이것들은 다음 코드 블록에서 실행할 계산에 사용된다.

파형 데이터를 포착했으면 파형의 속성을 도출할 수 있다. 아래 코드 블록에서는 양쪽 채널의 포착된 데이터로부터 Vpp, Vave, Vrms를 추출했다. Vpp를 계산하기 위해서는 data_y numpy 어레이로 구해진 최대 값과 최소 값의 절대값을 더한다. Vave를 계산하기 위해서는 Vpp를 pi로 나눈다. Vrms를 계산하기 위해서는 Vpp를 2 x √2로 나눈다.

다음 코드 블록은 앞에 설명한 예와 비슷하다. 원래 어레이가 아니라 NumPy 어레이를 사용한다는 것만 다르다. 이들 플롯으로부터 파형 객체를 생성하며 이 객체는 나중에 사용할 예정이다.

계산된 Vpp, Vave, Vrms를 표시하기 위해 matplotlib 라이브러리로부터 텍스트 레이블 위젯을 사용한다. 문자열 레이블 label_ch1과 label_ch2를 생성하고 이 두 문자열을 합쳐서 최종 레이블 n_label을 생성한다. plt.text를 사용해서 텍스트 레이블을 생성한다. 첫 번째와 두 번째 변수(0.2, 3)는 텍스트의 x와 y 위치다. 세 번째 변수는 표시할 문자열이다. 네 번째와 다섯 번째 변수는 각각 텍스트와 박스 스타일을 나타낸다.

이번에는 오프셋 슬라이더를 추가해 보자. 이 슬라이더의 목적은 파형의 레퍼런스 레벨을 조절할 수 있도록 하는 것이다. 메인 플롯의 위치를 움직여서 슬라이더를 만들 공간을 확보한다. plt.axes를 사용해서 슬라이더의 크기, 위치, 페이스 색상을 지정한다. 또 Slider 함수를 사용해서 특정한 속성을 가진 오프셋 슬라이더 객체를 생성한다.

update_offset 함수를 작성하고 offset_slider 객체로 등록한다. 이 함수가 슬라이더를 조절할 때마다 파형에 오프셋을 추가한다.

이 코드를 실행하면 [그림2]와 같은 결과를 얻는다.

▲[그림2] 오프셋 슬라이더를 적용했을 때 디폴트 2채널 사인파 출력
▲[그림2] 오프셋 슬라이더를 적용했을 때 디폴트 2채널 사인파 출력

이 슬라이더를 사용해서 오프셋을 조절해 보자. 조절에 따라서 파형이 실시간으로 위아래로 움직이는 것을 볼 수 있다.

▲[그림3] 왼쪽의 오프셋 슬라이더를 움직여 양쪽 채널 출력 오프셋 조절하기
▲[그림3] 왼쪽의 오프셋 슬라이더를 움직여 양쪽 채널 출력 오프셋 조절하기

버추얼 랩의 유용성과 ADALM2000, 파이썬을 사용해서 버추얼 오실로스코프의 편리한 개발 방법에 대해 설명했다. 또 소프트웨어 요구사항과 하드웨어 셋업과 3가지 코드 사례를 함께 소개했다.

 

 

크리스티안 제이슨 가르시아(Christian Jason Garcia)·어니 매 배스(Arnie Mae Baes) 소프트웨어 시스템 엔지니어

자료제공: 아나로그디바이스(www.analog.com)

회원가입 후 이용바랍니다.
개의 댓글
0 / 400
댓글 정렬
BEST댓글
BEST 댓글 답글과 추천수를 합산하여 자동으로 노출됩니다.
댓글삭제
삭제한 댓글은 다시 복구할 수 없습니다.
그래도 삭제하시겠습니까?
댓글수정
댓글 수정은 작성 후 1분내에만 가능합니다.
/ 400
내 댓글 모음
저작권자 © 테크월드뉴스 무단전재 및 재배포 금지
이 기사와 관련된 기사