JH7UBCブログ

アマチュア無線、マイコンなど趣味のブログです。

HSPプログラミング

[ リスト | 詳細 ]

記事検索
検索

全8ページ

[1] [2] [3] [4] [5] [6] [7] [8]

[ 次のページ ]

 12月5日に開催されたFCWA CW QSO パーティのログがコンテストマネージャーの当局に毎日のように届きます。
 
 ログのほとんどは、JARL形式の電子ログです。
 
 ただ、JARL形式の紙ログも受け付けますし、EXCELやWORDで作成したログも受け付けています。
 
 これらを集計するのは、EXCELを使っています。一時はデータベースソフト「桐」を使ったこともあるのですが、使い勝手からEXCELになりました。
 
 電子ログから自動的に集計用データを生成するため、以前にHSPでプログラムを作成しましたが、パソコンの故障でプログラムが消滅してしまいました。
 
 そこで、改めてHSPでプログラミングをしました。のんびりやっていますので、約2週間もかかってしまいましたが、サマリーの表示と重複交信チェック、最終交信時間表示など集計に必要な情報が電子ログから得られるようになりました。
 
 JARL形式の電子ログというのは、例えば
<SUMMARYSHEET VERSION=R1.0>
<CONTESTNAME>第7回FCWA CW QSO パーティ</CONTESTNAME>
<CATEGORYCODE>CW</CATEGORYCODE>
<CATEGORYNAME>一般</CATEGORYNAME>
<CALLSIGN>JH7UBC</CALLSIGN>
<SCORE BAND=7MHz>10,10,0</SCORE>
<TOTALSCORE>10</TOTALSCORE>
<ADDRESS></ADDRESS>
<TEL></TEL>
<NAME>畠 惠治</NAME>
以下省略
 
のように< >タグでデータ名が示され、</ >タグでそのデータが終わります。
ですから、タグ名を取得して、次にデータを取得すればよいわけです。
 
サマリー表示部分は、比較的楽にプログラミングができるのですが、ログ部分<LOGSHEET>から</LOGSHEET>までが、ログを作成したソフトによって、形式が様々で、非常にプログラミングしにくいのです。
 
工夫をして、重複交信チェックと最終交信時間チェックができるようになりました。
 
文句を言ってもしかたがないのですが、JARL形式の電子ログというのは、データベース化しにくいフォーマットですね。どうして、このような形式にしたのか大いに疑問を感じます。データベース化しやすい形式に変更はできないものでしょうかね。JARLさん。
 
さて、FQPのログは今月いっぱい受け付けております。FQPに参加されてまだ、ログを提出されてない局がありましたら、ぜひログの提出をお願いしますね。
 
 

AD9850DDSでSGその3

 HSPプログラムからシリアル通信で周波数データを送り、PIC16F88で受信し、そのデータでAD9850DDSモジュールにその周波数を発生させます。通信速度は9600bpsです。
 
イメージ 1
 
 まず、HSPプログラムの画面です。前回の記事との違いは、周波数データを16進8文字で送信するように改良しました。(6文字の場合、上限周波数が、16.777215MHz=FFFFFFhで上限です。) 
 テンキーから周波数データを入力し、ENTキーを押すとデータが送信されます。送信データ(16進)は、右上に表示されます。また、STEP周波数単位でUP/DOWNができ、UP/DOWNボタンを押すと周波数が変更され、周波数データが送信されます。
 
イメージ 2
 
 PIC16F88のプログラムは基本的にPICでAD9850DDSの記事と同じですが、LCD関係のルーチン、タイマールーチンなどをカットし、周波数データ16進文字からバイナリ変換ルーチン、AUSARTによる通信ルーチンを加えました。
 
 ブレッドボードに組んだ回路です。
イメージ 3
 
 HSPプログラムから送ったデータで、30.000000MHzを発生しています。(周波数カウンタの表示は、30000219Hz)周波数カウンタの上限周波数32MHzまでは発生を確認しています。
 
 最後に回路図です。
イメージ 4
 
 実験回路ではまだ高速オペアンプLM7171のポストアンプがついていません。
 
 この批反転アンプのゲインは、1.9倍〜11倍の間で調整できます。カップリングコンデンサが104(0.1μF)ですので、100KHz以下ではゲインが低下します。
 
 なお、プログラムの詳細は、JH7UBCホームページに掲載します。

AD9850DDSでSGその2

 AD9850DDSモジュールをPIC16F88でコントロールし、MAX232Nを使ってシリアル通信で周波数を設定できるようになりました。
 
 そこでHSPプログラムで、パソコンからDDSをコントロールすることにします。
 
 コントロールパネルのデザインと基本的なプログラムができました。
 
