任意波形を作成することに成功した。
調子に乗って、機能としてついていないAM変調についても作ってみた。
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)
d=50 #Number of cycles
a=0.8 #Modulation Percent %/100
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/2048*d*c)))
c=c+1
if c<2048:
cmd=cmd+str(temp)+','
else:
cmd=cmd+str(temp)
cmd=':a05='+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=105.\r\n' #waveform=Arbmemory 05
bcmd=cmd.encode()
ser.write(bcmd)
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
AM変調なので、搬
送波のSINの前に掛け算すればよいんだよね。
JDS6600に表示される波形が、それっぽくないけど、波形としてはチャンとしたのオシロの波形のように見えているので、出力はされていることがわかる。
変調率80%でとりあえず作成してみた。
オシロスコープでは、問題なく表示されている様子だ。
FM変調はよくわからないなー
こんなんで、でよいのかな? 勉強せねば・・・
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)
d=1 #Number of cycles
a=50 #Modulation Percent %/100
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/2048*c*a*math.sin(2*3.14*c/2048))))
c=c+1
if c<2048:
cmd=cmd+str(temp)+','
else:
cmd=cmd+str(temp)
cmd=':a05='+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=105.\r\n' #waveform=Arbmemory 05
bcmd=cmd.encode()
ser.write(bcmd)
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()
ちょっと怪しいけど、式はあってるんじゃないのかな。
もう少しググってみます。