實驗說明:
我們就來開始學習一下PSoC類比訊號接口的使用方式,本實驗將使用MQ2氣體感測模組只需簡單的類比輸入就可以將實際測量的氣體濃度顯示在LCD屏幕上。
- MQ2氣體感測模組能檢測家庭或工業區域的氣體洩漏,檢測的氣體包括異丁 烷,液化石油氣,甲烷,乙醇,氫氣,煙霧等。
- 使用時A0端讀取對應氣體的類比值;D0端連接一個LM393芯片(比較器),我們可以通過電位器調節測量氣體報警臨界點,在D0輸出數位值。當測量氣體含量超過臨界點時,D0端輸出低電位;測量氣體含量沒超過臨界點時,D0端輸出高電位。
材料:
- PSoC 5LP 開發板
- USB 傳輸線
- MQ2氣體感測模組
- 杜邦線
PSoC Creator 設計流程:
【建構 PSoC 專案】
建立專案(在功能表[File] ➔ [New] ➔ [Project…])
- 選擇Empty PSoC 5LP Design
- Name : 輸入專案名稱
- Location : 檔案儲存路徑
- 確認完成後,點擊“OK”
【添加配置LCD顯示螢幕】
1. 拖曳組件目錄下的LCD顯示元件並將其放置於工作窗口內(Component Catalog->Display->Character LCD)。
2. 點擊Schematic的LCD_Char_1組件打開配置窗口。
3. 按照如下方式配置LCD端口:
- Name: LCD
- LCD Custom Character Set: None
- Include ASCII to Number Conversion Routines:打勾
- 其餘選項皆為默認值
- 確認完成後,點擊“OK”
【添加配置類比訊號輸入端口】
1. 拖曳並將數位端口的組件放置於作窗口內(Component Catalog-> Ports and Pins->Analog Pin)
2. 點擊Schematic的Pin_1打開配置窗口。
3. 在Type標籤下,按照如下方式配置數位端口:
- Name:Gas_sensor
- 選擇Analog選項
4. 在General標籤下進行如下配置
- Drive Mode: High Impedance Analog
- 其餘選項皆為默認值
- 確認完成後,點擊“OK”
【添加配置SAR ADC組件】
1. 拖曳並將數位端口的組件放置於作窗口內(Component Catalog-> Analog -> ADC -> SAR ADC)
2. 點擊Schematic的ADC_SAR_1打開配置窗口。
3. 按照下圖方式做配置:
4. 確認完成後,點擊“OK”
【配置完成後的Schematic如下圖】
▼注意:須連接Gas_sensor與ADC_SAR_1
【配置引腳】
引腳配置步驟如下:
1. 在Workspace Explorer窗口點擊cydwr。
2. LCD選擇引腳為P2[6:0]
3. ADC_SAR_1選擇引腳為P0[4]
4. Gas_sensor選擇引腳為P3[2]
接線說明:
▼ MQ2氣體感測模組接線方式請參考下表:
編譯:
▼ 點擊Program,將會產生各組件的函式庫。
程式:
/* ========================================
*
* Copyright YOUR COMPANY, THE YEAR
* All Rights Reserved
* UNPUBLISHED, LICENSED SOFTWARE.
*
* CONFIDENTIAL AND PROPRIETARY INFORMATION
* WHICH IS THE PROPERTY OF your company.
*
* ========================================
*/
#include <project.h>
#include <stdio.h>
int main()
{
uint16 adc_result;
char8 resultStr[16u];
/* Place your initialization/startup code here (e.g. MyInst_Start()) */
ADC_SAR_1_Start(); //初始化SAR ADC轉換器
LCD_Start(); //啟動LCD1602A
LCD_Position(0,0); //移動LCD游標到 0行,0列
LCD_PrintString("Hi Mirotek"); //在LCD上顯示字串"Hi Mirotek"
LCD_Position(1,0); //移動LCD游標到 0行,0列
LCD_PrintString("MQ-2:"); //在LCD上顯示字串"Hi Mirotek"
ADC_SAR_1_StartConvert(); //啟動ADC轉換器
/* CyGlobalIntEnable; */ /* Uncomment this line to enable global interrupts. */
for(;;)
{
/* Place your application code here. */
//Gas detection
adc_result=ADC_SAR_1_GetResult16(); //讀取ADC轉換結果
sprintf((char*)resultStr,"%4d",adc_result); //將轉換結果 轉換為字串
LCD_Position(1,5); //移動LCD游標到 1行,11列
LCD_PrintString(resultStr); //在LCD上顯示字串氣體偵測數值
//LCD_PrintInt16(adc_result);
CyDelay(10); //延遲10 milliseconds
}
}
/* [] END OF FILE */
實驗結果:
讓PSoC讀取 MQ2 氣體感測模組的類比數值資料,並把 MQ2 氣體感測資料顯示在LCD1602 液晶顯示器上。