JJ1WKN Log

自作や移動運用関連のログです。

29MHz FM トランシーバーの製作 その5

2020-04-16 | 無線機
その5です。

リニアアンプを追加しました。
入力30mWで2SC2092を使用して2Wを目標に当初C級アンプの実験をしたのですが、かなりのドライブ電力を入れる必要があるようなので、リニアアンプに変更しました。
回路はCYTECさんの2W広帯域パワーアンプの回路を参考にしました。
ドライバは2SC1383、ファイナルは2SC2092を使用しています。

RF基板の全貌です。
はがきケースに押し込むため、一部レイアウトを変更しました。
一番上の横一列が送信基板で左がマイクアンプで下の横一列がリニアアンプで、右端が入力でで放熱器がファイナルです。
右側の縦一列がLPF、リレー、受信基板です。


リニアアンプのアップです。


送信部+リニアアンプのアップです。


正確な出力は測定できていませんが、2Wのパワー計が振り切れたので、それなりに増幅できているようです。

29MHz FM トランシーバーの製作 その4

2020-04-10 | 無線機
その4です。

ケースに入れました。

ANTはMコネでとりあえず、130cm長のヘリカルホイップを付けてみました。


葉書ケースに入れましたが、電池とロッドアンテナを内蔵するスペースがありません。
黄色い小さな物体はコンデンサマイクとPTTSWです。


上面はANT端子とSWボードです。



側面です。OLEDはケース内に取り付けました。



中身です。


エレキー機能はまだ実装していませんが、4つのメッセージがプログラムしてあり、F2A形式(FM-CW)でCW送信できるようになっています。

29MHz FM トランシーバーの製作 その3

2020-04-07 | 無線機
その3です。

ソフトも含めて全部のコンポーネントが揃ったので、接続してテスト中です。
とりあえず葉書ケースに入れる予定なので、ロッドアンテナと電池の内蔵は見送りました。
SW付き2軸のVRをジャンク箱から発掘したので使用していますが、対応するツマミがありませんので圧着端子とピンソケットのピンで代用しています。


送受信の切り替えは、無難にリレーでアンテナと電源を切り替えるようにしました。


29MHz FM トランシーバーの製作 その2

2020-03-30 | 無線機
その2です。

CPUとSi5351Aを実装しました。
画面は128x64dotのOLEDにしました。

画面例です。
1桁目はVFOの種別を示し、VFO-A~DのA~DとメインCHのMが表示されます。
2~4桁は周波数のkHz台で000~300が20kHzステップで表示されます。
5桁目は送信/受信の表示でT/Rで表示されます。
2行目はまだ実装していませんがSメーターでS1~S9、以降は123456で10~60dBを表示します。
この例ではメインCHの29.300MHzを受信しており、Sメーターはダミー表示ですが、S9を示しています。


操作はすべてSWで行い、[A]~[D]のSWを押すと選択されたVFOに制御が移ります。
VFO-Aです。初期値は29.280MHzです。

[U]、[D]のSWを押すと20kHzステップでCHが上下します。

[D]を押してVFO-Aが29.260MHzになりました。


VFO-Bです。初期値は29.260MHzです。


VFO-Cです。初期値は29.240MHzです。


VFO-Dです。初期値は29.220MHzです。


[M]を押すとメインCHに移ります。
メインCHの周波数は変更できません。

29MHz FM トランシーバーの製作 その1

2020-03-21 | 無線機
「プロジェクト59」ブログの「デカテン2号機」を参考にして29MHz FM トランシーバーを製作しています。

ブロック図です。
周波数構成は同じですが、受信用のFM復調ICはいにしえのIC-2Nなどで採用されたMC3357を使用しています。


受信部の一部とファイナルを除く送信部まで製作が進みました。
マイクアンプとMC3357周りは穴開き基板にしましたが、RF関連は空中配線にしました。
今回はデカハンディを目指していますので、コイルを密集させて実装してみました。

送信部側です。
左側がマイクアンプと変調回路、10.7MHzの水晶、混合回路、フィルターとポストアンプです。
受信部のテスト用に送信部の出力にダミーを接続し、受信部で受信しているところです。



受信部側です。
左からANT回路、混合回路、10.7MHzXF、IFアンプで、MC3357/CPU基板のIF入力へと続きます。
SMAコネクタはテスト用にSGから局発信号を入力するためのコネクタです。



