2016年12月11日日曜日

Multi Band DDS-VFO controller(Ver3) for 1.8inch TFT

 これまでVFO controller は2.2inchTFT LCDを中心に開発をしてきた。
 最近 海外のHomebrew仲間(Mr.Mikele)から、2.2inchTFTが入手しにくくなってきているとの便りが届いた。
確かにAliexpress等を調べてみると2.2inchの出品が少なくなっているような気がする。また値段も高くなっているようだ。そこでDDS-VFO controller Ver.3を、今のところ入手しやすい1.8inchTFTに対応できるSketchを作成した。
PHOTO-1

 今回使用した1.8inchTFTはST7735Sと言うドライバーが使われている。
PHOTO-2
PHOTO-3

 2.2inchと1.8inchを比べると多少画像が荒くなるが使用上の問題は無い。また、フォントが軽くなった分表示がスムーズになったようだ。動作、使用方法は2.2inchTFTと同じである。回路も基本的に同じである。ただTFTのバックライト用抵抗51Ωx2を51Ωx1に変更しているので注意。
 スケッチの書き込み方法について再度以下に記しておく。
  1. VFO controllerのハードウェアを製作し、Arduino nanoとパソコンをUSBで接続する
  2. Arduino IDE(1.6.5、1.6.12で確認済み)を立ち上げる 
  3. ダウンロードサイト(folder NKDVFO18V3.1)からダウンロードした"vfo_v3_18eep.ino"をIDEに読み込みnanoに書き込む
  4. 書込みが終了しArduino nanoが立ち上がるとTFTに以下(PHOTO-4)の画像が表示される。
  5. 次にダウンロードサイト(folder NKDVFO18V3.1)からダウンロードした(NKDVFO18_Ver3_1.ino)をIDEに読み込みnanoに書き込む。
  6. 書込みが終了すると以下の画面(PHOTO-5)が表示されて動作状態となる。
  7. 終了
PHOTO-4
PHOTO-5

 VFO controller has developed using 2.2inchTFT LCD up to now.
 I have received the comment from my overseas Homebrewer (Mr.Mikele) recently.
He said "I am waiting tft 240x320 long long time ohhhh"
 When I checked Aliexpress, I think exhibition of 2.2inch is little. Maybe it also becomes expensive.
 So I mede Sketch for DDS-VFO(Ver.3)using 1.8inchTFT. It's TFT is using ST7735S driver.
 When 1.8inch and 2.2inch TFT are compared, a picture becomes a little rough, but there are no problems on the use. That a font-data became light, maybe indication became smooth. The movement and use method are same as 2.2inchTFT. The circuit is also same basically.
