PIC [ミニ作品1]

PIC で作った簡単な装置です。勉強がてらのお遊びです。
更新日 2016-08-12

アイスボックス・ビープ

冷凍庫が1分以上開いているとアラームがなる装置です。最初の30秒はゆっくりLED を点滅させ、続く20秒はやや速く。そして最後の10秒はチカチカ点滅させます。 それ以降はやや音程を付けたビープ音も鳴るようにします。
記念すべき 初のPIC 電子工作ですが、3年以上経った今でもノーメンテで壊れる事なく常時動作しています。

使用部品

PIC12F675、マイクロスイッチ、圧電ブザー、3mm 赤色LED を使います。抵抗は100kΩ(マイクロスイッチ用)と300Ω(LED用)の二つだけで、電池は1.5V ボタン電池 を 3個使います。電源安定用に0.1uF のコンデンサも挟んでおきます。

ソースコード

icebox_beep_main.c
GP3 (GPIO3) をマイクロスイッチ用に使っています。ドアが開くとマイクロスイッチが通電(グラウンドにショート)するように配線しています。これによりGPIO3 に 変化が起き、割り込み・スリープ復帰が生じます。スリープを使うのは、超低消費電力だからです。
 [MPLAB PICC] icebox_beep プロジェクトファイル一式

完成品

小売店用のアイス冷凍庫の上に設置しました。スリープ時はほとんど電力を消費しない為、ボタン電池を直列3個で2年以上も余裕で動き続けます。利用頻度からすると想定以上に低消費電力なようです(ゴールデンパワー製のボタン電池は10 個で100円です)。

接近カウンター

15cm 以内に1秒間、50cm 以上を3秒間と交互に動く様をカウントしてゆく装置です。また単純に距離を表示したりLED アレイでイメージ表示もできます。

使用部品

距離センサー(GP2Y0A21YK)で測定します。4桁 7セグメントLED(OSL40562-LR)でカウント(または距離) を表示し、LED アレイ(B-1000SR)で距離をイメージ表示します。最近めっきり安くて人気の28pin DIP のPIC16F886を使います。電圧は電池4本で5.5V 程度です。距離センサーはやや消費電力が多い為、未使用時は電流が流れないようにしないと電池が空になります。

設計

4桁 7セグメントには12pin(RC0-3, RA0-7) が必要です。LEDバーは10pin(RC4-7, RB0-5) です。それぞれ470Ω程度の抵抗で光らせます。カソードコモンにはトランジスタを使ってグランドに流しています。距離モジュールからの電圧を(RB6)でA/D 変換します。スイッチは(RB7) に一つだけ。 内蔵クロック(8MHz) を使い、VDD とVSS(x2)の3pin でギリギリ27Pin となります。今回はリセットピンは不要なので使いません。

ソースコード

approach_counter_main.c
RB6 で距離モジュールの電圧を測定します。10Bit(1024階調) です。A/D 変換中にLED 表示を行う事でタイムラグ減らします。本来であれば距離は以下の計算式で算出できるのですが
int nDistance = (int)(tan((1705.4791 - nV)/1073.081) * 20);
これには時間がかかるため、あらかじめ1024 階調分の距離を計算しておいて定義済みとしておきます。計算にはcalculateTan.exe(C# プロジェクト一式) を用います。

 [MPLAB PICC] approach_counter プロジェクトファイル一式

完成品


ボタンの押し時間によって距離計・カウンタと切り替えができます。

コインカウンター

小銭を勘定する機械です。市販のおもちゃ(ソーター付き貯金箱 トイミニバンク)を買ってみましたが、それぞれ50枚までしかカウントできず使えませんでした。これを改造して999,999円(!)まで勘定できるようにします。硬貨の分別部位はそのまま利用します。

使用部品

28pin のPIC16F873A を使います。コの字型のフォトインタラプタ(GP1A53HRJ00F)で通過する硬貨を検出します。またLED で通過を知らせます。470uF の電解トランジスターを並列につないでおいてLED をぼんやり消灯させます(オフディレイ)。3桁表示の7セグメントLED(C-533SR)を二つ使います。LED ドライブ用電流の確保の為にトランジスタ 2SC1815 と、センサーに対するNOT 回路用に2SA1015GR を使います。

回路図

コインカウンター回路図
カソードコモンをトランジスタで通電制御する事で、7セグメントLED を桁毎に順番に表示処理してゆきます。

ソースコード

coin_counter_main.c
RA0-5 の値を細かくチェックします。硬貨が通るとフォトインタラプタは出力が失われ、RA ポートは0 となります(フォトインタラプタにはチャタリングはありません)。

[MPLAB PICC] coin_counter プロジェクトファイル一式

完成品

通常はアクリルカバーを付けてます。

センサーライト

自宅のセンサーライトが調子悪いので、Napion とNapica を使ってセンサーユニットを作り直します。ついでにAC100V を位相制御して調光も行います。

使用部品

AC100V の位相を捉えたいので基板用トランス(PK-06033)を使います。そこからブリッジダイオードと電解コンデンサ、3端子レギュレータを使ってPIC 用の DC3.3V も取り出します。 またAC6V からフォトカプラ(TLP180 AC 入力)を使って位相を捉えてPIC に伝えます。周囲の明るさを計るのにNaPiCa を、対人センサーにNaPiOn (10m 検出タイプ x 2)を使います。
位相制御にはフォトトライアック(非ゼロクロスタイプ S21ME3)、トライアック(BTA24-600CW)、ZNR(サージアブソーバー 200V) を使います。PIC には12F675(8Pin) を使います。

回路図

ナピオン・センサーライト回路図
Napion のOut とGround の間には512kΩの抵抗を入れておきます。オフ時にグラウンドとなる為に必要なようです。

ソースコード

完成品

制作から3年以上も屋外で常時稼働し続けていますが、全く誤動作する事もありません。10m 使用のセンサーも感度抜群です。

AC パワーコントローラ

ディスクグラインダーの速度調整をしたい為、AC100V を位相制御したパワーコントローラを作ります。上記のNapion センサーライトで培ったノウハウを流用しただけです。 10 段階に出力を制御して、LED Array で表現します。ディスクグラインダーは惰性で回るのでゼロクロスで制御しても差し支えないかもしれませんが、調光などの用途には不向きになります。

使用部品

今回も基板用トランス(PK-06033)を使います。そこからブリッジダイオードと電解コンデンサ、3端子レギュレータを使ってPIC 用の DC5V も取り出します。 またAC6V からフォトカプラ(TLP180 AC 入力)を使って位相を捉えてPIC に伝えます。プッシュスイッチで出力を調整できるようにし、LED アレイで表示します。LED アレイは左右5本ずつ制御する事で 使用するピンの数を低減しています。
位相制御にはフォトトライアック(非ゼロクロスタイプ S21ME3)、トライアック(BTA24-600CW)、ZNR(サージアブソーバー 200V) を使います。PIC には16F88(18Pin) を使います。

回路図


位相制御はNaPiOn センサーライトと同じ構成になっています。

ソースコード

完成品

AC100V を扱うので、基盤裏は接着剤(コニシボンド ウルトラ多用途SU)で絶縁しておきます。
残念な事に、ディスクグラインダーの速度制御に使って3回作り直して3回とも壊れました。