女人荫蒂被添全过程13种图片,亚洲+欧美+在线,欧洲精品无码一区二区三区 ,在厨房拨开内裤进入毛片

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于RoboMasterC板的RT-Thread使用分享—ADC測(cè)量電壓實(shí)驗(yàn)

冬至子 ? 來源:goldengrandpa ? 作者:goldengrandpa ? 2023-10-13 15:15 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

本次我們來講一下ADCAnalog-to-Digital Converter)不是游戲里的AD Carry,我們將實(shí)現(xiàn)電池電壓的讀取。

ADC簡(jiǎn)介
ADC的全稱為Analog-to-Digital Converter(模擬/數(shù)字轉(zhuǎn)換器)。

單片機(jī)中傳輸?shù)?a target="_blank">信號(hào)均為數(shù)字信號(hào),通過離散的高低電平表示數(shù)字邏輯的 1 和 0,但是在現(xiàn)實(shí)的物理世界中只存在模擬信號(hào),即連續(xù)變化的信號(hào)。將這些連續(xù)變化的信號(hào)——比如熱,光,聲音,速度通過各種傳感器轉(zhuǎn)化成連續(xù)的電信號(hào),再通過 ADC 功能將連續(xù)的模擬信號(hào)轉(zhuǎn)化成離散的數(shù)字信號(hào)給單片機(jī)進(jìn)行處理。

常見的ADC類型有并聯(lián)比較型、逐次逼近型。它們的特點(diǎn)如下

1.jpg

ADC有兩個(gè)重要參數(shù),分辨率和轉(zhuǎn)換速率。

分辨率:每一個(gè)ADC模塊都會(huì)明確他的分辨率,通過bit來表示,一般的是8bit,10bit,12bit,16bit,24bit.bit越大,說明分辨率越高。

采樣率:采樣率就是ADC 采樣的速率。它是指在規(guī)定的時(shí)間內(nèi)可以采集的次數(shù),采樣率越高,采集到的點(diǎn)數(shù)就越多,那么對(duì)原始信號(hào)的還原率就越高。采樣率的單位是SPS(sample per sencond),每秒采樣次數(shù)。這個(gè)值越大,采樣速度越快。

下面簡(jiǎn)單的講一下這兩種ADC的工作原理

并聯(lián)比較型
這個(gè)也是比較容易理解的一種。下圖為并聯(lián)比較型ADC的工作原理圖。

1.jpg

它分為分壓部分、比較部分、編碼部分。

一開始的一排電阻均為等阻值的電阻,它們將VREF(參考電壓)進(jìn)行均分,也就代表這個(gè)該ADC的精度,電阻分壓后的電壓(Vr)我們將其接到比較器的。圖中V1為我們的待測(cè)電壓,當(dāng)V1Vr時(shí)比較器輸出1。比如我們這個(gè)假設(shè)VREF為15V,V1為1.2V。那么在最下面的比較器中Vr為1V,V1>Vr,比較器輸出1,第二個(gè)比較器中Vr為3V,V1

之后我們?cè)诿總€(gè)比較器后加上D觸發(fā)器,當(dāng)我們把C(控制端)至1后,我們給D輸入1,則Q輸入1,輸入0,則Q輸出0。這里我們先給C1,此時(shí)比較器輸出的結(jié)果就被存儲(chǔ)到鎖存器中。然后再置0,那么無論我們的輸入電壓V1怎樣變,Q輸出的值都不變,也就保存了輸出值。這里我們改變控制C的速度很大程度決定了最大采樣率,當(dāng)然最大采樣率還受比較器等器件最大頻率的限制。

但是這里輸出的還不是二進(jìn)制數(shù),因此我們需要后面加一個(gè)編碼器進(jìn)行編碼。上面就是并聯(lián)比較型原理的簡(jiǎn)單描述。

這里我們也可以看出,并聯(lián)比較型的缺點(diǎn)就是精度想要提升就必須增加相應(yīng)的電阻、比較器、觸發(fā)器。這樣會(huì)增加物料成本與體積。但是優(yōu)點(diǎn)就是速度很快。

逐級(jí)比較型
下圖為逐級(jí)比較型ADC的工作示意圖,我們使用的STM32F4也是使用的這種ADC。

1.jpg

