国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

STM32F4_光敏傳感器

這篇具有很好參考價值的文章主要介紹了STM32F4_光敏傳感器。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

1. 什么是光敏傳感器、光敏電阻

2. 硬件分析

3. 實驗程序

3.1 main.c

3.2 ADC3.c

3.3 ADC3.h

3.4 Lightsensor.c

3.5 Lightsensor.h


1. 什么是光敏傳感器、光敏電阻

光敏傳感器也稱為光電傳感器。是利用光電器件把光信號轉換成電信號的一種傳感器。它的敏感波長在可見光波長附近,包括紅外線波長和紫外線波長。光傳感器不只局限于對光的探測,它還可以作為探測元件組成其他傳感器,對許多非電量進行檢測,只要將這些非電量轉換為光信號的變化即可。

光敏傳感器是最常見的傳感器之一,它的種類繁多,主要有:光電管、光電倍增管、光敏電阻、光敏三極管、太陽能電池、紅外線傳感器、紫外線傳感器、CCD和CMOS圖像傳感器等。光傳感器是目前產量最多、應用最廣的傳感器之一,它在自動控制和非電量電測技術中占有非常重要的地位。

光敏電阻是一種由半導體材料制成的沒有極性的純電阻,光敏電阻是一種對光敏感的光電器件。

光敏電阻的主要參數(shù):

  • 暗電阻和暗電流:通常把光敏電阻未受到光照射時的電阻稱作暗電阻,在沒有光照射時流過的電流稱作暗電流。
  • 亮電阻和亮電流:亮對應于暗,通常將光敏電阻在受到光照射時的電阻稱作亮電阻,在有光照射時通過的電流稱作亮電流。

光敏電阻的主要特性:

  • 伏安特性:在一定的光照強度下,光敏電阻兩端所加的電壓與電流成正比,阻值只和照射的入光強度有關,與加在兩端的電流或者電壓無關。
  • 光譜特性:我們只要光存在不同的波長,則不同波長的光對光敏電阻的靈敏度是不一樣的。
  • 溫度特性:光敏電阻受溫度的影響較大,當溫度升高時,暗電阻和靈敏度都隨之下降。

工作原理:

? ? ? ? 光敏電阻串聯(lián)在電流中,在光敏電阻的兩端,通常加上合適的電壓,在沒有光照的條件下,光敏電阻的阻值接近于無窮大,相當于斷路,當在一定的光照強度下, 光敏電阻的阻值減少,電流對應增大,足夠的光照強度使得光敏電阻所在的支路相當于短路。

實際應用:

? ? ? ? 通過STM32F4的ADC去測量電壓值

  1. ? ? ? ? 首先需要確定ADC的位數(shù),也可以說是分辨率,最大數(shù)值是多少。比如說一個16位的ADC,最大值就是0xFFFF,對應于=65536;
  2. ? ? ? ? 確定最大值時對應的參考電壓值,STM32F4的開發(fā)板對應的最大值為3.3V。
  3. ? ? ? ? 計算電壓值,需要把ADC的數(shù)值除剛才的確定的最大數(shù)值(也就是)再乘以參考電壓值,

? ? ? ? 比如說是ADC*(3.3/65536)

2. 硬件分析

????????STM32F4板載了一個光敏二極管(光敏電阻),作為開發(fā)板的光敏傳感器,它對光的變化非常敏感。光敏二極管也叫作光電二極管。光敏二極管和半導體二極管類似,其管芯是一個具有光敏特性的PN結,PN結具有單向導電性,因此工作時需要加反向電壓。無光照條件時,有很小的飽和反向漏電流,也就是上面提到的暗電流,此時光敏二極管截止。當受到光照時,飽和反向漏電流大大增加,形成光電流,此時這個值隨著入射光的光照強度變化而變化。當光線照射PN結時,可以在PN結中產生電子---空穴對,使得少數(shù)的載流子的密度增加。這些載流子在反向電壓下產生漂移,使得反向電流增加。因此可以利用光照強度來改變電路中的電流。

????????利用PN結中電流的變化,串聯(lián)一個電阻,就可以轉換成電壓的變化,通過ADC讀取電壓值。

STM32F4_光敏傳感器

?圖中,LSI?就是光敏二極管,R58為其提供反向電壓,當環(huán)境光線變化時,LSI 兩端的電壓也會隨之變化,通過ADC3_IN5通道,讀取LIGHT_SENSOR上面的電壓;光線越強,電壓越低,光線越暗,電壓越高。

