MQ-2 氣體傳感器所使用的氣敏材料是在清潔空氣中電導(dǎo)率較低的二氧化錫(SnO2) 。當(dāng)傳感器所處環(huán)境中存在可燃氣體時,傳感器的電導(dǎo)率隨空氣中可燃氣體濃度的增加而增大。 使用簡單的電路即可將電導(dǎo)率的變化轉(zhuǎn)換為與該氣體濃度相對應(yīng)的輸出信號。將模擬量轉(zhuǎn)換為數(shù)字量的技術(shù)我們稱之為ADC。
本示例采用開發(fā)板硬件ADC功能進行煙霧數(shù)據(jù)采集,STM32F103 擁有 1~3 個 ADC(STM32F101/102 系列只有 1 個 ADC),這些 ADC 可以獨立使用,也可以使用雙重模式(提高采樣率)。 STM32 的 ADC 是 12 位逐次逼近型的模擬數(shù)字轉(zhuǎn)換器。它有 18 個通道,可測量 16 個外部和 2 個內(nèi)部信號源。各通道的 A/D 轉(zhuǎn)換可以單次、連續(xù)、掃描或間斷模式執(zhí)行。 ADC 的結(jié)果可以左對齊或右對齊方式存儲在 16 位數(shù)據(jù)寄存器中。
1.硬件設(shè)計
采用PA0(ADC1_CH0)接口完成煙霧濃度采集。
軟件設(shè)計
ADC工作頻率配置
??根據(jù)STM32中文參考手冊ADC章節(jié)(第155頁),ADC的工作時鐘不能超過14MHZ。
ADC模式
??STM32F103開發(fā)板有兩種轉(zhuǎn)換方式:規(guī)則轉(zhuǎn)換和注入轉(zhuǎn)換。規(guī)則轉(zhuǎn)換有可同時轉(zhuǎn)換16路通道,但只有一個數(shù)據(jù)寄存器,所以想完成16路通道同時轉(zhuǎn)換就需要DMA配合使用;注入通道有4個數(shù)據(jù)寄存器,可同時轉(zhuǎn)換4路通道。
ADC模式配置
代碼生成
PA0引腳配置和ADC校準
完成一次規(guī)則通道轉(zhuǎn)換
u16 Get_Regular_Channelx(u16 ch)
{
ADC_ChannelConfTypeDef sConfig = {0};
sConfig.Channel=ch;//通道號
sConfig.SamplingTime=ADC_SAMPLETIME_239CYCLES_5;//采樣周期
if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)//ADC通道初始化
{
Error_Handler();
}
HAL_ADC_Start(&hadc1);//開啟ADC
HAL_ADC_PollForConversion(&hadc1,20);//等待規(guī)則通道轉(zhuǎn)換完成
return HAL_ADC_GetValue(&hadc1);
}
500ms采集一次數(shù)據(jù)
Delay_Ms(1);
time++;
if(time>=500)
{
time=0;
temp_ad =Get_Regular_Channelx(0);
printf("AD:%d\r\n",temp_ad);
}
ADC常用函數(shù)介紹
/**********************在stm32f1xx_hal_adc.c中*********************************************/
HAL_ADC_Start(ADC_HandleTypeDef* hadc); //開啟ADC
HAL_ADC_Start_IT(ADC_HandleTypeDef* hadc); //中斷方式開啟ADC
HAL_ADC_Start_DMA(ADC_HandleTypeDef* hadc, uint32_t* pData, uint32_t Length); //DMA方式開啟
//等待轉(zhuǎn)換完成
HAL_StatusTypeDef HAL_ADC_PollForConversion(ADC_HandleTypeDef* hadc, uint32_t Timeout);
uint32_t HAL_ADC_GetValue(ADC_HandleTypeDef* hadc);//獲取數(shù)據(jù)
//ADC通道配置
HAL_StatusTypeDef HAL_ADC_ConfigChannel(ADC_HandleTypeDef* hadc,ADC_ChannelConfTypeDef* sConfig);
uint32_t HAL_ADC_GetState(ADC_HandleTypeDef* hadc);//獲取狀態(tài)
/***************************************在stm32f1xx_hal_adc_ex.h中*****************************/
HAL_StatusTypeDef HAL_ADCEx_Calibration_Start(ADC_HandleTypeDef* hadc);//ADC校準
HAL_StatusTypeDef HAL_ADCEx_InjectedStart(ADC_HandleTypeDef* hadc);//使能ADC,開始注入轉(zhuǎn)換
-
adc
+關(guān)注
關(guān)注
98文章
6524瀏覽量
545167 -
開發(fā)板
+關(guān)注
關(guān)注
25文章
5087瀏覽量
97785 -
STM32F103
+關(guān)注
關(guān)注
33文章
477瀏覽量
63723
發(fā)布評論請先 登錄
相關(guān)推薦
評論