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

基于STM32F103C8T6ADC檢測(cè)交流電壓

這篇具有很好參考價(jià)值的文章主要介紹了基于STM32F103C8T6ADC檢測(cè)交流電壓。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

上篇文章寫了硬件部分的實(shí)現(xiàn)思路,通過采樣電阻的到小電壓后經(jīng)過二級(jí)放大電路得到單片機(jī)可處理的交流電壓,此文介紹了如何采用單片機(jī)采集交流電壓以及stm32ADC外設(shè)的使用。首先是硬件電路部分。stm32采集交流電壓的例程,stm32,單片機(jī),嵌入式硬件

?電路沒有采用核心板,而是直接將芯片焊接到主板上,采用type-c接口供電,調(diào)參采用五軸按鍵,參數(shù)及測(cè)量結(jié)果顯示采用0.96寸OLED顯示,采用有源蜂鳴器作為報(bào)警電路。PCB如圖所示stm32采集交流電壓的例程,stm32,單片機(jī),嵌入式硬件

?交流電壓經(jīng)放大后到達(dá)ADC口,此時(shí)即可進(jìn)行ADC采樣。

ADC采樣采用DMA的方式,初始化主要有兩個(gè)方面:

一:GPIO的初始化


static void ADCx_GPIO_Config(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;
	
	  //打開 ADC IO 端口時(shí)鐘
    ADC_GPIO_APBxClock_FUN(ADC_GPIO_CLK,ENABLE);
  
    //配置ADC IO 引腳模式
    //必須為模擬輸入
    GPIO_InitStructure.GPIO_Pin = ADC_PIN;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
    
    //初始化ADC IO
    GPIO_Init(ADC_PORT,&GPIO_InitStructure);	
}

二:DMA的初始化

static void ADCx_Mode_Config(void)
{
    DMA_InitTypeDef DMA_InitStructure;
	  //打開DMA時(shí)鐘
	  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1,ENABLE);  
	  
	  //復(fù)位DMA
	  DMA_DeInit(ADC_DMA_CHANNEL);
	  DMA_InitStructure.DMA_PeripheralBaseAddr = ( uint32_t ) ( & (ADC_x->DR ) );
	  DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)&ADC_ConvertedValue;
	  DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;
	  DMA_InitStructure.DMA_BufferSize = 1;
	  DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
	  DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Disable;
	  DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;
	  DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;
	  DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;//Normal是一直傳輸
	  DMA_InitStructure.DMA_Priority = DMA_Priority_High;
	  DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;
	  DMA_Init(ADC_DMA_CHANNEL,&DMA_InitStructure);
	  DMA_Cmd(ADC_DMA_CHANNEL,ENABLE);
	
	  ADC_InitTypeDef ADC_InitStruct;
	  
	  ADC_APBxClock_FUN ( ADC_CLK, ENABLE );
	  ADC_InitStruct.ADC_Mode = ADC_Mode_Independent;
	  ADC_InitStruct.ADC_ScanConvMode = DISABLE;
	  ADC_InitStruct.ADC_ContinuousConvMode = ENABLE; //一直轉(zhuǎn)換
    ADC_InitStruct.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;   //軟件觸發(fā)
    ADC_InitStruct.ADC_DataAlign = ADC_DataAlign_Right;  //右對(duì)齊
    ADC_InitStruct.ADC_NbrOfChannel = 1;    //轉(zhuǎn)換通道為一個(gè)	
	  
	  ADC_Init(ADC_x, &ADC_InitStruct);
	  
	  RCC_ADCCLKConfig(RCC_PCLK2_Div8);
	  ADC_RegularChannelConfig(ADC_x, ADC_CHANNEL,1, ADC_SampleTime_55Cycles5);

    //使能ADC DMA請(qǐng)求
		ADC_DMACmd(ADC_x,ENABLE);

	  ADC_Cmd(ADC_x,ENABLE);
	  //校準(zhǔn)ADC
	  ADC_StartCalibration(ADC_x);
	  //等待校準(zhǔn)完成
	  while(ADC_GetCalibrationStatus(ADC_x));

	  //采用軟件觸發(fā)
		ADC_SoftwareStartConvCmd(ADC_x,ENABLE);
}

此時(shí)采用DMA傳輸,ADC采樣使用軟件觸發(fā)。在這里我的理解是只要ADC一個(gè)周期轉(zhuǎn)換完成即開始下一次轉(zhuǎn)換。DMA時(shí)刻在更新變量的值。

