<Main

 

PIC12F683,16F684,(+12LF1822,etc)を使ったその他の作品

 

 

  アラーム時計零号

いつ作ったか忘れてしまった。10年以上前か。HD63B03RP、HM6116LP-3、HD74LS10P、MC14082Bを使ってる。ACアダプターを使って、ニッカドバッテリーでバックアップ。1個の押しボタンを使ってアラームの設定が出来たと思う。しかし、どうやって設定していたかは忘れてしまった。他には何の機能もなかったな。プログラムは4個スナップスイッチで直接、RAMに機械語を打ち込んでいた気がする。詳しいことは全く忘れてしまった。遠い昔の遺物になってしまった。 

 

  アラーム時計

現在時刻とアラーム時刻はEEROMに書き込んでからスタート。プログラムは簡単だが、アラームをセットする度に、現在時刻とアラームを書き込まなければならないので不便。だが三年経った今も動いている。ただ時間が20分ほどずれている。誤差を小さくしようと、TMR1を月ごとに変えてみたりしたが、今考えれば意味がなかった。

 

  アラーム時計

アラーム時刻を外部からセット。ボリュームと押しボタンで時、分等を決めて一気に送信。タイミングの取り方が難しかった。しかし煩雑で使わなくなってしまった。

 

  アラーム時計

マッチ箱使用。圧電サウンダの音が小さいのでブザーに変更。車の中でも使えるようになったが、「経過時間」と「現在時刻」は音の変化がなく使いにくくなった。

  アラーム時計

SOICを使用。ペンに収納できる圧電素子が見つからなかったため、2色LEDで我慢。電池は釣り用のを使用。電池の入れ替えが非常に困難なため、使用しないときはスリープさせる命令を追加。現在時刻の設定も時と分だけに変更する。

 アラーム時計

調味料入れのガラス容器に入れ食卓で使用。これもブザーに変更。

 アラーム時計

フィルムケースに入れて使用。これもブザーに変更。ちょうどいい大きさ。

 

  プログラムタイマー

扇風機の土台を改造しアラーム時計のプログラムを改造して使用。ラッチングリレーを使い乾電池で動作。しかし100Vからのノイズで色々な設定が誤動作するので、コンセントから外す必要がある。

 

 Pickit1

ターゲットPicの抜き差しが面倒で、スライドスイッチで書き込みと実行が簡単に切り替えられるように改造。周辺回路を選ばないのが便利。

 

   Pickit2

ICSPを14ピンソケットに接続。ブレッドボードに挿して実験。周辺回路は注意が必要だが、書き込みと実行が簡単に使い分け出来るので、一度使うと手放せない。Logic Analyzer にもなるので、非常に便利だ。

   オンボード書込み

Pickit1を使わなくなったため、フリーエリアに作ったオンボード書込み装置を切り離して、Pickit2で使用。GP0,1,3を自由に使えるのは楽だ。が、時々書き込みができなくなる。色々、試してみたが、フラットケーブルの使っていない線をアースに落とすとことで良くなった。

   12F683専用ICSP

PIC12F683-ICD/Pを使用。スライドスイッチで切り替えなくても全ピンを自由に使えるようになった。最初、書き込みができるのに実行できなかったが、ICD端子をFETを使って書き込み時のみローにすることで正常に実行できるようになった。

 

   デバック用LCD

上の14ピンソケットに重ねて使用。VssとDB4〜DB7のみソケットに接続。Vdd,E,RSはどのピンにも接続できるようにした。

 

   寝たらだめ

転倒スイッチを使用。ケースを立てると電源が入ってスタート。ケースを倒すと15分後にブザーが鳴る。約1時間 監視して、スリープする。ケースを倒して電源が切れる。

 

     停電があったか?

いつの間にか停電があって、AV機器の時計がくるっていることがある。100Vが切れた時、LEDが表示してくれないかな、と考えたが思いつかない。が、よくよく考えたら100Vが復帰したらLEDを点滅させるだけでよかった。LEDナツメ球を分解して利用。

     停電があったか?2

