jl7gmnのblog

yahooブログから移行してきました。アマチュア無線を中心としたブログです。

SDR

DDS34の応用

イメージ 1

新年おめでとうございます。
新しい年になって、何かをやりたくなった。パソコンの動画検索でSDRを検索し、動画をみていたらふとトランシーバー制御プログラムと周波数制御のプログラムを使ったサブ受信機なるものができそうな気がした。簡単にブロックダイヤグラムをかいて、意味のあることなのかどうかを少し考えてみた。
内容は無線機の制御プログラムとハムスクエアで購入してあったDDS34の制御プログラムのコラボレーションによる受信機である。無線機があるのになぜかといわれると答えようがないが、無線機の受信機能は使わないで、受信部だけをSDRで行うという考えです。去年の構想での受信はトランシーバーを使い送信は自作部+トランシーバーのRFパワー部を使うのとはまったく逆の考えかたです。ただ周波数はSDRのハードとDDS34の制御範囲内なので、モノバンド(必然的に3.5MHz)に限定されてしまいます。
無線機側とRS-232C制御プログラムでのコントロールは、周波数読み取り、Sメータ読み取り、モード設定、マウスホイール機能を使った周波数アップダウン制御等である。この中の、周波数読み取り機能を使い無線機のダイヤルを回転させたときの周波数をDDS34でダイレクトにリアルタイムで発信させるという事がメインの内容です。
現状のRS-232Cプログラムは、タイマー機能を使い繰り返し100msec毎にトランシーバーにコマンドを送りSメータのデータ戻り値を最初にプログレスバーに表示しています。次に周波数読み取りコマンドを送り現状の受信周波数を取り込むというものです。この定期取り込み後の合間でモード設定、周波数設定等のコマンド送出を行うことになります。今回は周波数読み取り部のみを使うことになります。読み取った周波数はトランシーバーのディスプレーとまったく同じテキスト値ですが、SDRの周波数設定用OSC(発振器)にて使用する場合は、SDR受信ソフト上のノイズの盛り上がりのない場所になるようにオフセット周波数を加えて設定する必要があるかも知れません。DDS34は受信でしか使わないので送信については一切考えなくてよいので楽だと思います。ちなみにここでRS-232Cの受信周波数読み取りに使用しているトランシーバーはFT-1000MPです。もう古いトランシーバーになってしまいましたがまだまだ現役です。過去作成した(2008年1月)制御プログラムのフォームを添付しました。(実験用ですので、いろいろなボタンがありますが、今回使うボタンはタイマー開始のTimerStartボタン、タイマーストップのTimerStopボタンと右側のFrequency Up Down枠内のボタンのみです。)
これから作成するフォームはまだデザインが決まっていませんが、その前に読み取り周波数でのDDS34の設定周波数をSDR受信ソフトで設定したときに実際の受信で問題がないのかをDDS34を使いSDRソフト(WinRad)で確認したいと思います。また読み取りのタイマーのタイミングとDDS34の周波数設定とのタイミングも考える必要があるかも知れません。まずは構想まで、過去作成のRS-232CのFT-1000MP制御のプログラムのルーチン等の説明は回を追って添付説明したいと思います。本年もよろしくおねがいします。
m(__)m
I Wish you a happy new 2010 year. Good Luck to you .
to be continue.

VB2008netSDR制御プログラムつづき

イメージ 1

イメージ 2

イメージ 3

表示の制御がほとんどを占めています。シリアルポートのあるパソコンでは通信ポートをCOM4指定から該当するポートに書き換えて使用できます。

