« 2011年12月 | トップページ | 2012年2月 »

2012年1月29日 (日)

XI-IV再び(71)

XI-IVの新しい画像を2つ掲載します。撮影推定日時(日本時間)は、左が2012年1月5日17時03分58秒、右が2012年01月21日16時48分59秒です。
Xiiv_120114_1735_rom1 Xiiv_120129_1735_rom4



| | コメント (0) | トラックバック (0)

2012年1月14日 (土)

AVR実験室(38)

11 プログラムの構成

昨日の回路で動作させるプログラムは、次のような構成となります。

メインプログラム:初期化の後、パケットを1フレームのデコードが完了するまで待ち、割込み禁止にして割込みルーチンで使用されるレジスタを初期化した後、デコードしたデータを整形して出力する。

割込み1(コンパレータ割込み):アナログコンパレータによる割込みにより、音声信号が1200Hzから2200Hzへ変化した場合、あるいは逆に2200Hzから1200Hzに変化した場合には、ビットデータ0を取得する。この時、次の割込み2までの間隔を調整し、音声信号と同期をとる。

割込み2(タイマ割込み):1/1200秒ごとの割込みによりビットデータ1を取得する。

なお、割込み1と割込み2で同じ処理がありますので、サブルーチンにまとめました。
割込み1と割込み2に優先度の差は無く、先に割込みが発生した方が処理されます。
 各処理は次のフロー図のとおりです。
10programflow_0110programflow_02





| | コメント (0) | トラックバック (0)

2012年1月13日 (金)

AVR実験室(37)

10 実験の様子

9の回路をブレッドボード上に組んで、実験してきました。

抵抗やコンデンサのリード線を切らないでそのまま使っていますが、それでもパケット音声をデコードできました。
実験の様子は、次のような状況です。
Onthebreadboard_s

| | コメント (0) | トラックバック (0)

2012年1月12日 (木)

AVR実験室(36)

9 ハードウェアの構成

今までの検討により、ハードウェアの構成は3V動作から次のように決まりました。

1 マイコン:ATmega88

2 OPアンプ:NJM3414AD

3 RS-232CADM3202AN

どれも、秋月電子商会で入手できたものばかりです。なお、OPアンプのNJM3414ADは、現在(2012112日現在)売り切れとなっているので、ほかのOPアンプで使えるものがないか、検討予定です。
回路図は、次のとおりです。Eagleで作成しました。
09tnc_schematic

| | コメント (0) | トラックバック (0)

2012年1月11日 (水)

AVR実験室(35)

8 マイコンの選択と動作周波数

実験の当初からAVRマイコンのうちATmega88を使用していました。

これは、SRLLのデコードのために4kBのテーブルが必要なのですが、ROMが少ないATtinyでは対応できないことから、ATmegaの中から手ごろでROM8kBATmega88を選びました。

動作周波数は、当初16MHzで実験していたのですが、アルカリ乾電池2本の3V対応とするために8MHz動作に変更しました。

ニッケル水素電池の場合は、2本では電圧が不足しますので、3本から4本使用となります。この場合、4本で4.8Vとし、16MHz動作としたほうが、デコード率の点で有利と思います。

| | コメント (0) | トラックバック (0)

2012年1月10日 (火)

AVR実験室(34)

7 電源

ワンチップマイコンを使用する場合、電源は5Vが多いようです。この実験を始めた最初に、5VAVアダプタを使用していたのですが、まったくデコードできない状況でした。最初はトランジスタ1石のプリアンプを試していたので、トランジスタ技術20068月号の付録となっていた”SoftOscillo”というパソコンをオシロスコープとして使用するソフトで、そのアンプ前後で音声信号を確認したところ、スイッチングノイズが音声信号に載ってしまっていました。そこで、これ以降は電源をニッケル水素電池4本の4.8Vとして、実験を続けていました。そして、AVRマイコンのシステムクロックは16MHz動作としていました。

最終的には電池本数を減らすため、アルカリ乾電池2本の3Vとし、オペアンプも3V動作するものを選びました。

なお、4.8V動作時に比べて、3Vにした後の方が、デコード率がよくなったように思われます。これは、6で説明したAVRマイコンのアナログコンパレータの閾値40mV5V動作の時の値であるため、電源電圧が下がることによりこの閾値も下がり、ゼロクロス検出の(時間的)誤差が少なくなったのが原因と思います。

| | コメント (0) | トラックバック (0)

2012年1月 9日 (月)

AVR実験室(33)

6 音声信号の増幅

受信機(トランシーバ)のデータ端子出力は、100300mV程度となっています。これに対して、AVRマイコンの説明書の電気特性の記載内容によると、アナログコンパレータが基準電圧と差が生じたことを認識するのは、40mV(最大値)以上の差があった場合となっています。このことから、受信機の出力そのままをマイコンに入力しても、受信音がかなり大きくないと、基準電圧との差が生じたことを的確に検出できません。受信機ではなく、一旦パソコンの音声ファイルとしたもので試してみましたが、音声出力が小さい(とはいっても、スピーカ出力される音はかなり大きくなりますが)時には、周波数検出がうまくできませんでした。

