8ピンPICマイコン時計の製作(経緯・過程編)


【皆で作ろう】PIC専用のスレPart13【Writer509】より
(注:アップローダのファイルはすべて流れてしまっています。)



405 :774ワット発電中さん:2007/05/05(土) 21:37:19 ID:7ucZL5tB
ゴールデンウィークの自由研究wに、PIC時計を作ってみることにした。
・・・が、ブレッドボードでの配線だけでメゲた。

とりあえず、PIC12F675(8ピンのやつ)1個だけで4桁時刻風の数字を表示するところまで
やってみたので報告。

ttp://panda.orz.hm/uploader_001/src/file93.jpg 製作開始
ttp://panda.orz.hm/uploader_001/src/file94.jpg ジャンパ使い果たした・・・
ttp://panda.orz.hm/uploader_001/src/file95.jpg 切ったパーツの足でジャンパ
ttp://panda.orz.hm/uploader_001/src/file96.jpg 多連LEDを切り離して使用
ttp://panda.orz.hm/uploader_001/src/file97.jpg LEDを載せてみた
ttp://panda.orz.hm/uploader_001/src/file107.jpg ひとまず配線完了
ttp://panda.orz.hm/uploader_001/src/file99.jpg 配線バグを取ったているうちに汚くなったw
ttp://panda.orz.hm/uploader_001/src/file100.jpg バグ取りを終えてPICも載せてみた
ttp://panda.orz.hm/uploader_001/src/file108.mpg 非常に暗いが一応カウントする
ttp://panda.orz.hm/uploader_001/src/file102.gif 最初の配線図
ttp://panda.orz.hm/uploader_001/src/file103.gif バグ取りを終えた配線図
ttp://panda.orz.hm/uploader_001/src/file104.txt まだ高速カウントアップだけのソースプログラム
ttp://panda.orz.hm/uploader_001/src/file105.txt 欲しい人がいるかどうか分からんけど一応HEXファイル
ttp://panda.orz.hm/uploader_001/src/file106.txt PIC出力と点灯するLEDの対応表(メモ)

外部バッファ(トランジスタ等)を使ってないのと安物の低輝度LEDを使ったので、表示は非常に暗いです。

一晩寝て元気が出たら、時計に仕上げてみよう。


406 :774ワット発電中さん:2007/05/06(日) 00:48:42 ID:sTespIba
作ってから回路図かいたよ。

ttp://panda.orz.hm/uploader_001/src/file125.gif 回路図はこんな感じでLEDだらけ

S1〜S3は時刻設定用の押しボタンスイッチ。ちょうどいいシンボルがなくて変なシンボルになってるけど。


407 :774ワット発電中さん:2007/05/06(日) 10:46:07 ID:0Ua7OzkN
7セグ使ってないとは頑張ったな


408 :774ワット発電中さん:2007/05/06(日) 11:35:49 ID:sTespIba
>>407
8ピンPICじゃポート足りなくて7セグ使えないんで。


410 :774ワット発電中さん:2007/05/06(日) 18:21:41 ID:oAHObqLA
>>406
その点灯方法だと輝度のバラツキが気にならないか?


412 :774ワット発電中さん:2007/05/06(日) 22:12:41 ID:sTespIba
>>410
正直かなり気になるが、回路のシンプルさを優先させてみた。

この駆動方法で発生する輝度のバラつきは次の2種類。

1. LED自体のVFのバラつきによるもの。
2. PICのVOH,VOLやD31〜D33のVFのバラつきによって発生する、「D1〜D20」「D21〜D25」「D26〜D30」の3グループそれぞれの駆動電圧のバラつきによるもの

このうち1.は、他のどんな駆動方法でも抵抗で電流制限すれば同様に発生する。
定電流駆動すればかなり解消できる。やってないけど。

2.はこの回路に特有のもので、グループ内の輝度は(上記1.の範囲内で)だいたい揃うが、グループ間の輝度は大きくバラついてしまう。
D31〜D33のVFでバイアス電位を与えるのではなく1.と同じく定電流源にすれば、グループ間の輝度のバラつきはかなり解消できるはず。やってないけど。

この場合でも「D21〜D25」と「D26〜D30」の駆動電流は「D1〜D20」と比較して少なくせざるを得ないが、それによる輝度差はダイナミック点灯の点灯時間の比率を増やすことでソフト的に補償できる。


414 :774ワット発電中さん:2007/05/06(日) 23:36:07 ID:LrJMXkO5
単純に電圧上げるだけじゃだめ?


415 :774ワット発電中さん:2007/05/07(月) 00:08:49 ID:pXfQlji2
>>414
D1〜D20を明るくする(=流す電流を増やす)だけなら、電流制限抵抗R1〜R5を減らせばOK。
例えばGP0=H、GP1=LにするとD1が点灯するが、R1とR2を減らせば電流が増えてD1は明るくなる。

このとき、D33の電圧降下(ダイオードドロップ)がR2の電圧降下より少ないとD26も同時に点灯してしまう。
この状態ではD1とD33を別々に点灯できないので、これを避けるため、D33の電圧降下はD1点灯時のR2の電圧降下より大きくしなければならない。

GP0=HにするとD26が点灯する。こちらもR1を減らすかD33の電圧降下を減らせば明るくなるが、上記条件を満たすとD1点灯時のD1の電流よりも少なくなる。


