久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1958|回復: 20
打印 上一主題 下一主題
收起左側

請問有輝芒微FT61E145或類似的輝芒微單片機有用自帶ADC測量供電電池電壓例程嗎

[復制鏈接]
跳轉到指定樓層
樓主
ID:114301 發(fā)表于 2024-8-28 10:22 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
1000黑幣
請問有輝芒微FT61E145或類似的輝芒微單片機有用自帶ADC測量供電電池電壓例程嗎?芯片供電是電池,如果不接外部電阻分壓連電池測量(這種官網有例程,想不接分壓電阻,省IO口),直接用自帶的內部ADC測電池電壓,之前發(fā)了一個貼,但給的分太少了,重新發(fā)一個,謝謝了

最佳答案

查看完整內容

這個官方網站上有例程啊,稍微改一下就可以了.我自己運行過的,仿真器上測試3.4V,仿真結果是3424mV,這個誤差不超過1%,如果要求不高,結果還可以接受了; , POWER_INITIAL(); //初始化 ADC_INITIAL(); //ADC初始化 while(1) { adcData = GET_ADC_DATA(7); //通道7 AD值 theVoltage = (unlong)adcData*8*1000/0xFFF; //電壓放大1000倍 NOP(); NOP(); ...
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:466505 發(fā)表于 2024-8-28 10:22 | 只看該作者
這個官方網站上有例程啊,稍微改一下就可以了.我自己運行過的,仿真器上測試3.4V,仿真結果是3424mV,這個誤差不超過1%,如果要求不高,結果還可以接受了;
        <........省略>,
        POWER_INITIAL();                                                    //初始化
        ADC_INITIAL();                                                            //ADC初始化       
         
        while(1)
        {
                adcData = GET_ADC_DATA(7);                                         //通道7 AD值
                theVoltage = (unlong)adcData*8*1000/0xFFF;        //電壓放大1000倍                       
                NOP();
                NOP();
        }

評分

參與人數 1黑幣 +30 收起 理由
hack2800 + 30 我對仿真器不熟,只拿來燒程序,有心了,謝.

查看全部評分

回復

使用道具 舉報

板凳
ID:404160 發(fā)表于 2024-8-28 15:18 | 只看該作者
#include <stdio.h>

// 定義 ADC 模塊的基地址和寄存器偏移 (根據芯片手冊修改)
#define ADC_BASE 0x40000000
#define ADC_CTRL_OFFSET 0x00
#define ADC_CH_OFFSET 0x04
#define ADC_SAMPLE_RATE_OFFSET 0x08
#define ADC_RESULT_OFFSET 0x0C

// 定義 ADC 控制寄存器中的位域
#define ADC_CTRL_ENABLE (1 << 0)
#define ADC_CTRL_START (1 << 1)
#define ADC_CTRL_INTERRUPT (1 << 2)

// 定義 ADC 通道、參考電壓和分辨率
#define ADC_CHANNEL 0
#define ADC_REF_VOLTAGE 3.3
#define ADC_RESOLUTION 12

// 初始化串口 (根據您的硬件平臺修改,用于顯示測量值)
void UART_Init() {
    // ...
}

// 初始化 ADC 模塊
void ADC_Init() {
    // 配置 ADC 時鐘 (根據芯片手冊修改)
    // ...

    // 配置 ADC 控制寄存器
    *(uint32_t *)(ADC_BASE + ADC_CTRL_OFFSET) |= ADC_CTRL_ENABLE;

    // 配置 ADC 通道
    *(uint32_t *)(ADC_BASE + ADC_CH_OFFSET) = ADC_CHANNEL;

    // 配置 ADC 采樣率
    // ...

    // 其他配置 (根據芯片手冊修改)
    // ...
}