But Resistance 51 Ω x2 for backlights of TFT is changed to 51 Ω x1, so please be careful.
 It's written on below once again about programming method of a sketch.

  1. Hardware of VFO controller is made and Arduino nano and a PC are connected by USB.
  2. Arduino IDE (It's checked in IDE1.6.5 or 1.6.12.) is started.
  3. "vfo_v3_18eep.ino" downloaded from my download site.(folder NKDVFO18V3.1)Read in IDE and it7s written in nano.
  4. When writing in ends. The screen(see PHOTO-4) will be shown to TFT.
  5. Next "NKDVFO18_Ver3_1.ino" downloaded from my download site(folder NKDVFO18V3.1). Read in IDE and it's written in nano.
  6. When writing in ends. The following screen(see PHOTO-5) will be shown to TFT. 
  7. End. It's be operating state.
73's

2016年11月25日金曜日

DDS-VFO controller by STM32-arduino

ブルガリアから嬉しい便りが届いた。



ブルガリア在住のHomebrewer Mr.Veselin Georgiev(LZ2WSG)がaruduino を使ったモノバンドDDS-VFO コントローラー(Ver3.0)をSTM32-arduinoに載せ変えて動作させたとの事であった。
STM32-arduinoというもの自体良く知らなかったが、調べてみると中々魅力的なMPUである。
ST マイクロのARM(ARM32Cortex-M3)を搭載し、動作クロック72Mhz、64Kbフラッシュメモリ、20KbSRAMを搭載した高性能ボードでarduino-nano互換となっている。開発環境もArduino IDEで可能でスケッチもそのままで動作するようである。MPUからするとarduino duoに近い性能である。
スピードを要求されるプログラムであればお勧めのボードである。値段も中国なら$1.5位で買えるのも嬉しい。一度使ってみるつもりである。


ブルガリアのアマチュア無線のホームページというのが有り、ブルガリアのHAM仲間の作品が満載されており、Mr.Veselinの作品も見られる。実に豊富な情報が満載である。一度見てみると面白いと思う。但しブルガリア語なので機械翻訳が必須。それでも分からないことがある。
 彼らの基本はOPENである。総ての情報を開示し、皆で共有しようというすばらしい考え方である。無線を通じて皆が情報を共有し無線を楽しむ。本当にそう思う。この考え方に共感を覚えるとともに、自分もそうありたいと思う。 Mr.Veselinに感謝 !!
尚、STM32-arduinoのソフト関係は以下に公開されている。
http://www.kn34pc.com/tmp/arh/stm32_nkd_vfo/

73's

I have received a wonderful letter from Bulgaria.
Homebrewer Mr. Veselin Georgiev (LZ2WSG) of Bulgarian residence. He made my mono-band DDS VFO(Ver3.0) on STM32-arduino, 
I didn't know anything as STM32-arduino well, but when it'll be checked, it's quite attractive MPU.
It's equipped with STMicro ARM(ARM32Cortex-M3) and it is arduino-nano interchange by a high-performance board equipped with operation clock 72Mhz, 64Kb flash memory and 20KbSRAM. The development environment is also possible in Arduino IDE1.6.5, and a sketch is also just as it is and they seem to move. It's the performance near arduino duo.
When it's the program of which you request the speed, it's a recommended board. 
When it's China, it's possible to buy it for 1.5 dollars. I'm also happy that can get it very inexpensively.

There is a home page of a Bulgarian amateur radio. Many works for  Bulgarian HAM appear on it. Works of Mr.Veselin is also seen. Very rich information is filling. 
 Their basis is OPEN. A wonderful way of thinking which will elucidate all information and share by everyone. Everyone shares information and enjoys through a radio. I think really so. It would like to feel sympathy with this way of thinking as well as be oneself so, too. 
Software of DDS-VFO by STM32-arduino is opened below.
http://www.kn34pc.com/tmp/arh/stm32_nkd_vfo/


Thank you very much Mr.Veselin LZ2WSG

DE JA2NKD

2016年11月20日日曜日

Arduino DDS Controller with TFT LCD(Ver.4) Added Keypad

 海外の自作仲間からMulti-Band VFOをキーパッド対応にしてほしいという依頼があった。最近のSNSのお陰で、世界中の無線家と繋がることが出来るようになった。無線で繋がり、インターネットで繋がり、情報交換が出来る時代なのだとつくづく感じる。


 マルチバンド対応VFOともなると操作のためのスイッチ等が増加し、前回のVer3ではI/Oの不足からアナログ入力を使用してスイッチを増やした。今回キーパッドともなると一挙にスイッチが増えることと、前回まででArduino-nanoのメモリーも限界に近く、これ以上の機能増加は無理である。
 そこで今回はArduino-mega2560を使用することとした。megaであれば、I/Oもメモリーも十分すぎるほど増える。逆にもっと機能を増やしてみたくなる。とはいえまだArduinoを始めて半年あまりなので、まだよく理解できていないことから、キーパッドによる操作のみの改良とした。今後アイデアが出てきたら機能アップをしていきたいと思う。


 キーパッドはごく一般的な4x4の16キーのものを使用している。制御線は4x2=8本を使用している。このキーパッドもご他聞に漏れずライブラリーが用意されている。こういうところがArduinoの良いところであろう。難なく制御が出来た。
 逆に今まで使用してきたロータリーエンコーダーがうまく動作しない。これはハードウェアPin割り込みがUNO,nano等とCPUの違いにより動作が旨くいかないようである。暫く検討したが、私の知識では解決できなかった。そこで、JA2GQPさんにHELPしたところ、ばっちり動作するようライブラリーを改造してくれた。誠にうれしい限りである。

 キーパッドでは、テンキーと付属機能用のスイッチを割り付けている。テンキーでは、バンドを直接呼び出すダイレクトキーとして、又周波数直接入力時のテンキーとしての2つの機能を持たせている。各スイッチの機能を以下に示す。
Input frequency dirctly

  • テンキー(1-9,0)
     バンドを直接選択。押せばそのバンドに移行する。移行前の周波数情報などはROMに記憶し、次回はこの周波数で呼び出される。GEN(0)キーは、ゼネラルバンドとして450KHzから30MHzまでのゼネラルカバーとしている。これによりMWからHFまで使用できるようにした。ただしこのバンドの時は受信専用で送信できないような措置を行っている。
     またENTキーを押した後は、周波数を直接入力するテンキーとなる。
  • STEP エンコーダーの周波数ステップを変更(10Hz,100Hz,1KHz,10KHz)
  • MODE
     
    電波形式を変更する。LSB,USB,CW,AMと変更され、VFO周波数のシフトも行う。尚、モード情報はI/Oの(38,39)にバイナリーで出力しているので、キャリア周波数変更等に使用できる。
  • MEMO
     
    メモリー機能は、今のところあまり活躍していないが、電源を切るときに現状情報を記憶し次回ONしたときに同じ周波数、モード、ステップで立ち上がる。
  • RIT
     Ver.3と同じで受信専用で±10KHz可変可能
  • ENT
     ENTキーを押すと周波数直接入力モードになり、画面上に( F: )が現れ、テンキーで周波数を打ち込むとここに表示される。尚、入力できるのは、現在のバンドの上限下限の範囲内としている。自動的にバンドを設定するようにはしていないので、入力したいバンドに先に移動しておく必要がある。周波数を入力後再度このキーを押すことにより切り替わる。
  • CLR
     
    周波数直接入力を行っているとき、入力ミスをしたときにクリアーする。
 I/Oの機能を以下に示す。
  • PTT(44,45)
     44pinをLowにすることにより送信状態となり、画面上に「ON AIR」と表示する。送信時は45pinがHighに替わり、送受信回路を切替制御できるようにしている。
  • MODE(38,39)
     モードによりこの2pinにバイナリーで情報を出力している。これでフィルタやキャリアの切替を行うことが出来る。(回路図参照)
  • BAND(34,35,36,37)
     選択されたバンド情報をバイナリーで出力している。(回路図参照)
  • メーター
     Ver.3と同様でSメーターと送信パワーメーターを兼用した入力。(0-5V)
  • エンコーダー(2,3)
     エンコーダー入力でA相、B相入力。
  • LCD(47,48,49,51,52)
     2.2inch TFT液晶との接続
  • DDS(40,41,42,43)
     AD9850DDSと接続。尚、AD9851にも対応できるが、ライブラリーの一部修正が必要。
 次にソフトウェアであるが、スケッチと回路図は、小生のダウンロードサイトにUPしてある。
  1. 必要なライブラリーをそろえる。
     LCD用ライブラリー
      * "Ucglib.h"     https://github.com/olikraus/ucglib
  2. AD9850用ライブラリー
      *   http://elecfreaks.com/store/download/datasheet/breakout/DDS/EF_AD9850_library.zip
  3.  キーパッド用ライブラリー
      *     http://playground.arduino.cc/Code/Keypad
  4. エンコーダー用ライブラリー
    * https://sites.google.com/site/ja2gqp/home/Rotary2560.h?attredirects=0&d=1
    上記ライブラリーを入手したらIDEに登録を行う。尚、エンコーダー用ライブラリーはメインのスケッチと同じフォルダーに保存する必要があるので注意されたし。
 IDEでバンド情報書き込み用スケッチ「VFO_V4_eep.ico」を開きmega2560に書き込む。
IDEでメインスケッチ「NKDVFO22_Ver4_001.ico」を開きmega2560に書き込む。
この手順で書き込まないと旨くいかない。

回路図



 A keypad is using 4x4 keys of 16key. A control line is using 8 lines. This key pad library is prepared.  With no trouble I could control.
 The rotary encoder used so far conversely doesn't move well. Hardware Pin_interrupt is UNO,nano and mega, movement is better and they don't seem to go to be different. It was considered for a while, but it couldn't be settled by my knowledge. JA2GQP He made me encorder ribrally for mega2560. Very thanks. 
 Keypad is allothed a numerical keypad and the switch of functions

Numerical keypad (1-9,0)
 A band is chosen directly. When pushing it,  shift to the band. Frequency information before a shift memorizes in ROM and is called by this frequency next time. The GEN (0) key is made a general band from 450KHz to 30MHz. You can use from MW to HF. But only receiving. 
 After pressing a [ENT] key, it'll be the numerical keypad which inputs a frequency directly.

STEP
 The frequency step of  encoder is changed (10Hz,100Hz,1KHz,10KHz).
MODE
  It's changed with LSB,USB,CW,AM, and a VFO frequency is shifted. Mode information is output  binary  to I/O(38,39), so it can be used for carrier frequency change.
MEMO
 When you push {MEMO] then memorizing the current state information and turning on next time started by the same frequency, mode and step.
RIT
 It's same as Ver.3  +/-10KHz variable possible
ENT
 When a ENT key is pressed, it'll be a frequency direct entries mode, and when [ F: ] appears on the screen, and a frequency is driven in by a numerical keypad, it's indicated here. It's necessary to move to the band you'd like to input first.  choose a frequency as pressing this key once again after input and switch over.
CLR
 When doing a frequency direct entries, when doing an input mistake, it's cleared.


The function of the I/O is indicated below.

PTT (44,45)
 It'll be transmit mode by making 44pin Low, and indicates "ON AIR" on the screen. When sending,  45pin change  High. It can use TRX circuit and control.
MODE (38,39)
 Mode information output  s 2bit binaly . It's possible to change a filter and a carrier with this. (Circuit diagram referring)
BAND (34,35,36,37)
 Band information output. (Circuit diagram referring)
Meter
 The analog input which was like Ver.3 S-meter and transmission power meter input. (0-5V)
Encoder (2,3)
 By encoder input.
LCD (47,48,49,51,52)
 2.2inch  Connection with TFT LCD.
DDS (40,41,42,43)
 AD9850DDS connection.

Next it's software. Sketch and a circuit diagram is my download site.

 Library for LCD
  * "Ucglib.h"
      https://github.com/olikraus/ucglib

 Library for AD9850
  *               http://elecfreaks.com/store/download/datasheet/breakout/DDS/EF_AD9850_library.zip

 Library for keypads
  * http://playground.arduino.cc/Code/Keypad

 Library for rotaly encoders
*
 https://sites.google.com/site/ja2gqp/home/Rotary2560.h? attredirects=0&d=1
 This library is necessary in the same folder as a main sketch, so please be careful.

If  get the above library, it's register with IDE except
A sketch for band information writing in "VFO_V4_eep.ico"  write in mega2560.
Main sketch "NKDVFO22_Ver4_001.ico" writes in mega2560.

73's



2016年10月30日日曜日

Coffee break

 たまには違った感じで、息抜きになればと書いてみました。

( 其の一 ) 半田リール台


 前々から半田リール台が欲しいと思っていた。立てれば半田が伸ばしにくい、横にすれば転がってしまう。買っても1000円位のものなので、早く買えばいいのだが、なかなか買えない。不思議なものだ。
 ふと思いつきで作ってみようと思ったわけだが、作るとなると色々考える。木板を切って作る、アルミ板をまげて作るか、そう考え出すと買ったほうがいいかとなる。堂々巡りだ。
 先日100円ショップに行った時、何かいいものは無いかなと店内をうろついてみた。アクリルケースなど色々ある。そんな商品の中で「あっ、これだ」と直感的に買ったのが上の写真の箱だ。
 商品名を見ると「プチヴェールボックス レギュラー」とある。素材はポリプロピレン
珍しく日本製である。

 説明の必要もあまり無いと思うが、半田のリールをどう入れるかということと、半田の取り出し口をどうするのか。の2点である。
 上の写真でちょっと見にくいが、両サイドに薄い木の板を心棒が乗っかるように切込みを入れたものを両面テープで止めてる。板についている黒いものは箱の幅が半田より少々大きいため横ぶれ防止にスポンジを貼り付けている。これで載せたところが下の写真。


 半田の取出しが以外に苦戦。最初千枚通しでアナを開けとおしていたが、以外にテンションが大きく引き出しにくいことが分かった。そこで何か無いかとジャンク箱の中を漁って、プラスチックで中に穴の開いたものを偶然発見。これをはめ込んでみたら、Good!  自画自賛
 これで蓋がついて、取っ手が付いた恒久半田リール台が完成した。尚、そこにはゴム足を付けて滑り止めとした。


(其の二) 半田付け作業台

 私はサンハヤトのユニバーサル基板を主に使っている。これは機能単位にブロックで作ることが出来、ケースに入れるときも寸法等が明確なので、配置検討や加工がらくだ彼である。
 しかしこのユニバーサル基板は小さく、部品を付けて半田付けをする際、動いてしまいやりにくい。基板をはさんで回転するようなTOOLもあるが、以外に自由に使えない。
 

 そこで、基板を押さえるものを作ってみた。構造は至って簡単。上の写真のようなものだ。
ユニバーサル基板がぴっちり挟まる幅となっている。半田付けをするときは下の写真のように斜めに置くことにより、部品が付いていても平らな状態で半田付けできる。
 木板は、安易に動かないようにある程度の重さと高さがあったほうがいい。


 
 簡単なものであるが、今は手放せない重要なTOOLとなっている。

2016年10月27日木曜日

Si5351PLL VFO controller ( Multi-band )

DDS VFOcontroller(Multi-band)が出来て間もないところであるが、早速JA2GQP-OMがSi5351PLLバージョンを作ってくれました。

 これでDDS、Si5351PLLと選択肢が増えた。
 Si5351のライブラリーはArduino フォーラムにあるが、これを使うと多くのメモリーを消費しコンパイルエラーになってしまう。JA2GQP-OMが、色々調査され、コンパクトなライブラリーを作られた、そのおかげでこのSi5351バージョンが実現している。実にすばらしい。


 スケッチ、ライブラリー、回路図はJA2GQP-OMのBlogにUPされている。
 最近中華DDSもじわじわ値上がりしているようだ。Si5351は秋月で安価に入手できる。これを活用しない手はない。海外でもSi5351は非常に人気が有り、多くの活用事例がNETにアップされている。最近はこれら海外との情報交換もインターネットのおかげで楽に出来る。
 もっとHomebrewしましょう。


早々マルチバンドトランシーバーを計画しなくてはいけない。

 DDS VFOcontroller (Multi - band) was the place which can have just been done, but JA2GQP-OM made me the Si5351PLL version.
 Sketch, library and schematics are In Blog of JA2GQP.

73’s

2016年10月21日金曜日

DDS VFO controller version up ( Ver3.1 Multi-band )

以前UPしたArduino_nanoを使用したDDS-VFOコントローラーVer.2をバージョンアップした。


 今回は、海外HAMからの要望でマルチバンド対応した。
当初Arduino_nanoでは、メモリー容量やI/Oの数が少ないことから無理であろうと思い、Arduino_mega256の使用を考えた。しかしmegaはメモリー容量、I/Oは十分であるものの形状が大きく今一歩気が進まなかった。
 そこで、Ver2のスケッチを改めて見直し、メモリーの節約を図ってみた。送信パワーメータを受信Sメータと兼用することにしメモリーとアナログポートを1個節約できた。
 その他にも細かいプログラミングの無駄を見つけ出し、当初フラッシュメモリー96%位であったものを何とか92%までに下げることができた。

 しかしポートに関してはアナログ入力(A7)が1個空いただけである。マルチバンドに対応する場合、バンド情報をポートに出力しフィルタ切り換え等を行う必要がある。
 ここで秘策活用である。過去にBASCOM-AVRで開発した万能VFO(旧ブログ参照)の時にやはりポートが足らず苦肉の策として、アナログ入力を利用し、入力電圧の判定でスイッチと利用したのである。AVRのアナログはデフォルトでMAX5Vを1023分解能で判別できる。
今回5個のスイッチを対応できるように抵抗を決めた。誤動作の無いよう十分に電圧差を持たせている。メインループの中でアナログ値を読みに行き、対応電圧範囲内にあるか判別しスイッチが押されたと判定し、対応するサブルーチンに飛ばしている。前作を含め今のところ誤作動は経験していない。
8-Band

 バンド機能は、イニシャルデータを最初にEEPROM(専用スケッチ)に書き込み、続いてメインスケッチを書き込む。現在バンド情報出力の為のポート数が3個であるため最大8バンド(バイナリー3bit)としている。バンド情報を別の方法で出力する(例えばシリアル出力)ことができればバンド数はかなり増やすことができる。
 また、メモリーSWを押すことにより現在の周波数、モード、ステップが記憶され、バンドをメモリー機能としても使える。例えばモノバンドとして使えば8CHメモリーとなるわけである。
 さらに最後にメモリーSWを押した情報で、次回パワーオン時立ち上がるようにしている。
一度SWを押すという操作が必要ではあるが、簡便なメモリーとしても有効と思う。

Schematic

 バンド情報及びモード情報は、それぞれ3bit、2bitでポートに出力される。この出力を74HC238等のデコーダーICで個別情報に変換すれば、BPF切り替えやキャリア周波数を制御できる。
 今回マルチバンドに対応するため、周波数可変範囲をKHz台からMHz台に拡張しているため、表示の反応が少し遅くなってしまった。エンコーダーの取りこぼしは無いようなので表示の感覚だけであるが。
EEPROM DATA

 作業手順としては、
1)イニシャルデータをEEPROMに書き込む専用スケッチ(???)を編集し希望周波数、モード、ステップを編集する。
2)編集したスケッチをコンパイルしてarduinoのEEPROMに書き込む。
3)上記終了後メインスケッチ(???)を書き込む
となる。

 今回のバージョンアップでフラッシュメモリー98%となった。