通電時にはまったく役にたっていないのがもったいなく、ばけたんストラップを分解して基板をつけてみる。おばけを発見すると、インジケーターがおばけのレベルに合わせて光るだけなので、音が出るようにする。妙なタイミングで音が出るから不思議だ。基板にはアンテナらしき配線があるが、どういう仕組みで探知しているのだろうか。

 

      外灯用自動点滅器

アラーム時計のプログラムを改造。ラッチングリレーを使いリチウム電池で動作。半月ごとの日の出、日の入り時刻をEEPROMに登録しておいて、それを元にオンオフする。1号機は1年で1時間以上ずれてしまったが、今度のはほぼ合っているような気がする。・・・約2年後、偶然目の前で点灯したので、調べてみたら7分遅れていた。簡単に補正できないのが欠点だ。

 

       メッセージボード

最初はLEDドットマトリクスでメッセージを表示させたかったがIOとお金がなく、6個のLEDを使いメッセージは6枚の紙に書くことにした。LEDを点滅させることで、用件を表現。6個のスイッチを使えば簡単だったが、予算の関係でLED自体をスイッチにした。LEDを手前に引っ張ることでカソードがマイナスに接触。それを感知してLEDを点滅。電池節約のため、暗くなるとLEDで感知して消灯する。

       メッセージボードの改良

接点の耐久性に問題があり、結局、6個のタクトスイッチに切り替える。残念。

 

        よくあるキッチンタイマー

マイクロスイッチを押すとウェイクアップし、WDTをセット。TIMER0を使って押された回数をカウント。約2秒後、リセットがかかり、押された回数掛け1分間待ってLEDを点滅。終わったらスリープ。

 

       室温測定

アラーム時計のプログラムを改造。DALLASの18B20を使って2時間ごとに気温を測定。スイッチを入れるとLCDの下段に1日分の温度変化をグラフで表示。上段には1ヶ月分のおおよその平均値を1年分グラフで表示する。

 

        扇風機のスイッチ

扇風機のスイッチが壊れたのでPICでオン、オフ。ボリュームの値に応じて、オン、オフの時間を変更。WDTを使っているので、数μAで済む。超微風が出るのがいい。最初、PWMを使おうとしたら、モーターが振動して大失敗だった。

 

         録時器

ヴォリュームのスイッチを入れminの位置に合わせて、時間の計測を開始。希望する時間になったところで、つまみを1〜8のどれかに移動。その位置に時間が記録される。再生は、スイッチを入れ目盛りに合わせると、そこに記録された時間をカウントしてブザーを鳴らす。途中で所定の動作をさせることで、プラスマイナス数分、増減することが出来る。動作中、他の位置に合わせると、リセットを掛けて再スタート。

         録時瓶

ヴォリュームのスイッチを入れmaxの位置に合わせ、数秒待って回すことで、1、2、3、・・・8分タイマーと10、20、30、・・・80分タイマーを追加したが、あまり使うことがないので、使い方を忘れてしまう。

         録時器2

長押しで時間の計測を開始。希望する時間になったところで、短押しを1〜99回の範囲で押す。その番号に時間が記録される。例のごとくWDTで時間をカウントするので2μAですむのがいい。再時間は短押しで1〜99回の間で押すが、実際問題、99回も押せないし、99通りも内容を覚えていられない。

No image

         16F1823を使った録時器2

12F683用のアセンブラを16F1823用に変換する。中途半端な互換性で苦労する。バンクが0から31まであるのには驚いた。何とか動くようになったが、スリープ中でも27μAも流れており、変更する意味がなかった。そこで16LF1823に交換する。さすがXLPだ。WDTを使用しても0.8μAに減少した。しかし1.8V-3.6Vというのが、使いづらい。

 

   アラーム時計+表示器

アラーム時計のプログラムを改造して、「現在時刻」「経過時間」「(インターバル)・タイマー」のデーターをシリアルで送信。表示器はデーターを入力すると、オートパワーオンして、それぞれのデーターを7セグ4桁に表示する。データーが終了すると、WDTを使って、約80秒後にオートパワーオフ。

 

    目覚ましタイマー

