아직도 이 장비에 대해 관심이 있는 사람이 얼마나 있는지 모르겠지만
이 글에서는 좀 더 사용하기 편하게 변경하는 과정에 대해 기술한다.
글 내용 중 어느 한부분이라도 이해가 안되거나 스스로 처리 할 수 없다면 펌웨어 변경 작업을 시도하지 않도록 한다.
진행중에 발생하는 어떠한 손해(펌웨어손상, 작동불가, 회로손상을 포함한 유, 무형의 손해)도 글쓴이는 책임지지 않는다.
이 측정기를 개조 또는 변경 하려면 회로 이론(RF영역 포함)에 대한 기본적인 이해 및 프로그래밍(MCU)에 대한 이해가 필요하다. 중요한 부분은 설명을 하겠지만, 나머지는 스스로 학습해야 한다.
이 글을 쓰는 이유는 해외 오엠들이 더 이상 이 장비에 대해 신경을 쓰지 않기 때문이다.
SARK-100 의 용도는 다들 알다시피 안테나 분석기다.
특징은 아래와 같다.
1. 브리지 방식 측정
2. RF 소스(발진기)는 DDS (AD9851) 사용 (약 70MHz 가 한계)
3. 밴드별로 지정된 중심주파수에서 칼리브레이션 기능
4. 부하 범위(50~150~274옴)에서 2점 기울기 보정(일종의 보간으로 추정)
같은 방식의 측정기인 MFJ-259(269) 와 차이를 보면
1. 이론상 측정 주파수는 0Hz 가까이 내려갈 수 있음(회로 구성상 100KHz 정도까지만 실용이 됨)
- MFJ 의 경우에는 LC 발진 회로이므로 너무 낮은 주파수에서는 발진이 불가능하다.
- 반대로 DDS 특성상 RF 를 빠른 속도로 합성할 수 없기 때문에 높은 주파수 한계가 발생한다.
2. 각 밴드 마다 칼리브레이션 및 저장(MFJ 의 경우 단일 주파수인 10MHz 에서만 칼리브레이션 한다.)
임피던스 측정 원리
안테나 또는 RF 회로에서의 임피던스를 측정하는 것은 전문분야에서는 네트웍아나라이저(NA) 라는 전용 측정기를 사용한다. 그러나 취미 또는 개인적으로 사용하기에는 너무 고가의 장비이므로 접근성이 떨어지는 문제가 있었다. (VNA 가 지금처럼 저렴해지기 이전의 얘기이다) 따라서 고가의 NA 의 대용으로 브리지(휘트스톤 브리지 등의 변형) 방식의 측정기를 많이 사용했다. 브리지의 원리를 이용하면 AC 저항, 다시 말해서 교류저항(임피던스)을 측정 할 수 있다.
매우 간단한 방법이지만 주파수가 낮은 HF 대역에서는 충분히 실용이 된다.
브리지를 이용한 임피던스 측정 방법은 이전에 올린 RX 노이즈 브리지 글에서 설명되어 있으므로 한번 읽어보는 것도 좋다.
https://ds1orj.tistory.com/153
브리지 방식의 단점이라면 밸런스를 잡기 위해 저항의 수동 조작이 필요하다는 점인데,
저항을 변경하지 않아도 각 브리지에 가해지고 있는 전압 값을 알면 브릿지 평형(밸런스)에 필요한 값을 방정식에 의해 역산 할 수 있다. 이 방식으로 작동하는 것이 MFJ-259(269) 및 그 아류(SARK-100 등의)이다.
그러나 세월이 흐르고 저렴한 위상 검출기인 AD8302 가 출시되면서 브리지 방식은 구식이 되었고 직접 위상을 측정하는 VNA 가 시장에 쏟아져 나오게 되었다.
어쨌건 여전히 유용하며 다용도로(신호발생기 및 안테나 분석기로써) 사용가능한 장비 이므로 관심이 있다면 펌웨어를 변경하는 방법에 대해 알아보자.
SARK-100 그리고 Micro-908
SARK-100 의 원저자는 EA4FRB 이며 AmQRP 에서 만든 Micro-908 을 참고로 하여 개발하였다고 한다.
Micro-908 역시 브리지 방식의 측정기로 M68 계열 MCU 를 사용하는 안테나 아나라이저이다.(20여년 전 당시로는 혁신적인 제품) 따라서 SARK-100 의 측정방식은 Micro-908 과 거의 같다.
Micro-908 의 사용설명서
Micro-908 의 기술문서(브리지를 이용한 임피던스 측정 방법에 대해 자세히 설명되어 있다.)
SARK-100 의 메뉴얼
SARK-100 이 마음에 들지 않는 점은 "키트" 로 출시되어 성능이 많이 희생 되었다는 점이다.
조립이 용이하도록 불필요하게 큰 부품이 사용 되었고, 임피던스를 고려한 최단거리 라우팅 보다는 조립에 용이한 부품 배치로 PCB 가 설계 되었다.
다만 펌웨어 소스가 오픈되어 있다는 점은 마음에 든다.
SARK-100 의 MCU 는 CYPRESS 사의 CY8C29466 을 사용했는데 플래시 32K바이트, 램 2K바이트로 아두이노 미니 Mega328 과 비슷한 용량이다. SARK-100 소스는 C 로 작성되어 있는데 어셈블리 보다는 낫지만 알아보기 쉽지는 않다.
원래 기능에서 가장 답답한 것이 주파수 변경 방식 이었다.(MW, VLF 밴드도 없다)
따라서 소스에서 아래와 같이 몇가지를 변경하였다.
1. Config / Scan 버튼으로 자리수 상,하 이동(Up / Down 버튼으로 주파수 상,하 변경은 기존과 동일, 원래 메뉴는 COnfig, Scan 버튼을 0.5초 이상 길게 누르는 것으로 진입하게 된다.)
2. VLF 밴드 137KHz, 472KHz 추가
3. MW 밴드 (530~1700KHz AM 라디오) 추가
4. 한계 주파수(70MHz) 까지 올릴 수 있도록 60MHz 상위 밴드 추가.
5. SWR 표시용 BAR 그래프
6. 불필요한 기능(칼리브레이션 메시지 표시등) 및 메시지 제거(메모리 절약)
AM / FM 변조 등을 넣고 싶었으나 현재도 플래시 용량을 거의 모두 사용하고 있기 때문에 사인(sin)테이블 등이 들어갈 공간이 부족하므로 시도하지 않았다.
변경된 펌업 작업에 반드시 필요한 것
1. 펌업 실패시 벽돌 복구용 ISSP 프로그래머(MiniProg 버전3 이하 - PSoC 1 지원 필수)
2. 컴파일된 펌웨어(Hex) 또는 개발환경 (PSoC Designer - 컴파일러 포함되어 있음)
3. 칼리브레이션용 3종 저항(50옴, 150옴, 274옴)
4. 통신용 USB 미니 케이블
아마도 1번이 가장 해결이 어려운 부분인데 생산이 중지되어 구하기가 어렵다. 최신 MiniProg4 버전은 PSoC 1 지원 여부를 확인 할 수가 없고, MiniProg3 까지는 PSoC 1 이 지원되는거 같은데 직접 써보지 않아서 장담 할 수는 없다. 된다고 하더라도 터무니 없는 가격(10~20만원)에 팔리고 있으므로 개인적으로 비추이다.(수십대 이상 작업할게 아니라면) 본인이 능력자라면 데이터시트와 어플리케이션노트(AN 44168)를 참고하여 CY8C 프로그래머를 직접 만들 수 있다. 아니면 돈을 주고 사는 수 밖에..(일부 구형 개발보드에 PSoC 1 최소 프로그래머가 포함된 것으로 보이는데 자세한 것은 알 수 없다)
또 다른 옵션은 ALL-11 등의 유니버셜 프로그래머를 가지고 사용하는 방법인데, 애석하게도 CYPRESS MCU 는 기본 DIP 소켓에서 지원하지 않고 확장 PAC 이 필요하다. 다른 프로그래머는 지원하는지 확인이 되지 않으므로 더 거론하지 않는다.지원된다 하더라도 유니버셜 프로그래머 역시 고가이므로 이 작업을 위해 이것을 구매한다는 것은 낭비다.
최후의 수단으로 옛날에 만들어진 프린터포트(병렬포트)용 Bit Banging 방식의 ISSP 프로그래머를 사용할 수 있다.
다만, 이것을 구동하려면 Windows XP 이하 OS 와 메인보드에 실제 프린터 포트가 있는 구형 컴퓨터 시스템 -PCI 카드 또는 USB 로 프린터포트 추가하는 것은 호환 안됨- 이 필요하다.
아래 작동하는 프로그램과 회로도를 올린다.
CyProg 1.9 버전과 25핀 프린터 포트용 ISSP 프로그래머 회로도.
단, 다시한번 말하지만 이것은 USB 프린터포트 또는 PCI 방식 신형 프린터 포트 등과는 작동하지 않는다.
OS 는 Win 9X 부터 Windows XP 까지 작동한다. (README 참고)
BIOS 설정에서 LPT 에 대해 양방향 통신이 가능하도록 미리 세팅해둬야 한다.(Bi-Direction 또는 ECP/EPP)
ISSP 가 없을 경우 펌업에 실패하여 부트로더 진입이 불가능해지면 SARK-100 을 복구 시킬 방법이 없으므로 더 진행하지 말고 있는 그대로 사용하도록 한다.
아래 사진은 만들어진 프로그래머가 구형 노트북 프린터 포트에 연결된 모습
이 작업은 벽돌이 되었을 때에만 하게 된다. (참고로 펌웨어 개선 작업 중 여러번 벽돌이 되었다)
아래 사진은 iSSP 가 연결된 모습.
Windows XP 에서 CyP 가 실행되어 Write 대기중인 모습.
LCD 색상이 칙칙한 것은 오래된 노트북의 한계이다. (CCFL 수명이 거의 다 됨)
사용법은 간단하다. "Load" 를 눌러서 펌웨어 파일을 불러오고, 중앙 상단의 "Program" 버튼을 누르면 MCU 의 플래시 메모리로 코드가 Write 되고 Verify 가 순서대로 수행된다.
하드웨어 변경
ISSP 를 사용하기 위해서는 보드에 ISSP 자리에 5핀을 납땜 해 두어야 한다. 아래 사진을 참고한다.
헤더핀이 똑바로 납땜되면 높이가 올라간다. 뒷판이 조립되면 헤더핀이 닿아서 쇼트될 가능성이 있으므로 구부리거나 기울여서 높이를 낮춘다. 기판을 분해해도 반대쪽에 LCD 기판이 해당 위치를 차지하고 있기 때문에 인두가 들어갈 자리가 없다. 따라서 분해하지 말고 조립된 상태에서 헤더핀을 꼽지 말고 올려둔 상태로 납땜한다.
또한 ISSP 3번 핀 XRES 가 기판상의 MCU 19번핀 XRES 와 연결되어 있지 않으므로 점퍼선으로 연결한다. (표면실장을 붙이기 위해 거버를 수정하면서 트레이스가 끊긴 것으로 추정한다.)
정밀도를 좀 더 올리고 싶다면 아래 3가지 값 변경을 추천한다.
2번과 3번은 특히 VLF 측정시 브리지의 감도를 더 높인다.(330pF 를 병렬로 연결)
1번은 DDS 출력의 50 옴을 우회하는 개조이다. 자세한 설명은 이전에 올렸던 글을 참고한다.
https://ds1orj.tistory.com/124
상기 하드웨어 변경 작업을 하게되면 반드시 재 칼리브레이션을 해야 한다.
물론 펌웨어 변경 작업을 하더라도 재 칼리브레이션이 필요하다.
펌웨어 컴파일
펌웨어 소스 원본은 아래서 받을 수 있다. (컴파일된 Hex file 포함)
https://sourceforge.net/projects/sark100swranaly/
현재 PSoC Designer 는 Infineon 에서 받을 수 있다. 5.4 버전을 받는다. (합병 된 것으로 추정한다)
설치 전에 반드시 이해해야 할 내용이 있다.
이 프로그램은 꽤 오래된 툴로써 요즘 윈도우의 긴 파일명 및 공백 포함을 제대로 인식하지 못한다.
따라서 설치 전에 파일시스템(NTFS)에서 8.3 형식의 파일명을 인식할 수 있도록 윈도우 레지스트리를 수정하고 재부팅 해야 한다. (Enabling 8.3 file name creation in Windows 으로 검색)
이 작업을 하지 않으면 정체 불명의 "파일을 찾을 수 없음 오류" 가 발생한다.
https://softwaretools.infineon.com/tools/com.ifx.tb.tool.psocdesigner
PSoC 디자이너를 이용한 개발 과정은 상당히 복잡하므로 따로 설명하지 않는다.
임베디드 또는 C/C++ 로 하드웨어 제어를 해봤다면 좀 들여다 보면 쉬울 것이다.
51,52,PIC,STM32,AVR,ATMEGA 등등의 툴체인을 다뤄본 경험이 있다면 별 어려움은 없을 것이다.
아무것도 모르는 경우는 이 글에서 설명 할 수 있는 범위를 넘어선다.
처음 프로젝트(SARK100_SwrAnalyzer_BL.app)를 열면 아래와 같은 선택사항을 물어본다.
부트로더는 절대 업데이트 하지 않는다. (붉은 색으로 표시해둔 부분 유지)
부트로더를 업데이트 하면 시리얼 포트를 통한 펌웨어 업데이트 프로그램(TerminalProgram)이 정상 작동하지 않을 뿐더러, 펌업 오작동으로 인해 벽돌이 된다. 나머지 Module Updates 는 최신 버전도 상관이 없다.
컴파일은 아래와 같이 Build 메뉴에서 Build All Project 을 실행한다.
바로가기 키는 Shift+F6 이고 전체 빌드 이후에는 F6 으로 수정된 것만 빌드해도 무방하다.
빌드가 끝나면 아래와 같이 경고가 34개 뜨고 완료 된다.
원래 경고도 안뜨는게 좋지만 원래 프로젝트가 그렇게 되어 있다.(만약 에러가 발생하면 빌드에 실패한 것이다)
펌웨어 파일은 프로젝트 폴더 아래에 ouput 경로에 있다.
펌웨어 파일명은 확장자가 .hex 이다. (아래 참고)
펌업 방법은 SARK100 메뉴얼 72 페이지(Appendix F) 를 참고한다.
FT232 드라이버 설치 후 윈도우의 "장치관리자" 에서 아래와 같이 고급 설정을 바꾸어 주도록 한다.
포트설정 -> 고급 -> 응답시간조정 -> 1 (기본값이 16 이며, 이 값으로는 시리얼 통신에 문제가 발생해서 벽돌이 된다)
이 작업에 사용되는 터미널 프로그램은 아래에 있다.
아래는 변경된 펌웨어와 소스이다.
변경된 내용은 아래와 같다.
- Config 와 Scan 은 짧게(0.5초) 누르면 주파수 자리수 상/하 이동이고, 길게 누르면 원래 기능을 실행한다.
- LCD 상에 불필요한 글자를 삭제하고 SWR 을 순간적으로 파악 가능한 막대그래프 표시(35단계)
- Band 를 누르고 Up, Down 버튼을 누르면 밴드를 상/하로 옮길 수 있다. 다시 Band 를 누르면 나간다.
- 밴드 4개 추가(VLF 2개 , MW 1개, 60~70MHz 1개)
나머지 버튼 기능은 그대로 유지 된다.
아래는 실제로 켜진 화면이다. (VLF 2개 및 455KHz 중간주파수를 포함하여 MW 전체 주파수)
Hz 단위는 삭제하고 최소 주파수 단위 변경은 10Hz 이다.
필요하다면 급조 VFO 로 사용 가능.
SWR 표시 바그래프