« デュアルバンドの電波時計ユニットを買ってしまった | トップページ | 焦電型赤外線センサーの実装にてまどる »

2012年8月30日 (木)

アナログ工作にはまる:焦電型赤外線センサーユニットの制作

 電波時計のデコードを考えているうち、工作が思わぬ方向に曲がってしまった。いつもの脱線である。まあ、今、何か作りたい大きなテーマがあるわけではない。こういう気ままな寄り道は所長の好むところでもある。

 FPGAのDE0とか、雑誌付録の何台かの手付かずの32ビットプロセッサー、FreeRTOSを使ったLPC2388のネット制御など懸案は山積しているが、これというアプリケーションが見当たらないので腰が重い(これを現実逃避とも言うが)。つい手元の電子部品で遊んでしまう。

電波時計ユニットにフォトカプラー接続(8/19/2012)

 このところの電子工作と言えば、Aitendoの電波時計ユニットである。あとから買った40,60kHz両バンドモジュールが思いのほか感度が良くて実用化してみようという気になってきた。窓際にアンテナを出して電波を安定的に受け、本体を工作コーナーに置いて、工作室の標準時計としても良い。

 そうなると次のステップは、JJYパルスのデコードである。1秒に一回(1bps)という気の長いデータなので、マイコンにはどんなロジックでも組み込める。ただ、単純に1秒ごとのパルスの長さを測っているだけでは、ノイズに弱いデコードになってしまうだろう。

 それに、ひとつパルスを取り損なったら、今までのデータをすべて破棄して、次の59秒のマーカーまで休むのでは効率が悪い。ひとつのエラーでデータを最初から取り直すような厳格なプログラムでは正確な時刻を取得するのに何十分もかかる可能性がある。何かインテリジェントな方法がないだろうか。

S_p8195132 こうしたノイズに強いデコードロジックの開発のために、まずは現在の受信状態をオシロか何かでしっかり把握しておく必要がある。しかし、電波時計ユニットは何故かオシロやロジアナをつなぐと、PCデスクの前でも出来ていた受信が不能になってしまう。

 デジタルノイズがプローブを通して入るからだろう。このままではLEDの点滅を見ているだけで先に進まない。JJYのシミュレーターもあるが、これは今度は完全すぎて本当のテストにならない。どうしたものか。

 そのうちアイデアが閃いた。フォトカプラーである。フォトカプラーで絶縁すれば、デジタルノイズが防げるかもしれない。フォトカプラーは最近いくつかの工作に応用して経験値が上がっている。思い立ったら動きは早い。早速、フォトカプラーをブレッドボードに差して実験を開始した。

 うまく行った。PCデスクの前でも順調にJJYの1秒パルスを受信できるようになり、オシロからやっとそれらしい波形を観測できるようになった。ただ、結構ノイズが多い。アンテナの角度が微妙だ。

S_p8195133

 当面の観察の結果だが、ノイズは立ち上がりか立下りの時に多く発生し、パルスの中間では少ない。チャタリング防止のような考え方でかなりのノイズは防げそうである。一方、パルスの中間のノイズは防ぎようがないが、これも100ms以内で元へ戻るようなら、なかったものとするロジック(チャタリングと同じ)で除去できるかもしれない。

 つまり、立ち上がりの割り込みでチャタリング防止のように立ち上がりを検知してから10ms程度の待ちを入れると、かなりノイズは防ぐことが出来そうである。しかも立ち上がりパルスは厳密には正時0秒なので、こちらにある程度の精度のクロックがあればノイズは無視できる。

 中間のノイズは、一旦デコードして、かけはなれたパルス長(200、500、800msの3種で許容値が決まっている)になるなら、その立下りを無視する。判定できなければ(殆どがデータパルスだろう)データフレームを持っているので、そのブロックだけのデータを無効にして次の1分でとりなおす。日や時間などは、急には変わらないので全部取り直す必要はない。あれこれ本格的にロジックを考え始めた。

 そのうち、掲示板でChaNさんのサイトにも電波時計の制作記事があることを知った。何と10年以上も前の2001年の記事である。Tiny2313の前身のチップAT90S2313時代の作品だ。ソースコードもついている。

 ダウンロードしてみた。プログラムはアセンブラーだ。回路図もある。何々、クロックが4.194304MHzという半端な周波数を使っている。これはどういうわけだ。ソースコードを読むうち、彼のデコードアルゴリズムを知って目から鱗が落ちた。

 連続してデータを見るのではなく、サンプリングで値をとり、サンプリングの間隔を、2のべき乗で(2の22乗)の周波数で分割してずれないようにしている。そうか、こういう方法ならチャタリング防止などは考える必要がない。マーカーが決まればかなり正確にデータがとれる。

 人のソースは見ないと頑張っていたが、やっぱり独断でことを進めるのは効率が良くない。先人の智恵をもっと調べることも重要だ。大きなヒントを貰った。このスタイルを真似て作ってみよう。半端な周波数の石は手に入らないが、分周とカウンターの上限を工夫すれば、きっちりした時間を作ることは可能だ。

