|
- smog.c
- #include "smog.h"
- #include "delay.h"
- #include "usart.h"
- #include "adc.h"
- //初始化煙霧傳感器
- void Smog_Init(void)
- {
- GPIO_InitTypeDef GPIO_InitStructure;
-
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//使能PORTF時鐘
-
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; //PC0 anolog輸入
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; //模擬輸入引腳
- GPIO_Init(GPIOA, &GPIO_InitStructure);
- Adc3_Init();
- }
- //讀取煙霧傳感器的電壓值
- u16 Smog_Get_Vol(void)
- {
- u32 temp_val=0;
- u8 t;
- for(t=0;t<SMOG_READ_TIMES;t++)
- {
- temp_val+=Get_Adc3(SMOG_ADC_CHX); //讀取ADC值
- delay_ms(5);
- }
- temp_val/=SMOG_READ_TIMES;//得到平均值
- printf("Smog_ADC_Val:%d\r\n", temp_val);
- return (u16)temp_val;
- }
- //分析從煙霧傳感器獲取的電壓值,通過公式計算出可燃氣體的濃度值
- //設Rs為傳感器的體電阻,其中氣體濃度上升,將導致Rs下降。而Rs的下降則會導致,MQ-2的4腳、6腳對地輸出的電壓增大。
- //所以氣體濃度增大,其輸出的電壓也會增大。因Rs在不同氣體中有不同的濃度值,所以該函數僅作為參考.
- u16 Smog_Trans_Concentration(void)
- {
- u16 ulVal = 0;
- u16 temp_val = Smog_Get_Vol();
- u16 Rs;
- Rs = SMOG_PIN46_R*(4096.0/temp_val - 1);
- printf("Smog_Rs_Val:%d\r\n", Rs);
-
- ulVal = Rs;//這里填寫公式根據Rs計算氣體濃度
-
- return ulVal;
- }
復制代碼
還請大家幫我看看,我用的c8t6
|
|