555タイマのアプリケーションを考える前に
555 contestが2011年3月1日まで開催中だそうだ。折角なので何か作ろうと(主にシャワー中に)考えを膨らませているが、こんなすごい555ベースのロボットを見てしまっては、生半可な発想では駄目だなと感じて、考えがまとまらない。
とにかく、555タイマの復習から始めよう。
Monostable mode
Monostable modeはトリガの入力から一定時間のパルスを出力する(ワンショット)。パルスの長さtはV-7間のRと7-GND間のCの値で決まる。
Wikipediaにも、RとCからのtの求め方は書いてあるが、僕の場合は欲しいtが決まっていて、Rの値を求めたい場合が多い。Cはそれほど種類を持っているわけではないので、Rほど不定ではない。
Pythonで書くと下のようになる。
Astable mode
Astable modeは一定パルス長の矩形波を出力する。周期tはV-7間のR1、7-2間のR2、2-GND間のCの値で決まる。
この場合も、tとCからR1とR2の値を求めたい場合が多い。但しここでは、出力がHIGHになっていると出力がLOWになっているを定め、duty比を決定しておく必要がある。
これもPythonで書くと以下のようになる。
まとめ
以上の動作を、回路シミュレータとPythonコード、実機で試してみた。
$ python timer555.py mode? ([a]stable or [m]onostable)> m result? ([t]ime or [r]egister]> t r1? c?> 1000 0.000010 R1: 1000, C: 0.000010 Time: 0.010986(sec) $ python timer555.py mode? ([a]stable or [m]onostable)> m result? ([t]ime or [r]egister]> r time? c?> 0.01 0.000010 Time: 0(sec), C: 0.000010 R1: 910.239227
$ python timer555.py mode? ([a]stable or [m]onostable)> a result? ([f]req or [r]egister]> f r1? r2? c?> 10000 100000 0.000000100 R1: 10000, R2: 100000, C: 0.000000 HIGH:0.007625 + LOW:0.006931 = TOTAL:0.014556(sec) Freq: 68.699764(Hz) Duty: 0.523810 $ python timer555.py mode? ([a]stable or [m]onostable)> a result? ([f]req or [r]egister]> r freq? duty? c?> 68.70 0.52 0.000000100 Freq: 68.700000(Hz), Duty: 0.520000, C: 0.000000 R1: 8399.971126, R2: 100799.653512 TOTAL: 0.014556(sec)
有効数字とかちゃんとしないといけないのに横着している。
LEDを点滅させたりして遊んでいるが、まだ、どんなアプリケーションを作るか決まっていない。時間も限られてきたし、555らしくミニマムでクールなものが良いと思っている。
シンプルであるほど理解は容易だが、驚かせるのは難しい。見せ方も必要だろう。