私の場合はシリアルポートを2つ使用する予定です。もう1つはハムログ制御用で使用します。送信時のモニタ周波数を受信で使用のトランシーバから読み取り使用する為です。通信の部分に関しては上記のような通信ポート選択等の細かな変更もあると思われますが、現在はこのプログラムでテストしてゆきます。
ついでに上記のフォーム画像も添付しました。とりあえずUPしました。尚実際の交信ではSDRの受信プログラム(VB6の実行EXE形式)も起動します。が、COMポートを使うプログラムの確認と言うことで今回はSDR受信プログラムは添付画像にはありません。プログラムがたくさん起動される為、別モニターをデュアル表示で使えるディスプレイアダプタも考えています。購入ハードのパッケージ画像を添付しました。メーカーはBUFFALOでGX-DVI/U2です。他社でも同様のモデルが出ています。もちろん液晶ディスプレーは必要ですので準備する必要があります。ちなみにパソコンでプログラミングする時はデュアル表示は大変便利で1画面でのプログラミングにはもう戻れません。最大で6台までの追加増設が可能のようです。

【自作プログラムの使い方】
通信のポートをシリアル通信ボタンで開きCOMをONにします。このボタンはトグルボタンで、ONした後の再押下で全て(DTR、RTE)をOFFにして回線を閉じます。このボタンだけでは送受信の制御はしません。(制御はしないというより、初期設定の受信状態のままと言うことです。)
トランシーバーはCOM通信回線がON状態での初期設定は受信状態となります。送信状態にするにはRS232Cグループ内の送受信ボタンをクリックしますとDTRポートがOFFからONになりRXモードからTXモード制御になったことになります。(ハードではDTR端子が-5Vから+5Vの出力へ変わります。)このとき表示ラベルも"RX"から"TX"に変わります。
送信を受信にする場合は、再度送受信ボタンをクリックします。このときDTRポートはONからOFFにかわり、表示も"TX"から"RX"に変わります。送信時状態からのCOM通信回線をOFFにした場合は、全てリセットされ受信の状態へ各ポートを初期化しプログラム立ち上げ時と同じになる様にしてあります。つまりCOM通信回線がOFFでは制御端子はOFF状態であるということです。
送信と受信のコントロールはDTRのみで行いますが、もう1つのRTEポートも制御用の出力端子として使用できますので、将来の拡張用に同じ様にボタンを追加してあります。(予備制御ボタン)先のブログで載せたTXRXコントロール基板のハードもDTRのものと全て同じ回路となります。使い道はいろいろとあると思いますが、現在は予備制御出力としておきます。現在はエラー処理はつけていませんが必要に応じて、プログラム追加したいと思っています。以上がプログラムの使い方となります。
プログラミングのフォーム上にはシリアル通信用コントロールが表示されていませんが、プログラミング時はコントロールであるserialport1をドラッグ&ドロップでフォームにつけますと下側に表示されCOMポートを使用可能となります。プログラミング時の画像を添付しました。
フリーのプログラム言語VB2008Expressを提供してくれたマイクロソフトに感謝感謝です。
プログラムCOMポートとハードとのチェックはまだですが(過去同じプログラム構造でステップモータの制御では問題ありませんでした)、ハードと実際に組んで順次デバッグ確認してゆきます。つづく

VB2008netSDR制御プログラム

イメージ 1

SDR送信受信の制御プログラムをVB2008Expressで書いたのでリストを以下に載せます。
プログラムは単純に出力をONOFFするだけの制御ですのでとても簡単なものです。
以前はVB6のSDR受信プログラムで使用していた物を制御部分のみVBnet用に書き換えたものです。

Public Class Form1
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Me.Finalize()
SerialPort1.DtrEnable = False
SerialPort1.RtsEnable = False
SerialPort1.Close()
End
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

'Dim spflag As Boolean <--- module public
spflag = serialport1.IsOpen