3. 實驗程序

本實驗利用ADC3的通道5(PF7)來讀取光敏二極管的電壓變化。

STM32F4_光敏傳感器

光敏二極管位于開發(fā)板的左下角,如上圖PCB圖所示;可以用強光照射該處,觀察光敏電阻的變化;文章來源地址http://www.zghlxwxcb.cn/news/detail-445716.html

3.1 main.c

#include "stm32f4xx.h"
#include "delay.h"
#include "usart.h"
#include "LED.h"
#include "lcd.h"
#include "usmart.h"
#include "ADC3.h"
#include "Lightsensor.h"


//LCD狀態(tài)設置函數(shù)
void led_set(u8 sta)//只要工程目錄下有usmart調試函數(shù),主函數(shù)就必須調用這兩個函數(shù)
{
	LED1=sta;
}
//函數(shù)參數(shù)調用測試函數(shù)
void test_fun(void(*ledset)(u8),u8 sta)
{
	led_set(sta);
}
int main(void)
{
	u8 adcx;
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
	delay_init(168);
	uart_init(115200);
	LED_Init();
	LCD_Init();
	LightSensor_Init();
	POINT_COLOR=RED;
	LCD_ShowString(30,50,200,16,16,"Explorer STM32F4");
	LCD_ShowString(30,70,200,16,16,"Lightsensor Test");
	LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");
	LCD_ShowString(30,110,200,16,16,"2023/20/23");
	POINT_COLOR=BLUE;
	LCD_ShowString(30,130,200,16,16,"Lightsensor:");
	while(1)
	{
		adcx=LightSensor_Get_Val();
		LCD_ShowxNum(30+12*8,130,adcx,3,16,0);
		LED0=!LED0;
		delay_ms(250);
	}
}


3.2 ADC3.c

#include "stm32f4xx.h"                 
#include "ADC3.h"

void Adc3_Init(void)
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC3,ENABLE); //使能ADC3時鐘
	
	RCC_APB2PeriphResetCmd(RCC_APB2Periph_ADC3,ENABLE);  //ADC3復位
	RCC_APB2PeriphResetCmd(RCC_APB2Periph_ADC3,DISABLE);   //復位結束
	
	//初始化CCR寄存器
	ADC_CommonInitTypeDef ADC_CommonInitStructure;
	ADC_CommonInitStructure.ADC_DMAAccessMode=ADC_DMAAccessMode_Disabled; //DMA不使能,DMA通常用于多通道的轉移
	ADC_CommonInitStructure.ADC_Mode=ADC_Mode_Independent;  //獨立模式
	ADC_CommonInitStructure.ADC_Prescaler=ADC_Prescaler_Div4;  //預分頻4分頻
	ADC_CommonInitStructure.ADC_TwoSamplingDelay=ADC_TwoSamplingDelay_5Cycles;  //兩個采樣階段之間延遲5個時鐘
	ADC_CommonInit(&ADC_CommonInitStructure);
	
	//初始化ADC
	ADC_InitTypeDef ADC_InitStructure;
	ADC_InitStructure.ADC_ContinuousConvMode=DISABLE;  //關閉連續(xù)轉換
	ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right;  //右對齊
	ADC_InitStructure.ADC_ExternalTrigConvEdge=ADC_ExternalTrigConvEdge_None;//禁止觸發(fā)檢測,使用軟件觸發(fā)
	ADC_InitStructure.ADC_NbrOfConversion=1; //1個轉換在規(guī)則序列中
	ADC_InitStructure.ADC_Resolution=ADC_Resolution_12b;  //12位模式分辨率
	ADC_InitStructure.ADC_ScanConvMode=DISABLE;  //非掃描模式
	ADC_Init(ADC3,&ADC_InitStructure);
	
	ADC_Cmd(ADC3,ENABLE);  //開啟AD轉換器
}
//獲得ADC的值
//ch:通道值0~16  ADC_Channel_0~ADC_Channel_16 
//返回值:轉換的結果
u16 Get_Adc3(u8 ch)
{
	ADC_RegularChannelConfig(ADC3,ch,1,ADC_SampleTime_480Cycles); //設置ADC規(guī)則組通道,1個序列 采樣時間
	ADC_SoftwareStartConv(ADC3);//使能指定的ADC3的軟件轉換啟動功能
	while(!ADC_GetFlagStatus(ADC3,ADC_FLAG_EOC));//等待狀態(tài)寄存器轉換標志位結束
	return ADC_GetConversionValue(ADC3);   //返回轉換的結果
}

