電波時計

秋月電子で販売しているトライステートの電波時計 TS-JJY01 の修理

まとめ:
・受信機よりむしろ送信機を直すべきだ。日中電波が止まっていることが非常に多い
・電波受信IC U4226B はデータシート通りの回路定数だと何故か動かない。キットもデータシート通りでは無い
・感度が低い
・デジタル回路のノイズに弱い


2016-02-07

秋月電子で販売していた電波時計。これは既に販売終了している。新型は受信基板が分離されている。当方が購入したキットの中で唯一動かせなかった物。先ず動かない原因を探る。ネットを検索すると感度が低くてダメな報告がかなりある。現行商品の回路図を見てみたが受信部は変わっていない様子

R0028454.jpg

波形にノイズが入る。アンテナがダメと言うことはたぶん無いので水晶が怪しい感じ。電波が弱いと言うことも考えられるが転居のたびにテストして動かなかったのでこの可能性は低い。4地点で偶然電波が弱い確率はゼロに近いはず。電圧が4.2V程度になっているのはトランジスターの出力側で計測しているため。

ADS00002clk.png

矢印がノイズ。たぶん

ADS00001clk.png

こんな風になってしまうことも

電波受信IC->トランジスター->PICの経路で信号が流れるがトランジスターの使い方ちょっと変なので電圧が下がっている。機能上は問題ない。上の波形はTP1で計測。C8,C9が意味不明な図になっているが2つのコンデンサを上下接近させすぎて書いているのでくっついてしまっているだけ。寸法の違うコンデンサを取り付けられるように片側は2つパターンがあるので3端子になっている。トランジスターは2SC1815とあるが実際のキットは2SC1213

jyusinkairo.png

ノイズ発生源になるICを外してテスト

R0028467.jpg

ノイズが無くなった気がする。新バージョンで基板が分離されたのはこれが理由か

ADS00003ok1.png

AC100Vをスイッチングさせているネオン管時計を近くに置く。ネオン管のスイッチング周波数は1kHz付近

R0028470.jpg

ノイズが入る

ADS00006ncng.png

2016-02-08

回路図とキットの部品が違っている2SC1213。特にこれと言った特徴は無し。低周波用。これは関係なさそう

R0028471.jpg

とりあえずarduinoでデコーダーを作ってデータをダンプしてみたが使い物にならない。95%程度正しいというレベルではダメで100%正確に受信できないといけない。1秒間隔で0.2,0.5,0.8秒のいずれかのパルスが出力されるので0.35秒、0.65秒を閾値として信号をより分けている

decode10M.png
デコードプログラム実験版
0001  unsigned char prev;
0002 unsigned char current;
0003 unsigned long c_time;
0004 unsigned long p_time;
0005 unsigned long d_time;
0006 unsigned char prev_code;
0007
0008 void setup() {
0009 p_time = 0;
0010 prev_code = '0';
0011 pinMode(7,INPUT);
0012 Serial.begin( 9600 );
0013 }
0014
0015 void loop() {
0016 current = digitalRead( 7 );
0017 if( prev != current ) {
0018 c_time = millis();
0019 if( current == HIGH ) {
0020 d_time = c_time - p_time;
0021 if( d_time < 350 ) {
0022 if( prev_code == 'M' ) {
0023 Serial.println( "" );
0024 }
0025 Serial.print( "M" );
0026 prev_code = 'M';
0027 } else if( d_time < 650 ) {
0028 Serial.print( "1" );
0029 prev_code = '1';
0030 } else {
0031 Serial.print( "0" );
0032 prev_code = '0';
0033 }
0034 }
0035 }
0036 prev = current;
0037 p_time = c_time;
0038 }
行番号
解説
-
特に解説はなし
デコードプログラム実験版
ファイル ファイルタイプ 添付ファイルの解説
denpatokeiTEST.zip arduino 上のプログラム現物

データシートを見るとC2(キットではC8)の値が違う。ローパスフィルターらしいのだがキットは0.1μFのフィルムコンデンサを使っている。フィルムコンデンサの周波数特性は悪かったと思うが良いのだろうか?

datasht.png