アナログづいて今度は焦電センサーアンプ組立て(8/20/2012)

フォトカプラーを電波時計ユニットに入れてデータ波形の取得に成功した。アナログが楽しい。ただ、ChaNさんのコードを見て、開発の道筋が見えてくると安心して逆にやる気を失うという、いつもの悪い癖がでて、次のステップが進まなくなった。

 そのうち、ウェブで8ピンAVRのTiny13の制作例を探しているうち、Napionというディバイスを見つけて気分が変わった。Tiny13は電波時計ではなく、この間の小型モーターの制御(ワンショットパルスの生成、前記事参照)に使おうと考えているCPUチップである。

Napion

 それはともかく、Napionとは、Panasonicが出した焦電型赤外線センサーとアンプを組み込んだ人感センサーチップである。これだけで人や動物の接近をTTLパルスで出力する。へー、こんな便利なセンサーがあるんだと調べてみたら、単品でも売っている。ただ、少し高い。千石で¥1100だ。

 そういえば、当研究所には昔、秋月で用もないのに焦電センサー(RE210 ¥100)と集光(フレネル)レンズ(¥300)を買ってあったことを思い出した。 センサー出力をオペアンプで増幅してやらないとデジタル処理が出来ないことがわかり、そのままになっている。 何故かこれを急に作りたくなった。恐らくNapionを欲しいなと一瞬思い、それが¥1000以上するとわかった反動だろう(もっと安くで手に入るのになぜ作らない)。

S_p8195130

 人感センサーなら応用はいたるところにある。作っておいて無駄になることはあるまい。当研究所のテーマは予測のつかないきっかけで決まるというのは恒例のことである。今回も何の脈絡もないオペアンプの増幅回路を汎用基板に作り始めた。 電波時計?え、それがどうしたのという変わり身の早さである。

焦電センサーはあっけなく動く(8/21/2012)
 焦電センサーのアナログアンプ回路のお手本は、ウェブ上に沢山ころがっている。データシートに掲載された参照回路は増幅率が1万倍、秋月の焦電センサーキットの回路では、1600倍である。中をとって2000倍のアンプを組む(45×45)。オペアンプは定番のLM358。レールツーレールのLM662までは必要ないだろう。

 アンプのあとのダイオードを使ったコンパレーターやNE555のパルス生成の部分は、それこそTiny13の出番である。とりあえずはNapionと同じようにTTLの出力が出るところまで、ブレッドボードではなく汎用基板を切り出して直接作ることにする。

 久しぶりの細かいハンダ付けが楽しい。オペアンプの周りにCRが密接に配置され彩りも綺麗だ。半日で完成した。配線を何度も確かめる。アンプがどんな出力を出してくるか楽しみである。

S_p8215139 出力をオシロにつなぎ、通電する。暫く動かない。ふーむ、誤配線か、と考え始めたころ(約10秒後)、突然、出力は1(負論理なので入力なし)に上がり、さらにその30秒後波形があらわれた。このセンサーは通常の動きをするまでに40秒近くかかるようだ。おーし、手をかざすと波形が変化する。

 赤外線を感知してパルスを出しているのは間違いないが、この素子が動くまでこんなに長時間かかるとはどこにも書いていない。しかも詳しい波形の様子を見せてくれるところも少ない。

 微分波形が出ているようだ。人間の手など赤外線を出す物体が動いてきて赤外線を検知するとまず大きな立下りパルスが出て、出力はほぼ0V(入力あり)になる。手をそのままにしていても、このあと1秒もしないうちにパルスは元へもどる。そこで手を動かしてセンサーから離れると、再びここで立下りパルスが出る。

S_p8215137 面白い。フレネルレンズをつけてみた。この効果はすごい。感知するエリアが劇的に狭くしかも高感度になる。3メーター以上離れていても感知する(説明書によると10mまで検知するそうだ)。