マイクロスイッチを長押ししてブザーが鳴ったらスタート。次に押した回数掛け10分間ループ。その間に長押しされたら、中止。時間が来たらブザーを鳴らす。スイッチを押すと止まるが、1分後また鳴り出す。長押しして止まったブザーが再び鳴り出すまで、それが続く。二度寝、三度寝したいとき、便利。

 

  ザッピング用赤外線リモコン+CMジャンプ

押したボタンの順番と間隔を記録して、再生する。最初、使っているリモコンの解析にCapture を使おうとしたが難しく、悩んでいた時、Pickit2のv2.5が出たので使ってみたら30分で完了した。送信部分はPWMのお蔭で簡単に作れた。追加で、2度押しで90秒後に、3度押しで2分後に送信する。

 

     携帯に留守電が入っているか

携帯電話に留守電が入ったときの合図のLED点滅を、WDTを使って約4.9分ごとにチェック。点滅していればブザーを鳴らす。オペアンプにはその都度、電源を入れるので、省電力。

No image

      4和音オルゴール

19.53KHzのPWMを使って音を出す。220Hzから415.3Hzまで、12種類の正弦波の半波長分の8ビットのデーターを用意。高音はデーターを間引いて使用。51.2μSの割り込みごとに4和音の合計(10ビット)をDuty Cycle Registersにセットする。4和音が鳴っているのが確認できたが、「12和音PICオルゴール」を聞いて、製作を中断する。

 

      二人用のタイマー

中央の中点付きトグルスイッチで二人分の残り時間を表示。右端の片跳ねトグルスイッチで時間を設定。Timer0で押した回数を数え、INTピン割り込みでWDTをセット。入力し終わって数秒経つと、リセットされ、Timer0の値を設定時間にセットする。

 

       単純計算器

最初、10キーで入力して掛算加算した結果をLCDに表示しようと思ったが、適当な10キーがなく、ロータリエンコーダで入力する。ただ、お蔭で小型化できた。しかし、回転速度をみるプログラムがあまり良くなく、時々値が大きく飛ぶ。後で、パルス幅に応じて増減の量を変える方式にして良くなった。割り込みでウェイクアップし、暫く操作しないとWDTを使ってスリープする。が、寒くなるとエンコーダの動きが固くなり、誤動作する。暖めると良くなる。

 

      充電池は何時間もつか

電源が入るたびにカウントして積算していく。99時間59分59秒まで計測。読み取りは、Pickit2に繋げて読む。GP2をマイナスにするとEEPROMに履歴を残して、カウンターをクリヤーする。ブラウンアウト・リセットを使うので消費電流は0.5mA。・・・"Read"をクリックするところを"Write"を押してしまい、今までのデーターがすべて消えてしまう。がっかり。

      充電池は何時間もつか+今の電圧は

1分ごとにLEDの電圧を測る。前もって実験で得たデーターを元に電源の電圧をLEDの点滅回数で表示する。

 

       車のスモールランプ消し忘れ防止

リードスイッチでツマミの位置を検出し、WDTで約30秒ごとにアラームを鳴らす。運転中は動作しないように、2本の線を軽く接触させて振動でチャタリングを検知しようと思ったが、うまく行かず。振り子形にする事で何とか使えるようになった。が、やはり100%ではなく、結局、秋月の振動(傾斜)スイッチAT407に替える。が、半年で誤動作するようになってしまい、秋月のRBS040200に換える。

 

       ルーレット

押しボタンを押すとINTピン割り込みで起動。押している間カウンターを回す。離した時の値をEEPROMに記録してだぶらないようにする。その値を元に8個のLEDで表示する。数秒後、消灯してスリープ。何十回か試したが、当然偏りはなかったが癖があった。

 

       車のサイドブレーキ戻し忘れ防止

秋月の振動スイッチ(チルドスイッチ)を使用。ブレーキレバーの傾きを検出してウェィクアップ。走行の振動を感じてアラームを鳴らす。ブレーキを戻すとスリープする。ただ、振動スイッチの感度がよく、ドアの開け閉めでも鳴る。

 

        3時間後にスイッチオン