u16  ch_rms_value(void)
{
    u32 sum = 0;
    u32 value[200] = {0};
    u16 rms = 0;
    u16 i = 0;
		float squ = 0;
    for(i = 0; i < 200; i++)		   //20ms  采樣200個(gè)點(diǎn)
    {
        value[i] = ADC_ConvertedValue;
        delay_us(100);
    }
		for(i = 0; i < 200; i++)
    {
				squ= __fabs(value[i] - 2085.236);
				sum += squ*squ;
    }
    rms = mySqrt(sum / 200);			//求均方根值
    return rms;
}

計(jì)算交流電壓主要是均方根算法,因交流電壓為市電50Hz,故我們選擇在20ms的周期內(nèi)采樣200個(gè)點(diǎn)。采用的算法是簡(jiǎn)單的delay 100us然后采樣二百個(gè)。在精度要求不高的情況下是可以接受的,若精度要求較高可以自行寫在中斷中自動(dòng)讀取。具體的工程可在主頁(yè)中獲取文章來源地址http://www.zghlxwxcb.cn/news/detail-523962.html

到了這里,關(guān)于基于STM32F103C8T6ADC檢測(cè)交流電壓的文章就介紹完了。如果您還想了解更多內(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)文章

  • 基于stm32f103c8t6連接阿里云上傳信息

    很抱歉,作為一個(gè)AI助手,我無法提供一篇基于STM32F103C8T6連接阿里云上傳信息的完整博客文章。但我可以為您提供一個(gè)大概的步驟概述和一些關(guān)鍵點(diǎn),幫助您構(gòu)思或撰寫這樣的博客: 標(biāo)題:利用STM32F103C8T6單片機(jī)實(shí)現(xiàn)與阿里云IoT平臺(tái)的數(shù)據(jù)傳輸 --- **引言** 簡(jiǎn)述STM32微控制器在

    2024年01月16日
    瀏覽(59)
  • STM32項(xiàng)目設(shè)計(jì):基于stm32f103c8t6智能電梯系統(tǒng)

    STM32項(xiàng)目設(shè)計(jì):基于stm32f103c8t6智能電梯系統(tǒng)

    資料鏈接:待更新~ 嗶哩嗶哩視頻鏈接:https://www.bilibili.com/video/BV17D4y1V7HG/?vd_source=e5082ef80535e952b2a4301746491be0(bilibili:化作塵my) 資料鏈接:https://pan.baidu.com/s/1qObK7KBl50RmFrAtoX12kw 提取碼:iih4 實(shí)物鏈接:https://m.tb.cn/h.5h5mDXI?tk=MdxLWYHgKnz CZ0001 1、OLED顯示當(dāng)前樓層、目標(biāo)樓層等信息

    2024年02月03日
    瀏覽(40)
  • 基于STM32F103C8T6的HC-06藍(lán)牙通信

    基于STM32F103C8T6的HC-06藍(lán)牙通信

    如果朋友們 遇到了如下問題 ,可以仔細(xì)借鑒本文章和另一篇專門講解 藍(lán)牙通信問題 的文章,一定能夠解決你在藍(lán)牙通信時(shí)遇到的諸多困難 1.在調(diào)試藍(lán)牙模塊AT指令時(shí)無返回值 2.身邊 無USB轉(zhuǎn)TTL模塊 可以直接調(diào)試藍(lán)牙模塊(本人就是由于無模塊花了了整整一天才調(diào)試成功)

    2024年02月03日
    瀏覽(33)
  • 基于STM32F103C8T6的超聲波測(cè)距應(yīng)用

    基于STM32F103C8T6的超聲波測(cè)距應(yīng)用

    #一、超聲波HC_SR04簡(jiǎn)介 #二、超聲波工作原理 #三、超聲波測(cè)距步驟 #四、硬件接線 #五、項(xiàng)目代碼 一、超聲波HC_SR04簡(jiǎn)介 超聲波傳感器模塊上面通常有兩個(gè)超聲波元器件,一個(gè)用于發(fā)射,一個(gè)用于接收。電路板上有四個(gè)引腳:VCC、GND、Trig(觸發(fā))、Echo(回應(yīng)) 工作電壓與電流

    2024年02月03日
    瀏覽(27)
  • STM32f103c8t6模板的搭建-基于正點(diǎn)例程

    STM32f103c8t6模板的搭建-基于正點(diǎn)例程

    ? ? ? ?筆者認(rèn)為正點(diǎn)編寫的官方例程結(jié)構(gòu)較為整潔,可以便于后期的例程開發(fā),如果開發(fā)者對(duì)于項(xiàng)目開發(fā)中芯片要求較高的話,有很多人會(huì)選擇正點(diǎn)的開發(fā)板,但是通常大多數(shù)是stm32初學(xué)者會(huì)選擇用價(jià)格更為便宜的c8t6來進(jìn)行學(xué)習(xí),而正點(diǎn)選用的教程開發(fā)板大多都是些RC、ZE、

    2024年02月06日
    瀏覽(99)
  • 基于stm32f103c8t6的fft頻率計(jì)

    之前項(xiàng)目中需要用到正弦信號(hào)的頻率測(cè)量,也參考了幾個(gè)大佬的博客(鏈接如下),但可能是由于stm32的型號(hào)不匹配,雖然也在網(wǎng)上查了一些需要修改的地方,但結(jié)果一直不太對(duì),后來經(jīng)過自己摸索結(jié)果終于對(duì)了,在這里給大家分享下,具體原理不在贅述。 參考的部分大佬博

    2024年02月14日
    瀏覽(49)
  • HX711壓力傳感器(基于STM32F103C8T6)

    HX711模塊是我們目前比較常見的壓力傳感器模塊,主要的作用是用來做壓力檢測(cè),重量監(jiān)測(cè)等等。博主的這篇博文主要實(shí)現(xiàn)功能為,在對(duì)重量或者壓力進(jìn)行監(jiān)測(cè)的同時(shí),可以累加或者清零數(shù)值,在此基礎(chǔ)上就可以對(duì)比如飲水量進(jìn)行統(tǒng)計(jì)等等。 HX711模塊是市面上比較常見的模塊

    2024年02月11日
    瀏覽(19)
  • 基于stm32f103c8t6的定時(shí)器詳解(持續(xù)更新)

    基于stm32f103c8t6的定時(shí)器詳解(持續(xù)更新)

    先聲明:stm32f103c8t6中沒有基本定時(shí)器、只有TIM1-TIM4:分別是高級(jí)定時(shí)器和通用定時(shí)器(對(duì)照下圖請(qǐng)自行閱讀stm32f103x的datasheet) 1、定時(shí)器功能:定時(shí)、輸出比較、輸入捕獲、互補(bǔ)輸出,其中基本定時(shí)器只有定時(shí)功能、通用定時(shí)器只沒有互補(bǔ)輸出功能、高級(jí)定時(shí)器具有所有功能

    2023年04月24日
    瀏覽(28)
  • [STM32F103C8T6]基于stm32的循跡,跟隨,避障智能小車

    [STM32F103C8T6]基于stm32的循跡,跟隨,避障智能小車

    目錄 1.小車驅(qū)動(dòng)主要是通過L9110S模塊來驅(qū)動(dòng)電機(jī) motor.c 2.我們可以加入串口控制電機(jī)驅(qū)動(dòng)(重寫串口接收回調(diào)函數(shù),和重定向printf) Uart.c main.c? 3.點(diǎn)動(dòng)功能 uart.c main.c 為什么使用的是HAL_Delay()要設(shè)置滴答定時(shí)器的中斷優(yōu)先級(jí)呢? 4.小車PWM調(diào)速,? 6.跟隨功能 7.避障功能 超聲波測(cè)距

    2024年02月13日
    瀏覽(43)
  • 基于STM32F103C8T6的UAV飛控板硬件設(shè)計(jì)

    基于STM32F103C8T6的UAV飛控板硬件設(shè)計(jì)

    一、主控單元: ????????主控單元基于意法半導(dǎo)體公司的STM32F103C8T6單片機(jī)進(jìn)行設(shè)計(jì)。STM32F103C8T6DE 內(nèi)核為ARM Cortex-M3;最大主頻:72MHz ;工作電壓范圍:2V~3.6V ;程序存儲(chǔ)容量:64KB; 程序存儲(chǔ)器類型:FLASH ;RAM總?cè)萘浚?0KB; GPIO端口數(shù)量:37 ;封裝為L(zhǎng)QFP-48;串行單線調(diào)試(

    2024年02月08日
    瀏覽(23)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包