So-net無料ブログ作成

K3NG キーヤー・シールドに送信練習と受信練習のモードを追加しました [Arduino]

 K3NG OM のサイトを見ていたら送信練習と受信・送信練習のモードが追加されていました。

そこで、それらのコマンドが有効になるようにコンフィギュレーションを変えてコンパイルし、動作確認をしてみました。
変えるところは
keyer_features_and_options.h ファイルの次の箇所です。
#define FEATURE_ALPHABET_SEND_PRACTICE // enables command mode S command - created by Ryan, KC2ZWM
#define FEATURE_COMMAND_MODE_PROGRESSIVE_5_CHAR_ECHO_PRACTICE // enables command mode U
#define FEATURE_PADDLE_ECHO
これでコマンド・モードに入れるとSコマンドとUコマンドが有効になります。
Sコマンドはアルファベットを正しく遅れるかを判定してくれます。Uコマンドは実行するとECHOと帰ってきて、そのあと1文字音が鳴るので、聞いた音を返します。合っていると今度は1文字足されて2文字音が聞こえます。これを5文字まで繰り返してくれます。5文字まで終わると次の組み合わせに移ります。

nice!(1)  コメント(0) 

ハムフェア AKC で頒布する Arduino シールド・キットのスケッチを確認しました [Arduino]

 今週末のハムフェア AKCブースで頒布する Arduino シールド・キットに使うスケッチの動作確認をしました。

〔ディジタル電界強度計〕
キャリブレーション機能を付けたスケッチが見つからないので、その一歩手前のバージョンを動かしています。
無信号時です。
DSC07451.JPG
ハンディ機用ホイップ・アンテナを付けて、ハンディ機からの 430MHz 帯の信号を受けています。
DSC07452.JPG
〔K3NG キーヤー〕
Radio Artisan のサイトから最新のスケッチをダウンロードし、必要な修正を加えて書き込んでみました。
秋月の Arduino 互換基板で動かしています。
DSC07453.JPG
nice!(2)  コメント(0) 

ハムフェアで頒布するディジタル電界強度計のOPアンプを実装しました [Arduino]

 今週末のハムフェアのAKCブースで頒布するディジタル電界強度計の基板に表面実装タイプのOPアンプを取り付けました。

取り付けたのは半分のキットで、残り半分は半田付けを楽しみたい方の為に未実装にしています。
〔取り付けの様子〕
クランプを使っています。
DSC07450.JPG
〔基板の様子〕
DSC07449.JPG
nice!(3)  コメント(0) 

Arduino MKR Vidor 4000 (Microchip ATSAMD21 - Arm Cortex-M0+ processor + Intel Cyclone 10CL016) [Arduino]

 5月の Maker Faire Bay Area で発表されていた Arduino MKR Vidor 4000 が $60 で出ています。

Arduino MKR Vidor 4000 は、Microchip ATSAMD21 - Arm Cortex-M0+ processor と Intel Cyclone 10CL016 FPGA チップが載っているボードです。
Getting Started には Tutorials もあり、FPGA HDL Basics という FPGA の説明も用意されています。
ただ、標準のインターフェースが MIPI と HDMI という映像、音声に特化してはいます。
いろいろと活用するにはそれなりの知識が必要ですね。
abx00022_featured_1.jpg
abx00022_iso_1.jpg
nice!(1)  コメント(0) 

SPRESENSE を使って低歪率ツートーン・ジェネレータを考える(その2) [Arduino]

 SPRESENSE を使って低歪率ツートーン・ジェネレータを考える、その2です。

前回、MP3 か WAV でサイン波のデータを用意する必要があると書きました。
それで PC で作る方法を調べてみました。
簡単には WaveGen を使って作れました。
まず、L+R でツートーン信号を出した場合
WG-mix.jpg
L、R それぞれでサイン波を出した場合
WG-single.jpg
シングルトーンで出すか、ツートーンで出すかを選べるようにするにはL、Rそれぞれの信号を外部でミックスする必要がありそうです。
でも、WG のファイル出力機能で WAV ファイルを作る事は出来ました。
nice!(0)  コメント(0) 

