27章:においセンサTGS2450

    作成2014.10.13

     においセンサTGS2450をテストします!!

  1. においセンサTGS2450評価回路図
      においセンサTGS2450評価回路図を以下に示します。

     においセンサTGS2450評価用ですので、無線機能は使用せずに、トワイ・ライターとTWE−Liteのみを使用します。
     ベースプロジェクトは「Samp_PingPong」を使用します。

     においセンサTGS2450の詳細仕様は下記を参照します。
    [27-1.pdf]をダウンロードする。

    品名単価個数小計購入先
    HC-SR04 超音波距離センサーモジュール4751475アマゾン
    ZigBeeワイヤレスモジュール TWE−Lite Dip−WA (半完成品セミキット)162011620秋月電子通商
    USBアダプター TWE−Lite R(トワイ・ライター)189011890秋月電子通商
    高精度IC温度センサLM61BIZ(4個入)50150秋月電子通商
    においセンサ TGS24503001300秋月電子通商
    トランジスター2SC1815Y(60V150mA)(10個入テーピング品)8216秋月電子通商
    赤色LED 3mm OSDR3133A 500mcd 30度100個入3.513.5秋月電子通商
    カーボン抵抗(炭素皮膜抵抗) 1/4W10kΩ (100本入)111秋月電子通商


  2. :においセンサTGS2450評価回路外観
     においセンサTGS2450評価回路外観を以下に示します。



  3. においセンサTGS2450プログラムのダウンロード
     完成プログラムは「40-27.zip」ファイルをダウンロードしてください。
    [40-27.zip]をダウンロードする。

     解凍するとフォルダー内に
    Samp_PingPongg
    フォルダーがあります。
    \Samp_PingPong\PingPong\Build\Samp_PingPong_PingPong_JN5164_0_1_4.binが実行ファイルです。
     WindowsパソコンソフトはターミナルソフトTera Termや9章〜24章のWin-PingPong.exeが適用できます。
     24章のWin-PingPong.exeがフォルダー内にあります。


  4. 基本操作方法
    (1)\40-25\Samp_PingPong\PingPong\Build\Samp_PingPong_PingPong_JN5164_0_1_4.binを無線マイコンTWE-Lite DIP(トワイライト・ディップ)に書込みます。(方法は7章:ToCoNet(トコネット)のソフトウエア開発環境(SDK) とPingPongの実行プログラムの書込みを参照願います。
    (2)TWE-Lite R(トワイ・ライター)は接続したままにします。
    (3)「Win-PingPong.exe」をダブルクリックで起動します。
    (4)画面の左側を「COM9」にセットして、「Conect」ボタンを押します。
    (5)HC-SR04 超音波距離センサーモジュール評価回路の電源をいれます。(リセットボタンは電源ON/OFFと同じとなります。下記画面となります。

    (6)Send Data に「j」を入力して「Send Data vbCrLf無し」ボタンを押すと測定結果が表示されます。



  5. 測定データ例
     においセンサTGS2450は単一パルス測定では、データバラツキが大きく安定しません。このため1測定あたり100回の加算処理を行いました。この処理に要する時間は約25sとなります。
     また、気温や湿度の影響を受けやすく測定結果の解釈が難しい問題があります。簡易的な動作テストとしてにおいセンサTGS2450に「消毒用エタプラス」(健栄製薬)を吹きかけた後の測定値変化を測定しました。
     測定値変化グラフを以下に示します。

     図27-5からにおいセンサTGS2450に「消毒用エタプラス」(健栄製薬)を吹きかけた後測定値が大きくなり、約500s後に平常値に戻ることが確認できます。
     においセンサTGS2450は種々の条件で測定値が変化するため、特定物質の濃度とはなりません。(測定値の解釈が難しい問題があります。)


  6. Samp_PingPongプログラムの変更箇所
    (1)Samp_PingPongプログラムの変更のポイント
    *Samp_PingPongもvoid cbToCoNet_vRxEvent(tsRxDataApp *pRx)等の割込み処理を行っており、250ms等の長いDelayループは使用できない。
    *Tick Timerの基本設定とコールバック関数はどこかですでに設定されている。
    *TickTimerIntervalは4msとなっている。
    *Tick Timerのコールバック関数はvoid cbToCoNet_vHwEvent(uint32 u32DeviceId, uint32 u32ItemBitmap)であり、u32DeviceId=E_AHI_DEVICE_TICK_TIMERがTick Timerの割込みである。

    (2)変数・関数定義追加
     
    //***変更3
    void MyDelay(long Tu);
    uint16 TTC=0;//TickTimerカウンタ
    uint8 gTGS_F=0;//TGS2450フラグ
    uint16 gTGS_N=100;//総和回数
    uint16 gTGS_NC=0;//総和カウンタ
    uint32 gADC;//ADC総和
    void TGS2450();		
    

    (3)void cbAppColdStart(bool_t bAfterAhiInit)への追加
     
    //****変更3
    vPortAsOutput(PORT_OUT1);//出力設定
    vPortSetLo(PORT_OUT1);//OFF設定
    vPortAsOutput(PORT_OUT2);//出力設定
    vPortSetLo(PORT_OUT2);//OFF設定	
    

    (4)void cbToCoNet_vHwEvent(uint32 u32DeviceId, uint32 u32ItemBitmap)への追加
    //***変更3				
    if(gTGS_F == 1)				
    {				
    	TTC++;			
    	if(TTC > 62)			
    	{			
    		TTC=0;		
    		gTGS_NC++;		
    		TGS2450();		
    		if(gTGS_NC > gTGS_N)		
    		{		
    			gTGS_NC=0;	
    			vfPrintf(&sSerStream,"TGS2450-TEST=\t%d\r\n",gADC);//TEST表示	
    			gADC=0;	
    			//gTGS_F=0;//これを有効にすると1回で終了!!	
    		}		
    	}			
    }				
    

    (5)static void vHandleSerialInput(void)への追加
    case 'j'://***変更3			
    	vfPrintf(&sSerStream,"TGS2450-TEST\r\n");//TEST表示		
    	gTGS_F=1;//フラグON		
    			
    	if (!bAHI_APRegulatorEnabled())//REGULATORがOFFの場合		
    	{		
    		//REGULATOR許可、割込み無し、サンプリング間隔2、500KHz、内部クロックを設定	
    		vAHI_ApConfigure(E_AHI_AP_REGULATOR_ENABLE, E_AHI_AP_INT_DISABLE,E_AHI_AP_SAMPLE_2,E_AHI_AP_CLOCKDIV_500KHZ,E_AHI_AP_INTREF);	
    		while(!bAHI_APRegulatorEnabled());//REGULATORがON待ち	
    	}		
    	break;		
    				
    

    (6)追加関数
    //***変更3		
    void MyDelay(long Tu)		
    {		
    	vAHI_TimerEnable(E_AHI_TIMER_4,4,FALSE,FALSE,FALSE);//プレスケール1/16設定	
    	vAHI_TimerStartSingleShot(E_AHI_TIMER_4,0x0000,0x0000);//タイマー4スタート	
    	while(u16AHI_TimerReadCount(E_AHI_TIMER_4) < Tu);//Tuμsディレイ	
    	vAHI_TimerStop (E_AHI_TIMER_4);//タイマー4ストップ	
    	vAHI_TimerDisable (E_AHI_TIMER_4);//タイマー開放	
    		
    }		
    		
    void TGS2450()		
    {		
    	vPortSetHi(PORT_OUT1);//ON設定	
    	MyDelay(3000);	
    	vPortSetHi(PORT_OUT2);//ON設定	
    	MyDelay(5000);	
    	vAHI_AdcEnable(E_AHI_ADC_SINGLE_SHOT,E_AHI_AP_INPUT_RANGE_2,E_AHI_ADC_SRC_ADC_2);	
    	vAHI_AdcStartSample();//測定開始	
    	//MyDelay(1000);	
    	while(bAHI_AdcPoll());//AD変換待ち	
    	gADC=gADC + u16AHI_AdcRead();//結果読み込み	
    	//MyDelay(1000);	
    	vPortSetLo(PORT_OUT1);//OFF設定	
    	vPortSetLo(PORT_OUT2);//OFF設定	
    }		
    


  7. 結果の検討
    (1)においセンサTGS2450は単一パルス測定では測定値が安定しない。また測定サイクルが250msと長い。
    (2)上記条件でDelayループを使用すると他の機能が動作しなくなる。
    (3)このため、Tick Timerを使用する必要があるが、Tick Timerの基本設定とコールバック関数はどこかですでに設定されている。
    (4)TickTimerIntervalは4msとなっているのでこれを利用する必要がありました。
    (5)においセンサTGS2450の最大の問題は、温度や湿度の影響を受けやすく、測定結果の解釈が難しい。
    (6)においセンサTGS2450は課題の多いセンサーです。
    (7)いろいろ問題はありますが、においセンサTGS2450を制御できることが確認できました。




28章:アース抵抗測定回路に行く。

トップページに戻る。