イメージ 1
 
 周波数は右側のテンキーでセットし、ENTを押すと右上に表示されている16進データ6桁を文字でDDSに送信します。通信速度は、9600bpsです。
 
 1から1MHzまで7段階で周波数STEPをセットでき、UP/DOWNで周波数を変化させることができます。
 
 一応周波数をセットできるのですが、まだバグがあり修正が必要です。完成にはもう少しかかります。
 
 このプログラムを発展させれば、周波数をスイープすれば、(CYTECのFRMSのように)フィルタなどの特性を測定する装置やスペクトルアナライザなどを製作できるのではないかと考えています。
 HSPによるCW decoder(モールス解読器)は、Arduino CW decoderで解読のアルゴリズムができましたので、割と簡単にプログラミングすることができました。
 
 まず、パソコンとUSB-IOの接続です。下の図のように、0番ポート(4ビット)の0番ピンを入力ピンとしました。
 
 入力は、1kΩの抵抗を介して行います。(USBインバータボードの回路を参考にしました。)ここにエレキーを接続しました。これで、十分ON/OFFできました。
 
イメージ 1
 このUSB-IOを使えるようにするには、まずHSPプログラムで
 
#include "hspusbio.as"として、USB-IOを使用できるようにします。
 
次に、 uio_find で、USB-IOの接続を確認します。
 
更に、uio_out 0,0
        uio_out 1,15
として、0番ポートは全ビット0に、1番ポートは、全ビット1に初期化します。
 
USB-IOで入力する場合は、入出力ポートに必ずHを出力した上で、オープンであれば、H、アースにショートされればLという具合に入力します。この場合、電流の流入量に十分注意する必要があります。そんなわけで、安全のために1kΩが入っているのでしょう。
 
エレキーをキーイングして、短点の時間をHSPのプログラム確認しました。Arduinoのようにms単位の内部タイマーを持っていませんので、プログラム上にカウンタを設置して何カウントするかを確認しました。
 
標準的な20wpmの時の短点の時間は60msですが、12カウント程度でした。USB-IOの読み書き時間は、意外に遅く200バイト/秒程度なのです。
 
でも、dot(短点)とdash(長点)を区別することができますので、Arduiinoと同じように、モールス符号を内部コードに変換するプログラミングできました。(内部コードはArduinoの場合と同じにしました)
 
内部コードから、対応する文字を表示する方法は、Arduinoの時のif文やswich case文を使うのではなく、文字配列にあらかじめ内部コードに対応する配列に文字を入れておいて、内部コードで一発で文字を選ぶ方法をとりました。
 
パソコンの場合は、メモリーの量を気にする必要がないのと、HSPの動作がそれほど速くないので、この方法にしました。
 
一応プログラムが出来て、テストの様子です。USB-IOに接続している基板は、モールスくん3号で使用したものに1kΩの抵抗を介して入力できるように改造して利用しました。
 
イメージ 2
 
余談ですが、パドルの下の黒い敷物は、カインズホームで売っているゴム製の滑り止めの敷物です。軽いキーの場合、これを敷くと滑らなくてFBです。
 
HSP CW decoderの画面です。
 
イメージ 3
 
*印が出ているのは、打ち間違えです。モールス符号にない符号を打ったときは、*印を表示するようにしました。
 
一応解読して表示します。今のところ欧文だけの対応です。表示ウインドウにスクロール機能がないので、画面がいっぱいになったら、「cls」ボタンを押して、画面をクリアします。
 
モールスの速度調節は、手動で「SPEED+」と「SPEED-」を押して調整します。今のところ、dotとdashを判定するしきい値を表示させています。
 
まだまだ未完成ですが、JH7UBC Home Pageにスクリプトを公開しました。

USB-IOについて

 HSP モールス解読器に使うUSB-パラレルI/Oインターフェース、テクノキットのUSB-IOについて、おさらいをしておきます。
 まず、回路図ですが、Web上にまともな回路図がないので、自分で描いてみました。(テクノキット社のWebページのUSB-IOの部品表の抵抗値が間違っているのは、困ったものです)
 
イメージ 1
 
 汎用の入出力ポートが2つあります。PORT0は、8ビット、PORT1は4ビットです。
 
 この2つのポートは若干異なっていて、シンク電流は、PORT0が1ポートあたり約1mAでPORT1が1ポートあたり約15mAです。
 
 PORT1ではLEDを点灯することも難しいので、何かしようとすれば、CIやトランジスタでドライブする必要があります。
 
 実験用には、別売のUSBインバータボードUSB-IVBがあります。
 
 更に、USB-IOの入出力ポートは、出力と入力が接続されています。入力に使うときには、ポートにHIGHを出力して使用します。この時、電流の入流量には十分注意する必要があります。
 
 パソコンでコントロールできるパラレルポートを簡単に実現してくれる貴重なインターフェースだと思います。
 
 現在、Km2Net社がUSB−IOの後継として、USB-IO2.0を販売しています。秋月電子からもその低コスト版が販売されています。こちらは、PICを使っていますので、電流ももっと大きくとれます。
 
 ただ、Webで調べてみると、HSPではうまく使えないようです。(もし、使えるようでしたら教えてください)

全8ページ

[1] [2] [3] [4] [5] [6] [7] [8]

[ 次のページ ]


.
JH7UBC
JH7UBC
男性 / 非公開
人気度
Yahoo!ブログヘルプ - ブログ人気度について
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

よしもとブログランキング

もっと見る

プライバシー -  利用規約 -  メディアステートメント -  ガイドライン -  順守事項 -  ご意見・ご要望 -  ヘルプ・お問い合わせ

Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.

みんなの更新記事