ja1yaz’s diary

感動したいおやじの備忘録的ブログ 

無線機製作に当たり押さえておきたいもの「RFプローブ」5

RFプローブは、やはり評価しないと使い物にならない。

前の実験で、懐かしの1N60を使用したRFプローブが、1-200MHzあたりまでフラットな特性が得られそうな感じだった。

手持ちの計測器を使って、周波数を変えて細かく計測してみたくなった。

しかし、手でデータをとるのは限界もある。

そこで、信号発生器JDS6600とマルチメータWH5000を使用して計測してみた。

ちょっと心配だったのが、WH5000は、電源を入れっぱなしにすると自動で電源が落ちる親切設計になっていることだ。

しかし、USB接続してみると、この心配はいらないことだったことに気づく。

USBのバスパワーを借りているからなのか、電源がOFFになることはなかった。

一安心。

いつものように、RaspberryPi3B+をコントローラとして、2台の計測機器をUSB接続でコントロールしてみた。

最初、JDS6600の周波数を変化させて、WH5000のデータを1回だけ読み込んだところ、表示されている電圧データとは異なりデータが読み込まれていて焦った。

プログラムを変えて、周波数を変えるごとに10回WH5000のデータを読んでみると、1回目に読み込んだデータから、値が変化しているのが分かった。

どうやらバッファにたまっている状態でデータが停滞してしまっていたらしい。

WH5000は、データを垂れ流しするタイプなので、トリガをかけてデータを取り込むという仕組みになっていない。0.5秒に1データを送り付けているようだ。

でも10回取り込むとそれでも5秒かかってしまう。データを見る限り3-4回程度でも十分いけそうだったが、念のため7回にしてみた。これでも、1周波数につき約4秒かかっている。

プログラムでは、1MHzから60MHzまで1MHzステップで取り込むようにした。

 

import serial
import csv
from decimal import Decimal
f=open('detecter.csv','w')
from time import sleep
ser= serial.Serial('/dev/ttyUSB0', baudrate=115200, timeout=3.0)
ser1=serial.Serial('/dev/ttyUSB1', baudrate=2400, timeout=3.0)

cmd=':w20=1,0.\r\n'        #Output=off
bcmd=cmd.encode()
ser.write(bcmd)
a=ser.readline()
bcmd=a.decode()
print(bcmd)
    
cmd=':w21=0.\r\n'          #CH1:Sin waveform
bcmd=cmd.encode()
ser.write(bcmd)
a=ser.readline()
bcmd=a.decode()
print(bcmd)

startf=100000000        #Start frequency  1MHz
stopf=6000000000        #Stop Frequency  60MHz
stepf=100000000        #1MHz Step
i=0
outf=0
while outf<stopf:
    outf=startf+stepf*i
    cmd=':w23='+str(outf)+',1.\r\n'          #CH1:Sin waveform
    #print(cmd)
    bcmd=cmd.encode()
    ser.write(bcmd)
    a=ser.readline()
    bcmd=a.decode()
    #print(bcmd)
    
    #sleep(1)
    j=0
    b=''
    a3_ave=0
    print(str(outf/100/1e6)+'MHz')
    while j<6:
        a=ser1.readline()
        a1=int(a[1:5])
        a2=int(a[6:7])
        
        if a2==4:
            a2=(3-a2)
        else:
            a2=(a2-4)
        a3=a1*10**a2

        
        j=j+1
    a3_ave=round(a3,3)
    
    print(a3_ave)
    
    data=str(outf/100)+','+str(a3_ave)+'\n'
    f.write(data)

    #writer=csv.writer(f)
    #writer.writerows(data)
    i=i+1
f.close()    
ser.close()
ser1.close()

 

1N60 RFプローブ 校正データ

2Vppのデータが、ちょうど+10dBmに相当するので、以前SGで取り込んだデータとの補正ができそうだ。

JDS6600では、50MHz近辺が盛り上がっているようだが、これは、信号発生器の振幅のせいではないかと思われる。

使用する電力は、10mWから1W程度までなので、電力の変化による値の補正値も得ておきたいな。