記事一覧

Arduinoで焦電型赤外線センサー(その2)

2013.03.30

前回焦電センサと格闘してあえなく敗退したのですが、その後追加の部品を導入して何とかモノになりそうな気配になってきました。
ファイル 40-1.jpg
追加で購入したのは「超高感度焦電センサー用レンズ」といもので、焦電センサにかぶせて感度をアップします。
このレンズが無いとセンサの前数センチくらいで手をかざした時には反応しますが、それ以上離れると反応を捕えられなくなります。
レンズ装着後はこのような簡易な回路でも、2~3メートル離れた所を人が横切ったのも捕えられるようになりました。
ファイル 40-2.png
センサの前で人が動くと電圧が大きく振れているのが分かります。
あと、どこかでセンサ出力端子からGNDに落とす抵抗を大きくすれば出力の振れが大きくなるという情報があったので抵抗値を1Mに変更しました。
ファイル 40-3.png
サンプルのスケッチを公開しますので、ご自由にお使いください。
以下、一部解説します。

void loop()
{
static int save[100];
static int ix = 0;
save[ix] = analogRead(0);
メインのループでは1ミリ秒ごとにアナログ値を読み取り、テーブルにデータを溜めていきます。


// データが100個溜まったら実行
if (ix > 99){
int v1 = 0, v2 = 0;
for (int i = 0; i < 50; i++){
v1 += save[i];
}
for (int i = 50; i < 100; i++){
v2 += save[i];
}
// 前の50個と後ろ50個の合計を比較し、基準値以上でライトをオン
int v3 = abs(v2 - v1);
int flg = v3 > SENSE ? 1: 0;
light(flg);
ix = 0;


}
ix++;
delay(1);
}
データが100個溜まったところで前半50個と後半50個の合計値を比較し、差分が基準値を越えたら反応ありとみなします。

void light(int f){
static unsigned long light_on;
static byte light_stat = 0;
if (f){
if (!light_stat) {
light_on = millis();
}
light_stat = 1;
} else {
// センス0でもON_TIME経過するまでオン状態を維持
if (millis() - light_on > ON_TIME) {
light_stat = 0;
}
}
digitalWrite(13, light_stat);
}
ライトを一定時間点けるルーチンでは、ライトの状態を保持し、オンになった場合はその時間(millis)を保持しておき、オフの指令が来ても一定時間が過ぎるまではオン状態を維持するようにしています。

このような簡単な回路+スケッチですが、セキュリティ用途などシビアな反応が求められるものでなければ(多少の誤作動が許されるなら)、結構使えるのではないかと思います。
今後いろんなセンサと組み合わせたロガーを作ろうと思っていて、LCDディスプレイのオン・オフにこの仕組みを持ち込もうと考えています。

にほんブログ村 その他趣味ブログ 電子工作へ

タグ:Arduino センサー AKE-1

Arduinoで焦電型赤外線センサーと格闘

2013.03.24

ファイル 39-1.jpg
随分昔に買ったまま眠っていた「焦電型赤外線センサー」を何とかArduinodeで使えないものかと、この土日あれやこれやと弄くってみました
以下のページを参考にさせていただきました

二日間の格闘の結果、人体には反応しているらしいが傾向がつかめず、やっぱりそれなりの回路が必要と改めて感じました
今日の反省

  • オペアンプはそれなりのものが必要。LM358N(5個100円)と電解ではないコンデンサと部品をケチってはちゃんとした結果が出ない
  • やっぱりフレネルレンズは必要?

ファイル 39-2.png
簡易オシロで計測したところ、センサに手をかざした箇所ではグラフが下に振れています。が、無反応時の電圧も結構振れています。これをソフト的にどう扱うか?が課題です
いっそキットを買ってしますという手も無くはないのですが。。。

ファイル 39-3.png
この程度の簡易回路では無理があったのでしょうか

にほんブログ村 その他趣味ブログ 電子工作へ

タグ:Arduino センサー

ブレッドボードのようなユニバーサル基板

2013.03.20

ファイル 38-1.jpg
先日秋葉原の秋月電子で面白いものを見つけました
ユニバーサル基板の表面にブレッドボードのような印刷が施してあるものなのですが、
ファイル 38-2.jpg
なんと裏のパターンはブレッドボード同様に配線されています
これを使えば、小さいブレッドボードに組んだ回路をそのままの配置で基板上に半田付けできるという訳です。
ブレッドボードからユニバーサル基板に移す時って何かと難しいですからね。。。とりあえず3枚ほど買ってみました。

にほんブログ村 その他趣味ブログ 電子工作へ

タグ:Arduino 自作

FT232RL接続用基板

2013.03.20

ファイル 37-2.jpg
PCからスケッチを自作ArduinoにアップロードするためにFT232RL USBシリアル変換モジュールを買いましたが、ブレッドボードに抜き差しする時にピンを傷めてしまいそうなので、ピンソケットを付けたFT専用の基板を作ることにしました

ユニバーサル基板を適当に切り出し、ピンソケットを左右に2列ずつ半田付け。外側のソケットはブレッドボードとジャンパ線でつなぐ場合のために設けました。あと、送受信の確認用のLEDも付けています。
ファイル 37-1.jpg
Arduino基板とはL型のピンヘッダ&ソケットでつなぎます。
と、ここまでは良かったのですが、いざ完成してArduinoとつないでもスケッチをアップロードできません。。。
IDEで「not sync」と表示されるため、配線が間違っているのかあれこれチェックしましたが、間違っているところはなさそうです。
2時間くらい悩んで、FTとピンソケットの接触不良であることが分かりました。というのは、FTにはブレッドボード用の細いピンが装着されており、ピンソケットの穴が緩くうまく接触していなかったようでした。
試行錯誤してFTのピンを微妙に曲げながら、無事IDEからスケッチもアップロードできるようになりました。
Arduinoとの接続に関しては、「Arduino/Arduino の自作/DuemilanoveTYPE」を参考にさせていだきました。
上記サイトには載っていませんでしたが、送受信確認のLEDはCB0、CB1とVCCの間に挟みます。

にほんブログ村 その他趣味ブログ 電子工作へ

タグ:Arduino 自作 USB

自作Arduinoを基板に乗せました

2013.03.17

ファイル 36-1.jpg
ボートローダを書き込んだATMEGA328を端材のユニバーサル基板に乗せてみました。部品点数は少ないけど、小さい基板に詰め込むのは結構大変でした。
ファイル 36-2.jpg
いつ断線orショートするか分からない危うい半田付けです・・・
とりあえずブレッドボードに刺せるようピンヘッダを仕込んでいます。

達人の域に達すればこんな技もできるみたいです
One-Chip Arduino ver. 2.0

にほんブログ村 その他趣味ブログ 電子工作へ

タグ:Arduino 自作

ページ移動