jl7gmnのblog

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

2009年12月

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もスポット受信として使用することが出来ます。
アクセスカウンター
  • 今日:
  • 昨日:
  • 累計:

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