ja1yaz’s diary

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

JDS6600をRaspberrypiでちょっと使ってみた その5

その4でFM変調があいまいだったので作り直してみた。

ポイント数が、2048ポイント限定なので、1周期がせめて4ポイントは欲しいということで、キャリアマルチプライヤとデビエーションマルチプライヤの和が500までにして作成してほしいという限定付きだ。

FM変調のおさらいは、信号発生器のメーカーのTektronixのマニュアルに良い記述があったのでそれを拝借した。AWG510/AWG520型のユーザマニュアルのEquation作成波形の記述を参考にさせていただいた。

この会社の昔の機器のマニュアルには基礎となる記述が多々あって勉強になる。

 

import serial
import math
from time import sleep
ser= serial.Serial('/dev/ttyUSB0', baudrate=115200, timeout=3.0)

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

m=1          #mod frequency multiplier m=1 then Mode freq=waveform frequency
d=100        #carrier multiplier  
a=50         #deviation     a+d<500 recommend   a+d=500 then 1cycle=4point
c=0
cmd=''
while c<2048:
    #temp=int(2048*(1+(0.5+0.5*a*math.sin(2*3.14/2048*c))*math.sin(2*3.14/2048*d*c)))
    temp=int(2048*(1+math.sin(2*3.14*c*d/2048+a/m*math.sin(2*3.14*c*m/2048))))
    c=c+1
    if c<2048:
        cmd=cmd+str(temp)+','
    else:
        cmd=cmd+str(temp)

cmd=':a07='+str(cmd)+'.\r\n'             #write to Arbmem 05 
print(cmd)
bcmd=cmd.encode()
ser.write(bcmd)
sleep(0.05)

bcmd=''
a=''
a=ser.readline()   
bcmd=a.decode()
print(bcmd)

cmd=':w21=107.\r\n'       #waveform=Arbmemory 05
bcmd=cmd.encode()
ser.write(bcmd)
a=ser.readline()
bcmd=a.decode()
print(bcmd)

bcmd=''
a=''
a=ser.readline()   
bcmd=a.decode()
print(bcmd)


cmd=':w23=1000000.\r\n'     #Repeat Freq=10.0kHz
bcmd=cmd.encode()
ser.write(bcmd)
a=ser.readline()
bcmd=a.decode()
print(bcmd)


cmd=':w20=1,1.\r\n'          #OUTPUT ON
bcmd=cmd.encode()
ser.write(bcmd)
a=ser.readline()
bcmd=a.decode()
print(bcmd)

ser.close()

 

上記のコードは、

繰り返し周波数10kHz

キャリアマルチプライアd=100

デビエーションマルチプライアa=50

 

この時のキャリア周波数は、10kHz x 100=1MHz

デビエーション周波数は、10kHz x 50=500kHz

ですので、1MHz±500kHzの周波数に変調されることになる。

変調周波数は、m=1の時繰り返し周波数に一致する 10kHzだ。

 

オシロスコープで取り込んでFFTしてみると確かにおおむね一致していることがわかる。

FM変調の様子をオシロで取り込んでFFTしてみた

 

JDS6600の表示 FM変調で周期10kHzで出力

m=1としているが、これを変えることで、変調周波数も変更できます。

m=2で変調周波数=10kHz  x2=20kHzとなります。

 

念のため、オシロでFM変調の上限と下限の周波数の時間軸波形を確認してみた。

トリガ用にCH2に同じ周波数の矩形波を出力させて、Duty50%の立ち上がり、立下りにトリガをかけて近辺の周波数を確認してみた。

FM変調の時間軸波形 下限周波数



FM変調の時間軸波形 上限周波数

 

CH2は、トリガ用に便利だ。位相も変えられるので、決まったところにトリガをかけることができる。