
[테크월드뉴스=장민주 기자] 버추얼 일렉트로닉스 랩(virtual electronics laboratory)은 소프트웨어 기반 계측기들의 집합이다. 소프트웨어 애플리케이션(앱)으로 가상 실험실(랩)을 만들어 실험 장비를 주머니에 넣고 다니며 개발할 수 있는 셈이다. 포괄적인 기능을 갖춘 물리적인 연구실 환경을 구축하려면 비용이 많이 들고 관리도 까다롭다. 반면 버추얼 일렉트로닉스 랩을 이용하는 사용자들은 누구나 어디서든 손쉽게 앱으로 다양한 전기전자 실험을 할 수 있다.
파이썬과 ADALM2000을 사용해서 오실로스코프, 신호 발생기, 디지털 멀티미터 같은 다양한 가상 실험실 장비를 개발할 수 있다. 오실로스코프는 실제 실험실에서 기본적이며 가장 많이 사용하는 장비 중 하나다.
가상 계측기는 유연성과 모듈성, 휴대성이 뛰어나다. 아나로그디바이스(Analog Devices)의 ADALM2000을 사용해서 엔지니어나 개발자는 각자의 필요에 맞는 가상의 실험실 장비를 개발한다.
신호 분석에 유용한 오실로스코프
오실로스코프는 전자공학 필수 장비다. 일반 회로와 복잡한 회로에서 신호를 분석할 때 활용한다. 최근에 나온 오실로스코프는 컴퓨터 연결 기능을 갖춰 오실로스코프로 포착한 신호를 디지털로 저장했다가 나중에 분석할 수 있다.

오실로스코프는 아날로그와 디지털 파형으로 구현된 전압과 시간 같은 특성을 시각화할 수 있다. 증폭기 트리거링, 스위프 타이밍, 디스플레이 같은 전면 패널 기능을 사용하면 신호를 정확하게 시각화할 수 있게 디스플레이를 조작할 수 있다.
또 오실로스코프는 특정한 시간 동안 입력 받는 신호를 화면에 보여준다. 회로 분석에 꼭 필요한 기능으로 회로를 검증할 때 유용하다. 오실로스코프가 모든 전기전자 실험실에서 필수 장비로 꼽히는 이유도 여기에 있다. 최근 엔지니어들은 특정한 전자 회로 분석을 더 잘할 수 있도록 오실로스코프를 맞춤형으로 개조하기도 한다.
ADALM2000
ADALM2000은 디지털 오실로스코프, 함수 발생기, 로직 분석기, 볼트미터, 스펙트럼 분석기, 디지털 버스 분석기 기능을 제공한다. 여기에 프로그래머블 전원 공급 장치 2개를 추가한 능동적인 학습 모듈이다.
초보 사용자나 학생들은 ADI 그래픽 응용 소프트웨어 Scopy를 사용해서 ADALM2000과 연결할 수 있다. 앱 개발자들은 libm2k 라이브러리를 사용해서 앱 인터페이스를 개발할 수 있다. 또 펌웨어 개발자들은 ADALM2000에서 곧바로 실행되는 맞춤형 소프트웨어나 하드웨어기술언어(HDL)을 개발할 수 있다.
오실로스코프 개발 방법
파이썬과 파이참 설치
파이썬(Python)은 강력하고 배우기 쉬운 오픈 소스 프로그래밍 언어다. 파이썬은 웹사이트에서 다운로드할 수 있다. 어떤 버전을 사용해야 할지 모르겠다면 Python 3.7을 선택한다.
파이썬은 통합 개발 환경(IDE) 없이 사용할 수 있으나, 라이브러리를 다운로드하고 디버깅이 복잡하지 않도록 파이참(PyCharm)을 사용해야 한다. 파이참은 파이썬 개발을 위해 가장 널리 사용되는 IDE로, 개발자들을 위한 여러 필수 툴을 제공한다.
라이브러리 설치
파이썬 라이브러리는 특정 앱에 유용한 기능이나 함수를 포함한다. 이 글에서는 libm2k, matplotlib, NumPy를 사용한다.
libm2k과 설치
사용해서 ADALM2000과 연결하려면 libm2k 라이브러리를 설치해야 한다. 이 라이브러리는 파이썬, C#, MATLAB®, LabVIEW®에 대한 바인딩을 제공하는 C++ 라이브러리로 다음과 같은 기능을 포함한다.
ㆍ AnalogIn: 오실로스코프 또는 볼트미터용
ㆍ AnalogOut: 신호 발생기용
ㆍ Digital: 로직 분석기 또는 패턴 발생기용
ㆍ PowerSupply: 정전압 발생기용
ㆍ DMM: 디지털 멀티미터용
설치는 다음과 같이 한다. 먼저 아나로그디바이스 웹사이트에 들어가 최신버전(libm2k-0.4.0-Windows-Setup.exe)을 다운로드한다. 파일을 실행 후 추가 작업을 선택하라는 Setup 창이 뜨면 ‘Install libm2k Python bindings’를 선택한다.

설치를 완료하면 libm2k가 파이썬 디폴트 환경에 설치된다.
Matplotlib와 NumPy 설치