回路図及びスケッチは当局ダウンロードサイトにUPしておく。
また簡単なモディファイができるよう簡単な解説を載せたいと思っている。
Youtubeに動作をUP  https://youtu.be/h2E5PaQPexQ

DDS-VFO controller Ver.2 with Arduino_nano has been upgraded. (Ver.3)

Multi-band answered with request from amatua_radio_station foreign countries this time.
Because the memory capacity and I/O were few in Arduino_nano at first, I thought it'll be impossible and considered use of Arduino_mega256. It's the memory and  I/O is enough,but it's bigger.

So I reconsidered a sketch of Ver2 once more and planned for saving of a memory. I decided to Po_meter and the S_meter were shared. frash memory and one analog port could be saved.
 It was possible also to find waste of a small programming.
 Consumption of a frash memory fell from 96% to 92%.

 Band is maximum 8 bands.
 Frequency, mode and step are stored by pushing memory SW, and a band can also be used as the memory function. For example when using mono band, it's becomes 8CH memory.
 When power on of VFO is started, it started last band-data memory_SW pushed .

 Band and mode data are output by a port by 3bit and 2bit. When changing this output to individual data by decoder IC(74HC238),  BPF and carrier-frequency can be controlled.

install sketch(Arduino IDE V1.6.5)
1) Edite sketch(vfo_v3eep.ico). That is initial band-data(frequency, mode and step.)
2) Compile & write to EEPROM in arduino-nano.
3) Edit sketch(NKDVFO22_Ver310.ico). That is main progam.
4) Compile &write to flash memorry in arduino\nano.

A skematics and a sketch is in my download site.

Sorry,my English is poor.

73's

 Youtube: https://youtu.be/h2E5PaQPexQ

2016年10月16日日曜日

VNA ( Vector Network Analyzer ) 2

 以前Blog UPしたVNAをケースに入れた。


 ケースはTAKACHIのHEN110312を使用している。基板はこのケースに合わせて作られているので、ぴったりである。またサポートページにも加工図があり、容易に組み込みができた。

 そこでお決まりのフィルタ(CB機用ジャンク)特性を試験的に調べてみた。流石にVNAなので、設定項目が多いことと、項目名等になじみが無いので本(RFワールド)を見ながら動作させた。取敢えず特性図は描けた。しかし細かい設定がまだ良く分からない。果たして使いこなせるのであろうか。


 このVNAはダイナミックレンジが75dBとちょっと物足らない。フィルタ試験を抵抗マッチングで行うと、損失が多く、-40dB,-60dBダウンが見えない。この値段だから仕方が無いのかな。



 この測定器が無駄にならないよう勉強せねば。