そこで、アナログコンパレータの入力前に、オペアンプによる増幅器で音声信号を増幅することにしました。最初トランジスタ1石のアンプで試してみたのですが、思ったような特性が得られず、いろいろ調べたところ、オペアンプを使用すると、特性のよいアンプが簡単にできることがわかり、これを使用することにしました。

使用するオペアンプですが、最初はLM358という汎用のものを使用していたところ、デコードはするのですが、誤りが多い状況でした。たまたまCQ出版社のトランジスタ技術20121月号の特集の中で、LM358というオペアンプはC級増幅動作のため、電流が流れないポイントでのノイズが多いと記載されていたことから、手元にあった別のオペアンプNJM3414に交換したところ、デコード率が改善されました。

その後に電源を単三電池2本の3Vとすることにしたので、NJM34143Vから動作することから、最良の選択となりました。

オペアンプの増幅回路は、CQ出版社の「OPアンプ活用 成功のかぎ」55ページ記載の単電源非反転アンプに64ページのバイアス部を組み合わせた回路です。
06opamp


| | コメント (0) | トラックバック (0)

2012年1月 8日 (日)

AVR実験室(32)

5 アナログコンパレータへの入力信号

先の4では、アナログコンパレータの基準電圧及び入力信号へ下駄を履かせる電圧を、電源電圧からの抵抗を使った分圧により得る方法を説明しました。

このほかに、音声信号に下駄を履かせたものを抵抗で分配し、基準電圧の入力にはコンデンサを追加して音声信号の平均値を加えるという方法もあります。CQ出版社のトランジスタ技術スペシャルNo.113「徹底図解 ワイヤレス・データ通信の基礎と応用」25ページにそのような回路の紹介がありました。この方法の方が受信信号の強度に応じて基準電圧が自動的に調整されるので、いい結果が得られるのではと期待し、Ax.25ではある程度のデコード実績をあげることができました。しかし、SRLLではうまくデコードできず、マイコンプログラムを改良してみましたが、結果は芳しくありませんでした。

そこで、当初考えていた基準電圧を電源電圧からの分圧により固定したものに変更したところ、SRLLでのデコードが可能となるとともに、Ax.25のデコード率も改善しました。

原因は、基準電圧が不安定であったため、ゼロクロスのタイミングを的確に検出することができなかった点にあると考えています。
上記の2つの方法による回路図の概略は、次のとおりです。なお、入力のオペアンプについては、次に説明します。
05comparetorinput2

| | コメント (0) | トラックバック (0)

2012年1月 7日 (土)

AVR実験室(31)

4 基準電圧

ゼロクロスを検出するときにはマイコンのアナログコンパレータを使用しますが、基準電圧について、検討が必要です。

音声信号をそのままマイコンに入力する場合は、基準電圧はゼロボルト(アース)となります。マイコンの入力端子は、マイナスは原則入力できません。しかしながら、AVRマイコン(今回使用したのはATmega88)の説明書の電気特性を見ると、△0.5Vまでの入力は可能のようです。

また、インターネットで見つけたAVRPICマイコンを使用したアナログコンパレータを利用したTNCの回路を見ると、基準電圧をアースに接続し、音声信号を直接コンパレータに入力しているものがありました。

そこでAVRマイコンでアナログコンパレータによる1200Hz2200Hzの周波数を判別するプログラムを組み、基準電圧となる端子をアースに接続して音声信号を直接アナログコンパレータに入力(直流分を遮断するコンデンサを通してになりますが)したところ、2つの周波数の判別はできました。

しかし、その後パケットデータを取得するプログラムに進んだときには、この方法ではうまくデータが得られませんでした。

そこで、同じ値の固定抵抗器2個を組み合わせて電源電圧の半分(当初は電源を5Vとしていたので2.5Vになります)を生成し、これを基準電圧としました。そして、音声信号にも同様の電源電圧の半分の下駄を履かせて、この2つを比較することでゼロクロスを検出する方法を試したところ、パケットデータを取得することができるようになりました。
これについては以前掲載しましたが、次のようなイメージになります。
04comparetorinput


| | コメント (1) | トラックバック (0)

2012年1月 6日 (金)

AVR実験室(30)

3 1200Hz2200Hzの判別

Ax.25では、データ転送速度が1200bps1秒間に1200ビット)であることから、1/1200秒ごとに1ビットのデータを判別する必要があります。ということは、1200Hzでは1周期、2200Hzでは1.8周期で1ビット、つまり、ゼロクロスの回数はそれぞれ2回と3回となります。

先に説明した周波数検出の(1)の方法では、約0.8ミリ秒(=1/1200)の間にゼロクロスが2回以下なら1200Hz3回以上なら2200Hzと判別することになります。

また、(2)の方法では、ゼロクロスの間隔が、1200Hz2200Hzとの中間値である1700Hzに対応する約0.3ミリ秒(=1÷(1700×2))以上なら1200Hz、以下なら2200Hzと判別することとなります。

