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

「本格的にArduino/においセンサー」の編集履歴(バックアップ)一覧はこちら

本格的にArduino/においセンサー」(2009/03/17 (火) 13:44:59) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

*においセンサー 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までしか下がらないっぽいが。
*においセンサー 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 温度が上がる→抵抗値が下がる ということなので ヒーターに与える電力を下げる→温度が下がる→抵抗値が上がる としてみたら良いかもしれない。 25Ω(100Ω*4本)+10Ω(ヒーター)でいいかな。 5V --- 1.428V --- 0V 25Ω 10Ω 1.428V/10Ω=142mA ちょっと多い *電圧を下げる センサーと直列の抵抗にかける電圧を下げてみたらPsも下がるはず。 可変型高精度ツェナー・シャント・レギュレータ TL431ACZ-AP 10個 100円 これでいいのかしら。2.5Vまでしか下がらないっぽいが。

表示オプション

横に並べて表示:
変化行の前後のみ表示:
ツールボックス

下から選んでください:

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