3.3 ADC3.h

#ifndef _ADC3__H_
#define _ADC3__H_

u16 Get_Adc3(u8 ch);
void Adc3_Init(void);
#endif

3.4 Lightsensor.c

#include "stm32f4xx.h"                
#include "Lightsensor.h"
#include "ADC3.h"
#include "delay.h"

void LightSensor_Init(void)    //初始化光敏傳感器
{
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE);  //初始化GPIOF時鐘
	
	//初始化GPIOF PF7通道
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AN;  //模式為模擬輸入
	GPIO_InitStructure.GPIO_Pin=GPIO_Pin_7;
	GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;  //不帶上下拉
	GPIO_Init(GPIOF,&GPIO_InitStructure);
	
	Adc3_Init(); //初始化ADC3
}
//讀取光敏電阻Light Sensor的值
//0~100 0最暗,100最亮
u8 LightSensor_Get_Val(void)
{
	u32 temp_val=0;
	u8 t;
	for(t=0;t<LSENS_READ_TIMES;t++)
	{
		temp_val=Get_Adc3(ADC_Channel_5)+temp_val;// 取多次讀取的總和加在一起
		delay_ms(5);
	}
	temp_val=temp_val/LSENS_READ_TIMES;  //得到平均值
	if(temp_val>4000)
		temp_val=4000;
	return (u8)(100-(temp_val/40));
	
}

3.5 Lightsensor.h

#ifndef _LIGHTSENSOR__H_
#define _LIGHTSENSOR__H_

#define LSENS_READ_TIMES	10

u8 LightSensor_Get_Val(void);
void LightSensor_Init(void);
#endif