初めてのTiny13のプログラミング(8/24/2012)
 8ピンAVR、Tiny13の登場である。去年の暮、Dragonを入手して、AVRのパラレルプログラミングがいつでも可能になり、秋月で面白がって3ヶ程買ってあった。当研究所最小のAVRである(Tiny10は小さすぎて使い道が思いつかない。それに処理環境がない)。

 小型モーターのon/off制御に使おうと思っていたが、意外なところで登板の機会が巡ってきた。まずはブレッドボードに組み込む。8ピンなので準備もあっけない。リセットピンを使わなければシリアルプログラミングが出来るようなのでISPをつけて早速テストする。よし、問題なくAVRSPはTiny13を認識した。ヒューズビットを換えてクロックを4.8MHzにする。

 ソフトの開発である。Cでどれだけ入るか、もし入らなければアセンブラーに行こうと考えている。今度のアプリではUARTはそれほど必要ではないが、今後のこともあるので、とりあえずISP-UARTを入れてみた。UARTだけで600バイト消費した。残りの400バイトでロジックを組まなければならない。

まず、UARTだけで動くかテストする。駄目だ。字化けしている。クロックがCR発振の4.8Mhzという半端なクロックなので、ボーレートの算出が難しい。なかなか文字化けが解消しない。当所の標準ボーレート38.4kbpsではどうしても合わず、9600bpsへ落とす。やっと落ち着いた(クロックがCRだと38.4kbpsは無理だとあとで気が付いた)。

 パルス検出のルーチンを次に組み込む。ChaNさんの電波時計デコードルーチンのソースにならって、焦電センサーもタイマーのサンプリング方式でロジックを組む。ベタにパルスの立ち上がりを待つのでなく、一定の時間間隔(13.3ms)でパルスの状態を見てやれば、ついでにチャタリングなどのノイズを除去できる。

 ロジックは、仕事の行き帰りなどの空き時間を使って、既に構想は出来ていた。フラグを2つ使って、サンプリングの3つの状態を時系列で調べる。100(0がパルス検出)のとき始めてパルスがあったと判定するロジックだ。101や、00、01、11のときは何もしない。

I/Oポートの調整でトラブル解消(8/25/2012)
 パルス検出ルーチンは、いつものように擬似コードで何度もロジックを確かめながら、C言語のコードに換えていく。検知してからのタイムアウトは常にタイマーを加算しておいて、パルスを発見できなければループのあと常に0に戻し、パルスが出てスイッチが入った後は、タイマーをリセットしないというロジックだ。これでタイムアウトが検出できるはずである。

 コードは800バイト余り。まだ余裕がある。テストである。大丈夫だとは思うが、こういうのは動かしてみなければ始まらない。プログラムは考えたようには動かない。書いたとおりに動く。最初の通電はいつも緊張するが、今回は8ピンAVRなので、気楽に電源を入れる。

 うむ、UARTからメッセージが出た。動いたようだ。焦電センサーが動作し始めるのをオシロの波形を見ながら待つ。動作し始めた。手をかざす。LEDが点灯した。10秒経って消えた。お、消えたのは一瞬ですぐ点灯した。オシロを見ると入力波形に小さなディップが出来ている。

 これが原因か。コンパレーターを入れていないので、0,1の判断は入力ピン任せだが、Tiny13のピンの0の閾値はこんなに高くない。この程度のディップで0と判断されるのはおかしい。それに入力が隣のLED出力ピンの上下に影響されて動いているような感じだ。ソフトが原因でない証拠に時々初期状態に復帰する時がある。デジタルではこんなことは起きない。

 さて、トラブルシューティングである。焦電センサーからの電力不足ということがあるのか。Tiny13のポートの性質なのか。データシートを本気で見直す前に、念のため、PORTBの初期状態を0から1にしてみた。山勘である。

 これが、うまく行ったのである。ピタリとトラブルは解消した。PORTBを1にするのは、ピンが出力の時はピンの出力を1にし、入力のときはチップ内でプルアップする。しかし入力ピンのプルアップは外部で一度試してその効果がないことを確認している。

とにかく、わけがわからないけれど動いたことには間違いない。半日で焦電センサーのデジタル部が完成した。嬉しい。

ミニブレッドボードに移しもう少しテスト。実用性は十分(8/28/2012)
 PCデスクの横の大きなブレッドボードから、持ち運びの出来るミニブレッドボードにTiny13の部分を移し、焦電センサー部を、工作に使っている部品固定スタンドにつけて集光レンズの性能を確認する。

