有害气体检测传感器MQ-135在stm32f103c8t6的测试代码
时间: 2023-05-24 12:06:16 浏览: 720
基于STM32F103c8t6的空气质量传感器 MQ135传感器 有害气体检测模块(串口显示)
5星 · 资源好评率100%
以下是MQ-135传感器在stm32f103c8t6上的测试代码:
```
#include "stm32f10x.h"
#define MQ135_PIN GPIO_Pin_0
#define MQ135_PORT GPIOA
#define ADC_CHANNEL ADC_Channel_0
ADC_InitTypeDef ADC_InitStructure;
void ADC_Configuration(void) {
RCC_ADCCLKConfig(RCC_PCLK2_Div6);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
ADC_InitStructure.ADC_ScanConvMode = DISABLE;
ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
ADC_InitStructure.ADC_NbrOfChannel = 1;
ADC_Init(ADC1, &ADC_InitStructure);
ADC_Cmd(ADC1, ENABLE);
}
uint16_t Read_ADC(void) {
ADC_RegularChannelConfig(ADC1, ADC_CHANNEL, 1, ADC_SampleTime_239Cycles5);
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) == RESET);
return ADC_GetConversionValue(ADC1);
}
int main(void) {
GPIO_InitTypeDef GPIO_InitStructure;
ADC_Configuration();
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
GPIO_InitStructure.GPIO_Pin = MQ135_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_Init(MQ135_PORT, &GPIO_InitStructure);
while(1) {
uint16_t adc_value = Read_ADC();
float voltage = ((float)adc_value/4096)*3.3;
float ppm = (voltage-0.1)/0.2*1000;
}
}
```
在主函数中,我们首先要初始化ADC,并配置单个IO口为模拟输入引脚。在while(1)循环中,读取ADC值后,我们通过公式将其转化为浓度(ppm)数值,然后对其进行进一步处理和使用。请注意,这只是基本的MQ-135传感器测试代码,实际使用时需要做更多的校准和优化。
阅读全文