トップページ     電子回路のページのトップ

 タイマー

 画像をクリックすると拡大表示されます。
 拡大画像からはブラウザの「←戻る」ボタンで戻ってください。


製作したタイマー 内部
製作したタイマー内部

MikroCを使ってみる

 MikroCをインストールしたので、とりあえず何か簡単なものを作ってみようと思いました。
 作ったのはタイマーで、半田鏝などの電源の切り忘れ防止用です。
 タイマー時間は3分、10分、30分、60分、120分を切り換えます。
 スタート、ストップはセンターオフの両跳ね返りスイッチを使用しています。
 手を離すとセンターに戻り、オフするタイプのスイッチです。
 スイッチを上側に倒すとでオンし、タイムアップでオフします。
 動作中にスイッチを下側に倒すと強制終了します。
 動作中にスイッチを上側に倒すと経過時間は0になり、動作を継続します。
 動作中に設定時間を変更すると強制終了します。
 開閉容量は最大1200Wです。(電源コード、電源スイッチの制約によります。)
 背面に別途、電源スイッチも付けています。

   回路図

回路の説明

 制御には8ピンのPIC12F683を使用しています。
 制御回路の電源(5V)は1uFのコンデンサーの電圧降下を利用したトランスレス電源です。
 出力の開閉には秋月のSSRキットを流用しています。
 3端子電源は一般的なNPN出力のものを使用します。
 PNP出力の低ドロップ型は起動する瞬間に数十mAの大電流を必要とします。
 この回路では瞬時電流が流せないため、起動出来ません。

ファームウエア

 表題通り、MikroCを使いました。

 ファームウエアのダウンロード

 ファームウエアはZIP圧縮されています。
 ソースファイルのみですので、コンパイルする場合は、プロジェクトを作成して、ファイルをプロジェクトに加えて ください。
 簡単な内容ですので、説明は不用かもしれません。

 CCPの割り込みを1秒に1回、発生させています。
 時間精度を、あまり問題にしないので、通常のタイマー割り込みで十分ですが、内部発振器の周波数精度に興味があったので、 CCP割り込みを使ってみました。
 CPUクロックを2MHzに設定すると、内部クロックは1/4の500KHzで、サイクルタイムは2uSになります。
 これを8分周して62500カウントすると1秒になります。
 実際のタイマー時間は、2時間に設定したとき、+30秒でしたので、内蔵発振器は+0.5%程度の精度になりました。
 発振周波数やCCPの比較値を微調整すれば、もう少し時間精度は上がりますが、必要無いので、そのままです。

 スイッチの読み取りに、ビットフィールドを定義していますが、これもコンパイラの動作を確認するために使ってみただけ です。
 この例では、特にビットフィールドを定義する必要はありません。
 ウオッチドッグタイマーはコンフィギュレーションではオフにしていますが、起動後、レジスタ操作でオンにしています。

PIC12F683

 PIC12F683の名称は12Fになっていますが、14ビットコアで16Fと同じ構造です。
 8ピンのパッケージに多くの機能を詰め込んであるので、高機能で便利と言えなくもないですが、その分、簡単な用途に 使う場合、設定が煩わしいです。
 クロック源やクロック周波数の設定等をしなければなりませんが、結構、判りにくいです。
 ピンをIOポートに使う場合、アナログポートと兼用になっているので、デジタルポートに設定しなければなりません。
 これは、最初から頭にあったのですが、コンパレータと兼用になっている事に目が届きませんでした。
 レジスタ操作で「コンパレータを使わない。」と設定しないと、IOポートとして使えないようです。
 最初、入力ポートに設定したはずのPINから、5MHzの方形波が出ていたので悩みました。

 注意事項

 回路図や、ファームウエアは私の製作の紹介であり、他の人が作る事を目的にしていません。
 もし、製作する場合は各自の責任で、お願いします。
 簡単な回路ですが、AC100Vを使用するので、感電等の事故の可能性があります。
 回路図に書かれていない、多くの制限事項があります。
 例えば、電源コードの電流容量とか、SSR出力素子の放熱とか、構造的な強度、耐久性とか、いろいろあります。

 バグ情報

 ダウンロードしたソースファイルを2011年3月現在の最新の環境(MikroC PRO for PICVer4.60) でビルドした場合、エラーが発生します。
エラー個所
 上図でビットフィールド構造体の変数名を " bit " と定義した訳ですが、最新の環境では " bit " が予約語になってしまった ことが原因です。
 どのバージョンから予約語になったかは不明ですが、以前は通りました。
 ビルドしたとき、意味不明のエラーメッセージが鬼のように出ましたが、" bit " が強調文字に表示されていたの で判りました。
 対策としては変数名を変える以外に無いので、安易に _bit と変更しました。
 一方、byte の方は予約語になっていないので、このままでも良いですが、こちらも _byte と変えました。
 MikroCでは細かい仕様が少しずつ変化していますので、今後のバージョンでは、さらに別のエラーが発生する可能性 がありますが、常にメンテナンスは出来ません事を了承願います。
 尚、HEXファイルの方はチップが変わらない限り、今後も、そのまま使えます。


トップページ  「電子回路」のトップ