AVRマイコンには、タイマにより一定時間の間隔で割り込みがかかる機能と、アナログコンパレータでゼロクロスを検出したときに割込みがかかる機能があります。

(1)の方法の場合は、アナログコンパレータの割込み時にゼロクロスした回数を数えておき、0.8ミリ秒ごとのタイマ割込み時に数えていたゼロクロスの回数を取得して、周波数を判別することとなります。

(2)の方法の場合は、アナログコンパレータの割込み時に前回の割込みからの間隔を計測して、周波数を判別することとなります。

今回は、割込み処理ひとつで周波数判別できるので、(2)の方法を採用しました。
03detectfreq1222


| | コメント (0) | トラックバック (0)

XI-IV再び(70)

昨日掲載したXI-IV画像の撮影位置等について、情報交換メンバーのJA1GDE/花清さんからコメントをいただきましたので、紹介します。
「XI-IVからの年賀の画像、コマンドのタイミングが素晴らしかったですね。
例によってアバウトな画像検討ですが、暗くなった襟裳岬から室蘭辺りの沖を右手前に、真ん中から遠く弓なりに右へと日本列島が雲に覆われながらも判り、楽しく拝見です。」
_xiiv_20120102_162307_rom4_b



| | コメント (0) | トラックバック (0)

2012年1月 5日 (木)

XI-IV再び(69)

「謹賀新年」
XI-IVからの年賀状です。
撮影推定日時は、1月2日16時23分07秒JSTです。
Xiiv_120105_1735_rom4

| | コメント (0) | トラックバック (0)

2012年1月 4日 (水)

AVR実験室(29)

2 ゼロクロス
周波数計測の方法は昨日記載の(1)と(2)の2つがあると説明しましたが、波の山を数えるのはマイコンには難しい処理です。音声電流というのはプラスとマイナスの電気振動であることから、電圧がゼロを横切るときの回数を数えれば、波の山の数と同じとなります。マイコンには、アナログコンパレータという、一方の基準電圧に比べて高くなった瞬間あるいは低くなった瞬間を捉える機能があります。これを使えば、電圧がゼロを横切った瞬間を把握することができます。
周波数計測の方法は昨日記載の(1)と(2)の2つがあると説明しましたが、たとえば、(1)の方法では、10ミリ秒の間に基準電圧を横切る回数が10回の場合に、周波数は500Hzとなります。(2)の方法では、基準電圧を横切った間隔が1ミリ秒の場合に、周波数は500Hzとなります。
02

| | コメント (0) | トラックバック (0)

2012年1月 3日 (火)

AVR実験室(28)

1 周波数計測
パケット通信で使用されている音声(?)は、Bell202という規格に沿ったものとなっています。これは、1200Hzと2200Hzの音によってデジタルデータの「1」あるいは「0」を識別するものです。なお、パケット通信のAx.25で使用されているNRZIによるデータ表記の場合は、1200Hzから2200Hzへの変化あるいはその逆の変化が「0」を表し、変化なしが「1」を表します。
いずれにしても、まずは1200Hzと2200Hzを区別する必要があります。それには、音声の周波数を測ることとなります。
音声が一定周期を持った波であることから、周波数計測には、2つの方法が考えられます。
(1)一定時間の波の数を数える。
(2)波と波との間隔を測る。
イメージを図にすると、次のようになります。
01

| | コメント (0) | トラックバック (0)

2012年1月 2日 (月)

AVR実験室(27)

モデムICなしTNC(パケットデコーダ)はAx.25対応版とSRLL対応版の両方について、ある程度のデコードができる状態となったので、とりあえずの実験完了としました。ずっとAVRマイコンをクロック16MHz電源4.8V(ニッケル水素電池4本)で実験していましたが、最後にクロック8MHz電源3V(アルカリ乾電池2本)としました。16MHzでも3Vで動作しましたが、AVRマイコンのマニュアルでは規格外となるので、デコード率が少し低下するように思われましたが、電池をなるべく少なくして気軽に作成できるものとするため、3V動作としました。デコード率はものによっては4.8V動作時よりよくなる場合もありましたので、これでよしとしました。少しずつ構成などを紹介したいと思っています。

| | コメント (0) | トラックバック (0)

XI-IV再び(68)

一日遅れで、あけましておめでとうございます。今年の最初は、XI-IVの新しい画像です。撮影推定日時は、左が2011年12月11日17時03分44秒JST、右が2011年12月30日17時16分52秒です。右の画像は、太陽光が地球に反射していると思われるのですが、いかがでしょうか。
Xiiv_111229_1754_rom4 Xiiv_120102_1628_rom1
なお、新しい画像も送信されていました。取得途中ですが、掲載します。撮影は新年になってからのようです。
Xiiv_120102_1814_rom4 Xiiv_120102_1815_rom4_c

| | コメント (0) | トラックバック (0)

« 2011年12月 | トップページ | 2012年2月 »