它可以分為控制電路數(shù)碼寄存器、D/A轉(zhuǎn)換器、電壓比較器四個(gè)部分

首先第一步在數(shù)碼寄存器進(jìn)行編碼,將高位D2編碼置1,其他位置0,之后進(jìn)入D/A轉(zhuǎn)換器,將編碼出來的數(shù)字量轉(zhuǎn)變?yōu)槟M量V0。之后V0和輸入電壓Vx到比較器進(jìn)行比較。如果Vx大于V0,比較器輸出1,那么控制電路就會(huì)將高位D2鎖定不變,之后將D1置1進(jìn)行第二輪比較。如果此時(shí)Vx還是大于V0我們也就說明了我們V0的值更加接近Vx。我們將D0置1繼續(xù)進(jìn)行第三輪比較,比如Vx還是比V0大那么說明Vx大于了ADC的量程,如果Vx

這里給出另一個(gè)圖方便大家理解

與 1/2Vref 進(jìn)行比較,Vin 大于 1/2Vref,則將第一位標(biāo)記為 1
與 3/4Vref 進(jìn)行比較,Vin 小于 3/4Vref,則將第二位標(biāo)記為 0
與 5/8Vref 進(jìn)行比較,Vin 小于 5/8Vref,則將第三位標(biāo)記為 0。
圖中的 Vin 通過這個(gè)三位的 ADC 后輸出的結(jié)果為 100,轉(zhuǎn)換的結(jié)果為 1/2Vref。

1.jpg

這里我們看出由于它需要逐次逼近因此它的轉(zhuǎn)換速度是比較慢的。而且它的分辨率和采樣速度相互矛盾,分辨率越高,采樣速率就越低。

CubeMX配置
雖然這里bsp文件已經(jīng)將我們需要的ADC1,ADC3開啟了,但是這里還是帶著大家學(xué)習(xí)一遍,便于大家使用其他STM32板子時(shí)快速配置。

首先還是看原理圖

1.jpg

這里可以看到電源ADC引腳為PF10,使用ADC3的通道8。

我們需要開啟ADC1和ADC3,ADC1在此處作用為讀取STM32內(nèi)部的1.2V校準(zhǔn)電壓Vrefint,這個(gè)操作在芯片內(nèi)部實(shí)現(xiàn)沒有對(duì)應(yīng)引腳。

1.jpg

ADC1的具體配置如下

1.jpg

下表簡(jiǎn)單描述一下CuebMX中ADC設(shè)置中的功能。

1.jpg

ADC3開啟通道8,具體配置如ADC1一樣。

1.jpg

這里我們?yōu)槭裁葱枰褂肁DC1的VREFINT呢?

VREFINT是ADC的內(nèi)部參照電壓1.2V,一般來說在STM32我們會(huì)使用Vcc作為Vref,但是實(shí)際情況中Vcc可能存在較大波動(dòng)導(dǎo)致Vref不穩(wěn)定最終使得ADC采樣值不準(zhǔn)確,因此我們使用已有的1.2V內(nèi)部參考電壓先行進(jìn)行多次采樣,計(jì)算平均值。將其與ADC采樣得出的值進(jìn)行對(duì)比,計(jì)算出偏移的比例,得到單位數(shù)字電壓對(duì)應(yīng)的模擬電壓值。

程序編寫
首先在RT-Thread Settings組件中打開ADC設(shè)備驅(qū)動(dòng)程序

1.jpg

之后在硬件中打開ADC1與ADC3

1.jpg

新建一個(gè)app_adc.c文件

在使能設(shè)備之后有幾點(diǎn)需要我們注意

我們需要采樣內(nèi)部參考電壓1.2V200次,取平均值并計(jì)算單位數(shù)字電壓對(duì)應(yīng)的模擬電壓值

/* 采樣內(nèi)部參考電壓200次 /
for(int i=0;i<200;i++)
{
totalvalue+=rt_adc_read(adc_ref,ADC_REF_CHANNEL);
}
/
計(jì)算單位數(shù)字電壓對(duì)應(yīng)的模擬電壓值 /
voltage_vrefint_proportion=200
1.2f/totalvalue;
之后我們對(duì)ADC3通道8進(jìn)行采樣,這里有兩個(gè)點(diǎn)需要注意

/* 讀取采樣值 */
value = rt_adc_read(adc_dev, ADC_DEV_CHANNEL);
rt_kprintf("the value is :%d n", value);
/* 轉(zhuǎn)換為對(duì)應(yīng)電壓值 */
vol=(double)value*voltage_vrefint_proportion*1009.0909090909090909090909090909f;
rt_kprintf("the voltage is :%d.%02d n", vol / 100, vol % 100);