両面基板の両面に送信部と受信部を配置しました。



MC3357/CPU基板です。受信部のSメーター回路とArduino、Si5351Aは未実装です。


基板の空きスペースにはArduino用の3.3v電源とArduinoを実装します。
表示はOLEDでケースに実装、制御はSWのみの予定です。
その後制御ソフトの開発を開始します。




Sipeed Longan Nano のテスト その8

2020-01-16 | 無線機
その8です。

テストボードを使用してuBITXの制御機能を開発していますが、GUIとトランシーバーとしての主要機能の開発が終わりました。
Si5351aはまだ実装していませんが、制御処理は実装済なので、今後テストを開始します。

基板上は、SWは左から[S1(Step)][S2(Rit)][S3(A/B)][S4(A=B)][S5(Cw)][S6(Rit0/Ex)][Ptt]、
[Ptt]の下にエレキーの送信速度調整用VRがあります。
[S1]の下にサイドトーン用のピエゾスピーカーがありますが、実際はuBITXのサイドトーンはAFアンプに入力されます。

基板外は、制御装置はパドルと、ロータリーエンコーダーです。


一連の操作方法を示します。

LCDディスプレイの表示内容です。

1行目:Sメーターですが画面はダミー表示で、無線機側に機能を実装していないので今後サポート予定です。
ちなみに表示例はS9を示しており、S1の場合は左の1桁目に1が表示されます。
S9以上は10dB単位で10~40dBまで1~4で表示されます。

2行目:VFO-Aの周波数です。送信と周波数変更などの制御ができるのはVFO-Aだけです。
ロータリーエンコーダーを回すと、設定されたVFO-AのStep周波数で周波数が上下します。

3行目:VFO-AのStep周波数(Step 1k)、VFO-Aのモード(USB)、送受信状態(RX)です。

4行目:VFO-AのRit周波数(Rit + 0)、設定モード表示エリア(set STEP)です。

5行目:VFO-Bの周波数です。VFO-B用のStep周波数、Rit周波数、モードはVFO-Aとは独立して存在しますが、表示されるのはVFO-A用だけです。



[S1(Step)]を押すとStep周波数変更モードになり、現状のStep周波数が4行目に「set STEP」が赤色で表示されます。
Step周波数は10Hz、100Hz、1kHz、5kHz、10kHz、100kHz、500kHzをサポートしており、ロータリーエンコーダーを回すと、Step周波数が上下します。


Step周波数を100kHzに変更しました。


再度[S1(Step)]を押すとStep周波数の変更モードは解除され、VFO-A周波数が設定したStep周波数単位に切り上げられます。
ジェネカバ受信を意識して今の所周波数の制限は設けてありませんが、将来的にはバンド制御をしてバンド毎にVFO-A/Bを設けるかもしれません。
例えば、7MHz帯、Rx7-10、10MHz帯、Rx10-13、・・・など、アマチュア無線バンド1、受信バンド1、アマチュア無線バンド2、・・・にして、各バンドにVFO-A/Bがあると使いやすそうです。
アマチュア無線バンドを外れると受信専用バンドというトランシーバーはありますが、直感的ではないので、周波数順にバンドが変わってほしいところです。操作説明から願望モードに寄り道してしまいました。


[S2(Rit)]を押すと同様にRit周波数の設定です。10Hz単位で上下990Hzの可変ができます。
Ritの場合は設定中でも受信周波数が変化します。


画面は+80Hzに設定中です。


再度[S2(Rit)]を押すと、Rit周波数設定モードは解除されます。


[S6(Rit0)]を押すと、Rit周波数は0Hzになります。


[S3(A/B)]を押すとVFO-AとVFO-Bの周波数、Step周波数、Rit周波数、モードが入れ替わります。


[S4(A=B)]を押すとVFO-AとVFO-Bの設定は同じになり、VFO-Bの各設定値はVFO-Aと同じになります。


[S5(Cw)]を押すとCWモードになり、エレキーが動作するようになります。


再度[S5(Cw)]を押すとメモリー送信モードになり、5つのメモリー内容が表示されます。
メモリー内容はElekinoSdと同様にSdカードに書き込んだ電文テキストファイルから起動時に読み込まれます。


[S1]~[S5]を押すと設定された電文が送信されます。
[S1]を押したところです。1文字づつ送信した文字が表示されます。