0.1μを取り外す。配線がかなり大回り。40kHz程度なら問題ないと思うが遠回りは無駄な感じ

R0028473.jpg

0.22μFは在庫していなかったので0.1μFを2個並列にするつもりが間違えて直列

R0028477.jpg

何故かこれで正常受信できるようになった。ローパスフィルターのコンデンサを小さくしたのでより高い周波数を通すようになってしまったはず。電波の状況は時間帯によってかなり違うのでしばらくテストを続ける

c22uf.png

C8をいろいろ変えてみた。0.022μFは茶色いセラミック。それ以外は青い積層セラミック。コードは負論理のようなので波形は反転してある

R0028480.jpg

0.1μF 2個並列 全然ダメ

R0028481.jpg

0.1μF 1個 少し歯抜け

R0028482.jpg

0.047μF 1個 良好

R0028483.jpg

0.022μF 1個 ノイズ多し

実測値。0.047より0.1μF2個直列の方が感度が良いので理想値は0.047~0.1μFの間にある

R0028490.jpg

0.047μF 実測 0.0455μF

R0028491.jpg

0.1μF 2個直列 0.057μF

プログラムを少し改造。受信状況が悪いときは E を表示するようにした。立ち下がりの間隔が950~1050msecに収まっていないとEを表示する。0.1μF2個直列だとバーアンテナの感度が一番低い方向以外は正常に受信できる

dumperr.png
デコードプログラム実験版+エラー表示
ファイル ファイルタイプ 添付ファイルの解説
denpatokeiTEST2.zip arduino エラー付きダンププログラム

9時頃から受信できなくなったり一定パルスがくるだけで不安定になった

R0028495.jpg
R0028498.jpg

偶然停波の時間帯に当たったようだ....と思ったらしょっちゅう停波している。何ページスクロールしたら一番下まで見えるんだ。HTMLをダウンロードし文字列検索で集計したら841時間1分1秒。延べ日数にすると35日。昼間の時間帯に工事しているようなので日中に限ると確率1/4程度で停波していると思って良い。工事は連続して行われることが多いようなので運が悪いと1週間くらい昼間は電波を受け取れない。いいのかこんな運用で?福島の原発の近くで震災の時は停波していたらしいが地震が有っても無くてもたいして変わらない。独立行政呆人が運用しているらしいのでまともな運用にはなりそうも無い

R0028494.jpg

2016-02-09

C8を変更したらPICを戻しても受信してくれるようなのでプログラムを作り直し。電波の状態をダンプできるようにした。SP232は外したまま

R0028507.jpg

プログラム書き込み端子を追加。PICKIT2でオンボード書き込みできる。下段がビット列。上段はエラー。正常の場合は日時

R0028500.jpg

水晶を交換。19.669MHzから正確な1秒は作れない(たぶん)ので20MHzに変更。きりが良い値ならTimer2を使えば正確な1秒が作り出せる

R0028517.jpg

LEDは受信進捗状況。眩しいので輝度の低い緑に変更

R0028502.jpg

水晶の外側ケースとビア経由でパターン干渉しているスイッチはいらないので除去。タクトスイッチはこの丸い銅板(たぶんリン青銅)がバネ兼接点になっている

2016-02-11

バーアンテナは特注品のようなので市販品を調べてみた。C-MAX社(DigiKeyに有り。但しMOCが100個)の物は コイル2.3mH コンデンサ0.0068μF。このキットは コイル585μH(共振周波数からの推測値)コンデンサ0.027μF とだいぶ異なる。キットの物はAMラジオのバーアンテナに近い

R0028523.jpg
R0028522.jpg

2016-02-14

バグが有るかもしれないがこれで完成

================================================================================
作り直したプログラムの仕様
================================================================================
・年は毎時15分と45分の1時間に2回だけ送られてこない
 この時年表示は ?? となる
 信号は時刻とは無関係になるため読み飛ばす。この間下段には -SKIP SIGNAL- と表示
・データは受信直後にデコードして表示
 年のデータが日付の後に送られてくるので月日は年を受信しないと確定しない
 年を受信しないと閏年の判断が出来ないため閏年で無い時の暫定値を表示し年を受信した後に閏年を考慮した月日を上書き
 分以外のデータは書き換わり頻度が少ないので次のデータを受信する直前に一旦 "--" 表示にしている
