ja1yaz’s diary

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

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

任意波形を作成することに成功した。

調子に乗って、機能としてついていない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の前に掛け算すればよいんだよね。

AM変調波形をオシロスコープで確認してみまた

JDS6600に表示される波形が、それっぽくないけど、波形としてはチャンとしたのオシロの波形のように見えているので、出力はされていることがわかる。

AM変調波形をオシロスコープで確認してみた。

変調率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()

 

ちょっと怪しいけど、式はあってるんじゃないのかな。

もう少しググってみます。