엔지니어링 · 2024
유전율·온도 동시 계측 프로그램
LCR 미터와 열화상 카메라를 함께 제어해 유전 특성과 시편 온도를 같은 시간축에 기록하는 데스크톱 프로그램
서로 동기화되지 않는 LCR 미터와 열화상 카메라를 한 프로그램에서 동시에 수집해, 유전율과 시편 온도를 같은 시간축에서 확인하고 CSV로 기록할 수 있도록 했습니다.
- 고객
- KAIST
- 분야
- 엔지니어링

개요
대학 연구실의 유전 특성 시험에 쓰는 데스크톱 프로그램입니다. Keysight E4980A LCR 미터에서 커패시턴스(Cp)와 손실 계수(D)를 읽고, FLIR A35 열화상 카메라에서 시편 표면 온도를 함께 수집합니다.
수집 중에는 LCR 측정값으로 계산한 복소 유전율의 실수부와 허수부, 그리고 열화상에서 지정한 영역의 평균 온도를 하나의 시간축 그래프에 표시합니다. 열화상은 측정 영역과 온도 컬러바와 함께 실시간으로 보여 줍니다.
시험이 끝나면 LCR 데이터와 온도 데이터를 각각 CSV로 저장합니다.
과제
두 장비는 제조사가 다르고 제어 방식도 다릅니다. LCR 미터는 VISA로 USB에 연결해 측정 버퍼를 읽고, 카메라는 Spinnaker SDK의 노드맵으로 설정과 프레임 획득을 다룹니다.
수집 주기도 다릅니다. 카메라는 초당 30 프레임을 내보내고, LCR 미터는 측정 한 번에 그보다 긴 시간이 걸립니다. 두 장비는 서로 동기화되어 있지 않으므로, 한쪽의 응답을 기다리는 동안 다른 쪽 데이터를 놓치지 않아야 했습니다.
열화상에서 온도 값을 얻으려면 픽셀 포맷, 온도 선형화 모드, 온도 분해능, 방사율, 반사 온도를 모두 맞춰야 합니다. 시편과 시험 조건에 따라 달라지는 값이므로 프로그램에서 바꿀 수 있어야 했습니다.
해결 방법
- 장비마다 독립된 수집 스레드를 두어 각자의 속도로 데이터를 읽습니다. 화면 갱신은 별도 스레드가 맡아, 어느 한쪽에 새 데이터가 들어오면 그래프와 열화상을 다시 그립니다.
- 열화상 위에 사각 영역을 지정하면 그 영역의 평균값을 온도로 씁니다. 영역은 수집 중에도 조정할 수 있고, 지정한 범위는 화면에 사각형으로 표시됩니다.
- 유전율 계산식을 UI에서 수정할 수 있습니다. 시편 형상에 따라 달라지는 식과 상수를 코드 수정 없이 바꿉니다.
- 방사율, 반사 온도, 온도 분해능, 컬러맵 표시 범위를 UI에서 설정합니다. 설정은 종료할 때 저장되어 다음 실행에 이어 쓰입니다.

시스템 구조
구성
데이터 흐름
- 한 수집 스레드가 LCR 버퍼에서 Cp와 D를 읽고, 계산식에 넣어 복소 유전율을 얻습니다.
- 다른 수집 스레드가 카메라 프레임을 섭씨 배열로 바꾸고, 지정한 영역의 평균 온도를 계산합니다.
- 두 값은 수신 시각과 함께 각각의 고정 길이 버퍼에 쌓입니다.
- 갱신 스레드가 주기적으로 버퍼를 읽어 그래프와 열화상 이미지를 다시 그립니다.
구현
계산식은 사용자가 직접 입력하므로, 정규식으로 허용된 문자만 쓰였는지 먼저 검사합니다. 그다음 함수로 변환해 시험값을 한 번 대입해 보고, 통과한 식만 수집에 사용합니다.
카메라가 보내는 프레임은 14비트 원시값입니다. 선택한 온도 분해능에 맞는 계수를 곱하고 절대온도를 빼서 섭씨로 바꿉니다. 방사율과 반사 온도는 연결 시점에 카메라 노드에 써서 장비 쪽에서 보정하도록 했습니다.
장비 통신에는 응답이 없는 경우를 대비해 시간 제한을 두었습니다. 수집 중 오류가 나면 수집을 멈추고 두 장비의 연결을 정리한 뒤 원인을 창으로 알립니다. 프로그램을 닫을 때는 수집 스레드가 모두 끝난 것을 확인한 뒤 종료합니다.
온도 CSV에는 측정값과 함께 그 시점의 영역 좌표, 방사율, 반사 온도를 같이 적습니다. 나중에 어떤 조건에서 얻은 값인지 확인할 수 있습니다.

결과
한 화면에서 수집을 시작해, 유전율 변화와 시편 온도를 함께 보면서 시험을 진행할 수 있습니다. 두 값이 같은 시간축으로 기록되므로 측정이 끝난 뒤 두 장비의 데이터를 따로 맞춰 정렬할 필요가 없습니다.
영역 좌표와 카메라 보정값이 측정값과 함께 남아, 어떤 조건에서 얻은 데이터인지 다시 확인할 수 있습니다. 시험 조건은 설정 파일에 저장되어 다음 시험에 이어 쓰입니다.
실제 사용 중에 확인된 사항을 반영해 온도 분해능 선택, 측정 영역 지정, 열화상 표시 방향, 복소수 유전율 표기를 차례로 보완했습니다.
사용 기술
- Python
- wxPython
- NumPy
- matplotlib
- PyVISA
- Spinnaker SDK
화면


진행하려는 프로젝트가 있으신가요?
해결하려는 문제와 지금 상황을 알려 주시면, 어떤 방식이 맞을지 함께 검토합니다.
프로젝트 문의하기