// 讀取 ADC 轉換結果
uint16_t ADC_Read() {
    // 啟動 ADC 轉換
    *(uint32_t *)(ADC_BASE + ADC_CTRL_OFFSET) |= ADC_CTRL_START;

    // 等待轉換完成 (根據芯片手冊修改)
    // ...

    // 讀取 ADC 轉換結果
    return *(uint16_t *)(ADC_BASE + ADC_RESULT_OFFSET);
}

// 將 ADC 數字值轉換為電壓值
float ADC_ToVoltage(uint16_t adc_value) {
    return adc_value * ADC_REF_VOLTAGE / (1 << ADC_RESOLUTION);
}

int main() {
    UART_Init();
    ADC_Init();

    while (1) {
        uint16_t adc_value = ADC_Read();
        float battery_voltage = ADC_ToVoltage(adc_value);

        printf("Battery voltage: %.2fV\n", battery_voltage);

        // 添加延時
        delay_ms(1000); // 根據需求調整延時時間
    }

    return 0;
}

評分

參與人數 1黑幣 +30 收起 理由
hack2800 + 30 感謝,看了手冊,里面沒有3.3V參考電壓,但.

查看全部評分

回復

使用道具 舉報

地板
ID:466505 發(fā)表于 2024-8-28 17:23 | 只看該作者
FT61E145不是有個AD通道可以測試1/4 Vdd的電壓?
回復

使用道具 舉報

5#
ID:114301 發(fā)表于 2024-8-28 20:24 | 只看該作者
hcfat51h 發(fā)表于 2024-8-28 17:23
FT61E145不是有個AD通道可以測試1/4 Vdd的電壓?

看手冊是有個通道測1/4 VDD,但測出數據不知道處理,否則VDD是4倍ADC數值,但還是沒轉化成電壓?
回復

使用道具 舉報

6#
ID:982617 發(fā)表于 2024-8-29 09:31 | 只看該作者
你想要直接用輝芒微FT61E145或類似芯片的內部ADC測量電池電壓,而不使用外部電阻分壓,這是可以實現的,但需要一些額外的考慮和處理。
以下是實現方法和需要注意的事項:
1. 芯片內部ADC的參考電壓:首先要確定FT61E145或類似芯片內部ADC的參考電壓。通常,內部ADC的參考電壓是芯片內部的固定電壓,例如3.3V或2.5V。  你需要查閱芯片的datasheet,找到ADC參考電壓的相關信息。
2. 電池電壓范圍:確定你想要測量的電池電壓范圍。例如,如果你使用的是3.7V的鋰電池,它的工作電壓范圍可能是3.0V到4.2V。
3. ADC精度和分辨率:內部ADC的精度和分辨率會影響測量結果的準確性。  如果你的電池電壓范圍很小,或者你對精度要求不高,內部ADC可能足以滿足需求。但是,如果需要更高的精度,你可能需要使用外部ADC或其他方法。
4. 直接測量電壓可能超出ADC的量程:如果你的電池電壓范圍大于內部ADC的參考電壓,你需要將電池電壓進行分壓。 由于你想要避免使用外部電阻,可以考慮利用內部的基準電壓作為分壓器的一部分。例如,你可以使用一個內部的基準電壓為2.5V,并將電池電壓接入一個內部的電阻網絡,以得到一個低于2.5V的電壓,然后將其送到ADC進行測量。
5. 電壓轉換公式: 你需要根據ADC參考電壓、電池電壓范圍、分壓比等因素,推導出一個公式,將ADC讀取到的數字量轉換成實際的電池電壓。

示例代碼 (偽代碼):