WDTで時間かせぎ。割り込みが使えず誤差も大きいが、何より2μAで、手軽に使えるのがいい。製作中、1番ピンを根元から折ってしまったが、ニッパーで本体を削って事なきを得た。

 

         風呂用タイマー

給湯時間用と燃焼時間用のタイマーでブザーでお知らせ。燃焼時間はサーミスタを使って外気温を測定し調節する。長押しでキャンセル。両ボタンを同時に押すと、補正モードになり、プラスボタン、マイナスボタンを押した回数掛ける1分で、定数を増減。±0分の時は定数を初期化する。

 

          留守電が入っているか

WDTで数分毎にCDSでランプの点滅をチェック。明るさが変化したらブザーを鳴らす。欠点は電圧の低下が分からない。ブラウンアウト・リセットを使うと、数百μAも増えてしまうので使えない。仕方なく時々、目で見て確認する。

 

           簡易モニター

ターゲットボードからのシリアルデーターを表示する。125KHzから8MHzのクロックに対応するため、まず基準となる長さのパルスを送り、それより長いか短いかで1,0を表現。8ビットを送信して、プラス1ビットで表示をスクロールさせるかしないかの設定を送信。受信は16F684のCapture-Modeを使用。8MHzで約76kbpsが最高だった。LED点灯用のピン等と共有できるのがいい。状態変化でパワーオン、WDTでオートオフ。

 

           扇風機専用温度コントローラー

寝室の一方の窓に扇風機を外向きに設置。他方の窓を全開にして、少し下がった外気を取り込む。DALLASの18B20とラッチングリレーを使い乾電池で動作。31℃以上でオン。28℃以下でオフ。28℃から31℃はヴォリュームの値に応じて、比率を変えてオンオフを繰り返す。熱帯夜以外はぐっすり眠れるようになった。つけっぱなしで喉が痛くなることもなくなった。

           ボタン押し機

アラーム時計の圧電素子の代わりに、GP0出力->秋月のTND012NM->自己保持型ソレノイドで、設定した時刻にボタンが押される。

           リモコンのしっぽ

リモコンが行方不明になった時、音ではなく光の明暗で探せないか考えてみた。ULPWUを使って7秒ごとに起動して明るさをチェック。周りを暗くして明るくして暗くして明るくするとブザーがなるようにした。が、昼間は使えず、下敷きになっていても使えず、・・・。断念する。結局、左の写真の形がシンプルでベストだった。

           PWM制御+ON・OFF制御

ヒーターの温度調節が壊れたのでPICでPWM制御してみる。ついでにボリュームのスイッチを入れてすぐMAXにして戻すと、15秒周期でON・OFF制御するようにする。SSRは秋月の16Aタイプをを使用。使っていなかったCPU用のヒートシンクが役立った。ACアダプターを使用したので消費電流を気にせずプログラムでき楽だった。トグルスイッチは入力と出力を直結するために付ける。

         分離型アラーム時計(本体+設定器)

本体にはPICと圧電素子と電池。設定器にはマイクロスイッチとLEDと電池。GP3を使って接続状況をチェック。合体している時は設定器の電池のみ使い、アラームを鳴らさない以外は通常動作する。切り離されると、GP2を出力に変更、アラームを鳴らすようにする。ただ、スイッチがないので途中で音は止められない。

No image

        16LF1823を使ったアラーム時計

16LF1823に移植。割り込み時のレジスタの自動保存は便利だが、FSRまで保存されてしまい非常に不便だ。LATAはバンク2にあり、使い辛い。EEPROMの書き込みステップ数がかなり増えた。間接アドレッシングは大幅に強化されたが、それなら最初からバンクとか使わず、リニヤなメモリー空間にして欲しかった。が、消費電流は8μAから2μAに劇的に減った。またコンデンサーを33pから22pに替えることで0.2μA減った。

        16LF1823を使ったアラーム時計で電源オンオフ

