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

STM32-光敏傳感器實(shí)驗(yàn)

這篇具有很好參考價(jià)值的文章主要介紹了STM32-光敏傳感器實(shí)驗(yàn)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

光敏傳感器的主要是光敏二極管,核心是PN結(jié),利用了光電效應(yīng),對(duì)光強(qiáng)很敏感,有單向?qū)щ娦裕ぷ鲿r(shí)需要加反向電壓。光照越強(qiáng),等效電阻越小。

實(shí)驗(yàn)要求通過ADC3通道6(PF8)采集光敏二極管的電壓,然后轉(zhuǎn)換為0~100的光纖強(qiáng)度值并顯示在液晶屏上。

由下圖可知對(duì)于的通道是PF8

STM32-光敏傳感器實(shí)驗(yàn)

??首先確定我們的最小刻度,Vref = 3.3V,所以0V <= Vin <= 3.3V,所以最小刻度是3.3V / 4096(2^12)。

接下來確定轉(zhuǎn)換時(shí)間。采樣時(shí)間239.5個(gè)ADC時(shí)鐘周期為例,可以得到轉(zhuǎn)換時(shí)間為21us。

時(shí)間轉(zhuǎn)換公式參考如下公式:Tcvtmin=(12.5+X)周期=(12.5 + X)/(12MHz)=21us。

STM32-光敏傳感器實(shí)驗(yàn)

因?yàn)槭褂玫氖菃瓮ǖ?,所以不使用掃描模式。因?yàn)槲词褂玫紻MA,所以使用單次掃描模式。

由于光敏二極管是光照越強(qiáng),阻值越小,獲取的電壓值與光強(qiáng)關(guān)系成負(fù)相關(guān),所以在處理數(shù)據(jù)的時(shí)候需要在取互補(bǔ)的部分。

STM32-光敏傳感器實(shí)驗(yàn)?

接下來編寫我們的函數(shù)代碼:

接下來編寫函數(shù)文件代碼adc_l.c:

#include "./BSP/ADC/adc_l.h"
 
ADC_HandleTypeDef g_adc_handle;
 
void adc_init(void){
 
    ADC_ChannelConfTypeDef adc_ch_conf;
 
    g_adc_handle.Instance = ADC3;
    g_adc_handle.Init.DataAlign = ADC_DATAALIGN_RIGHT; //右對(duì)齊
    g_adc_handle.Init.ScanConvMode = ADC_SCAN_DISABLE; //不掃描
    g_adc_handle.Init.ContinuousConvMode = DISABLE; //單次模式
    g_adc_handle.Init.NbrOfConversion = 1; //轉(zhuǎn)換通道數(shù)為1,單通道
    g_adc_handle.Init.DiscontinuousConvMode = DISABLE; //不用間斷模式
    g_adc_handle.Init.NbrOfDiscConversion = 0; //無間斷模式則無間斷通道
    g_adc_handle.Init.ExternalTrigConv = ADC_SOFTWARE_START; //外部軟件觸發(fā)
 
    HAL_ADC_Init(&g_adc_handle);
    HAL_ADCEx_Calibration_Start(&g_adc_handle);
 
    adc_ch_conf.Channel = ADC_CHANNEL_1;
    adc_ch_conf.Rank = ADC_REGULAR_RANK_1; //轉(zhuǎn)換順序
    adc_ch_conf.SamplingTime = ADC_SMAPLINGTIME_239CYCLES_5; //設(shè)置為最大值
 
    HAL_ADC_ConfigChannel(&g_adc_handle, &adc_ch_conf);
}
 
void HAL_ADC_MspInit(ADC_HandleTypeDef *hadc){
 
    if(hadc->Instance == ADC3){
        GPIO_InitTypeDef gpio_init_struct;
        RCC_PeriphCLKInitTypeDef adc_clk_init = {0};
 
        __HAL_RCC_GPIOF_CLK_ENABLE();  //使能ADC時(shí)鐘
        __HAL_RCC_ADC3_CLK_ENABLE();   //使能GPIO時(shí)鐘
 
        gpio_init_struct.Pin = GPIO_PIN_8;
        gpio_init_struct.Mode = GPIO_MODE_ANALOG; //模擬模式
        HAL_GPIO_Init(GPIOF, &gpio_init_struct);
 
        adc_clk_init.PeriphClockSelection = RCC_PERIPHCLK_ADC; //選擇ADC外設(shè)時(shí)鐘設(shè)置
        adc_clk_init.AdcClockSelection = RCC_ADCPCLK2_DIV6; //選擇6分頻,72/6=12MHz
 
        HAL_RCCEx_PeriphCLKConfig(&adc_clk_init, &g_adc_handle);
    }
}
 