```c
//假設內部ADC參考電壓為3.3V,電池電壓范圍為3.0V到4.2V

//使用內部基準電壓作為分壓器的一部分
//將電池電壓接入一個內部電阻網絡,將電壓降到低于3.3V
//假設分壓比為1:2,則ADC讀取到的電壓為電池電壓的1/3

//讀取ADC值
adc_value = read_adc();

//計算電池電壓
battery_voltage = adc_value * 3.3 * 2 / 4096; //假設ADC分辨率為12位,即4096個量化值

//輸出電池電壓
printf("電池電壓:%fV\
", battery_voltage);
```
注意事項:
仔細閱讀FT61E145或類似芯片的datasheet,了解其ADC的特性和使用方法。
確保你的程序邏輯正確,避免出現誤差。
在實際應用中,你需要進行實際測量和校準,以確保測量結果的準確性。
總結:
直接使用內部ADC測量電池電壓是可行的,但需要仔細考慮芯片的特性和電池電壓范圍,并進行必要的處理。  

希望以上信息對你有幫助!

評分

參與人數 1黑幣 +30 收起 理由
hack2800 + 30 回帖助人的獎勵!都感謝!

查看全部評分

回復

使用道具 舉報

7#
ID:466505 發(fā)表于 2024-8-29 10:23 | 只看該作者
參考電壓:0x0FFF=1/4Vdd:ADC數值,

評分

參與人數 1黑幣 +30 收起 理由
hack2800 + 30 參考了網官的其它ADC測量,有想過,但不確.

查看全部評分

回復

使用道具 舉報

8#
ID:114301 發(fā)表于 2024-8-29 10:51 | 只看該作者
hcfat51h 發(fā)表于 2024-8-29 10:23
參考電壓:0x0FFF=1/4Vdd:ADC數值,

參考了網官的其它ADC測量,有想過,但不確定,本來想拿來主義更快,現在手頭還在畫張簡單的板,等到手了試一下,到時候有結果了再來回復,先謝了
回復

使用道具 舉報

9#
ID:114301 發(fā)表于 2024-8-29 11:00 | 只看該作者
飛云居士 發(fā)表于 2024-8-28 15:18
#include

// 定義 ADC 模塊的基地址和寄存器偏移 (根據芯片手冊修改)

感謝,看了手冊,里面沒有3.3V參考電壓,但程序思路應該是相通的,后面我自己多試試
回復

使用道具 舉報

10#
ID:114301 發(fā)表于 2024-8-29 11:02 | 只看該作者
參考了網官的其它ADC測量,有想過各種情況,但不確定,本來想拿來主義更快,現在手頭還在畫簡單的板,等到手了試一下,到時候有結果了再來回復,感謝大家回復,先謝了
回復

使用道具 舉報

11#
ID:114301 發(fā)表于 2024-8-29 11:41 | 只看該作者
hcfat51h 發(fā)表于 2024-8-29 11:10
這個官方網站上有例程啊,稍微改一下就可以了.我自己運行過的,仿真器上測試3.4V,仿真結果是3424mV,這個誤差 ...

厲害,我都不會用仿真器看仿真結果的電壓,剛接觸不久,平時只拿來簡單燒程序,謝謝
回復

使用道具 舉報

12#
ID:114301 發(fā)表于 2024-8-29 11:45 | 只看該作者
hcfat51h 發(fā)表于 2024-8-29 11:10
這個官方網站上有例程啊,稍微改一下就可以了.我自己運行過的,仿真器上測試3.4V,仿真結果是3424mV,這個誤差 ...

哎,我對仿真器不熟,所以在畫板等在上面跑效果
回復

使用道具 舉報

13#
ID:466505 發(fā)表于 2024-8-29 14:08 | 只看該作者
hack2800 發(fā)表于 2024-8-29 11:45
哎,我對仿真器不熟,所以在畫板等在上面跑效果

是用仿真器連接目標板才能運行的,我意思是供電也是仿真器提供的
回復

使用道具 舉報

14#
ID:466505 發(fā)表于 2024-8-29 14:09 | 只看該作者
hack2800 發(fā)表于 2024-8-29 11:45
哎,我對仿真器不熟,所以在畫板等在上面跑效果

可以上某一個寶買個SSOP20轉插件的,然合隨便用萬用板搭電路
回復

使用道具 舉報