到了這里,關于STM32F4_光敏傳感器的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • STM32第三課:按鍵控制LED燈,光敏傳感器控制蜂鳴器

    STM32第三課:按鍵控制LED燈,光敏傳感器控制蜂鳴器

    ????????STM32的第三課,我們來學習如何使用按鍵來控制LED燈的亮滅。上一節(jié)課我們通過代碼控制了LED的狀態(tài),但是還是處于一種較為低級的方式控制LED燈,缺少交互性,用按鍵進行控制屬于更高的一個層次。然后我們將學習通過光敏傳感器控制蜂鳴器的通斷,讓我們的學

    2024年04月29日
    瀏覽(35)
  • Stm32_標準庫_11_ADC_光敏&熱敏傳感器_測數(shù)值

    Stm32_標準庫_11_ADC_光敏&熱敏傳感器_測數(shù)值

    在測量光敏傳感器數(shù)值得基礎上手動將通道改成熱敏傳感器通道即可 由于溫度傳感器的測量范圍是-20 ~ 105攝氏度,所以輸出溫度得考慮帶上符號這就需要在原有輸出光照強度代碼的基礎上新添加幾個函數(shù) 函數(shù)1: 在獲取模擬電壓函數(shù)最開始寫入通道函數(shù)方便接入GPIO_1或GPIO_

    2024年02月19日
    瀏覽(24)
  • Stm32_標準庫_8_ADC_光敏傳感器_測量具體光照強度

    Stm32_標準庫_8_ADC_光敏傳感器_測量具體光照強度

    ADC簡介 測量方式 采用二分法比較數(shù)據(jù) IO通道 ADC基本結構及配置路線 獲取數(shù)字變量需要用到用到光敏電阻的AO口,AO端口接在PA0引腳即可 測得的模擬數(shù)據(jù)與實際光照強度之間的關系為 代碼: 完整樸素代碼: 效果: 此代碼的不足之處在于每次寫入數(shù)字都會提前占據(jù)固定位置,

    2024年02月04日
    瀏覽(25)
  • 【江科大STM32合集】day2按鍵控制LED&光敏傳感器控制峰鳴器

    【江科大STM32合集】day2按鍵控制LED&光敏傳感器控制峰鳴器

    運算放大器-在江科大51單片機b站視頻(AD/DA)復習 原理:兩個極端 同相輸入端電壓 》反相輸入端 電壓輸出最大值 接Vcc 同相輸入端電壓《 反向輸入端 電壓輸出最小值 接GNd LED.c用來存放驅動程序的主體代碼 (ps:邏輯運算代碼都在這 LED.h用來存放驅動程序可以 對外 提供的函

    2024年01月17日
    瀏覽(28)
  • STM32F4_DHT11數(shù)字溫濕度傳感器

    STM32F4_DHT11數(shù)字溫濕度傳感器

    目錄 前言 1. DHT11簡介 2. DHT11數(shù)據(jù)結構 3. DHT11的傳輸時序 3.1 DHT11開始發(fā)送數(shù)據(jù)流程 3.2 主機復位信號和DHT11響應信號 3.3 數(shù)字 “0” 信號表示方法 3.4 數(shù)字 “1” 信號表示方法 4. 硬件分析 5. 實驗程序詳解 5.1 main.c 5.2 DHT11.c 5.3 DHT11.h ????????DHT11數(shù)字溫濕度傳感器 不但能測溫度

    2024年02月08日
    瀏覽(88)
  • 【正點原子STM32連載】 第三十二章 光敏傳感器實驗 摘自【正點原子】STM32F103 戰(zhàn)艦開發(fā)指南V1.2

    【正點原子STM32連載】 第三十二章 光敏傳感器實驗 摘自【正點原子】STM32F103 戰(zhàn)艦開發(fā)指南V1.2

    本章,我們將學習使用STM32開發(fā)板板載的一個光敏傳感器。我們還是要使用到ADC采集,通過ADC采集電壓,獲取光敏傳感器的電阻變化,從而得出環(huán)境光線的變化,并在TFTLCD上面顯示出來。 本章分為如下幾個小節(jié): 32.1 光敏傳感器簡介 32.2 硬件設計 32.3 程序設計 32.4 下載驗證

    2024年02月03日
    瀏覽(70)
  • 單片機設計:stm32遠程水位檢測灌溉系統(tǒng)(水泵+電機驅動+OLED顯示屏+水位傳感器+防水式ds18b20+光敏傳感器+按鍵+WiFi+手機app)

    單片機設計:stm32遠程水位檢測灌溉系統(tǒng)(水泵+電機驅動+OLED顯示屏+水位傳感器+防水式ds18b20+光敏傳感器+按鍵+WiFi+手機app)

    單片機設計:stm32遠程水位檢測灌溉系統(tǒng)(水泵+電機驅動+OLED顯示屏+水位傳感器+防水式ds18b20+光敏傳感器+按鍵+WiFi+手機app) 一、主要功能:? ? 1.水位傳感器檢測水的高度、光敏傳感器檢測周圍光照強度、ds18b20檢測水溫 2.0LED、手機app顯示當前數(shù)據(jù)以及閾值 3.手機app遠程調節(jié)閾值,

    2024年02月05日
    瀏覽(40)
  • ESP32 直接使用WIFI進行UDP通信, 將光敏電阻傳感器數(shù)值, 顯示在OLED上 - 米思齊/Arduino

    ESP32 直接使用WIFI進行UDP通信, 將光敏電阻傳感器數(shù)值, 顯示在OLED上 - 米思齊/Arduino

    ESP32主: 讀取光敏傳感器數(shù)值, 并通過UDP發(fā)送 ESP32從: 讀取主機發(fā)送的數(shù)值, 并顯示在OLED顯示屏上 左邊為ESP32, 連接OLED, 為STA模式從機 右邊為ESP32, 連接光敏傳感器, 為AP+STA主機, 可連接外網和連接從機

    2024年02月13日
    瀏覽(53)
  • STM32-雨滴傳感器

    STM32-雨滴傳感器

    目錄 0 說明: ?1 傳感器介紹 ?2 代碼說明 ? ?2.1 ADC初始化函數(shù)(adc.c) ? 2.2 GPIO初始化函數(shù) 2.3 主函數(shù) ????????本篇文章主要是說明怎么使用STM32單片機讀取雨滴傳感器采集到的數(shù)據(jù),并且附帶著STM32所需要的全部代碼,所使用的雨滴傳感器如下圖所示。 附: 使用單片機

    2024年01月17日
    瀏覽(14)
  • DIY_實現(xiàn)光敏電阻傳感器簡單控制LED

    DIY_實現(xiàn)光敏電阻傳感器簡單控制LED

    模塊接線圖: 1、VCC 接電源正極 3.3-5V 2、GND 接電源負極 3、DO TTL 開關信號輸出 4、AO 模擬信號輸出 模塊特色: 1、工作電壓3.3V-5V 2、使用寬電壓LM393比較器 3、設有固定螺栓孔,方便安裝 4、采用靈敏型光敏電阻傳感器 5、小板PCB尺寸:3.2cm x 1.4cm 6、配可調電位器可調節(jié)檢測光

    2024年02月02日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包