我們重新看一下原理圖,我們這里采樣的是分壓電路分壓之后的值,因此我們需要計(jì)算出分壓之前的值才為我們所需的電池電壓。通過如下計(jì)算我們需要乘以10.09

1.jpg

并且RT-Thread中rt_kprintf是不能打印出浮點(diǎn)數(shù)的,如果是浮點(diǎn)數(shù)的話就不會(huì)打印出來,這個(gè)我之前也踩過坑,有兩個(gè)辦法,一是修改rt_kprintf函數(shù)實(shí)現(xiàn),但是printf作為一個(gè)可重入的函數(shù),打印浮點(diǎn)數(shù)是不安全的。因此我這里選擇方法二,我們想要保留小數(shù)點(diǎn)后兩位,那么我們就將值*100,之后在打印時(shí)再將值/100作為整數(shù)部分,值%100作為小數(shù)部分,如下所示。

rt_kprintf("the voltage is :%d.%02d n", vol / 100, vol % 100);
完整代碼如下,實(shí)現(xiàn)功能為輸入adc_vol_sample,輸出實(shí)際讀取到的轉(zhuǎn)換的原始數(shù)據(jù)和經(jīng)過計(jì)算后的實(shí)際電壓值。

/*

Copyright (c) 2006-2021, RT-Thread Development Team

SPDX-License-Identifier: Apache-2.0

Change Logs:
Date Author Notes
2023-01-09 Goldengrandpa the first version
/
#include
#include
#define ADC_REF_NAME "adc1" /
ADC 內(nèi)部參考電壓設(shè)備名稱 /
#define ADC_REF_CHANNEL 17
#define ADC_DEV_NAME "adc3" /
ADC 設(shè)備名稱 /
#define ADC_DEV_CHANNEL 8 /
ADC 通道 /
static int adc_vol_sample(int argc, char argv[])
{
rt_adc_device_t adc_ref;
rt_adc_device_t adc_dev;
rt_uint32_t totalvalue;
rt_uint32_t value, vol;
double voltage_vrefint_proportion;
rt_err_t ret = RT_EOK;
/
查找設(shè)備 /
adc_ref = (rt_adc_device_t) rt_device_find(ADC_REF_NAME);
if (adc_ref == RT_NULL)
{
rt_kprintf("adc sample run failed! can't find %s device!n", ADC_REF_NAME);
return RT_ERROR;
}
adc_dev = (rt_adc_device_t) rt_device_find(ADC_DEV_NAME);
if (adc_dev == RT_NULL)
{
rt_kprintf("adc sample run failed! can't find %s device!n", ADC_DEV_NAME);
return RT_ERROR;
}
/
使能設(shè)備 /
ret = rt_adc_enable(adc_ref, ADC_REF_CHANNEL);
ret = rt_adc_enable(adc_dev, ADC_DEV_CHANNEL);
/
采樣內(nèi)部參考電壓200次 /
for(int i=0;i<200;i++)
{
totalvalue+=rt_adc_read(adc_ref,ADC_REF_CHANNEL);
}
/
計(jì)算單位數(shù)字電壓對(duì)應(yīng)的模擬電壓值 /
voltage_vrefint_proportion=200
1.2f/totalvalue;
/
讀取采樣值 /
value = rt_adc_read(adc_dev, ADC_DEV_CHANNEL);
rt_kprintf("the value is :%d n", value);
/
轉(zhuǎn)換為對(duì)應(yīng)電壓值 /
vol=(double)value
voltage_vrefint_proportion1009.0909090909090909090909090909f;
rt_kprintf("the voltage is :%d.%02d n", vol / 100, vol % 100);
/
關(guān)閉通道 /
ret = rt_adc_disable(adc_dev, ADC_DEV_CHANNEL);
return ret;
}
/
導(dǎo)出到 msh 命令列表中 */
MSH_CMD_EXPORT(adc_vol_sample, adc voltage convert sample);