15#
ID:114301 發(fā)表于 2024-8-29 14:39 | 只看該作者
你這個既然都仿真了,應該是最好的答案了,我自己要等得比較久,板還沒畫好,還要做板及先程序,先把分給了,感謝!
回復

使用道具 舉報

16#
ID:1131074 發(fā)表于 2024-8-29 15:23 | 只看該作者
1. FT61E145的ADC模塊,AD值  = (AD通道電壓 / 參考電壓)* 4096;
2. FT61E145有內部1/4VDD通道,也就是這個AD通道是輸入電壓是VDD的四分之一(芯片內部用1比3電阻分壓);
3. FT61E145的AD參考電壓是可以選擇內部固定基準電壓,記得是0.5V/2V/3V三種可選;
4. 所以在1中的式子, AD值、參考電壓(選擇內部固定基準)、4096(12位ADC)是已知數,就可以推算出AD通道電壓,這個AD通道電壓乘以4,就是VDD電壓了;
回復

使用道具 舉報

17#
ID:110791 發(fā)表于 2024-8-29 20:13 | 只看該作者
兩100K電阻分壓測量AD值 3.7V/2/3V*4096
回復

使用道具 舉報

18#
ID:114301 發(fā)表于 2024-8-29 23:58 | 只看該作者
hack2800 發(fā)表于 2024-8-29 11:45
哎,我對仿真器不熟,所以在畫板等在上面跑效果

我還以為仿真器上什么都不用接,然后在軟件里能看到仿真出來是多少電壓
回復

使用道具 舉報

19#
ID:114301 發(fā)表于 2024-8-29 23:58 | 只看該作者
hcfat51h 發(fā)表于 2024-8-29 14:09
可以上某一個寶買個SSOP20轉插件的,然合隨便用萬用板搭電路

好,謝謝
回復

使用道具 舉報

20#
ID:114301 發(fā)表于 2024-8-29 23:59 | 只看該作者
樂于助人 發(fā)表于 2024-8-29 15:23
1. FT61E145的ADC模塊,AD值  = (AD通道電壓 / 參考電壓)* 4096;
2. FT61E145有內部1/4VDD通道,也就是 ...

感謝詳細的講解,謝謝大家
回復

使用道具 舉報

21#
ID:114301 發(fā)表于 2024-8-29 23:59 | 只看該作者
935107368 發(fā)表于 2024-8-29 20:13
兩100K電阻分壓測量AD值 3.7V/2/3V*4096

恩恩,這種知道,謝謝
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品国产31久久久久久 | 久久久久久亚洲 | 天堂一区在线 | 美女在线视频一区二区三区 | 成人久久18免费 | jvid精品资源在线观看 | 日韩在线观看 | 蜜桃特黄a∨片免费观看 | 日韩美女在线看免费观看 | 亚洲最色网站 | 羞羞视频在线观看免费观看 | 狠狠躁18三区二区一区 | 国产免费一区二区 | 精品视频在线播放 | 亚洲一区二区三区在线 | 免费视频99 | 亚洲精品乱码久久久久久久久 | 国产一级淫片免费视频 | 天天操夜夜骑 | 成人黄色电影免费 | 久久男人天堂 | 国产成人精品久久二区二区91 | 九九九久久国产免费 | 成人在线视频网址 | 久久噜噜噜精品国产亚洲综合 | 午夜精品一区二区三区在线视频 | 一级国产精品一级国产精品片 | 欧美一级做性受免费大片免费 | 最新av在线播放 | 午夜精品久久久久久久久久久久 | 亚洲精品一区二区三区蜜桃久 | 午夜在线视频一区二区三区 | 91精品国产综合久久久久久 | 亚洲精品一区二区三区免 | 91精品国产综合久久久久久丝袜 | 99热最新| 久久精品二区 | 国产精品国产三级国产aⅴ中文 | 精品日韩一区二区 | 成人免费淫片aa视频免费 | 亚洲一区二区三区视频 |