Weekly timer

はじめに

ウィークリー・タイマーです。市販の24時間タイマーでは不便を感じ、製作しました。
電子機器を時間帯に応じて自動的にON/FFします。
例えば、ADSLモデムや無線LANなど使用しない深夜時間帯に自動的にOFFにします。
基板はOLIMEXに発注しました。

仕様

時刻機能PIC24FJの内蔵RTCC機能
スイッチ間隔曜日ごとに10分単位
最大制御電流5A

回路図


部品表

備考
PIC24FJ64GA0021IC1 マイクロチップ
MAX6001IC2 AC-DCレギュレータ、代替品MAX610
SC16021LCD1 16x2行表示
10K2R1,R3 カーボン皮膜抵抗1/4W
15K1R2 カーボン皮膜抵抗1/4W
5101R7 カーボン皮膜抵抗1/4W
3301R5 カーボン皮膜抵抗1/4W
1001R6 カーボン皮膜抵抗1/4W
471R4 カーボン皮膜抵抗1/4W
1M1R8 カーボン皮膜抵抗1/4W
10pF2C1,C2 セラミックコンデンサ
33pF2C3,C4 セラミックコンデンサ
0.01uF2C5,C6 セラミックコンデンサ
10uF1C7 縦型電解コンデンサ(耐圧16V)
47uF2C8,C9 縦型電解コンデンサ(耐圧16V)
1uF2C10,C11 ポリプロピレン・フィルムコンデンサ(耐圧250V)
LED1LED1 3mm黄色
1N41482D1,D2 汎用シリコンダイオード
32.768KHz1XTAL1 CF-308, シチズン
MCP3022Z1PHOTOTRIAC ホトトライアック、代替品MOC3041
TMG20C6F1TRIAC トライアック、代替品BTA24-600CW
CNR07D151K1ZNR1 サージアブゾーバ
5A1FUSE ミゼット

操作方法

ソフトウェア

祝日のポイント 国民の祝日
国民の祝日現在(1948年以降)
元旦1月1日
成人の日1月の第2月曜日(2000年以降)1月15日(1999年以前)
建国記念日2月11日(1967年以降)
春分の日3月21日前後
昭和の日4月29日(2007年以降)
みどりの日5月4日(2007年以降)4月29日(1989-2006)
憲法記念日5月3日
子供の日5月5日
海の日7月の第3月曜日(2003年以降)7月20日(1996-2002)
敬老の日9月の第3月曜日(2003年以降)9月15日(1966-2002)
秋分の日9月23日前後
体育の日10月の第2月曜日(2000年以降)10月10日(1966-1999)
文化の日11月3日
勤労感謝の日11月23日
天皇誕生日12月23日(1989以降)4月29日(1988年以前)
振替休日国民の祝日が日曜日となった日の後の最初の平日(2008年以降)国民の祝日が日曜日となった日の翌日(1973-2007)
国民の休日2つの祝日に挟まれた平日(1988年以降)

PIC24FJのRTCC機能のポイント タイマーON/OFF制御のポイント

PIC24FJのRTCC用セカンダリ発信器(SOSC)問題

PIC24FJ64GA002でRTCCを利用したところ、時刻が1時間に1秒程度進む(+278ppmに相当)という不可解な現象に見舞われました。
テスト中は気づきませんでしたが、本格稼動をはじめて発覚しました。
使用した水晶はシチズンのCF-308(32.768KHz)です。
この誤差はRTCCのキャリブレーション範囲(260ppm)を超えており、補正のしようがないほど大きいものです。
(RTCCの補正機能についてはAN1155を参照のこと。)

CF-308の仕様
公称周波数f032.768KHz
周波数偏差Δf/f0±20ppm
負荷容量CL12.5pF
動作温度範囲T-20C〜70C
頂点温度Tm25C±5C
周波数温度係数β-0.034±0.006ppm/C
等価直列抵抗R135K(max)
励振レベルDL1uW(max)
経時変化Δf/f0±3ppm(max)
Q値Q85000(type)
並列容量C01.6pF(type)

  1. 負荷容量CLマッチングを疑う
    まずは定番として負荷容量CLマッチングされていないことを疑いました。 水晶の発振は指定された負荷容量を掛けることで周波数が安定するように設計されています。 時刻が進むということは遅らせる必要があるため、マッチング用のコンデンサC1, C2を33pFから47pFに変更してみました。 (逆に時刻が遅れる場合にはC1,C2を小さくします。) しかし、効果はみられませんでした。 どうやら負荷容量マッチングの問題ではなさそうです。 本格的な調査が必要となりました。
  2. 励起レベル(ドライブレベル)を疑う
    RTCC用セカンダリ発信器は低消費電力発振のため、高インピーダンスの測定器を利用しないと接続した途端に発振が停止してしまい測定できません。 案の定、手持ちのオシロスコープでは発振が停止してしまいました。 そこで高インピーダンスのオペアンプを間に入れて波形を観測したところ、発振波形の歪みがみられました。 波形も大きめであり水晶をオーバードライブしているようにみえます。 電源電圧Vdd=3.5V(内蔵レギュレータ有効)と標準の3.3Vより若干高めなことが影響しているのかもしれません。 周波数を測定してみたところ、下3桁が不安定でやや高めの値を示していることがわかりました。 どうやらハードウェア的な問題がありそうです。

    あれこれ悩んでいたところ、PIC24FJ64GA002のデータシートが改定されており、 コンフィグレーションワード2にSOSCSEL_LPSOSCの設定項目がひそかに追加されていることに気づきました。 この設定は低消費電力(ドライブレベルの低い)の水晶32.768KHzなどをローパワー・ドライブするときに指定するものです。 ただし、これはリビションB以降のデバイスからの追加機能です。 手持ちのデバイスはリビションAのため、この指定は効きません。 古いマニュアルによればPIC24FJのSOSCはローパワー・ドライブ対応のはずです。 ちなみにですが、PIC24FJのエラッタには50件の問題が掲載されています。時間とともに問題が発覚します。
    時計用水晶のドライブレベルは通常の水晶(HC-49/Uの場合0.1mW)よりも遥に小さく、最高でも1uWと規定されており、 オーバードライブは周波数の不安定さを招きます。 そこでドライブレベルを下げてみることにします。 具体的にはダンピング抵抗Rdを追加してドライブレベルを下げます。 ダンピング抵抗値Rdの決定はカットアンドトライが必要ですが、CF-308の等価直列抵抗が35KΩ以下ですので、この前後をあたります。 オシロスコープで波形を観察しながら、最適なダンピング抵抗値=47KΩを探し出しました。
  3. まとめ
    ダンピング抵抗を追加することで、いままでのことが嘘のように正確な時を刻み始めました。 RTCCの補正なしに24時間の誤差は-1秒(-12ppm)に収まりました(電波時計を基準)。 あとはRTCCの補正で追い込むことができます。 今回、時計用水晶でいろいろ実験し、通常の水晶とはかなり異なっていることを勉強しました。 低消費電力と小型化という特徴が、特殊な水晶特性をもたらしています。 PIC24FJとの相性問題もあり、一般的な負荷容量CLからC1,C2を求める計算式にも若干のずれを生じていることもわかりました。 PIC24FJと時計用水晶の場合は、指定のC1=C2=33pFが最適なようです。 (ちなみにPIC16F84と時計用水晶の場合は、C1=C2=100pFが最適) 加えてPIC24FJのSOSCは若干オーバードライブ気味のようですので、もし時刻が不安定な場合にはダンピング抵抗Rdを追加みると良いでしょう。
(C)2010 All rights reserved by Y.Onodera. inserted by FC2 system