16LF1823とラッチングリレーを使いリチウム電池で動作。しかし100Vからのノイズでマイクロスイッチを使う設定が誤動作するので、コンセントから外す必要がある。そこでPIC用とリレー用に2個の電池を使用し、間をフォトカップルでつなぐ。その上でアルミホイールでリレーを包んで、やっと誤動作しなくなった。

        DS32KHZ on 12LF1822(アラーム時計)

水晶振動子ではどうしても急激な温度変化で周波数が変動する。そこでマキシム・インテグレーテッド社の温度補償水晶発振器、DS32KHZ/DIP(出力32.768kHz、$12.64で購入)を使ってみる。少々でかい。精度は、±1分/年(0℃〜+40℃) が期待できる出来るそうだが、実際はどうだろう。但し、消費電流は0.4μAから3.1μAに増えた。

       12LF1840を使ったアラーム時計

12LF1840に移植。Program Memoryが2倍になって単純に喜んでいたら、ページ移動のめんどくささに閉口。少し機能を追加する。なぜか時々、割り込みが起こる度にプチッ、プチッと音がする。パスコンを付けると音はかなり小さくなる。消費電流は12LF1822と同じだった。

  アラーム時計

海外のサイトで見かけた虫型を、真似して作ってみる。

No image

  アラーム時計

アラームの[-][5]でRA0に0を出力する状態にし、[-][6]でRA0を入力の状態になるよう変更してみる。エラーの時は、RA0の状態を反転する。これで、トランジスタやFETを使わず、ブザー等が使えるようになる。ただ2kワードを越えたのは残念。

発売中

   12LF1822を使ったアラーム時計(正式版)

詳しい仕様はこちらを御覧下さい。なお、期間限定で、サンプル版(本年12月31日まで有効。PDIPのみで、コード・プロテクトしています。)の書き込みをお一人様1個限りで無料でしています。

 

  東京オリンピックまであと、何日何時何分か、

とかは、どうでも良かった。DS32KHZを使ったアラーム時計のアラームチェックの部分を削って、1分ごとに残り日数、時間、分を計算して、EUSARTで送信。それを螢好肇蹈戰蝓次Ε螢淵奪スのロジックレベルコンバータ(210円)を通して7セグメントLED表示キット(2800円)に送る。回路は実に簡単。便利になったもんだ。0日になった後は、1,2,3,・・・日と増えて行く。真の目的は10000日めに、未来の子供たちへ、私のメッセージがASCIIコードで約120語(EEPROMに格納)、電光掲示板風に表示される事だ。その日は2047年12月9日(月)だ。最後に「裏蓋を開けよ」とメッセージした。箱の中に、今の身の回りの画像とか動画を保存したSDカードとASCIIコード表を入れた。先が長いので色々対策を取った。ACアダプターを使っているので、停電になったら内蔵の電池(CR-V3を2個並列)に切り替わるようにした。PIC自体は2μAしか消費しないのでかなり保つと思う。電解コンデンサーは避け、タンタルやセラミックにした。部品はなるべく接着剤で固定した。簡単に壊れないように、ビスでがっちり組み立てた。ACアダプターが引っ張られても本体を壊さないように、コードが簡単に切れるようにした。また簡単に触れないように、天井近くの壁にネジで固定した。しかし心配事だらけだ。7セグメントLEDが30万時間点けっぱなしで保つのか。PICは動き続けるのか。1年に1回ぐらいは[-][14]で補正して行きたいので、箱の上部にマイクロスイッチのレバーを出してある。地震、雷、火事、竜巻、津波、放射能、戦争、区画整理、何が起こるか分からない。また子供たちがASCIIコードが理解できるかも不安だ。そもそもASCIIコード表は箱の中にある。それとSDカードからデータが無事に取り出せるのか。ファイルの形式が将来変わっていないか。心配事は多いが、その中で一番の心配は、その結果を私は知ることができるのだろうか!? 

Main

 Copyright(C) 200?,2008 - 2011,2013(〜2047/12/9)   mxdwdn    All rights reserved