送信が終了すると再度5つのメモリー内容が表示されます。


[S6(Rit0/Ex)]を押すとメモリー送信モードは終了して周波数に応じてLSB/USBモードになります。


LSB/USBモードで[Ptt]を押すと、TX表示になり送信状態になります。


前後しましたが、Sメーター表示はダミーなので、とりあえずタイトル表示に変更しました。


回路図です。
LPFはボード上のLEDとパラに接続したので、オリジナルとは論理が逆になっています。


Sipeed Longan Nano のテスト その7

2020-01-02 | その他
本年も本ブログをよろしくおねがいします。

その7です。

このプロジェクトもそろそろ、本格的な開発段階に入ったので、テストボードを作りました。
このプロジェクトでは、トランシーバーのUIを開発するので、ロータリーエンコーダーといくつかのSWが必要となります。

ご本家のuBITXでは16文字x2行のLCDに表示するのですが、1つのファンクションSWとロータリーエンコーダーだけで操作するシンプルな構成なのですが、操作性が好みではありません。
そこでこのプロジェクトでは、LonganNanoの160x80ドットのカラーLCDを活用し情報量を多くし、数個のSWでダイレクトに機能を選択できるようにする予定です。

回路図です。
とりあえず、SWは7個としました。6個は機能を選択するためのSWで1つのAD変換ポートで対応します。
抵抗値は出力電圧が等間隔になるように選びました。
以前のテストではAD変換値が想定外でしたが、きちんと配線すれば想定通りに動作するようです。

PTTはハンドマイクへ引き伸ばすことを考慮して、独立したポートに割当ました。
その他、ロータリーエンコーダー用のポートと、送信時を示す出力ポート、パドル用ポートがあります。


できたテストボードです。
とりあえず、付属のピンをLonganNanoに全部取り付け、片側のみ全ピン外に出してみましたが、LonganNano内蔵のLCD、SDカード、LEDなどで使用されているポートが合計11と意外と多く、全ポートが使用できないので、ポート割当が大変でした。
回路図でポート名の末尾に小文字が付いているポートはLonganNano内蔵デバイスで使用しているポートで、使用しない方が懸命です。

表示しているのは、最近コメントを頂いているMichaelさんから頂いた32x32ドットフォントです。


MichaelさんはLonganNanoで腕時計を開発中とのことで、スッキリした見やすいフォントです。
全フォントはこんなかんじです。
LonganNanoはRTC機能もあるので、トランシーバーに時刻表示機能をつけるのもいいかもしれませんね。




Sipeed Longan Nano のテスト その6

2019-12-19 | その他
その6です。

16ドット東雲フォントを表示してみましたが、気に入ったものがありませんでした。
他のフリーフォントを試してみればいいのかもしれませんが、とりあえず周波数表示用に太字で見やすいフォントが欲しいので、7セグフォントでデザインしてみました。

数字だけなので横8ドットに収まりそうです。8ドットフォントにしてもいいのですが、直線だけの単純なフォントなので、一筆書きで端点をつないで描画することにしました。
線幅が2ドットなので、0~9まで一筆で描くことができました。
黄緑色の数字上の1~dが描く順番です。


下のようにフォントの端点を並べたフォントデータの配列(char font[])と、端点の数は数字によって異なるので、各数字の開始位置を示す配列(int pos[])で構成されます。
例えば、0の開始座標は(1,1)なので、1バイトにパックして0x11、次の端点は(6,1)なので0x61です。
--------------------------------
char font[] = { // C Pos
0x11,0x61,0x6e,0x1e,0x12,0x52,0x5d,0x2d,0x23, // 0 0
0x51,0x61,0x6e,0x5e,0x52, // 1 9
・・・
};
int pos[] = {
// 0 1 2 3 4 5 6 7 8 9
0, 9, 14, 26, 38, 48, 60, 74, 80, 93, 104
};
--------------------------------
以前5x7ドットと10x14ドットを同様の方式で作ったことがあるので、これを流用してもいいのですが、今回は数字だけなのと、LCD.Cでサポートされたフォントとの兼ね合いもあり、で新たにフォントデータを作りました。

表示してみました。
現状は2ドットの線幅で横8ドットですが、もう少し太らして横12ドットくらいがいいのかもしれません。


<追記>