S_p8285141 すごい。感知するエリアは、2~30センチくらいのビーム状だ。5m以上離れていても赤外線の動きをキャッチして鋭く立ち下がりパルスがでることがわかった。階段の下のコーナーに設置すると、階段の最上部に立っただけで人がいることを検知した。タイムアウトは5秒にして、暫く遊ぶ。十分な性能である。

 次にTiny13にsleep機能を入れた。フラッシュサイズは900バイトまで上がったがまだ大丈夫だ。焦電センサーの消費電流は5Vで1mAちょうどくらい。Tiny13は、sleepを入れる前は2.8mA、全体で3.8mAだったが、sleepを入れると0.8mAに低下し、全体では1.8mAになった。

 タイマーのサンプリング時間を長くすればもっと少なく出来るがACを制御するならあまり気にする必要はない。ただ、AC100VからDC5Vにするのが面倒だ。このあいだ安売りショップで買ったUSB用の5V電源は測ったところノイズが多く5.5Vもあった。気をつけないと機械をこわしそうだ。

Pyrosens

 たいしたプログラムではないが、みなさんの参考までにソースコードと、回路図を公開することにする。今のところ地下室に向けての階段の照明に使おうかと思っている。ただし、既存の階段照明に取り入れるのは、資格を持っていないと出来ない。電気工事士の資格が欲しくなってきた。とりあえずは、電気スタンドを秋月のSSRキットでドライブしてやろう。

以下に例によってAVRStudioのプロジェクトフォルダーをzipファイルにして置きます。
フォルダーの中にBSch3Vの回路図も入っています。

「Pyro13.zip」をダウンロード


|

« デュアルバンドの電波時計ユニットを買ってしまった | トップページ | 焦電型赤外線センサーの実装にてまどる »

AVR」カテゴリの記事

電子工作」カテゴリの記事

コメント

いやあ、良かった、良かった。ご報告ありがとうございます。
薦めた手前、もし届かなかったらどうしようと、私もドキドキしていました。

そうですね、ロジアナも薦めたか。責任重大だなあ。
でも、2つともあるとないとでは天地ほどの違いがあることは
間違いありません。

利用記を楽しみにしています。

投稿: がた老 | 2012年9月11日 (火) 21時32分

毎度です。ばんとです。

先ほどオシロが届きました。
梱包されてるダンボール箱がボコの状態で届きましたが、
オシロは大丈夫でした。ほっとしました。

小さいとは思ってましたが、やはりコンパクトですね。
すごく気に入りました。これからガンガン使っていき
ます。

期せずしてロジアナとオシロ購入のアドバイスをいた
だくことになりました。
がた老さん、良いものをご紹介いただきありがとうご
ざいました。今後ともよろしく、お願いします。

投稿: ばんと | 2012年9月11日 (火) 20時44分

うわあ、「悪魔の囁き」の倍返しだ。
なんだって、2万5千えーん?
うーん、困った(何が)。性能は今のオシロで十分だし、
画面はこちらの方が大きいし(8インチと7インチ)、
一生懸命、買わない理由を探しているけど、どこまで
抵抗できるか。いやあ、罪な人だ。

投稿: がた老 | 2012年9月 5日 (水) 12時34分

ADS-1102CALを注文しました。
円高のお陰かシッピング込で、3万弱だったので、思い切って
購入することにしました。
ただし、中国のショップはpaypalが使えなかったので、Vプリカ
というVISAのプリペイドのクレジットカードを購入して中国の
ショップに発注しました。
で、24936円の支払いとなりました。

