本格的にArduino > においセンサー


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

においセンサー


ヒーターの制御

ヒーターに1.6V/138mAでON:8ms/OFF:242msでパルス入力する。
  • 1.6V/8.5Ω = 188mA
  • 1.6V/10.5Ω = 152mA
138mAってどこからきたんだ??
5V/25Ω=200mA
5V/30Ω=166mA
5V/35Ω=142mA *
5V/40Ω=125mA
25Ω(100Ω*4本)+10Ω(ヒーター)でいいかな。
1/(1/100+1/100+1/100+1/100)=25


センサーから値を取得する

センサーににON:5ms/OFF:245msでパルス入力して抵抗値を計る。
臭いと抵抗値が下がる。


250msサイクル

  0ms:ヒーターON
  8ms:ヒータOFF
245ms:センサ電圧ON
247ms:センサ電圧計測
249ms:センサ電圧OFF

回路図

25Ωは100Ωを4本並列。
33Ωは100Ωを3本並列。

スケッチ

int ledPin         = 13;
int sensorAnalogIn =  5; // ANALOG IN
int sensorOutPin   =  3; // DIGITAL OUT
int heaterOutPin   =  2; // DIGITAL OUT
int count          =  0;
int val4           =  0;

#define REF_VOLTAGE 5.0 //1.1
void setup() {
 analogReference(DEFAULT);
 pinMode(ledPin,       OUTPUT);
 pinMode(sensorOutPin, OUTPUT);
 pinMode(heaterOutPin, OUTPUT);
 Serial.begin(19200);
}

void loop()
{
 int val;
 int i;
 double volt;
 double templ;
 
 val = 0;
 // <- 0ms.
 digitalWrite(heaterOutPin, HIGH);
 digitalWrite(ledPin, HIGH);
 delay(8);
 // <- 8ms.
 digitalWrite(heaterOutPin, LOW);
 digitalWrite(ledPin, LOW);
 delay(235);
 // <- 245ms.
 digitalWrite(sensorOutPin, HIGH);
 if(false){
   delay(2);
   // <- 247ms.
   val += analogRead(sensorAnalogIn);
   delay(2);
   // <- 249ms.
 }else{
   delay(1);
   // <- 246ms.
   val += analogRead(sensorAnalogIn);
   delay(1);
   // <- 247ms.
   val += analogRead(sensorAnalogIn);
   delay(1);
   // <- 248ms.
   val += analogRead(sensorAnalogIn);
   delay(1);
   // <- 249ms.
   val += analogRead(sensorAnalogIn);
   val = val/4;
 }
 digitalWrite(sensorOutPin, LOW);
 delay(1);
 // <- 250ms.

 val4 += val;
 if(count%4==3){
   volt = REF_VOLTAGE*val4/4/1024.0;
   Serial.print(count); Serial.print(" : ");
   Serial.print(volt);  Serial.println("V.");
   val4 = 0;
 }
 count++;
}


センサーの消費電力

33Ωを使った状態だと、
通常状態       : 3.93V
ラム(酒)を接近 : 1.65V
良い感じに反応してる!

トランジスタのエミッタの電圧 : 4.23V
で、33Ωとセンサーの変化する抵抗値で何mA流れてて消費電力は?
15mW以下に収まっていればOK。

5V -- 4.23V -- 3.93V -- 0V
           33Ω
(4.23-3.93)/33=9mA
3.93V*0.009A = 0.035W *
センサ抵抗 : 3.93V/0.009A = 436.6Ω

5V -- 4.23V -- 1.65V -- 0V
           33Ω
(4.23-1.65)/33=78mA
1.65V*0.078A = 0.128W * 
センサ抵抗 : 1.65V/0.078A = 21.15Ω
だめじゃん。

5V -- 4.23V -- 2.74V -- 0V
          100Ω
(4.23-2.74)/100=0.015A
2.74V*0.015A = 0.0411W
これでも多い。
Psの最大値15mWって平均値か最大値なのかがわからない。

ヒーターに与える電力を下げてみる?

電圧の変動が小さすぎてA/Dの値が使いにくく、センサー直列の抵抗値を下げていったのだが、
センサーの抵抗値が小さいってことなので抵抗値あがってほしい。
http://oshiete1.goo.ne.jp/qa3834857.html
温度が上がる→抵抗値が下がる
ということなので
ヒーターに与える電力を下げる→温度が下がる→抵抗値が上がる
としてみたら良いかもしれない。

25Ω(100Ω*4本)+10Ω(ヒーター)でいいかな。 
5V --- 1.428V --- 0V
   25Ω       10Ω
1.428V/10Ω=142mA ちょっと多い

電圧を下げる

センサーと直列の抵抗にかける電圧を下げてみたらPsも下がるはず。
可変型高精度ツェナー・シャント・レギュレータ TL431ACZ-AP 10個 100円
これでいいのかしら。2.5Vまでしか下がらないっぽいが。
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。