Select Case spflag
Case False
SerialPort1.Open()
Button1.Text = "Now COM on"
Label1.Text = "ON"
'ボタンをイネーブル処理true
Button2.Enabled = True
Button3.Enabled = True
'ボタン名をリセット
Button2.Text = "DTR"
Button3.Text = "RTE"
' Stop
Case True
serialport1.Close()
Button1.Text = "Now COM off"
Label1.Text = "OFF"
'ボタンをイネーブル処理false
Button2.Enabled = False
Button3.Enabled = False
'ボタン名をリセット
Button2.Text = "DTR"
Button3.Text = "RTE"
'DTR、RTSをoff状態にしてCOM offとする。
SerialPort1.DtrEnable = False
TextBox1.Text = SerialPort1.DtrEnable
SerialPort1.RtsEnable = False
TextBox2.Text = SerialPort1.RtsEnable
Label8.Text = "RX"
Label11.Text = "OFF"
End Select
Dim kakunin As Boolean
kakunin = serialport1.IsOpen
End Sub

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'Dim serialport1 As New SerialPort <-- module public
'初期設定のみ シリアルポートは close状態
With serialport1
.PortName = "COM4"
.BaudRate = 4800
.Parity = Parity.None
.DataBits = 8
.StopBits = StopBits.Two
.Handshake = IO.Ports.Handshake.None
' .DtrEnable = True
' .RtsEnable = True
End With
'RS232C INFO
TextBox4.Text = SerialPort1.BaudRate
TextBox5.Text = SerialPort1.Parity
TextBox6.Text = SerialPort1.DataBits
TextBox7.Text = SerialPort1.StopBits
TextBox8.Text = SerialPort1.Handshake
'制御状態初期表示
Label8.Text = "RX"
Label11.Text = "OFF"

SerialPort1.DtrEnable = False
SerialPort1.RtsEnable = False

TextBox1.Text = SerialPort1.DtrEnable
TextBox2.Text = SerialPort1.RtsEnable
TextBox3.Text = SerialPort1.PortName
'ボタンをイネーブル処理false
Button2.Enabled = False
Button3.Enabled = False

End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
If SerialPort1.DtrEnable = False Then
SerialPort1.DtrEnable = True
Button2.Text = "DTR on"
TextBox1.Text = SerialPort1.DtrEnable
Label8.Text = "TX"
Else
SerialPort1.DtrEnable = False
Button2.Text = "DTR off"
TextBox1.Text = SerialPort1.DtrEnable
Label8.Text = "RX"
End If

End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
If SerialPort1.RtsEnable = False Then
SerialPort1.RtsEnable = True
Button3.Text = "RTS on"
TextBox2.Text = SerialPort1.RtsEnable
Label11.Text = "ON"
Else
SerialPort1.RtsEnable = False
Button3.Text = "RTS off"
TextBox2.Text = SerialPort1.RtsEnable
Label11.Text = "OFF"
End If
End Sub
End Class

Module Module1
Public serialport1 As New SerialPort
Public spflag As Boolean
End Module

以上がプログラムです。文面の制限が5000文字なので使い方は次にアップします。

トランシーバー化

イメージ 1

イメージ 2

SDRトランシーバ化の各ブロックを書いてみた。使用するのは、先に作成済みのSoft66DBとトランシーバ化するための送信用447kHzとSDR受信用x4倍の1789kHzのOSC(作製済み)と周波数コンバータ(作製済み)と455kHzの送信用RFアンプ(未作製)とMICアンプ(未作製)と送信、受信のコントロール回路(作製中)である。送信部のファイナル部を既存のTS-140S 100W出力を利用するので回路的には製作する部分が減り簡略化できる。ブロックダイヤグラム的なユニット接続図を描いたので添付しておきました。詳細の回路は作製済み以外のもので、送信受信のコントロール回路の図面も添付しておきました。この回路はRS232Cを利用した制御回路で、WindowsXP上のプログラムから送信受信をコントロールするものです。RS-232CのDTR制御を送信受信の切り替えに使います。パソコン上は-5Vから+5Vの出力なのでゲート回路等のハードで扱えるように0Vから+5Vへのレベル変換用にゲートICの4050(バッファ)を用いています。バッファのあとにはサウンドブラスターからの信号をONOFFするリレーをスイッチング制御する為のダーリントンにしたトランジスタ2SC945と2SC1678を使用しました。また受信回路ONOFF用にインバータトランジスタC114YFという抵抗内臓トランジスタをオープンコレクタで使い、抵抗2.2kΩを電源につなぎインバータとして送信MIC制御と相反でコントロールしました。リレーは手持ちのリードリレーを用いています。半導体SWのON抵抗よりは抵抗値が小さいので良いのではないかと思う。
DTR制御のプログラムはマイクロソフトのVisualBasic2008Expressのシリアル制御で行うので、後でプログラムも載せる予定です。現在はこの回路のハード部を製作中なので出来次第プログラムで送信受信の制御の確認をしてみたいと思います。全体的なところでは送信はJI3GAB局のSSB発生プログラムで送信をパソコンで行い、受信はTS-140の455kHzIFをパソコンに繋いだSoft66(IF7.56kHz)で受信プログラムはVB6の自作プログラムで行います。もちろん既存のソフトWinradもスポット受信として使用することが出来ます。

