마하전자기술연구소 LOGO

제품검색 고객센터053-604-2355
기술자료실

Home > 기술자료실 기술자료실

제 목 34. DDS와 PIC를 사용한 주파수 특성 측정기(PIC의 SW편)
첨부파일

 

                  청소부의 PIC측의 것의 소프트웨어의 소개입니다.
                  PIC측은 CCS의 C컴파일러를 사용하고 있습니다.

 


DDS와 PIC에 의한 주파수 특성 측정기(PIC의 SW편)

DDS로 정현파를 출력해, 로그 앰프로 레벨을 측정합니다.
그 데이터를 PIC로 액정 표시기에 표시하는 것과 동시에 PC에 전송 해,
PC의 프로그램으로 주파수 특성으로서 표시, 보존합니다.



【개요】

 시판 킷의 DDS 유니트에 PIC를 조합한 정현파 발신기와 로그 앰프와 PIC16F876를
사용한 데시벨 측정기를 조합해, 10 Hz에서 10 MHz까지의 범위에서 주파수 특성을 측정
하기 위한 측정기를 만들어 보았습니다.
이것에 PC를 시리얼 인터페이스로 접속해, 주파수 특성을 그래프 표시할 수 있는 측정기
(이)가 완성됩니다. 이


전면 패널의 액정 표시기의 표시예입니다.
1행째에는 현재 출력하고 있는 정현파의
주파수를 1 Hz단위로 표시합니다.

2행째에는, 2 채널의 레벨 계측 결과
(을)를 데시벨치로 직접 표시합니다.
-64 dB~+30 dB의 범위를 소수점 2자리수까지
표시합니다.


이 PIC의 프로그램 리스트는 아래와 같이로 직접 볼 수가 있습니다. CCS사의 C컴파일러로 사용
주세요.

  ★주파수 특성 측정기 PIC 프로그램 소스 리스트
  ★액정 표시 제어용 함수 라이브러리


【기능 개요】

 이번 주파수 특성 측정기의 본체측의 기능은 아래와 같이 되어 있습니다. 이러한
기능을 PIC로 실현됩니다만, 프로그램은 CCS사의 C언어로 작성합니다.
C컴파일러의 편성 함수의 덕분으로 상당히 복잡한 기능을 간단하게 기술할 수가 있었습니다.

A) 리모트 모드
 (1) 주파수의 DDS 설정 출력과 표시
   PC로부터 시리얼 인터페이스 경유로 지정된 주파수 범위를 DDS로 설정해
   출력한다. 
   설정치는 2바이트를 2회에 수신해, 그리고 DDS에의 26비트의 설정 포맷에
   변환해 전용 시리얼 인터페이스로 출력한다.
   동시에 그 출력 주파수치를 액정 표시기에 표시한다.
 
 (2) 레벨 계측치의 표시와 전송
   PC로부터 시리얼 인터페이스 경유로 지정되었을 때에, 2 채널의 레벨
   (을)를 계측 해, 데시벨치로 변환한 뒤, 전송 한다.
   동시에 그 값을 액정 표시기에도 표시한다.

B) 수동 모드
 (3) 로터리 스윗치에 의한 주파수 updown
   수동 모드때에, 로터리 스윗치의 회전 방향을 상시 검출해, 그것에 의해 주파수를
   현재가로부터 updown 제어한다. 동시에 레벨 측정도 실시해 양쪽 모두를 액정 표시기에
   표시한다.
   updown는, 광범위의 주파수 설정을 빨리 변경할 수 있도록(듯이) 주파수 10년간의
   1/100 잘게 썰기로 실시하는 것으로 한다.


【전체 구성】

본주파수 특성 측정기의 PIC의 프로그램의 전체의 흐름은 밑그림과 같이 되어 있습니다.
우선 최초로 입출력 핀의 모드 설정이나, USA RT, A/D변환등의 초기설정을 실시합니다.
그 후로, 모드 스윗치 상태를 입력해, 수동인가 리모트인가에 분기 합니다.
수동의 경우에는, 로터리 스윗치를 상시 감시해, 입력 변화가 있었을 경우에는, 좌우의
회전 방향을 검출해, 주파수의 업, 다운을 합니다. 그 주파수의 updown의 잘게 썰기
(은)는, 그 때의 주파수의 자리수(10의 무슨승인가)의 1/100으로 합니다.