uint32_t adc_get_result(void){
 
    HAL_ADC_Start(&g_adc_handle);
    HAL_ADC_PollForConversion(&g_adc_handle, 10); //第二個(gè)參數(shù)比1大就行
    return (uint16_t)HAL_ADC_GetValue(&g_adc_handle);
}
 
uint32_t adc_get_result_average(uint32_t ch, uint8_t times){
 
    uint32_t temp_val = 0;
    uint8_t t;
 
    for(t = 0; t < times; t++){
        temp_val += adc_get_result();
        delay_ms(5);
    }
 
    return temp_val / times;
}

uint8_t lsens_get_val(void){

    uint32_t temp_val;

    temp_val = adc_get_result();
    temp_val /= 40;

    if(temp_val > 100) temp_val = 100;

    return (uint8_t)(100 - temp_val);
}

再編寫函數(shù)頭文件adc_l.h:

#ifndef __ADC_L_H
#define __ADC_L_H
 
extern ADC_HandleTypeDef g_adc_handle;
 
void adc_init(void);
void HAL_ADC_MspInit(ADC_HandleTypeDef *hadc);
uint32_t adc_get_result(void);
uint32_t adc_get_result_average(uint32_t ch, uint8_t times);
 
#endif

最后編寫我們的主函數(shù)代碼main.c:

#include "./SYSTEM/sys/sys.h"
#include "./SYSTEM/usart/usart.h"
#include "./SYSTEM/delay/delay.h"
#include "./USMART/usmart.h"
#include "./BSP/LED/led.h"
#include "./BSP/LCD/lcd.h"
#include "./BSP/LSENS/lsens.h"


int main(void)
{
    short adcx;

    HAL_Init();                                 /* 初始化HAL庫 */
    sys_stm32_clock_init(RCC_PLL_MUL9);         /* 設(shè)置時(shí)鐘, 72Mhz */
    delay_init(72);                             /* 延時(shí)初始化 */
    usart_init(115200);                         /* 串口初始化為115200 */
    led_init();                                 /* 初始化LED */
    lcd_init();                                 /* 初始化LCD */
    lsens_init();                               /* 初始化光敏傳感器 */

    lcd_show_string(30,  50, 200, 16, 16, "STM32", RED);
    lcd_show_string(30,  70, 200, 16, 16, "LSENS TEST", RED);
    lcd_show_string(30,  90, 200, 16, 16, "ATOM@ALIENTEK", RED);
    lcd_show_string(30, 110, 200, 16, 16, "LSENS_VAL:", BLUE);

    while (1)
    { 
        adcx = lsens_get_val();
        lcd_show_xnum(30 + 10 * 8, 110, adcx, 3, 16, 0, BLUE); /* 顯示ADC的值 */
        LED0_TOGGLE();   /* LED0閃爍,提示程序運(yùn)行 */
        delay_ms(250);
    }
}

到這里我們的函數(shù)代碼便編寫完成了文章來源地址http://www.zghlxwxcb.cn/news/detail-448078.html