無事に届くのだろうか。不安です。f(^_^;;;;

ところで、Vプリカの購入したのは初めてだったのですが、
29000円の上限がありですが、使いきりで何らかトラブル
があっても被害は29000円どまりです。しかもVISAカード
同様に扱えます。ネットショッピングなら結構使えますね。

今なら2万5千円ですょ。がた老さん、どうです購入して、
不安を共有しませんか?? (笑)

投稿: ばんと | 2012年9月 5日 (水) 12時09分

->Mark6さん、コメントありがとうございました。
おお、鈴商で売ってますか。私の巡回コースです。
今度探してみます(なくても出来そうですけど)。

->ばんとさん、「悪魔の囁き」です。中国の商社との取引の
様子はサイトに沢山ありますよね。支払いはpaypalが
安全なようです。もっともYouTubeには買ったけど動かない
Rigol社(これ中華でも割りに信頼性の高い会社)のオシロの動画があったりして。
もしこうなったら、まあ、諦めるしかないですが、こういう緊張がたまらない(?)。

それにしても、100MHzで3万円台というのは、秋月などの激安オシロのさらに1/3ですからねえ。

私も4年前に8万近くで買ったOWONのオシロ(60MHz)をヤフオクあたりに出して、
冒険するか盛んに迷っているところです。

投稿: がた老 | 2012年9月 2日 (日) 23時34分

初めましていつも製作記事を楽しく拝見しております。

>半端な周波数の石は手に入らない

この周波数は半端なものでなく
4.194304MHzは「2のべき乗で(2の22乗)の周波数」と
キリの良いものです。(笑)

その昔時計LSI 1秒クロック用として50/60Hz用の水晶
と共に売られていましたので今でもラジオデパートや
鈴商辺りで見つけられると思います。

投稿: Mark6 | 2012年9月 1日 (土) 22時31分

あきません。それは悪魔の囁きです。
ADS-1102CALを調べてしまいました。

これ購入しようとしたら
海外へ注文することになるのかな とか
クレジット不安だからPaypalとかいう
口座を作らないといけないのかな とか

色々と考えてしまいました。f(^_^;;;

投稿: ばんと | 2012年9月 1日 (土) 21時49分

おやあ、たくさんコメントがつく。

>そのあたりは、そら。さんの掲示板で書かせて
はい、本文のChaNさんの記事を知った掲示板とは、このことです。
出典を明記せず失礼しました。->そら。さん、->shuji009さん

フレネルレンズはあった方が面白いですね。それこそ
猪などの(天敵)出現検知にはばっちりです。->shuji009さん  ->ばんとさん

オシロは清水の舞台から飛び降りる気持ちで買いましょう。絶対後悔しません。
->ばんとさん。(もうはまっているのだから)
今、中華製(ADS-1102CALがおすすめ)が激安です。100Mhz 1Gs/sが3万円台。

投稿: がた老 | 2012年8月31日 (金) 19時24分

毎度です。ばんとです。

焦電センサーの在庫を調べたら2個もありました。
しかし集光(フレネル)レンズない有様です。

秋月に注文する必要がありそうです。また不良在庫を抱えそう
でジレンマです。(爆)

オシロスコープ使って実際の波形を見ながら開発はいいですね。
アナログ回路だったら絶対必要だよなぁ~。
持ってないので欲しいです。

あ~ぁ、電子工作の泥沼にハマってますね。(笑)

投稿: ばんと | 2012年8月31日 (金) 18時38分

電波時計の整時ですが、自分で実装した後、ChaNさんの昔の記事を見て、流石と絶句しました(笑;)。
そのあたりは、そら。さんの掲示板で書かせていただいております。
http://avrfun.bbs.fc2.com/?act=reply&tid=3524910

tiny13は、電子工作を始めた頃2個、購入しており
1つは、O-familyさんのラーメンタイマー(今までに作ったものでは、1番の使用率で、大活躍中)とChaNさんの導通チェッカをブレッドボードで、ですが組んでいます(いずれ万能基板+ケースに入れる予定です)。
焦電センサーを使用した人感センサはいいですね。嫁センサとして使用したいですね(汗;)。
あ・・・tiny13は、いずれも、コピーになってしまう(笑;)。

投稿: shuji009 | 2012年8月31日 (金) 01時07分

みなさん、コメントありがとうございます。

>負論理ですので注意

はい、最初は混乱していました。トランジスタで反転させそれから
フォトカプラーに入れます ->そら。さん

>作らせてもらおう

どうぞ、どうぞ。何の遠慮もいりません。ばんとさんのアクリル曲げ器は
活用させてもらっていますし、刺激しあうことはとっても良いことです。
これ感度が高いので結構面白いですよ。->ばんとさん 

投稿: がた老 | 2012年8月30日 (木) 23時59分

毎度です。ばんとです。

ボクも焦電センサー買って仕舞ったままです。
今のテーマは死蔵解消なんです。f(^_^;;;;

がた老さんの真似して作らせてもらおうかな。

投稿: ばんと | 2012年8月30日 (木) 23時00分

フォトカプラーとはナイスアイデアですね。

念の為ですが、aitendoの電波時計モジュールの出力は負論理ですので注意です。

投稿: そら。 | 2012年8月30日 (木) 20時07分

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック


この記事へのトラックバック一覧です: アナログ工作にはまる:焦電型赤外線センサーユニットの制作:

» デジタルオシロを買った。(発注) その1 [メモたんく]
はじめに とうとうデジタルオシロを購入してしまった。 オシロはアナログ回路を作る時には必要なのですが、安価な製品もあるようなのですが共立などの店頭で中古品が堂々と売られてるような高価な代物で素人に手が出ないと思ってました。 そんな時、お世話になってるがた老さんがオシロを使って焦電センサーユニットを作ってらっしゃったのでオシロのことを相談してみると、清水の舞台から飛び降りたつもりで購入した方がいいょと、そしてATEEN社のADS-1102CALというデジタルオシロを勧めてい... [続きを読む]

受信: 2012年9月12日 (水) 08時14分

« デュアルバンドの電波時計ユニットを買ってしまった | トップページ | 焦電型赤外線センサーの実装にてまどる »