・0.2秒のパルスが2回連続して受信できたらそれをゼロ秒としているため実際の時刻より秒表示は1秒遅れる
・LEDは
  信号に同期して TCO点滅 TCOの点灯時間はパルス幅で変わるため1秒置きにデータが来ていることが解りにくい
  TCOの点灯時間を強制的に 0.1秒に にしているのが ALM2 信号が正常に受信できれば 1秒間隔で点滅する 電波の状態が悪いと大抵は早く点滅するようになる
  エラーが発生したとき                 s点灯
  エラー無く 分データ       を受信完了したとき m点灯
  エラー無く 時データ       を受信完了したとき h点灯
  エラー無く 延べ日数の上位データ を受信完了したとき M点灯
  エラー無く 延べ日数の下位データ を受信完了したとき D点灯
  エラー無く 年データ       を受信完了したとき ALM1点灯
 1カ所エラーを起こすと後続のデータが信用できなくなるので再度マーカーを見つけるまでデコードはしない
 エラー以降マーカーを見つけるまでLEDは点灯しない
・閏秒は無視
・パルス幅
  0.35秒以下   のパルスをマーカーおよびポジションマーカーと判断
  0.35~0.65秒のパルスを1と判断
  0.65秒以上   のパルスを0と判断
・対応しているエラー
  -常にゼロであるはずの値がゼロ以外
  -パリティー
    P1にエラーがあったとき:分を ** 表示
    P2にエラーがあったとき:時を ** 表示
  -マーカーやポジションマーカーが所定の位置に無い
   該当するLEDが点灯しない
  -信号のパルス間間隔が950ミリ秒~1050ミリ秒に収まっていない
   下段に E を表示
・液晶2段目の表示
  M:マーカー
  P:ポジションマーカー
  E:エラー
  1:符号1
  0:符号0
・上段一番右は曜日 0:日曜 1:月曜 ....

===================================
JJYのフォーマットについて
===================================
・日時の送信には丁度1分かかる。送信開始時点ではその時の時刻であるが送信完了時には1分前の時刻となる
・年は西暦下2桁
 年は毎時15分と45分の1時間に2回だけ送られてこないため運が悪いと正確な日付を得るために3分かかる
 XX時14分01秒に電源を入れると約1分後のXX時15分00秒にデータの頭出しが完了、15分なので1分間は年データを得られず年月日確定せず、XX時16分00秒から受信開始、XX時17分00秒に日付が確定する
・月日は1/1からの通算日数で表すので計算しないと月日はわからない
・数値はBCDコード。BCDコードは計算しなくても文字列に変換できるのが良いところなのだが1分前の時刻が送信されてくるので現在時刻を表示するために計算が必要になるという間抜けなことになっている
・1分待たないと時刻がわからない点を除いて各国独自の日付フォーマットになっている
・電波は強弱が変わるAM方式
・タイムコード表
JJY タイムコード表 通常時
JJY タイムコード表 呼び出し符号送出時(毎時15分、45分)

R0028542.jpg
プログラム一式
ファイル ファイルタイプ 添付ファイルの解説
denpatokei.wmv MOVIE 動いているところ。年の受信中にエラー。たぶんスパイクノイズが入っている。0.35msecより短いパルスはマーカーと判断するので下段が消去され書き直される。オリジナルのプログラムは4分程度受信しないと表示が開始されないがこれは直ぐに表示開始されるので時計としては役立たないが電波状態確認がしやすい
JJYClock19MHz.zip HEX 19.669MHz水晶(キット付属)版プログラム
JJYClock20MHz.zip HEX 20.000MHz水晶版プログラム 水晶交換必要
JJYClock12MHz.zip HEX 12.8MHz水晶(新バージョンキットTS-JJY02用)版プログラム 回路はほとんど同じなのでたぶん動くと思う
JJYClockMikroBasicPRO.zip mikroBasic プログラムソース一式 かなり大きいので無料版のMikroBasicではコンパイル不能