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

「本格的にArduino/においセンサー」の編集履歴(バックアップ)一覧に戻る
本格的にArduino/においセンサー」を以下のとおり復元します。
*においセンサー
TGS2450
http://akizukidenshi.com/catalog/g/gP-00989/

**ヒーターの制御
ヒーターに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でパルス入力して抵抗値を計る。
臭いと抵抗値が下がる。

タイミングがある。
http://www8.plala.or.jp/InHisTime/page020.html
http://mcalc.zapto.org/otherDoc/nioi/index.html

**250msサイクル
   0ms:ヒーターON
   8ms:ヒータOFF
 245ms:センサ電圧ON
 247ms:センサ電圧計測
 249ms:センサ電圧OFF

**回路図
#image(http://www2.atpaint.jp/arduino/src/OB1237100469671.png)
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
 温度が上がる→抵抗値が下がる
ということなので
 ヒーターに与える電力を下げる→温度が下がる→抵抗値が上がる
としてみたら良いかもしれない。

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

復元してよろしいですか?

ツールボックス

下から選んでください:

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