多目的スケジュールタイマー 

概要
身の回りには色々な電化製品、電子機器がありますがこれらは単にスイッチを押せば良いということが多々あります。
本ソフト(以後SKJ_Timerと呼ぶ。)は簡単にいうと時間になったらこれらのスイッチを入れる或いは切るという動作のトリガー(きっかけ)を提供するだけのものです。
出来ることは8つのチャンネル個別にON、OFF、ワンショットパルス(ON/OFF)、連続パルスを出力することです。
ソフトからハードウエアに信号を送らなければならない訳ですが今回は秋月電子通商のFT245RLを使用しています。



最初にFT245RLのドライバーをインストールしておく必要があります。インストールの仕方はFT245RLの説明書にも書いてありますが、こちらからもD2XX Driverをダウンロードできます。ドライバー自体は色々なOSに対応していますがSKJ_TimerはWindowsのみの対応となっています。

SKJ_Timerを起動するとFT245RLが繋がっていれば上のような画面が出ます。繋がっていなければ警告がでますが無視しても画面は開き、シュミレーションのみできます。(シュミレーションのみの場合は同梱のDLLの名前を変更してください(Readme.txt参照)。但しFT245RLを動作させるにはOSに合った正式なドライバーインストールが必要になります)

基本動作
動作させたいチャンネル(CH)に対して予定時間と動作内容を指定してスタートボタンを押すと予定時間を待って上から順番(1〜10)に実行します。チャンネルは0〜7で指定し8以上を指定するとそこで終了します。
動作内容は前述のようにON、OFF、ワンショットパルス(ON/OFF)、連続パルスを指定することができますがプログラム簡素化のため整数の数値のみで次のように指定します。
999=ON、0=OFF、1〜998=秒を単位とするワンショットパルス(intv=0)または連続パルス(intv≠0)となります。
すなわち、
動作が999又は0の時はintvは無視され無条件に対象チャンネルがON又はOFFになります。
動作が1〜998の時はintvが参照されintv=0のときは動作数値(秒)だけONとなった後OFFで終了します。intvが0以外の時はintv(秒)後に再びONとなる連続パルス(インターバルタイマー)動作となります。

各ボタン機能
Open:保存されているスケジュールデーターを読み込みます。
Now+1:カーソル(キャレット)のある行の時間を現在時刻の1分後にセットします。主にテストのためです。
Clear:カーソル(キャレット)のある行を空欄にします。
Start:スケジュールを実行します。
Reset:実行を中止し最初の状態に戻ります。
Test:正にテストのためですがスケジュールされた時間を待たずに即実行に移ります。上から順に実行しますがWTの欄に次の行を実行する待ち時間をセットします。
繰り返し:チェックを入れると最後まで実行したあと再び最初の行のスケジュールに戻ります。当然時間はすでに過ぎているので次の日となります。(毎日同じ時間に何かをする時)
I/O Status:FT245の各チャンネルの状況をLEDのアニメーションで表示します。はON,●はOFF、はTimer値を持ったONを表します。
プログラムの終了は画面右上のX(クローズボタン)で終了して下さい。この時スケジュールデーターを保存するかどうか聞いてきますのでなるべくSKJ_Timer.exeのあるホルダーに拡張子.skjで保存して下さい。

Tips
実行は上の行から順番に実行されます。従ってスケジュール時間は後の行ほど遅くなければなりません。実行時にプログラムはこれをチェックしてルールに従っていないと警告を発しますが無視することもできます。その場合は予定時間は次の日と解釈されます。特に日をまたぐ時間設定だと必ず警告が出ます。

空欄はプログラムの裏では数値の”0”として扱われていますので時間が空欄であっても有効なチャンネルが設定されていると0時0分0秒と解釈されます。
スタートすると実行予定のスケジュール欄は赤く表示されます。実行完了ごとに黒に変わり、どこまで実行されているか視認性を持たせています。
ONまたはOFF以外のタイマー動作は独立したタイマーで動作します。このためスケジューラーはタイマーを起動したら実行終了したことになります。

基本的に動作、intvの最小時間は1秒(最大は998秒)ですが1秒以下の短いパルスが欲しいことも想定されるので裏情報として記しておきます。
1秒以下の指定は-(マイナス)を付加します。例えば-5と入力すると1/10の0.5秒となります。-33は3.3秒というように0.1秒単位の指定ができます。これで一応0.1秒から998秒まで指定できることになりますが0.1秒の精度が本当に正しいかどうかは分かりません。

手抜きプログラムで使い勝手の面で分かりずらいですが今後の改善に持ち越したいと思います。

以上がプログラムの説明ですが、これをどう使うか、何をさせるかはユーザーのアイデアによります。

とりあえずFT245RLの動作テストをしているところです。ブレッドボードのスペースの関係でLEDは千鳥配置になっていますがPC画面のLED表示に対応しています。
 
LEDを点滅させるだけではあまり役に立ちません。(クリスマスツリーのLED点滅くらいは出来るかも知れません) LEDの代わりにモーターを回す、ブザーを鳴らす、カメラシャッターを切る、電源を入れるというように何かを動作させることが本来の目的です。

以下は想定される外部機器駆動回路の一例です。(全ての回路を動作確認した分ではありません。)

   .
A:LEDを点灯するだけの回路です。


B:カメラシャッターのコントロールです。フォトカプラーやフォトモスリレーでカメラとは絶縁されています。LEDは動作確認用ですが出力側のフォトトランジスタが確実にONするように抵抗を調整する必要があります。


Cもカメラシャッターのコントロールに使えます。絶縁されていませんが特に問題ないと思います。その他小型リレー、ブザーなど小電力素子に応用できます。


D:数100mA〜数AのDCモーター等駆動の一例です。


E:秋月のキットを使ったAC100VのON/OFFコントロールです。



*ソフトではチャンネル(CH)と表示していますがFT245ではDB0〜DB7の信号に対応します。


2012/02 記

inserted by FC2 system