本實驗是通過串口除錯助手顯示STM32F103C8T6采集到MQ-2傳感器的電壓值,
一、 概述
1. 簡介
MQ-2可用于家庭和工廠的氣體泄漏監裝置,適宜于液化氣、丁烷、丙烷、甲烷、酒精、煙霧等的探測,它的優點是靈敏度高、回應快、穩定性好,壽命長、驅動電路簡單以及方便安裝,
2. 作業原理
MQ-2型煙霧傳感器屬于二訊訓錫半導體氣敏材料,屬于表面離子式N型半導體,處于200~3000攝氏度時,二訊訓錫表面吸附空氣中的氧,形成氧的負離子吸附,使半導體中的電子密度減少,從面使其電阻值增加,當與煙霧接觸時,如果晶粒間界處的勢壘收到煙霧的調至面變化,就會引起表面導電率的變化,利用這一點就可以獲得這種煙霧存在的資訊煙霧濃度越大導電率越大,輸出電阻越低,則輸出的模擬信號就越大,
3. MQ-2特點
- MQ-2煙霧傳感器對液化氣、天然氣、城市煤氣靈敏度較高,
- MQ-2型傳感器具有良好的重復性和長期的穩定性,初始穩定,回應時間短,長時間作業性能好,需要注意的是:在使用之前必須加熱一段時間,否則其輸出的電阻和電壓不準確,
- 其檢測可燃氣體與煙霧的范圍是100~10000ppm(ppm為體積濃度, 1ppm=1立方厘米/1立方米)
- 雙路信號輸出(模擬量輸出和數字量輸出),
- 當氣體濃度未超過設定閾值時,數字介面DO口輸出低電平,模擬介面A0電壓基本為0v左右;當氣體影響超過設定閾值時,模塊數字介面D0輸出高電平,模擬介面A0輸出的電壓會隨著氣體的影響慢慢增大,
二、 實驗材料
- 最小系統STM32F10SC8T6,
- MQ-2煙霧濃度傳感器,
- 杜邦線若干,
三、 硬體連接
| 模塊引腳 | GPIO |
|---|---|
| VCC | VCC |
| GND | GND |
| D0 | NC(空) |
| A0 | PA0 |
注:A0:模擬量輸出介面;D0:數字量開關介面(0/1),
四、 實作程式
1、 GPIO初始化
void ADC_Pin_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
ADC_InitTypeDef ADC_InitStruct;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA
| RCC_APB2Periph_ADC1,ENABLE);
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AIN;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0;
GPIO_Init(GPIOA,&GPIO_InitStruct);
ADC_InitStruct.ADC_ContinuousConvMode = DISABLE;//單次轉換
ADC_InitStruct.ADC_DataAlign = ADC_DataAlign_Right;//資料對齊
ADC_InitStruct.ADC_Mode = ADC_Mode_Independent;//獨立模式
ADC_InitStruct.ADC_NbrOfChannel = 1;//轉換總數
ADC_InitStruct.ADC_ScanConvMode = DISABLE;//單通道掃描
ADC_Init(ADC1,&ADC_InitStruct);
//轉換通道 第幾次轉換 采樣時間
ADC_RegularChannelConfig(ADC1,ADC_Channel_0,1,ADC_SampleTime_239Cycles5);
ADC_ITConfig(ADC1,ADC_IT_EOC,ENABLE);
ADC_Cmd(ADC1,ENABLE);
}
2、 資料轉換
u16 ADC_Trans(void)
{
u16 adc_value = 0;
u8 i = 0;
for(i = 0; i < 50; i++)
{
//開始轉換
ADC_SoftwareStartConvCmd(ADC1,ENABLE);
//轉換是否結束
while(ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC) != SET);
adc_value = adc_value + ADC_GetConversionValue(ADC1);//讀ADC中的值
}
return adc_value / 50;//取樣50次的平均值
}
3、 主程式
int main(void)
{
u16 ad = 0;
Sys_Delay_Init();
Usart1_Pin_Init(115200);
printf("初始化成功\r\n");
ADC_Pin_Init();
while(1)
{
ad = ADC_Trans();
// printf("電壓值:%f\r\n",3.3/4095*ad); //實際電壓值
printf("%.2f\r\n",ad * 99 / 4096.0);//把AD值轉換成百分比0~99
delay_ms(1000);
}
}
五、 實驗效果
完整程式及相關資料:
鏈接:https://pan.baidu.com/s/1G-Xl3c6kYr9eU48Gt0EKAg
提取碼:9owd
如有錯誤還望指出,謝謝!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/265475.html
標籤:其他
下一篇:數字權重