416 :774ワット発電中さん:2007/05/07(月) 00:09:51 ID:pXfQlji2
× この状態ではD1とD33を別々に点灯できないので
〇 この状態ではD1とD26を別々に点灯できないので


427 :774ワット発電中さん:2007/05/07(月) 08:48:45 ID:pXfQlji2
http://kossie.run.buttobi.net/cgi-bin/up/src/kos0652.gif 最終的な回路はこんな感じ(ほとんど変わってない)
http://kossie.run.buttobi.net/cgi-bin/up/src/kos0653.gif 配線図はこんな感じ(電源とフォトカプラ周辺は省略)
http://kossie.run.buttobi.net/cgi-bin/up/src/kos0654.jpg 実物はこんな感じ
http://kossie.run.buttobi.net/cgi-bin/up/src/kos0655.mpg 電源断⇒再投入の様子
http://kossie.run.buttobi.net/cgi-bin/up/src/kos0656.c 最終的なソース
http://kossie.run.buttobi.net/cgi-bin/up/src/kos0657.hex 12F675向けにコンパイルしたHEX
http://kossie.run.buttobi.net/cgi-bin/up/src/kos0658.hex 12F683向けにコンパイルしたHEX

ソフトの内容はこんな感じで一段落。

・時刻表示は0:00〜23:59の24時制表示
・SW1を1回押すと「時」設定モード
・もう1回押すと「分」設定モード
・もう1回押すと通常表示モード
・通常表示モードでは時刻表示の間のドット(「:」)を1Hzで点滅
・通常表示モードでSW2を押すとテストモードON/OFFを切り替え
・テストモードをONにすると、時刻のカウントアップが600倍速になる(「分」が0.1秒ごとに増える)
・設定モードでは「時」または「分」を点滅表示
・設定モードでSW2を押すと「時」または「分」を1つ増やす
・そのままSW2を押しつづけると、1秒後から0.2秒ごとに1つずつ増やす
・SW1,SW2の状態取得にチャタリング防止用の50msフィルタ
・AC電源からの基準クロックを(フォトカプラ経由で)取得
・基準クロック取得にノイズ防止用の3msフィルタ
・基準クロックが30ms取得できない場合、現在時刻をEEPROMに保存
・初期化時、EEPROMに現在時刻が保存されていたら、その時刻で初期化
・初期化時、バナー(「HELLO」)表示
・初期化時、実測した基準クロック周波数を表示
・初期化時、基準クロックの周波数(50Hz/60Hz/100Hz/120Hz)判別

12F675向けにコンパイルしたところ

| ROM used: 969 words (95%)
| Largest free fragment is 55
| RAM used: 34 (53%) at main() level
| 60 (94%) worst case
| Stack: 6 worst case (4 in main + 2 for interrupts)

と、ぎりぎりで収まった。(ただし動作確認は12F683)
アラームを付けたら多分収まらんかった。

AC電源からの信号入力の注意点をいくつか。

TLP521等の直流入力用のフォトカプラを使う場合、>>420の指摘のようにフォトカプラのLEDと逆並列にダイオードを入れること。
この場合、基準クロック周波数は50Hzまたは60Hzになる。

TLP626等の交流入力タイプを使う場合、逆並列ダイオードは不要。この場合、基準クロック周波数は100Hzまたは120Hzになる。

半波整流や全波整流後の脈流をフォトカプラに入れる場合、逆並列ダイオードは不要。ただし整流⇒ダイオード⇒コンデンサ平滑のようにダイオードを追加し、整流⇒ダイオードの間にフォトカプラを接続すること。
この場合、基準クロック周波数は半波整流時で50Hzまたは60Hz、全波整流時で100Hzまたは120Hzになる。

AC100Vを直接フォトカプラに入れる場合、R10は30K〜100Kくらい。小電流の割に抵抗での消費電力が多いので、定格電力に注意。


433 :774ワット発電中さん:2007/05/08(火) 13:47:16 ID:vUjIsX4J
>>427
しっかし、よく8ピンPICでやったわなーwww
アセンブラじゃ発狂するねwwwwww
これはどのCだ?
ソースブースト?ハイテック?CCS?MIKROC?


434 :774ワット発電中さん:2007/05/08(火) 14:01:28 ID:AcHyFgg+
あーそういえばコンパイラ名書いてなかったね。
CCS-C V3.249(V3の最終バージョン)を使用。

固有ディレクティブ・関数を使いまくってるので、他のコンパイラではコンパイルできないと思う。
それどころか、CCS-CのV4でもダメかも。

まぁ、ソース見る物好きはいても追試する人はおらんだろうけどww


446 :405 ◆xcrOSgS2wY :2007/05/10(木) 18:35:20 ID:LpJAC/79
>>427の強引PIC時計を3日連続で動かしてみたが、誤差は1秒以内に収まってるみたいなんで、
基準クロックのカウントに境界バグはなかったようだ。

次は便所紙引き出し長さアラームを作ろうと思っている。
家族に、音が響くほどのすごい勢いで便所紙を引き出すやつがいるんで、何とかならんかとww

構成は>>372-402のようにCdSで入室(照明点灯)検知、フォトインタラプタで便所紙引出し量検知、
スピーカでアラーム(20cmごとにビープ、1mごとに長さを読み上げ(「いちめーとる!」等))、
リチウムボタン電池1個で1年以上動作が目標。

読み上げデータを格納するメモリ容量を考えると、今度は8ピンPICが使えなさそうなのが残念。

戻る
inserted by FC2 system