MQ-2 氣體傳感器所使用的氣敏材料是在清潔空氣中電導率較低的二氧化錫(SnO2) 。當傳感器所處環境中存在可燃氣體時,傳感器的電導率隨空氣中可燃氣體濃度的增加而增大。 使用簡單的電路即可將電導率的變化轉換為與該氣體濃度相對應的輸出信號。將模擬量轉換為數字量的技術我們稱之為ADC。
本示例采用開發板硬件ADC功能進行煙霧數據采集,STM32F103 擁有 1~3 個 ADC(STM32F101/102 系列只有 1 個 ADC),這些 ADC 可以獨立使用,也可以使用雙重模式(提高采樣率)。 STM32 的 ADC 是 12 位逐次逼近型的模擬數字轉換器。它有 18 個通道,可測量 16 個外部和 2 個內部信號源。各通道的 A/D 轉換可以單次、連續、掃描或間斷模式執行。 ADC 的結果可以左對齊或右對齊方式存儲在 16 位數據寄存器中。
1.硬件設計

采用PA0(ADC1_CH0)接口完成煙霧濃度采集。
軟件設計
ADC工作頻率配置
??根據STM32中文參考手冊ADC章節(第155頁),ADC的工作時鐘不能超過14MHZ。

ADC模式
??STM32F103開發板有兩種轉換方式:規則轉換和注入轉換。規則轉換有可同時轉換16路通道,但只有一個數據寄存器,所以想完成16路通道同時轉換就需要DMA配合使用;注入通道有4個數據寄存器,可同時轉換4路通道。

ADC模式配置


代碼生成

PA0引腳配置和ADC校準

完成一次規則通道轉換
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);//等待規則通道轉換完成
return HAL_ADC_GetValue(&hadc1);
}
500ms采集一次數據
Delay_Ms(1);
time++;
if(time>=500)
{
time=0;
temp_ad =Get_Regular_Channelx(0);
printf("AD:%d\r\n",temp_ad);
}
ADC常用函數介紹
/**********************在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方式開啟
//等待轉換完成
HAL_StatusTypeDef HAL_ADC_PollForConversion(ADC_HandleTypeDef* hadc, uint32_t Timeout);
uint32_t HAL_ADC_GetValue(ADC_HandleTypeDef* hadc);//獲取數據
//ADC通道配置
HAL_StatusTypeDef HAL_ADC_ConfigChannel(ADC_HandleTypeDef* hadc,ADC_ChannelConfTypeDef* sConfig);
uint32_t HAL_ADC_GetState(ADC_HandleTypeDef* hadc);//獲取狀態
/***************************************在stm32f1xx_hal_adc_ex.h中*****************************/
HAL_StatusTypeDef HAL_ADCEx_Calibration_Start(ADC_HandleTypeDef* hadc);//ADC校準
HAL_StatusTypeDef HAL_ADCEx_InjectedStart(ADC_HandleTypeDef* hadc);//使能ADC,開始注入轉換
-
adc
+關注
關注
100文章
7511瀏覽量
555964 -
開發板
+關注
關注
26文章
6291瀏覽量
118108 -
STM32F103
+關注
關注
34文章
495瀏覽量
67706
發布評論請先 登錄
ADC12D1800RFRB開發板上有一塊V4的FPGA,請問此FPGA是負責AD數據采集嗎?
【BPI-CanMV-K230D-Zero開發板體驗】+ADC數據采集及尋找引腳的問題
【Aworks申請】高速數據采集系統
請問ADC12D1800RFRB開發板上的FPGA是負責AD數據采集嗎?
【DFRobot TinkerNode NB-IoT 物聯網開發板試用連載】基于DFRobot TinkerNode NB-IoT 物聯網開發板的微型冰箱數據采集
【大聯大詮鼎 Semtech (AcSip) S76G試用申請】基于大聯大詮鼎 Semtech (AcSip) S76G開發板的微型冰箱數據采集
基于STM32開發板實現傳感數據采集-DHT11溫濕度采集
【HaaS 610 Kit 4G 開發板試用體驗】A/D數據采集及使用
實現一個基于小熊派開發板的廚房煙霧監測系統
【小眼睛科技紫光盤古50K開發板試用體驗】+高速ADC數據采集視頻
搭載JESD204B編碼的高速數據采集開發板
【干貨分享】在 RA-Eco-RA6M4開發板上實現 ADC 電壓的 LabVIEW 數據采集
采用開發板硬件ADC功能進行煙霧數據采集
評論