SPRESENSE を使って低歪率ツートーン・ジェネレータを考える [Arduino]

 ソニーから IoT 用として SPRESENSE が出ました。

その特徴に
 〇 ハイスペックのハイレゾリューションオーディオ機能
  ・192 kHz/24bit ハイレゾリューションオーディオコーデック
  ・192 kHz A/D コンバータを搭載
  ・8チャンネルマイク入力(デジタルマイクの場合)
  ・フルデジタルアンプによるBTLステレオ出力
があります。
まえに Arduino でサイン波の発生を試した事がありますが、データが 8bit のため歪率が 0.13% とそれほど良くありません。これを改善するには量子化ビット数とサンプリング数を増やせば良いのですが、Arduino Uno ではメモリーの制約もあり、厳しいものがあります。
しかし、SPRESENSE では 192 kHz/24bit ハイレゾリューションオーディオコーデックがありますから、かなり低歪率のサイン波を発生できそうです。
Arduino 用のライブラリを見てみると、
 〇 Audio ライブラリの主な特徴
  ・Sound recorder
  ・Audio player
  ・Volume control
  ・Balance (L/R Gain)
  ・Beep generation
 〇 Audio Output Channel
  ・Analog headphone
  ・I2S
 〇 DSP codec は以下のフォーマットを扱うことができます。
  ・MP3
  ・WAV (PCM)
とあります。
なので、MP3 か WAV でサイン波のデータを用意し、連続して再生動作をさせられれば低歪率のサイン波出力を得られるはずです。出力はステレオですので片チャンネルに 1000Hz、もう片チャンネルに 1700Hz を割り振り、内蔵のライブラリで Vol、Bal を制御するようにすればこれだけで低歪率のツートーン・ジェネレータが完成するはずです。

まずは SPRESENSE を買って試してみるところからですね。
まずは構想まで。
SSB 送信機の調整にはツートーン・ジェネレータが使われます。最近はスプリアス規定も厳しくなり、シングルトーンでスプリアスを確認するにしても低歪率のサイン波でないと正確に評価ができません。CW モードで搬送波の評価はできても、純度の高いサイン波がないと SSB 変調回路の評価はできません。
nice!(3)  コメント(0) 

Arduino で Softeare DDS を動かす (その5) [Arduino]

 Arduino で Softeare DDS を動かす、その5です。

DDS の発生周波数と LPF を通った後のスプリアスを比較してみました。
比較したのは LPF のカットオフ周波数が 2kHz で発生周波数が 1kHz と 2kHz の場合のスプリアスです。
〔発生周波数 1kHz〕
2.jpg
〔発生周波数 2kHz〕
3.jpg
比較するとカットオフ周波数と発生周波数が同じ場合の方がスプリアスのレベルは下がります。
ただし、PWM 後の波形に DC 成分が残ってしまい、結合を AC カップリングにしないといけませんでした。
それと両方のグラフで 8.7kHz くらいにピークがあります。これの原因が良く分かりません。
それでも3次のスプリアスがかなり抑えられているので、高いところの不要な信号をどう抑えるかを考えたいと思います。この辺りが 8bit PWM の限界かもしれません。
〔APB-3 での測定結果〕
参考までに APB-3 で 1kHz の信号とスプリアスを測った結果も載せておきます。
1.jpg
同時に表示できてよいのですが、入力のアッテネータと結合の切り替えがないのが痛いところです。
nice!(1)  コメント(0) 

Arduino で Softeare DDS を動かす (その4、LPF による全高調波歪の違い) [Arduino]

 Arduino で Softeare DDS を動かす、その4です。

LPF による全高調波歪の違いに関して考えてみました。
LTspice でのシミュレーション結果を見てみると
4.jpg
LC 1段ではカットオフ周波数が 1kHz よりも低くなっています。この違いが全高調波歪の違いになっているのかもしれません。
そこでバターワース・フィルターのカットオフ周波数を 1kHz に近づけたものを作って再度確認してみたいと思います。
でも、0.16% とか、0.13% をデシベル表示すると、-55.9dB や -57.7dB とかの値になります。
全スプリアスがこの値なら、取り敢えず SSB のリニアリティ確認には問題ないと思います。
次は、実際に「あちゃんでいいの」を2個使って、Two Tone Generator を組んでみようと思います。
nice!(1)  コメント(0) 