자동의 경우에는, USA RT경유로 데이터를 수신해, 그 데이터의 내용을 커멘드로서 판정해
각각의 처리에 분기 해, 처리가 종료하면(자) 최초로 돌아와, 재차 수신 대기가 됩니다.
커멘드에는 3 종류 있어, 0의 경우에는 아무것도 하지 않습니다.
1의 경우에는, 주파수 설정 출력이라고 하는 것으로, 계속되는 주파수 데이터를 수신해, DDS에의 설정치
(으)로 변환해 출력합니다. 그 때의 주파수를 액정 표시기에 표시합니다.

2의 경우에는, 레벨 계측 지시라고 하는 것으로, 2 채널의 레벨 데이터를 계측 해, 그
데이터를 데시벨치로 변환하고 나서, PC에 반송합니다. 동시에, 그 데이터를 액정 표시기에
표시합니다.






이 메인의 처리 부분의 실제의 코드는 아래와 같이 됩니다.
로터리 스윗치의 읽기부에서는 chattering 회피를 위해서(때문에) 지연 함수가 삽입되어
있습니다. 또 Latch는 로터리 스윗치의 처리를 한 번 실행하면(자), 다음에 변화가 일어날 때까지는
같은 처리를 반복하지 않게하기 위한 플래그로, Mupdown 함수내에서 세트 됩니다.
주파수 데이터는 상위, 하위와도 2바이트로 보내져 오므로 그것을 long형의 변수로 변환하고 나서
DDS에의 설정 함수에 건네줍니다.



【주파수의 설정 제어】

PC로부터 보내져 온 상위, 하위 2바이트의 데이터를, DDS에의 설정 데이터로 변환해 출력합니다.
변환은, 상위 10비트+하위 16비트를 그대로 26비트의 주파수 데이터로 합니다.
DDS에의 출력 데이터 포맷은, 밑그림과 같이, 3비트의 디바이스 주소, 4비트의 팽이
드, 26비트의 주파수 설정의 3개를, 클록 신호와 함께 시리얼 데이터로서 보냅니다.
그리고 마지막에 스트로브 신호를 출력하면 알려지고가 빗장 되어 커멘드로서 기능합니다.
이 때의 주소, 커멘드는 고정 데이터가 되고 있어 ddsCmd(0x67)의 정수로 하고 있습니다.





실제의 DDS에의 주파수 설정의 처리 함수는 아래와 같이 되어 있습니다.
float형의 frequency가 실제의 주파수치로 이것을 액정에 표시합니다. float형이 아니면 수치가
표현할 수 없습니다. (자리수가 크기 때문에)
그리고는 DDS에 지정 비트수를 시리얼 출력하는 함수 shift_out로 차례차례 33비트의 전비트를
출력합니다. 마지막에 ddsStb를 on로 해 커멘드의 실행 제어를 합니다.








【레벨 계측】

로그 앰프의 출력을 A/D변환으로 읽어들여 그것을 데시벨치로 변환합니다.
변환은 하드웨어편으로 설명한 것처럼, +Ref로 2.5 V의 상한을 설정해 있을테니까
하식에서 변환할 수 있게 됩니다.

    Lv = (95×Ad)/1024- 68 

실제의 계측과 변환 함수는 아래와 같이 되어 있습니다.
우선 10비트 모드로 A/D변환을 한 right justify의 데이터를 long형으로 계측 합니다.
그 데이터를 float형으로 변환한 뒤, 상기 계산식에 적용시켜, float형으로 계산합니다.
계산 결과적으로 요구한 데시벨치를 RS232C로 송신함과 함께, 액정 표시기의 2행째에
2 채널분 늘어놓아 표시합니다.





【수동의 주파수 제어】

수동 모드의 경우에는, 로터리 스윗치의 회전에 맞추어 주파수를 updown
합니다. 그 제어 처리가 아래와 같이가 됩니다.
귀찮은 것은, 주파수의 그 때의 값으로 updown의 증분을 변경하는 처리입니다.
이것은 주파수의 자리수마다 그 자리수의 1/100씩 updown 시키려고 하는 처리입니다.
이렇게 하는 것으로, 수동에서도 실용적인 빠름으로 설정을 변경할 수가 있기 때문입니다.
그 대신해, 그 주파수의 1/100보다 세세한 설정은 할 수 없게 됩니다.
수동의 경우에는, 최고 주파수를 16 MHz까지 할 수 있도록(듯이) 하고 있습니다.







목록보기

www.1chip.com, www.1chip.co.kr
www.micom114.com
자료실바로가기

대구광역시 북구 산격2동 1629 산업용재관 10동 13호 (2층) / Tel. 053-604-2355 / Fax. 053-383-2354 / E-mail. maha@paran.com