硬件連接如下,這里使用的是大疆的6s電池,輸出電壓24V。

1.jpg

由于電池基本要沒電了因此計(jì)算出來的電壓為22.39V偏小屬于正?,F(xiàn)象。

1.jpg

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • adc
    adc
    +關(guān)注

    關(guān)注

    99

    文章

    6671

    瀏覽量

    548721
  • 比較器
    +關(guān)注

    關(guān)注

    14

    文章

    1842

    瀏覽量

    108829
  • D觸發(fā)器
    +關(guān)注

    關(guān)注

    3

    文章

    165

    瀏覽量

    48650
  • STM32F4
    +關(guān)注

    關(guān)注

    3

    文章

    201

    瀏覽量

    28923
  • ADC采樣
    +關(guān)注

    關(guān)注

    0

    文章

    134

    瀏覽量

    13162
  • RT-Thread
    +關(guān)注

    關(guān)注

    32

    文章

    1387

    瀏覽量

    41687
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    基于rt-thread studio的sdk開發(fā)adc的應(yīng)用詳解

    本文將介紹基于 rt-thread studio 的 sdk 開發(fā) adc 的應(yīng)用。本實(shí)驗(yàn)是在昨天的《中科藍(lán)訊 AB32VG1 開發(fā)OLED顯示實(shí)
    的頭像 發(fā)表于 11-06 09:41 ?6913次閱讀
    基于<b class='flag-5'>rt-thread</b> studio的sdk開發(fā)<b class='flag-5'>adc</b>的應(yīng)用詳解

    基于RoboMasterCRT-Thread使用分享—PWM擴(kuò)展實(shí)驗(yàn)

    這次因?yàn)闆]有新增功能所以新建功能部分我就先略過了,大家可以參考一下上篇文章,其中我修改Kconfig,開啟PWM5 CH1/2/3的部分已經(jīng)提交PR了,各位之后導(dǎo)入工程時(shí)可以先看一下RT-Thread Setting中是否已經(jīng)顯示。
    的頭像 發(fā)表于 10-13 15:39 ?1607次閱讀
    基于<b class='flag-5'>RoboMasterC</b><b class='flag-5'>板</b>的<b class='flag-5'>RT-Thread</b>使用分享—PWM擴(kuò)展<b class='flag-5'>實(shí)驗(yàn)</b>

    RT-Thread編程指南

    RT-Thread編程指南——RT-Thread開發(fā)組(2015-03-31)。RT-Thread做為國(guó)內(nèi)有較大影響力的開源實(shí)時(shí)操作系統(tǒng),本文是RT-Thread實(shí)時(shí)操作系統(tǒng)的編程指南
    發(fā)表于 11-26 16:06 ?0次下載

    RT-Thread開發(fā),如何有效學(xué)習(xí)RT-Thread的五個(gè)步驟

    RT-Thread推出RT-Thread Inside戰(zhàn)略開放RT-Thread開發(fā)平臺(tái)授權(quán)合作,與硬件十萬(wàn)個(gè)為什么合作首次推出第一款RT-Inside的開發(fā)
    的頭像 發(fā)表于 09-25 09:55 ?3.5w次閱讀
    <b class='flag-5'>RT-Thread</b>開發(fā),如何有效學(xué)習(xí)<b class='flag-5'>RT-Thread</b>的五個(gè)步驟

    RT-Thread Studio驅(qū)動(dòng)SD卡

    總結(jié)前言硬件平臺(tái):RT-Thread ART-Pi STM32H750XBH6開發(fā) H750開發(fā)開發(fā)軟件:RT-Thread Studio參考博客:
    發(fā)表于 12-27 19:13 ?20次下載
    <b class='flag-5'>RT-Thread</b> Studio驅(qū)動(dòng)SD卡

    RT-Thread全球技術(shù)大會(huì):RT-Thread測(cè)試用例集合案例

    RT-Thread全球技術(shù)大會(huì):RT-Thread測(cè)試用例集合案例 ? ? ? ? ? 審核編輯:彭靜
    的頭像 發(fā)表于 05-27 16:34 ?2369次閱讀
    <b class='flag-5'>RT-Thread</b>全球技術(shù)大會(huì):<b class='flag-5'>RT-Thread</b>測(cè)試用例集合案例

    RT-Thread學(xué)習(xí)筆記 RT-Thread的架構(gòu)概述

    RT-Thread 簡(jiǎn)介 作為一名 RTOS 的初學(xué)者,也許你對(duì) RT-Thread 還比較陌生。然而,隨著你的深入接觸,你會(huì)逐漸發(fā)現(xiàn) RT-Thread 的魅力和它相較于其他同類型 RTOS
    的頭像 發(fā)表于 07-09 11:27 ?4975次閱讀
    <b class='flag-5'>RT-Thread</b>學(xué)習(xí)筆記 <b class='flag-5'>RT-Thread</b>的架構(gòu)概述

    基于RoboMasterC型開發(fā)RT-Thread使用分享(一)

    假期期間打算開一個(gè)坑,和大家分享下基于RoboMaster開發(fā)C型上RT-Thread使用,本系列文章計(jì)劃是給剛接觸STM32和RT-Thread的同學(xué)看的,講的會(huì)稍微基礎(chǔ)一點(diǎn)。 硬件與開發(fā)環(huán)境
    的頭像 發(fā)表于 01-05 12:10 ?3158次閱讀

    基于RoboMasterC型開發(fā)RT-Thread使用分享(二)

    的通過Kconfig+CubeMX配置出可以驅(qū)動(dòng)整個(gè)開發(fā)所有外設(shè)的工程的。在社區(qū)前輩的提醒后才知道通過基于芯片創(chuàng)建工程是沒有辦法Kconfig配置的。因此我在之后的教程中我會(huì)基于RT-Thread提供
    的頭像 發(fā)表于 01-06 03:05 ?1208次閱讀

    RT-Thread文檔_RT-Thread 簡(jiǎn)介

    RT-Thread文檔_RT-Thread 簡(jiǎn)介
    發(fā)表于 02-22 18:22 ?5次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>RT-Thread</b> 簡(jiǎn)介

    RT-Thread文檔_RT-Thread 潘多拉 STM32L475 上手指南

    RT-Thread文檔_RT-Thread 潘多拉 STM32L475 上手指南
    發(fā)表于 02-22 18:23 ?10次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>RT-Thread</b> 潘多拉 STM32L475 上手指南

    RT-Thread文檔_RT-Thread SMP 介紹與移植

    RT-Thread文檔_RT-Thread SMP 介紹與移植
    發(fā)表于 02-22 18:31 ?9次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>RT-Thread</b> SMP 介紹與移植

    RT-Thread文檔_ADC 設(shè)備

    RT-Thread文檔_ADC 設(shè)備
    發(fā)表于 02-22 18:33 ?1次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>ADC</b> 設(shè)備

    基于RT-Thread Studio學(xué)習(xí)

    前期準(zhǔn)備:從官網(wǎng)下載 RT-Thread Studio,弄個(gè)賬號(hào)登陸,開啟rt-thread學(xué)習(xí)之旅。
    的頭像 發(fā)表于 05-15 11:00 ?5164次閱讀
    基于<b class='flag-5'>RT-Thread</b> Studio學(xué)習(xí)

    基于rt-thread的socket通信設(shè)計(jì)

    最近再研究 rt-thread 的通信 ,想設(shè)計(jì)出 eps8266(多個(gè)) rt-thread(作為中控) 服務(wù)器的通信框架,使用的開發(fā)是 潘多拉
    的頭像 發(fā)表于 10-13 15:02 ?1644次閱讀
    基于<b class='flag-5'>rt-thread</b>的socket通信設(shè)計(jì)
    主站蜘蛛池模板: 新竹市| 金川县| 周至县| 如皋市| 嵊州市| 乌海市| 双鸭山市| 三门峡市| 怀仁县| 滕州市| 长寿区| 台北市| 大兴区| 长葛市| 德令哈市| 多伦县| 临沭县| 新兴县| 手机| 法库县| 讷河市| 湖州市| 景德镇市| 淮滨县| 沙洋县| 自治县| 武山县| 望奎县| 漳州市| 江源县| 兴城市| 黄骅市| 砚山县| 岳池县| 洛川县| 玉门市| 潜江市| 繁峙县| 镇巴县| 松江区| 金阳县|