Arduino で Softeare DDS を動かす (その3) [Arduino]

 Arduino で Softeare DDS を動かす、その3です。

インダクタとコンデンサを買ってきてブレッドボードにフィルターを作って波形を見てみました。
〔オリジナルのフィルター〕
オリジナルはチェビシェフ・フィルターですが、使っているインダクタの 4.7mH が手に入らず 4.0mH に変更しています。
これが組んだところ
DSC06735.JPG
これが波形
1.jpg
全高調波歪(THD)が約 0.5% に収まっています。
〔カットオフ周波数を下げたフィルター〕
今度はカットオフ周波数を約 2kHz にしたバターワース・フィルターの場合です。
これが組んだところ
DSC06736.JPG
これが波形
2.jpg
全高調波歪(THD)が約 0.16% に収まっています。
でも、前回の 0.13% より若干悪くなっています。LC 1段から2段になっているのにと、ちょっとがっかりでした。
ついでに入力の PWM 波形とフィルター出力の波形です。
3.jpg
フィルターでの信号遅延が結構あるのが分かります。

全高調波歪(THD)をもっと下げるにはサイン・テーブルの解像度を 8bit から 10~12bit に上げる必要があると思います。
それか出力に入れるフィルターのカットオフ周波数を下げるのと、段数を増やして減衰域の減衰量を増やすしかないですね。
nice!(0)  コメント(0) 

Arduino で Softeare DDS を動かす (その2) (市販部品に変更) [Arduino]

 Arduino で Softeare DDS を動かす、その2です。

※ サトー電気で買える市販部品に変更したものを追加

Arduino の PWM 出力に付ける LPF を考えてみました。
元記事では 12kHz でカットオフするチェビシェフ・フィルターを標準的な値の LC パーツで実現しています。LTspice でシミュレーションするとなかなかの特性が出ています。
dds_lowpass1251.jpg
しかし、実際に作ろうとしている出力は Two Tone Generator なので、1000Hz と 1700Hz の2信号が候補です。これには少しカットオフ周波数が高いように思います。
それでカットオフ周波数がもう少し低い LC フィルターを考えてみようと思います。
参考にした本はこれ、CQ 出版社から出ている「LC フィルタの設計&製作」森 栄二 著 です。
これを参考にバターワース型の5次 LPF を考えてみます。
カットオフ周波数を 2000Hz、インピーダンスを 300Ω で各素子の値を計算すると
周波数比 M が 2000x2π
インピーダンス比 K が 300 なので
L1, L2 = 38.63mH
C1 = C3 = 0.164μF
C2 = 0.531μF
となり、LTspice でシミュレーションすると
5th_butter.jpg
2kHz 前後を拡大すると
5th_butter-2.jpg
設計カットオフ周波数の 2kHz で -9dB(信号源の 300Ω で半分になるので -6dB-3dB = -9dB)とおよそ一致しています。
しかし、これでは市販のパーツを使えないので市販のパーツで適当なものを当てはめてみます。
サトー電気に 30mH のインダクタがあるのでそれを使い、コンデンサを適当に合成してみると
5th_butter-mod.jpg
こんな感じです。
で、2kHz 前後を見ると、若干減衰量が減っていますが、そこそこです。
5th_butter-mod-2.jpg
この辺りでフィルターを試作してみます。
最終的に部品選定はこうなりました。
5th_butter-mod-36mH.jpg



nice!(0)  コメント(0) 

Arduino で Softeare DDS を動かしてみました [Arduino]

 SSB の測定の為に、低歪率の Two Tone Generator を用意しようと考えています。

まず、FCZ の1石 CR 発振回路のものは歪率が酷く、PC ソフトの WaveGene はそれなりに良いのですが、PC が必須となってしまいます。RF の回り込みとかで誤動作が心配です。
で、Arduino で DDS を実現しようかと思い、ググったらそのものずばりの物がこちらにありました。
これを動かしてみたところ、PWM 出力が出ているので、出力に簡単な LC Low Pass Filter を付けて波形を見てみました。なかなか良い結果です。
〔実験風景〕
DSC06734.JPG

