您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關STM32平臺下GP2Y1010AU0F灰塵傳感器使用及源碼是什么,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
GP2Y1010AU0F傳感器接線方式如下:
使用PA0接收模擬信號,PB1發送脈沖信號。
代碼如下:
GP2Y.c
#include "GP2Y.h" #include "system.h" u16 AD_PM; void GP2Yinit(void) { //定義變量 ADC_InitTypeDef A_InitStructure; GPIO_InitTypeDef G_InitStructure; //PA0 GPIO_InitTypeDef Gpio_InitStructure;//PB1 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_ADC1 , ENABLE ); //使能ADC2通道時鐘 RCC_ADCCLKConfig(RCC_PCLK2_Div6); //設置ADC分頻因子6 72M/6=12,ADC最大時間不能超過14M //PA0 作為模擬通道輸入引腳 G_InitStructure.GPIO_Pin = GPIO_Pin_0; G_InitStructure.GPIO_Mode = GPIO_Mode_AIN; //模擬輸入引腳 GPIO_Init(GPIOA, &G_InitStructure); ADC_DeInit(ADC1); //復位ADC1,將外設 ADC1 的全部寄存器重設為缺省值 A_InitStructure.ADC_Mode = ADC_Mode_Independent; //ADC工作模式:ADC1和ADC2工作在獨立模式 A_InitStructure.ADC_ScanConvMode = DISABLE; //模數轉換工作在單通道模式 A_InitStructure.ADC_ContinuousConvMode = DISABLE; //模數轉換工作在單次轉換模式 A_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; //轉換由軟件而不是外部觸發啟動 A_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; //ADC數據右對齊 A_InitStructure.ADC_NbrOfChannel = 1; //順序進行規則轉換的ADC通道的數目 ADC_Init(ADC1, &A_InitStructure); //根據ADC_InitStruct中指定的參數初始化外設ADCx的寄存器 ADC_Cmd(ADC1, ENABLE); //使能指定的ADC1 ADC_ResetCalibration(ADC1); //使能復位校準 while(ADC_GetResetCalibrationStatus(ADC1)); //等待復位校準結束 ADC_StartCalibration(ADC1); //開啟AD校準 while(ADC_GetCalibrationStatus(ADC1)); //等待校準結束 Gpio_InitStructure.GPIO_Pin = GPIO_Pin_1; Gpio_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//推挽輸出 Gpio_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOB, &Gpio_InitStructure); GP2Y_High; } void GetGP2Y(void) { float pm; GP2Y_Low; delay_us(280); AD_PM = Get_Adc(ADC_Channel_0); //PA0 delay_us(40); GP2Y_High; delay_us(9680); pm = 0.17*AD_PM-0.1; //電壓-灰塵轉換 printf("%f\n",pm); }
GP2Y.h
#ifndef __GP2Y_H #define __GP2Y_H #include "stm32f10x_lib.h" #define GP2Y_High GPIO_SetBits(GPIOB,GPIO_Pin_1); #define GP2Y_Low GPIO_ResetBits(GPIOB,GPIO_Pin_1); void GP2Yinit(void); void GetGP2Y(void); #endif
PB1輸出波形
獲取到灰塵數值。
根據上圖推算出公式:dustDensity = 0.17 * calcVoltage - 0.1。
看完上述內容,你們對STM32平臺下GP2Y1010AU0F灰塵傳感器使用及源碼是什么有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。