到了這里,關(guān)于STM32-光敏傳感器實(shí)驗(yàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • STM32——ADC讀取光敏傳感器控制LED燈,看門狗中斷

    STM32——ADC讀取光敏傳感器控制LED燈,看門狗中斷

    一、編寫讀取AD值的函數(shù),之后判斷AD值,進(jìn)行相應(yīng)操作,比如點(diǎn)燈。 二、用ADC讀取光敏傳感器AO口輸出,并配置ADC通道看門狗監(jiān)控這條通道,當(dāng)光線太暗時(shí)打開LED燈。 之后會(huì)再介紹可編程RGB燈帶WS2812B。 光敏傳感器有兩個(gè)輸出口,一個(gè)是DO(Digital Output),一個(gè)是AO(Analog O

    2023年04月18日
    瀏覽(25)
  • STM32第三課:按鍵控制LED燈,光敏傳感器控制蜂鳴器

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

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

    2024年04月29日
    瀏覽(34)
  • Stm32_標(biāo)準(zhǔn)庫_11_ADC_光敏&熱敏傳感器_測(cè)數(shù)值

    Stm32_標(biāo)準(zhǔn)庫_11_ADC_光敏&熱敏傳感器_測(cè)數(shù)值

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

    2024年02月19日
    瀏覽(24)
  • Stm32_標(biāo)準(zhǔn)庫_8_ADC_光敏傳感器_測(cè)量具體光照強(qiáng)度

    Stm32_標(biāo)準(zhǔn)庫_8_ADC_光敏傳感器_測(cè)量具體光照強(qiáng)度

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

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

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

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

    2024年01月17日
    瀏覽(28)
  • 單片機(jī)設(shè)計(jì):stm32遠(yuǎn)程水位檢測(cè)灌溉系統(tǒng)(水泵+電機(jī)驅(qū)動(dòng)+OLED顯示屏+水位傳感器+防水式ds18b20+光敏傳感器+按鍵+WiFi+手機(jī)app)

    單片機(jī)設(shè)計(jì):stm32遠(yuǎn)程水位檢測(cè)灌溉系統(tǒng)(水泵+電機(jī)驅(qū)動(dòng)+OLED顯示屏+水位傳感器+防水式ds18b20+光敏傳感器+按鍵+WiFi+手機(jī)app)

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

    2024年02月05日
    瀏覽(40)
  • STM32——內(nèi)部溫度傳感器實(shí)驗(yàn)

    STM32——內(nèi)部溫度傳感器實(shí)驗(yàn)

    內(nèi)部溫度傳感器框圖 具體介紹: 1、STM32F40X有一個(gè)內(nèi)部的溫度傳感器,可以用來測(cè)量CPU及周圍的溫度(TA)。 2、該溫度傳感器在內(nèi)部和ADCx_IN16(F40xx/F41xx)或者ADCx_IN18(F42xx/F43xx)輸入通道相連接,此通道把傳感器輸出的電壓轉(zhuǎn)換成數(shù)字值。 3、溫度傳感器模擬輸入推薦采樣時(shí)間是

    2024年02月13日
    瀏覽(23)
  • ARM開發(fā),stm32mp157a-A7核IIC實(shí)驗(yàn)(采集溫濕度傳感器值)

    ARM開發(fā),stm32mp157a-A7核IIC實(shí)驗(yàn)(采集溫濕度傳感器值)

    ---iic.h封裝時(shí)序協(xié)議頭文件--- ---iic.c封裝時(shí)序函數(shù)實(shí)現(xiàn)--- ---si7006.h讀取溫濕度頭文件--- ---si7006.c讀取溫濕度函數(shù)--- ---main.c主函數(shù)測(cè)試---

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

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

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

    2024年02月13日
    瀏覽(53)
  • 【正點(diǎn)原子STM32連載】 第四十二章 DS18B20數(shù)字溫度傳感器實(shí)驗(yàn) 摘自【正點(diǎn)原子】STM32F103 戰(zhàn)艦開發(fā)指南V1.2

    【正點(diǎn)原子STM32連載】 第四十二章 DS18B20數(shù)字溫度傳感器實(shí)驗(yàn) 摘自【正點(diǎn)原子】STM32F103 戰(zhàn)艦開發(fā)指南V1.2

    1)實(shí)驗(yàn)平臺(tái):正點(diǎn)原子stm32f103戰(zhàn)艦開發(fā)板V4 2)平臺(tái)購買地址:https://detail.tmall.com/item.htm?id=609294757420 3)全套實(shí)驗(yàn)源碼+手冊(cè)+視頻下載地址: http://www.openedv.com/thread-340252-1-1.html# 本章,我們將介紹STM32F103如何讀取外部溫度傳感器的溫度,來得到較為準(zhǔn)確的環(huán)境溫度。我們將學(xué)習(xí)

    2024年02月04日
    瀏覽(24)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包