〔LC Low Pass Filter〕
3.jpg
手持ちの部品で有り合わせで作ったものです。

〔測定結果〕
2.jpg
1.jpg
1000Hz でプログラムしているのでちゃんと1サイクル1mSec で出ています。
歪率もいきなり 0.13% が出ています。
元記事では -50dB と出ていました。換算するとだいたい同じような値です。
ちゃんとした Low Pass Filter を付けて、ケースに組み込んでみようと思います。
「あちゃんでいいの」を2個用意し、それぞれ 1000Hz、1700Hz でプログラムしてケースに入れてみるつもりです。

スケッチの動作はかなり ATmega328 のタイマー機能を理解していないとその動作が分かりにくいです。理解できたらメモ書きを残してみようと思います。
概要は Timer2 を使い、サイン波の値でオン・タイムを変える PWM 出力を作っており、出力する周波数で Software DDS のモジュローを計算して出力しています。Timer2 で割り込みもかけているのですが、割り込みと PWM 出力設定の辺りが今一つ、理解できていません。(´;ω;`)
nice!(2)  コメント(0) 

ゲルマダイオード SD34 が届く [Arduino]

 SNS の売ります・買いますグループで NEC のゲルマニウム・ダイオード SD34 が出ていたので買ってみました。

何に使うかというと、W8TEE OM のアンテナ・アナライザー基板でも使えますし、ゲルマ・ラジオにも使えるので買ってしまいました。
届いたのがこれです。
SD34.jpg
昭和のダイオードですが、パッケージが綺麗です。(フェイク品?)
そのうちに使ってみましょう。
nice!(2)  コメント(0) 

RigExpert AA-30.ZERO を Arduino Mega 2560 で動かす (その4) [Arduino]

 RigExpert AA-30.ZERO を Arduino Mega 2560 で動かす、その4です。

前回は Arduino Mega 2560 からコマンドを送って、受信した結果をシリアル通信で PC へ書き出していましたが、今回は Arduino Mega 2560 に取り付けたグラフィック・ディスプレイに表示しています。
最初はシリアル・モニターからコマンドを入力した場合です。
DSC06611.JPG
次は自動実行した場合です。
DSC06613.JPG
レスポンスの関係で表示の順番が入れ替わっているところがあります。
最後に接続した状態です。
DSC06614.JPG
ここまで来たので、次は SWR のグラフ表示と動作コマンド入力のタッチパネル機能の追加を進めたいと思います。
nice!(2)  コメント(0) 

RigExpert AA-30.ZERO を Arduino Mega 2560 で動かす (その3) [Arduino]

 RigExpert AA-30.ZERO を Arduino Mega 2560 で動かす、その3です。

前回は Arduino Mega 2560 からコマンドを送って、受信した結果をシリアル通信で PC へ書き出していましたが、通信で取りこぼしがありました。
そこでスケッチを全面的に書き直して、シーケンシャルな処理からイベント・ドリブンな形に書き換えました。
今回の実行結果です。
1.jpg
取りこぼしが無くなっています。
これで基本的な AA-30.ZERO との通信部分はできたので、
これからグラフィック・ディスプレイに通信結果を表示できるように機能を追加していきます。
nice!(1)  コメント(0) 

RigExpert AA-30.ZERO を Arduino Mega 2560 で動かす (その2) [Arduino]

 RigExpert AA-30.ZERO を Arduino Mega 2560 で動かす、その2です。

前回は単純に PC と AA-30.ZERO とのシリアル通信ブリッジでしたが、今回は Arduino Mega 2560 からコマンドを送って、受信した結果をシリアル通信で PC へ書き出しています。
Arduino.jpg
ただ、今回は通信のデータがそろうまでの時間を delay で作っているので、タイミングを合わせる部分をちゃんと作らないとダメなようです。
そのため、タイミングが合わずに一部のデータで欠落が発生しています。
その辺りを Arduino のサンプル・スケッチなどで調べてみようと思います。
まだ先は長いなぁ。
nice!(1)  コメント(0) 

Teensy を使った The $19 DIY DSP audio filter [Arduino]

 ネットでこんなものを見つけました。

Teensy という 72 MHz Cortex-M4 を使った microcontroller board で DSP を実装し、Audio Filter を作って FT-817 に組み込んでいます。特徴は価格で $19.80 です。それと開発環境に Arduino IDE を使っています。
GI1MIC The $19 DIY DSP audio filter
https://gi1mic.github.io/

Teensy についてはこちら
「3.3V signals, 5V tolerant Teensy USB Development Board」
The Teensy is a complete USB-based microcontroller development system, in a very small footprint, capable of implementing many types of projects. All programming is done via the USB port.
https://www.pjrc.com/teensy/
teensy32.jpg
ソフトだけでオーディオ帯の DSP を作っています。
これを他の QRP リグでも使えるようにしたら面白いと思います。
nice!(1)  コメント(0) 

Sony から Arduino IDE で開発できるマイコン・ボードが出るようです (写真を入れ替えました) [Arduino]

 今日は SEMICON Japan に来ています。

そしたら Sony から SPRITZER の展示がされていました。
来年には出荷し、色々なチャネルで販売を計画しているそうです。価格もラズパイと同等以下を考えているそうです。
展示にはライントレーサーとロボット2体が展示されていました。
基板の設計情報も公開し、互換基板を作りたいメーカーにはチップも外販するとの事。
GNSS のアンテナまで入っているので位置情報を使うアプリが作りやすくなってます。
ちょっと期待したいです。
IMG_0001.jpg
nice!(1)  コメント(0) 

RigExpert AA-30.ZERO サンプル・スケッチを Arduino Mega 2560 で動かす [Arduino]

 RigExpert AA-30.ZERO サンプル・スケッチを Arduino Mega 2560 で動かせました。

スケッチの Serial オブジェクトをソフトウェア・シリアルでなくて Serial1 オブジェクトに変えたらば動きました。
これは取得した結果を Excel でグラフにしたものです。
AA-30-7M.jpg
実際には測定した値から SWR を計算してグラフにしないといけません。
nice!(3)  コメント(0) 

Arduino Mega 2560 にグラフィック表示器を付ける [Arduino]

 AA-30.ZERO の表示装置として Arduino Mega 2560 にグラフィック表示器を付けてテストしてみました。

文字表示
DSC06601.JPG
電話機表示
DSC06602.JPG
グラフ表示
DSC06604.JPG
これを元にスケッチを書いて AA-30.ZERO のグラフィック表示をさせてみようと思います。
nice!(2)  コメント(0) 

RigExpert AA-30.ZERO サンプル・スケッチの不思議 [Arduino]

 RigExpert AA-30.ZERO サンプル・スケッチで不思議な現象に遭遇しています。

それはサンプル・スケッチが Arduino Uno では動くのですが、Arduino Mega 2560 では動かないのです。
それも簡単なスケッチです。
これです。
// UART bridge for data exchange between 
// RigExpert AA-30 ZERO antenna & cable analyzer and Arduino Uno
//
// Receives from the Arduino, sends to AA-30 ZERO.
// Receives from AA-30 ZERO, sends to the Arduino.
//
// 26 June 2017, Rig Expert Ukraine Ltd.
//
#include <SoftwareSerial.h>

SoftwareSerial ZERO(4, 7);  // RX, TX

void setup() {
  ZERO.begin(38400);        // init AA side UART
  ZERO.flush();
  Serial.begin(38400);      // init PC side UART
  Serial.flush();
}

void loop() {
  if (ZERO.available()) Serial.write(ZERO.read());    // data stream from AA to PC
  if (Serial.available()) ZERO.write(Serial.read());  // data stream from PC to AA
}



Arduino Mega 2560 ではソフトシリアルのサポートで Uno と異なるところや制限がどうなっているのかを調べてみようと思います。
接続の様子
DSC06606.JPG
nice!(0)  コメント(0)