2024年6月12日水曜日

出入り検知器をPCB化する(その5)

 ここで改めて何を作っているか要求項目を列挙すると、

  1. 人の出入りを検知して声でメッセージ(いらっしゃいませ、ありがとうございました、等)を出す。
  2. 電池で稼働できること(低消費電流)
  3. 専門知識が無くても使える事
  4. 気圧の変化を感じて何かのメッセージを喋る。
  5. 4.を処理するため時計が必要。
  6. 5. の機能を使って時刻に対応したメッセージを喋る。 
  7. 外部制御端子(発声時にONするなど)
  8. 電源電圧の監視と警告機能

といった ところであるが、これに付随して次のような機能を追加した。

  •  時刻、気圧(補正値)の設定
  •  喋る内容を設置環境に応じて変える(家庭用、店舗用など)。
  •  時刻、曜日を指定して喋る機能(毎日、週末、週末以外)
  • 定期的に時刻と気圧、気圧変化傾向を喋る機能
  •  夜間モード(夜間は発声抑止、LEDを暗くする、など)
  •  LEDの明るさを設定する機能
  •  

また次のような機能も実装を予定している

  •  時には声ではなくメロディを流す。

 これらを実現するため、コア部分には低消費電力のPICを使うが、PICに足りない機能は別途実装する。精密時計、気圧計、EEPROMなどである。

 これらのうち大部分はこれまで説明した内容であるが、LEDの明るさを制御するにはPWM(パルス幅変調)を使いデューティ比を変化させる。CLC(プログラム可能なロジックセル)を使ってこれとLEDのON信号とのANDをとったものをLEDに与える。この理屈は簡単であるが実際にこれをPICの機能を組み合わせて実現するには面倒臭いプログラミングが必要である。PIC18F27Q43には8つのCLCを内蔵するがそのうち4つをLED制御に使った。また3つ内蔵するPWM(パルス幅変調器)のうち2つを使って、1つを明るさの調整に、他をLEDのブリンク(点滅)に使った。

CLCを使う上での第一の関門はInput Data Selection on Gates である。ここではPIC内部の数十ある信号の中から4つ、及びその反転信号を選択して取り出すことが出来(つまり8つの入力信号ができる)、4つの出力はそれぞれ8つの入力信号の中から任意の信号を選んでORをとりその正論理又は負論理を取り出すことが出来る。つまりNAND、OR、それにロジック1の何れか及びその反転出力(AND,NOR,0)を実現できる。この出力が上図のkxg1~4である。

次にLogic Functionではあらかじめ設定された4入力の8つの回路(機能)のうちの1つを選択できる。そのうち4-AND、AND-OR、OR-XORを使った。それぞれ負論理で使うと4-OR、OR-AND、AND-XORとして機能させることもできる。次図は8つの機能の内の最初の4つである。

これらを使って赤LEDは次の様に点灯させている(図は分かり易いよう簡略化している)。

このなかのXOR(OR-XORを除く)の2つの入力は等価ではなく上が何らかの信号入力、下がソフトウェアでセットするビットである。即ち輝度はCLC2でBrightnessのPWMとANDを取っているが、警告信号は赤の連続点灯、電圧低下は赤のブリンクで示し、警告と電圧低下が重なった場合にはブリンクの明と暗の時間比を逆転させている。ここで信号名の前の「/」は負論理を表す。

(その6へ続く)

0 件のコメント:

コメントを投稿