横12ドットフォントのデザインをしてみましたが、一部の線幅を3ドットにしたところ、うまく一筆書きができませんでした。
そこで発想を変えて、例えば0では中心も含めて横11ドット縦14ドットを黒く塗りつぶして、中心の四角を白色で塗りつぶすことにしました。
白抜きにするためのデータは1~2個なので多くても2バイトに収まります。
2と3の例を下に示しましたが、最初に0-0の四角を黒く塗りつぶし、1-1と2-2の四角を白く塗りつぶします。
フォントに必要なデータ量をかなり削減できましたが、こういう芸当ができるのも単純な7セグフォントの利点です。


表示してみました。
中央の横線のみ2ドットですが、とりあえずこのフォントを使用しようと思います。
全体的なレイアウトをして余裕があれば縦17ドットに変更します。
線幅は全部2ドットにする方がスッキリするかもしれませんね。


この後は3桁ごとに少数点を半角で表示して9桁の数値を表示できるようにします。

<追記>

結局、線幅2ドットに統一しました。


フォントデータです。だいぶデータ量を削減できました。赤色がアクティブなVFOのつもりです。
--------------------------------
char font[] = {     // C Pos
 0x33,0x9c,      // 0 0
 0x11,0x5e,0x81,0xbe, // 1 2
 0x13,0x96,0x39,0xbc, // 2 6
・・・
};
int pos[] = {
 0,2,6,10,14,18,22,26,28,32,36
};
--------------------------------

<追記>

無線機パネルの画面レイアウトをしてみました。
表示内容は、VFO A/Bの周波数、Sメータ、周波数ステップ、送受信(Rx/Tx)、RIT周波数、モード(USBなど)です。
せっかくのカラーLCDなので色を付けてみました。



Sipeed Longan Nano のテスト その5

2019-12-17 | その他
その5です。

16ドットの東雲フォントは8種類ありますが、実際に表示してどのフォントを使用するか決めたいと思います。
フォントごとに配列を作成し、各フォントを表示できるようにしました。

----------------------------------
u8 Font01[] = {
// cshnmk16.bdf
// 0123456789
// STARTCHAR 2330 824f 0
0x00,0x00,0x03,0xc0,0x04,0x20,0x08,0x10,0x08,0x10,0x10,0x08,0x10,0x08,0x10,0x08,
0x10,0x08,0x10,0x08,0x10,0x08,0x08,0x10,0x08,0x10,0x04,0x20,0x03,0xc0,0x00,0x00,
・・・・
// STARTCHAR 2339 8258 9
0x00,0x00,0x03,0xc0,0x04,0x20,0x08,0x10,0x10,0x08,0x10,0x08,0x10,0x08,0x08,0x18,
0x04,0x28,0x03,0xc8,0x00,0x10,0x00,0x10,0x00,0x20,0x00,0xc0,0x07,0x00,0x00,0x00,
};

u8 Font02[] = {
// cshnmk16b.bdf
・・・・
};
・・・・

----------------------------------
表示してみました。




Sipeed Longan Nano のテスト その4

2019-12-14 | その他
その4です。

シリアル出力とLCDへの表示ができるようになったので、I2CとADCのテストをしてみました。

Longan Nanoにはファームウェアライブラリが用意されており、サンプルもあるのですが、色々なケースのサンプルがあり、どれが基本的な例なのか良くわかりません。
作例を調べてみまいたが、ファームウェアライブラリの使用例は見つかりませんでした。

ファームウェアライブラリではありませんが、独自にライブラリを開発された方のブログを見つけたので、「なんとなく活動記録。」さんのライブラリを使用させて頂きました。
こちらのページからI2Cを、こちらのページからADCのライブラリを使用しました。

I2Cのテスト写真です。
I2Cの使用例は、マスタとして、スレーブへコマンドを送信するケースがほとんどですが、今回はSi5351aに周波数を設定することにしました。
Si5351aの設定はuBITXのライブラリを使用しました。
Si5351aのスレーブアドレスは0x60の7ビットなのですが、引き続くR/Wビットを含めて0xc0で指定しないと動作しませんでした。


ADCのテスト写真です。

Gndに接続したとき

3v3に接続したとき

AD変換は12ビットなので0~4095のハズなのですが、誤差にしては大きすぎます。
リファレンスは電源電圧と同じと思い込んでいる状態なので、何かの設定が必要なのかもしれません。