SSB信号発生回路作製

イメージ 1

イメージ 2

イメージ 3

イメージ 4

イメージ 5

SDR受信は各種提供されている受信プログラムでも自作のVB6のプログラムでも受信できたが、SSBの発生の回路は意外と情報が少ない。パソコンと絡めて使用するような情報もあまりない。すでにインターネット上で公開されているJI3GAB局のSSB発生プログラムのホームページ上に載せてあったコンバータ回路を参考に455kHzSSBの発生回路を作製することにした。氏はSDR分野の送信用のプログラムを作成し公開しているので、アマチュア無線界のSDR分野で知らない人はいないくらい有名な方です。氏の回路ではゲートICを使い信号である12kHzとキャリアでIFの455kHzのSSB信号を発生変換する回路でとても簡単にまとめられています。
私の手持ちのゲートICで4053が一個しかなく447.44kHzのキャリア発振用として使っているもう一個の分周用の4053を、別のゲートICで設計し代用することにした。4053の内部でやっていることを分周の原理回路をシリーズに組み合わせて作製しました。この回路は2009年の1月19日すでに、SDR受信の実験で使用していたものです。回路を添付してあります。
源発振用のクリスタルは3.579545MHzをインバータのMC14049Bで発振させ、2個さらにシリーズにバッファとして使い次段の分周ゲートIC TC4013BPに入れて1/2分周し1.789MHzを得ます。次に同様にTC4013BPに入れて更に1/2分周し0.895MHzを得ます。最後にもう一段TC4013BPに入れて1/2分周し目的の0.4474MHzを得ます。このようにDフリップフロップをシリーズ接続し分周処理することで簡単に4053の代用ができます。変換用のキャリアは上記回路を使用してあります。SSB信号は氏のパソコンプログラムを使用します。作成されたSSB信号がサウンドカード出力から出てきます。(8kHzSSB)今回の作製はサウンドカードからのSSBオーディオ出力をシングルのOPアンプを2個使い位相をずらしマルチプレクサの4053に入れて、上記キャリア発振の出力周波数447.44kHzでスィッチングすることで、4053の出力14ピンに455kHzのSSBが出力信号が発生出力されます。この出力を一石のトランジスタIFアンプで増幅しこの後のセラミックフィルタで目的の455kHzのSSB信号の片側を通過させてSSB信号を得ます。元信号を≒8kHz(7.56kHz)として考えましたので、実際の4053の出力には439kHzのイメージSSB信号と455kHzのSSB信号成分が現れることになります。使用したセラミックフィルタはFタイプですので、455kHzを中心に-6dB帯域は12kHz、-50dB帯域は24kHzです。通過帯域は443kHzから467kHzまでがー50dB帯域となりますので、このフィルタでは439kHzのイメージ信号が帯域外となり減衰され455kHzの成分のみが通過し目的のSSB信号ができます。しかしながらキャリア周波数は447.4kHzなのでこのセラミックフィルタではキャリア漏れが相当あると思われます。よってセラミックフィルタとしてはHタイプのフィルタ-6dB帯域6kHz、-50dB帯域16kHzがキャリア漏れなく使用できそうです。手持ちにないので通販で購入準備しなければなりません。とにかくフィルタ以外は回路は組み立てが終わったので順次回路の動作確認をしてゆきたいと思います。完成した基板の写真を添付しておきました。つづく
アクセスカウンター
  • 今日:
  • 昨日:
  • 累計:

QRコード
QRコード
  • ライブドアブログ