焦電型赤外線センサーの実装にてまどる
ひょんなことから始めた焦電型人感センサーだが動いたことで安心してしまい、なかなか次に進まない。夏ばてで気力が落ちていることもある。気がつけば前のブログ記事から20日近くが経ってしまった。手近な工作でもこの状態である。
32ビットプロセッサーOSの応用など、本格的な電子工作の方はこのところ完全にスランプ状態だ。次のプロジェクトを起こす気力が湧いてこない。わくわくする応用(アプリケーション)が見当たらないのだ。いわゆる動機付け(モチベーション)がないと人間は動けない。
どうも組み込みコンピューターの世界自体も最近は時代が変わりつつあるのを感じる。恒例の雑誌付録もネタ切れでおかしくなってきた。なんと最新号のトラ技(10月号)の付録は、DIP版の32ビットARMチップである(この石は秋月などで¥200以下の値段で既に売られている)。
面実装のCPUで基板になっているから付録の意味があるのに、DIPではあまり有難みがない。それにこのチップ、32ビットなのは良いが、パッケージが馬鹿でかい600milの大きさでピンはわずか28ピンしかない。しかも、フラッシュは32KBでSRAMがわずか4KBである。32ビットのペリフェラルの水ぶくれしたライブラリを入れたら、すぐに一杯になるサイズである。
この石はどうみてもアマチュア向けだろうが、用途が見当たらない。DIPなら使いやすいので売れるだろういうのも、何かアマチュアの技術力を馬鹿にされたような気がして気分は余り良くない。
所長は、どちらかというと機械そのものには余りこだわらないほうである。AVR研究所という名前も、最初にいじったチップがAVRだったということだけで、AVRにこだわっているわけではない(PICは構造的に好きになれないが)。
その機械が工夫次第で色々なものに化けるのが面白い。8ビットでも32ビットの石でも目的にかなう性能ならどちらでもかまわない。自動車マニアの種類で言えば、エンジンを分解したりチューンナップするより、出来上がった車でラリーやレースに熱中する方である。今より20才若ければ、間違いなくロボットの世界に飛び込んでいたと思う。ここにはまだまだアマチュアにもフロンティアが残されている。
AC制御のための2つめの秋月SSRキットとUSB ACアダプター (9/3/2012)
それはとにかく電子工作である。はずみで焦電型赤外線センサーを組み立て、8ピンのCPUチップTiny13を使って、ブレッドボード上だが人が近づくと電気が入る人感センサーが動いた。動いたらおしまいというのもさびしい。せっかくだから、階段照明の点滅制御に使ってしまおうと思った。
仕事の帰り秋月に寄って、この前のアクリル曲げ器に使った20AのSSR(ソリッドステートリレー)キット(¥250)と、8Aを制御できるシャープのSSR単体(¥280)を買ってきた。キットの方は、2A以上制御するにはヒートシンクが要るが、SSR単体の方はそのままで8Aが流せるようである。
最初はこれにしようかと思っていたが、データシートをよく見るとヒートシンクはいらないにしても、単純に5V TTLだけではどうも制御できなさそうだ。道理で秋月ではこれを使ったキットが売られているわけだ。まあキットと言っても、追加部品はダイオードとドライブ用のTRひとつだけだが。
それより、ACからDC5Vを得る系をどう実装するかが問題である。電池で動かしても良いが、長時間動かしておくものなので、ちょっと実用性に欠ける。これまでのようなACアダプター組み込みも芸が無いなあと思っていた時、安売りショップ(秋葉王)の店先でUSB 5V 1Aを供給するアダプター(¥380)を見つけた。
これは安い。ACアダプターの半額だ。しかし買って帰って出力をオシロで見てみたらノイズは出まくりで、電圧は5.5Vもあった。これではつなぎっぱなしにするのは心配である。捨てようかとも思ったが、それも、もったいない。ノイズはともかく、絶対定格を越えそうな電圧は何とかしないといけない。とりあえずショットキーダイオード(定格1A)で0.4Vほど落とすことを考えた。
くだらない工作だが、意欲が上がらない時は手を動かしていると気が紛れる。このあいだのAitendoのUSB-UARTアダプターから取り出したUSB Aプラグを利用することにした。基板の切れ端にAコネクターとAプラグを取り付け、裏の配線をアクリル板で隠して出来上がりである。
この工作で、Aプラグを2つつけてしまい、つけた接着剤をナイフではがしたことは秘密である。最近の接着剤は性能が高く、はがすのにえらい苦労した。どうもいかん。最近は注意力が落ちている。
実測の結果、電圧はきっちり5.04Vに低下した。ちょっと不恰好だけれど、資源の無駄使いを避けることが出来て満足である。これはこのまま何かに使おう。電源の問題は持ち越しだ(実はこのアダプターの「からわり」に失敗して、こういうことになったということも秘密である)。
USBのACアダプターについては、Appleの高価な(¥3000以上)ACアダプターを分解したこの記事がとても詳しくて参考になる。このあたりは自作が極めて少ないが何か理由があるのだろうか。商用電源と絶縁できるスイッチング方式というのは難しいのかもしれない。
AC接続の端子圧着には迷ったが簡易ペンチにする(9/4/2012)
SSRキットのAC側はテストのため、アクリル曲げ器の時にも使ったピン接続端子で接続することにした。この前はありあわせのペンチで良い加減に圧着していたが、こうした圧着端子の固定は本来、端子のタイプに合わせた専用の工具を使わなければならない。
電気工事士試験には必携のこうした圧着ペンチはどんなに安くても¥4000以上する。これは端子に加重する一定のトルクを教えるしかけがあるから高い(規定までしめるとカチッと音がする)のだが、今すぐ電気工事士の資格取得に挑戦しようというわけでもない(ちょっと興味はあるが)。
どうしようか迷いながら、少し遠方の本格的なDIY店に出かけた。専用のペンチはいくつかあったが、どれも通販より¥500以上高く、安くても¥5000台だ。ただ圧着ペンチには、これ以外に¥1500内外で、簡易型のちゃちな万能圧着ペンチもある。
迷った挙句、結局、安い方を買ってしまった。まあ、ACケーブルの圧着など当研究所ではしょっちゅうやる工作ではない。それに専用の圧着ペンチは本来は個別の端子の種類ごとにそろえる必要があるし、バレル圧着のような芸術的な固定ではなく単に一定のトルクでかしめるだけのペンチにこれだけの金をかけるのはもったいないというケチ根性も味方した。
手元のピン接続端子は感電の心配のない絶縁タイプだが、安物のペンチでもちゃんとサポートしていた(これを確かめて買った)。圧着部をペンチでかしめること自体はバレル端子ではないので造作もない。SSRの出力側はピン接続端子にして色々なAC機器に簡単につなげるようになった。
実際に電気スタンドに通電する前に、まずはSSRキットのドライブ部を動かして、その駆動電流を測っておく。5Vで15mA。うーん、ちょっと多いな。AVRのピンでも何とか持つが、もう少し下げておきたい。SSRは3Vでも動くというので、間に330Ωの抵抗を入れてみた。うむ、5mAに減って十分定格内だ。電圧は3V、SSRは間違いなく動いた。
いよいよ実際の人感センサーに組み込んでAC電源が入るかのテストに入る。AC部はピン接続端子でつなぎ、ブレッドボードにはACを通さないようにして安全を期す。通電は、念を入れてオシロで波形を観測しながら行う。焦電センサーの電圧が動いて稼動を始めた。センサーに手をかざす。
よーし、LEDとともに電気スタンドが点灯した。SSRなので全く音はしない。これはこれで近代的で気分が良い。あとは、このケースをどうするかだ。特にセンサー部は、角度が調整出来るようにしたい。
温度調整つきアクリル曲げ器が大活躍(9/8/2012)
焦電センサー部のケースはアクリル板から自作することにした。だいぶ前のすんさんの掲示板で、ばんとさんから教わったアクリル曲げ器の出番である。以前の工作で熱電対を使った温度調整付きに成長しており既にいくつかの実用品を生み出している。
素材は、A4の大きさの2ミリの透明アクリル板である。ずっと以前に千石通商で¥280で入手してあった。ハンズなどに較べるとかなり安い。千石はプロクソンの工具を普通のDIY店よりえらい安値で売るときもあって侮りがたい存在である。
2枚の板を切り出して、それぞれをコの字型に曲げる。一方をセンサーを収容する可動部、もうひとつが固定部である。2枚の間は、一方の両側に15ミリほどの穴をあけ、他方の両側には穴にはまる円板を接着して回転できるようにする。
これで上下の角度は自由に調整できる。左右は、さきの固定版にも同じような回転部を作れば良いが、今のところはこのままにする。切り出しは、いつものサーキュラーソーである。ただ、これだけ切る長さが長い(10cm以上)と、このプロクソンのミニサーキュラーソーでは少し苦しい。
切り口を換えて(食い違いがどうしても出るが)、何とか所定の大きさのアクリル板2枚を切り出した。次は曲げ加工である。正確な曲げを実現するには型枠のような冶具が欲しいのだが、すぐには用意できない。考えた挙句、作り付け本棚の一角が型枠になりそうなので、アクリル曲げ器をそちらに移動し、そこを作業場とする。
アクリル加工は、これまで1ミリ内外のCDケースのような薄い板から、3ミリの時計巻き機のフレームまで何回か練習を重ねて、だいぶ経験値が上がってきた。加工技術もこれまで単純な曲げだけから、コの字曲げまで出来るレベルに上がっている。将来は4辺を曲げて密閉型のケースを作れるレベルまで行きたい。
この前の時計巻き機では3ミリ厚を曲げたが、今度は少し薄い2ミリである。温度の指定は前より10℃下げて210℃(内部温度なので外は140℃)で一辺を熱する。頃合いを見て素早く型枠がわりの本棚の直角部に当てる。ふーむ、当てているだけでは曲げが足らない。少し鋭角にして曲げ、冷えていく時に型枠にあてて調整すればうまくいくようだ。
ほぼ想定どおりの2枚のコの字型フレームは完成した。センサー部(可動部)がフレーム(固定部)に狙い通り完全に密着する。コの字を正確な形にするのは難しいが(やればやるほどずれて曲げ面が汚くなる)、とりあえずセンサー部の形としてはこれで十分だ。
アクリル円柱をつかったヒンジ完成(9/12/2012)
東急ハンズで、アクリルのパイプ(径25ミリ)と15ミリ円柱を買ってきた。円柱は薄く切り出してセンサー部のヒンジに使う。パイプは、昔々ストロベリーリナックスで買った0.8Vから白色LEDをつけられるDC-DCコンバーターを使った単4のペンライトのケースにするためのもので、LEDは、秋月の3Wパワー白色LEDセットである。
こちらのほうの工作はさておき、円柱をサーキュラーソーで4ミリの厚さに輪切りにして2つ用意する。これを接着剤でセンサー部のフレームに付け、一方の側板にはこの円柱のサイズの穴(15ミリ)を開けてヒンジにする予定だ。
輪切りにするのは簡単だったが、径15ミリの穴をアクリルに開けるのは少し苦労した。強度が不安でヒビが入るのが心配なので、小さい穴(3ミリ)からリーマーで広げたのだが、結構時間がかかった。余り力をかけるとアクリルを割って元も子もなくなるので常に緊張しながらリーマーを使う。
センターあわせは最初、空中から糸を吊らしてなどと大層なことを考えたが、3ミリの穴のときに直線の真鍮棒を通すことで誤魔化した。少しづつ気長に穴を広げてはセンターを目検で確かめる作業を続ける。
15ミリの穴が開き、4ミリ厚のヒンジ代わりの円盤がピッタリ納まった。ささやかな作業だが、出来上がりはいつも達成感があって気分が良い。あとは接着だけである。
慎重に接着剤をうすく円盤にのせて固定する。両側ができた。センサー部と固定部を合わせる。ぴったり入った。いいぞ。適当な摩擦があるので特に固定を考えなくても、自由に角度を調整できる。
アクリル曲げ器の実用版第三号だ(第一号は9VバッテリーDCDCコンバーター、二号は時計巻き器フレーム)。ACアダプターの懸案が残っているが、だいたいの骨組みは出来た。
センサー部の工作が済んだので、次は電源制御部の実装である。本体はまだブレッドボード上だ。まだACアダプターの問題が解決していないのでケースを考えることは出来ない。
圧電スピーカーで設定値を教えるロジックを思いつく(9/15/2012)
バラックのまま、地下室から上がる階段の照明制御に電気スタンドを使ってテストを始めた。階段の最上部に立つと電源が入るようセンサーを調整する。 アクリルセンサーケースは好調で任意の角度に調整できる。テストしているうち、今度は感知してから電源が切れるまでのタイムアウト時間を調整したくなってきた。
スイッチで、3段階くらいに調整できると良いだろう。しかし、8ピンのTiny13では適当な表示装置を動かすことは出来ない。ピンが少ないのでLCDはおろか、LEDすら使えない。UARTはPCが要るので問題外である。リセットピンを流用すれば、LEDなら3つまでドライブできるが、これだけのためにパラレルプログラミングするのも何か変だ。
そこで思いついたのが、圧電スピーカーである。圧電スピーカーは以前、O-Familyさんのラーメンタイマーと電子サイコロに興味を持って秋月で買い、無理にフリスクを食べてケースを揃えたりしたが、結局そのままになっている。
スイッチを押すたびに音を変え、それによって設定値を変えることにすれば、スイッチとスピーカーの2ピンで、設定値の数の制限は無制限になる。例えば、ピーで5秒、ピピーで10秒、ピピピーで15秒設定とし、サイクリックに設定を選ぶことが出来る(数が多ければ大変だけど)。
我ながら良いアイデアだと思い、早速実装に入ることにした。ただ、圧電スピーカーを使うのは初めての経験である。ウェブで具体的な使用例の勉強を始めた。ところが、ウェブを見ているうち目移りがして先に進めなくなってしまった。
Tiny13では無理だが、8ピンAVRもTiny45あたりになると、ChaNさんがWaveTableを使った電子オルゴールや、弘前大学にも3和音発生できる制作例があり、いずれも結構良い音がしている。単なるbeep音では満足できなくなってきた。PWMを使った音も出してみたい。
圧電スピーカーを自由に鳴らすのは結構難しい(9/17/2012)
暫く迷っていたが、冷静になって我に返った。まずは鳴らしてみることが先だ。PWMを諦めてロジックを考え始めた。Tiny13のタイマーはひとつしかないので、圧電スピーカーのBeep音専用のタイマーは用意できない。今動いているタイマーのTick(クロック4.8Mhzプリスケール256なので53.3μs)で音を出さなければならない。
53.3μsは周波数に直すと18.2khzでこのままでは高すぎて聞こえない。と言って、オーバーフローの13.65msでは今度は低すぎでこれも鳴らない。現在のメインループでタイマーのカウントを間引きする必要がある。
いずれUARTは使えなくなるが、とりあえずコマンドでBeep音を制御するコードをつけたす。メインのループ部にタイマーのカウンターを間引いた形で、ビープ音の出力ピンをトグルするロジックを加える。
何とかできたので、恐る恐るコンパイルする。フラッシュは900バイトを越えたが、まだ1024以下だ。テストする。鳴らない。オシロで波形を見る。おやあ15khz以上だ。こんな高周波では聞こえない。間引きがうまく行っていない。
高速でメインループをまわしながらBeep音を制御するのはちょうどマルチタスク的なテクニックを要求されるので、結構難しい。あれこれ頭をひねる。詳しくはソースコードを付けるので省略するが、やはり事前のロジックの吟味の不足を痛感した(要するに擬似コーディングが足らない)。
一番悩んだのが、オシロの写真にもあるように、立ち上がりのチャタリングである。このせいで音が濁る。始め原因がわからず放置していたが、デバッグに疲れて寝床に入ったときに気が付いた(前もこんなことがあったような)。
ロジックは、タイマーのカウンターを割り算(ビットシフト)で間引いて、一定の間隔で出力をトグルするのだが、メインループの廻る速さ(約50ステップ、10μs)の方が、カウンターが変わる速さ(53μs)よりはるかに早いため何度もトグルしてしまうというオチである。
こうやって書いて見れば、何故これが今までわからなかったのだろうという至極当然な話なのだが、デバッグというのはどうもいつもこういうことを繰り返すようである。
UARTをやめてタクトスイッチとスピーカーで制御(9/18/2012)
UARTで圧電スピーカーの音を出したり止めたりすることが出来るようになった。音はまあお世辞にも良いとは言えない、単なる矩形波で周波数は500Hzくらいにする。音の濁りは矩形波なので完全にきれいにはならない。
次のステップは、UARTではなく、本来のタクトスイッチで、各種の音を出しながら、タイムアウト設定値を選ぶロジックである。タクトスイッチは、チャタリングを避けるためメインループのサンプリング周期(13.65ms)で、状態を把握する。
そろそろUARTをはずさなければならない。ソースからUART部を削除し、AVRStudioで、関係ソースを取り去ると(入っていると#includeしなくてもフラッシュが増えるときがある)、フラッシュサイズは、一気に400バイト以下になった。これで余裕を持ってロジックを組める。
タイマーの割り込みルーチンに16ビットカウンターを新設して、これをBeep音の間隔制御に使う。フラグをさらに増やして、ここでステートマシンを作った。他にも方法があるのだろうけど今のところこれで何とかなった(ソースコード参照)。
オシロで音の長さを確かめるが、どうも思ったようには鳴らない。「ぴ」や「ぴぴー」は良いのだが、「ぴぴぴー」の音が揃わない。どうしても「ぴっぴぴー」になってしまう。でも、まあ、本質的な問題ではない。15秒くらいのタイムアウトが階段の照明には適当なようだ。何度もスイッチで音をだしながら設定を換えて楽しむ。
これで焦電型人感センサーのソフトはほぼ想定どおりの機能を満足した。フラッシュサイズは500バイト余りなので、Tiny13でもあともう少し機能を盛り込める。まだブレッドボード上なのでケーシングが待っているが、とりあえずは一段落だ。
偶然にも時を同じくして、本来の階段の照明ランプが切れた。早速これを階段照明にして喜ぶ。珍しく家族が感心してくれた。苦心して作ったものは報われないけれど、何でもない仕掛けで思わぬ賞賛を受ける。人生とよく似ている。
例によって、AVRStudioのプロジェクトフォルダーに入れたソースコード一式をzipファイルにして置きます。回路図も改定しました。ただ、ソースファイル名は前と名前が換わっていないので注意してください。
| 固定リンク
「AVR」カテゴリの記事
- ソフトI2Cはクロックストレッチまで手を出してあえなく沈没(2017.09.02)
- オシロのテストどころかソフト開発で大はまり(2017.07.26)
- 超音波方式の人感センサーI2C化と新しいオシロ(2017.06.29)
- motionの動体検知はRaspi3の電源が安定しない(2017.04.16)
- 赤外線学習リモコンはデータ再現で挫折したまま進まず(2016.07.21)
「電子工作」カテゴリの記事
- 生存証明2(2022.10.19)
- 生存証明(2022.01.23)
- パソコン連動テーブルタップの修理を諦めて自作(2021.02.16)
- 半年ぶりのブログ更新に漕ぎつけた(2019.09.19)
- 研究所活動は停滞したままでCCDカメラ顕微鏡導入など(2019.02.08)
コメント
Sam_Yさん、詳しい解説ありがとうございます。
そうですか、素子ではなくてオペアンプの回路だったんですね。
アナログ回路は奥が深いですね。勉強になります。
投稿: がた老 | 2012年9月25日 (火) 23時08分
いつも楽しく拝見させて頂いています。(擬似コーディングならぬ擬似工作か 笑)
今回は 思わず秋月に 焦電センサの発注をいれてしまいました。
がた老さんにとっては すでに動作してしまったので もう終わった話でしょうが、
一つ前の記事で ちょっとだけ気になったので、、
>この素子が動くまでこん4なに長時間かかるとはどこにも書いていない。
これは 素子のせいじゃなくて 回路のせいです。
まずは 初段の非反転側の コンデンサ
これが電源ON直後はチャージされていませんから 電源ON直後は センサのオフセット 0.7V位が直流増幅され、0.7 x 45 = 31Vと言いたいところですが、電源に制限されて 出力は 5Vに張り付きます。
この電圧でCがチャージされますが フィードバック抵抗が1M なので 充電電流は 高々 5uAなので 6から7秒間かかります。
段間のCはというと このとき2段目の出力が 負になりたいところですが、単電源なので 0V。 従って 2段目のフィードバック抵抗 1M を介して 電位差5Vで
逆極性にチャージされて、初段の出力が +0.7Vで落ち着いた時点で ちょうど初段のCと同じ電圧になります。
なので このときの2段目の反転入力端子の電圧は 0V。
2段目の 非反転端子は 2.5V。 よって こんどは2段目出力が 5Vに飽和。
今度は チャージすべき電圧が 0.7 + 2.5Vなので 4倍から 5倍の時間がかかる。
という 理屈です。
なにか 避ける良い方法がないかと探してみましたが、実際 平衡に達してしまえば
問題にならないせいか あまりこれを気にした回路は見つけられませんでした。
初段に関しては 村田製作の回路例が スマートかなと思います。
http://www.murata.co.jp/products/catalog/pdf/s21.pdf
初段のフィードバック抵抗を ダイオードクランプしています。
初段の 出力振幅の正側が ダイオードのVfで0.6Vで制限されてしまいますが、
よく考えてみれば 2段目のゲインが十分ありますから 初段の振幅は 0.1Vもあれば
良いので これでいいわけです。 なかなか ケチな 私には思いつきませんね。
2段目は 美味い方法が見当たりませんでしたが ニチセラの回路だと 時定数を
10k 10u で 1.6Hz近辺にしているので Cをもっと小さくするのが 王道でしょうか。
コンパレータを使わないで CPUで処理する前提ならば 片側エッジだけを見ることにして 2段目の非反転側電圧を下げるのもありかもしれません。
( 早く届かないかなぁ )
長々 失礼しました。
投稿: Sam_Y | 2012年9月25日 (火) 21時53分
毎度です。ばんとです。
がた老さん回路を参考に、秋月の焦電型赤外線センサ RE210を使った
モジュールを作ってみました。
さっそく焦電型赤外線センサ RE210の信号をデジタルオシロで観察し
てみました。アナログセンサだけにデジタルで処理するには、ひと工夫
もふた工夫も必要なことが分かりました。
こちらはATTiny2313Vが余ってるので、コレで焦電型赤外線センサを
ナントカしてみます。f(^_^;;)
投稿: ばんと | 2012年9月22日 (土) 10時42分
アップルのUSB ACアダプタの記事の中の、
利ざやが大きいという点に反応。
投稿: きゅうる村 | 2012年9月20日 (木) 13時55分
DIP版の32ビットARMチップって一瞬は目を引くけどフラッシュメモリとRAM容量を見てがっかりでした。
もう少し多ければJPEGデコーダーを高速で動かせたのに。
あとは、ラインナップがATmegaシリーズのように色々あってATmega並に安価ならATmegaの置き換えと性能アップになるんですけどね。
DIP版の32ビットARMチップの存在意義が見えて来ません。
投稿: そら。 | 2012年9月20日 (木) 10時06分