matplotlib 라이브러리는 오실로스코프 디스플레이 생성에 도움을 준다. 이 라이브러리는 파이썬으로 시각화를 맞춤화하고, 진열하기 위한 용도로 사용할 수 있어 편리하다.
간단한 오실로스코프라 하더라도 많은 수학 계산을 필요로 한다. NumPy 라이브러리는 복잡한 계산을 위한 간단한 함수들을 제공한다.
matplotlib와 NumPy는 파이참에서 다음과 같은 순서로 설치할 수 있다:
File > Settings > Project Interpreter 순으로 이동한다.
Settings 창의 오른쪽에 있는 + 아이콘을 클릭한다.
Available Packages 창이 활성화되면 검색창에서 matplotlib와 NumPy를 검색한다.
최신 버전을 선택해 설치한다.
‘Install Package’ 버튼을 클릭한다.
하드웨어 셋업

코딩을 시작하기 전에 먼저 하드웨어 장치들을 셋업해야 한다. 신호 소스 또는 활용 가능한 신호 발생기, ADALM2000, 프로브와 클리퍼 하드웨어 장치들이 필요하다.
신호 발생기를 사용할 수 있다면 프로브와 클리퍼를 사용해서 [그림1]에서 보는 것과 같은 구성으로 ADALM2000 디바이스를 채널1과 채널2에 연결한다.
[표1] 핀 구성
| 신호 발생기 | ADALM2000 |
| Ch1양극 와이어 (+) | 1+ |
| Ch1 접지 | 1- |
| Ch2 양극 와이어(+) | 2+ |
| Ch2 접지 | 1- |
다른 신호 소스를 사용하더라도 같은 구성으로 연결할 수 있다. ADALM2000 디바이스를 USB 포트를 통해 컴퓨터(PC)로 연결한다.
간단한 버추얼 오실로스코프
코드가 어떤 일을 하고 어떻게 코드를 작성해야 하는지 설명한다. 그리고 이 베이스 코드에 활용 사례에 따라서 추가 기능을 더하는 방법도 설명한다.

간단한 버추얼 오실로스코프를 개발하기 위해 먼저 3개의 라이브러리(libm2k, matplotlib, NumPy)를 불러온다.

URI(uniform resource identifier)는 PC에 연결된 각 ADALM2000의 고유 식별자다. 이 코드 블록이 ADALM2000을 PC와 연결한다. PC에 연결된 ADALM2000 디바이스가 없으면 코드는 자동으로 종료된다.

URI가 인식됐으면 ADALM2000으로 연결한다. 연결된 디바이스가 한 개 이상일 경우 uri[0]은 첫 번째로 인식된 ADALM2000 디바이스의 URI를 나타낸다.

ADC와 DAC에 대해서 캘리브레이션을 실시한다. 캘리브레이션은 정확한 측정을 얻기 위해 필요한 작업이다.

샘플 레이트와 지속시간을 설정한다. 이용할 수 있는 샘플 레이트는 1kHz(킬로헤르츠), 10kHz, 100kHz, 1MHz(메가헤르츠), 10MHz, 100MHz이다. 샘플 레이트는 1초 동안 샘플을 포착하는 횟수를 말한다. 또 샘플을 얼마나 오랫동안 포착할지 정하는 지속시간을 설정한다. 샘플 레이트를 1000으로 지속시간을 3으로 설정하면 초당 1000개 샘플을 3초 동안 포착한다. 총 3000 샘플을 포착하는 셈이다.

오실로스코프를 작동시키고 채널1을 아날로그 입력으로 설정한다.
Linspace를 사용해서 간격이 일정한 샘플 어레이(배열값)를 얻을 수 있다. 이 NumPy 함수를 사용해서 시간 x축 데이터 어레이를 생성한다. 이 함수의 첫 번째와 두 번째 파라미터는 각 어레이의 시작 값과 끝 값을 나타낸다. 마지막 변수(파라미터)는 시작 값과 끝 값 사이에서 발생시키고자 하는 샘플 수를 나타낸다.
이 예에서 시작 값은 0이고 끝 값은 설정된 지속시간, 다시 말해서 3이다. 지속시간과 샘플레이트 를 곱해서 총 샘플 수를 계산할 수 있다. 이 경우에 3000 샘플이다. 0과 3 사이에서 이 3000 샘플이 균일한 간격이 되도록 한다. 이 어레이는 time_x에 저장된다.

data_y는 ADALM2000 디바이스를 사용해서 포착한 파형 샘플들을 저장한다. 채널1의 샘플은 data_y[0]에 저장되고, 채널2의 샘플은 data_y[1]에 저장된다. 정확한 주파수로 파형을 표시하기 위해서 time_x에 사용된 것과 같은 샘플 수여야 한다.
그림을 생성하고 조작한다. plt.subplots 함수가 그림 객체(g에 저장)와 축 개체(ax에 저장)를 생성한다. 이들 객체를 사용해서 전체적인 플롯을 맞춤화할 수 있다.

파형을 보기 쉽게 눈금선을 추가할 수 있다. 축 레이블과 y 한계를 추가해서 플롯에 대한 세부 사항을 추가할 수 있다.

그래프를 표시한다.
코드의 마지막에서 컨텍스트를 종료한다.

이 코드를 실행하면 [그림2]와 같은 결과를 얻는다.
![▲[그림2] 단일 채널 사인파 출력. 단일 신호 발생기 출력: 10Hz 2Vp-p](https://cdn.epnc.co.kr/news/photo/202205/223297_224172_1750.jpg)
2채널 버추얼 오실로스코프 등 구체적인 코드 설명은 6월호에 이어서 설명한다.
크리스티안 제이슨 가르시아(Christian Jason Garcia)·어니 매 배스(Arnie Mae Baes) 소프트웨어 시스템 엔지니어
자료제공: 아나로그디바이스(www.analog.com)
그래도 삭제하시겠습니까?



