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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4936|回復: 16
收起左側

使用單片機ACS712芯片測電流AD值一直跳變?

[復制鏈接]
ID:887186 發表于 2022-6-30 19:29 | 顯示全部樓層 |閱讀模式
有一個負載需要監控電流
精度需要精確到0.1MA-0.01MA的程度
使用ACS712試一試,感覺是沒問題的
至少在用萬用表測的時候沒有問題
然后使用STC8 AD采集
發現AD值一直在波動,波動幅度還很大
并了一個104電容效果不大
軟件上技術欠佳,也不知道該怎么濾波比較好。
電流實際情況在0.16ma的時候
測出來的數據反而是在0.00 0.03 0.12 0.20這四個數之間跳來跳去
電路圖和單片機代碼如下
32CC33A6B52BCCAE4755A1A340F18838.png

單片機源程序如下:
  1. #include<STC8.H>
  2. #include "LCDINT.h"
  3. #include "LCD.h"
  4. #include "PIC.h"
  5. #include "intrins.h"
  6.         float t;
  7.   float p;
  8.   float u;



  9. #define ADCTIM  (*(unsigned char volatile xdata *)0xfea8)

  10. int main(void)
  11. {
  12.     P0M0 = 0x00;
  13.     P0M1 = 0x00;
  14.     P2M0 = 0x00;
  15.     P2M1 = 0x00;
  16.     P3M0 = 0x00;
  17.     P3M1 = 0x00;
  18.     P1M0 = 0x00;                                //設置P1.0為ADC口
  19.     P1M1 = 0x01;
  20.                 ADCCFG = 0x0f;                              //設置ADC時鐘為系統時鐘/2/16
  21.     P_SW2 |= 0x80;
  22.     ADCTIM = 0x3f;                              //設置ADC內部時序
  23.     P_SW2 &= 0x7f;
  24.           ADC_CONTR = 0x80;                           //使能ADC模塊
  25.         LCD_Init();//LCD初始化
  26.         LCD_Fill(0,0,LCD_W,LCD_H,BLACK);
  27.         while(1)
  28.         {
  29.         ADC_CONTR |= 0x40;                      //啟動AD轉換
  30.         _nop_();
  31.         _nop_();
  32.         while (!(ADC_CONTR & 0x20));            //查詢ADC完成標志
  33.         ADC_CONTR &= ~0x20;                     //清完成標志
  34.         t = ADC_RES;                           //讀取ADC結果
  35.         p=t/256*3300;
  36.                  if(p<=2475)
  37.                  {p=2475;}

  38.        u=(p-2475)/185;
  39.         _nop_();
  40.         _nop_();
  41.                 LCD_ShowChinese(60,70,"電子",WHITE ,BLACK,32,0);
  42.                 LCD_ShowString(32,100,"cccc",RED,BLACK,16,0);
  43.           LCD_ShowIntNum(120,100,p,4,RED,BLACK,16);
  44.                 LCD_ShowFloatNum1(90,130,u,4,RED,BLACK,16);
  45.                 LCD_ShowPicture(40,120,40,40,gImage_1);
  46.                         }
  47.                 }

復制代碼



回復

使用道具 舉報

ID:883242 發表于 2022-6-30 21:13 | 顯示全部樓層
去掉ACS712
兩個電阻分壓得到你想要的電壓,并聯104電容到這個電壓上
把這個電壓連接到單片機
觀察是否還有跳變。

單片機本身是個大規模數字電路,是模擬信號的強干擾源,內部集成的ADC有跳變是正常的,能穩定才奇怪了。
回復

使用道具 舉報

ID:401564 發表于 2022-6-30 23:17 | 顯示全部樓層
這個IC內部的取樣電阻是1.2 mΩ
你用來測量0.01mA的電流,你計算過這個電流在在1.2 mΩ 上能有多少壓降嗎?
5A的時候,這個芯片的輸出電壓是185mV,那0.1mA的時候,輸出會是多少呢?
我感覺你單片機ADC結果跳動的數據只是外部的一點干擾而已,跟電流一點關系都沒有
你可以試一下測量一個300mA或者1A的電流,驗證一下程序
回復

使用道具 舉報

ID:883242 發表于 2022-6-30 23:24 | 顯示全部樓層
Y_G_G 發表于 2022-6-30 23:17
這個IC內部的取樣電阻是1.2 mΩ
你用來測量0.01mA的電流,你計算過這個電流在在1.2 mΩ 上能有多少壓降嗎? ...

說話要嚴禁,霍爾傳感器哪來的取樣電阻,只要是導線就有電阻,1.2 mΩ只是導線電阻而已。
回復

使用道具 舉報

ID:401564 發表于 2022-6-30 23:30 | 顯示全部樓層
Hephaestus 發表于 2022-6-30 23:24
說話要嚴禁,霍爾傳感器哪來的取樣電阻,只要是導線就有電阻,1.2 mΩ只是導線電阻而已。

好的,你是對的
回復

使用道具 舉報

ID:401564 發表于 2022-6-30 23:37 | 顯示全部樓層
因為我不會英文,所以,以為這個是內置取樣電阻的采樣芯片
但這原理是一樣的
你看數據手冊就可以計算出0.1mA能輸出的電壓有多少了
可以認為,acs712基本沒有電壓輸出,單片機的ADC結果不過是ADC誤差和基點一定干擾的結果而已,跟電流一點關系都沒有
這個是acs712量程對應的輸出電壓
你參考一下
51hei截圖20220630233354.png

回復

使用道具 舉報

ID:887186 發表于 2022-7-1 09:39 | 顯示全部樓層
Hephaestus 發表于 2022-6-30 21:13
去掉ACS712
兩個電阻分壓得到你想要的電壓,并聯104電容到這個電壓上
把這個電壓連接到單片機

你好,我試過了。如果用穩壓源直接輸入2.5V,他只會變化0.01V這樣子。
但是用芯片的OUTPUT,就會波動的厲害
回復

使用道具 舉報

ID:887186 發表于 2022-7-1 09:41 | 顯示全部樓層
Y_G_G 發表于 2022-6-30 23:37
因為我不會英文,所以,以為這個是內置取樣電阻的采樣芯片
但這原理是一樣的
你看數據手冊就可以計算出0.1m ...

您的意思是,OUTPUT輸出是沒問題的,主要還是因為AD受到外部干擾了所以才跳動嗎?
回復

使用道具 舉報

ID:401564 發表于 2022-7-1 18:56 | 顯示全部樓層
一夜暴富 發表于 2022-7-1 09:41
您的意思是,OUTPUT輸出是沒問題的,主要還是因為AD受到外部干擾了所以才跳動嗎?

我的意思是ACS712不能檢測到那么高精度的電流(OUTPUT輸出是有問題的!!!!!!!!!)
單片機不能用ACS712檢測到0.1mA的電流
你的單片機ADC出來的值只是ADC誤差和干擾而已,跟電流壓根就沒有關系
你的理解,跟我說的,壓根就是相反的!

如果是正負5A量程ACS712,那么,1A的輸出電壓就是185mV
0.1mA的輸出就是185/10000=0.0185mV=18.5uV
你去看一下單片機的分辨率,你覺得還能測量到這么小的電流嗎?
我不知道你"感覺沒有問題"的依據是什么
回復

使用道具 舉報

ID:329625 發表于 2022-7-1 19:26 | 顯示全部樓層
硬件過程中的那一部分布線可能也會影響
回復

使用道具 舉報

ID:213173 發表于 2022-7-1 20:21 | 顯示全部樓層
STC8系列單片機的ADC最高12位,理論上只能檢出最小1mV電壓(但實際是做不到的)。ACS712流過0.1mA電流只能輸出0.0185mV電壓,遠小于單片機ADC分辨率。根據手冊,ACS712零電流輸出電壓=1/2VCC。樓主“測出來的數是在0.00 0.03 0.12 0.20這四個數之間跳來跳去”說明硬件選擇和軟件編寫都存在問題。 無標題.jpg

ACS712.pdf (642.19 KB, 下載次數: 10)
回復

使用道具 舉報

ID:887186 發表于 2022-7-4 19:00 | 顯示全部樓層
Y_G_G 發表于 2022-7-1 18:56
我的意思是ACS712不能檢測到那么高精度的電流(OUTPUT輸出是有問題的!!!!!!!!!)
單片機不能用ACS712檢測 ...

sorry!大哥,我說錯了,是10ma的精度,不是0.1ma,怪我說錯了。
10ma我試了下,精度還勉強可以接受,加了RC濾波后跳變也比較穩定
回復

使用道具 舉報

ID:887186 發表于 2022-7-4 19:00 | 顯示全部樓層
17337161031 發表于 2022-7-1 19:26
硬件過程中的那一部分布線可能也會影響

一般AD采集布線有什么原則需要遵循嗎,大佬能否細說一下
回復

使用道具 舉報

ID:887186 發表于 2022-7-4 19:01 | 顯示全部樓層
wulin 發表于 2022-7-1 20:21
STC8系列單片機的ADC最高12位,理論上只能檢出最小1mV電壓(但實際是做不到的)。ACS712流過0.1mA電流只能 ...

感謝,那天是我口胡說錯了。非常抱歉
讓大佬費心查看資料了
其實我想說的是10ma左右的誤差都是可以接受的
我看了下,大概有50ma左右的誤差
還勉強可以靠軟件中值中衡一下
回復

使用道具 舉報

ID:883242 發表于 2022-7-4 19:26 | 顯示全部樓層
一夜暴富 發表于 2022-7-4 19:01
感謝,那天是我口胡說錯了。非常抱歉
讓大佬費心查看資料了
其實我想說的是10ma左右的誤差都是可以接受 ...

你要精度那么高還不如直接上采樣電阻,如果需要隔離,那就單片機處理完畢后用串口光耦把數據傳出來。
回復

使用道具 舉報

ID:887186 發表于 2022-7-4 19:51 | 顯示全部樓層
Hephaestus 發表于 2022-7-4 19:26
你要精度那么高還不如直接上采樣電阻,如果需要隔離,那就單片機處理完畢后用串口光耦把數據傳出來。

隔離用串口光耦可以詳細說一下嗎,有點不是很理解,感謝!
回復

使用道具 舉報

ID:883242 發表于 2022-7-4 19:59 | 顯示全部樓層
一夜暴富 發表于 2022-7-4 19:51
隔離用串口光耦可以詳細說一下嗎,有點不是很理解,感謝!

51hei圖片20220704195834.png
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲视频在线一区 | 爱操av| 激情五月婷婷综合 | 国产一区91精品张津瑜 | av片免费| 夜夜操天天艹 | 韩国精品在线观看 | 天天操夜夜爽 | 国产欧美精品一区二区三区 | 亚洲性综合网 | 国产精品欧美一区二区三区不卡 | 欧美激情精品久久久久 | 欧美精品一区二区三区蜜桃视频 | 欧美成人精品一区二区男人看 | 日本一区二区三区视频在线 | 在线日韩精品视频 | 欧美一区2区三区4区公司二百 | 好姑娘高清在线观看电影 | 在线播放中文 | 欧美一区二区三区视频 | 韩国精品在线观看 | 日本高清不卡视频 | 国产一区视频在线 | 超碰婷婷| 国产精品揄拍一区二区 | a级大片免费观看 | 成人性生交大片免费看r链接 | 91精品国产777在线观看 | 日韩二三区 | 欧美精品1区2区3区 精品国产欧美一区二区 | 亚洲视频精品在线 | 久久免费精品视频 | 精品日韩在线观看 | 日韩在线视频观看 | 日韩一区二区免费视频 | 久久久久久久久久久91 | 国产精品免费一区二区三区四区 | 久久免费精彩视频 | 国产一级片精品 | 亚洲一区视频 | 国产探花在线观看视频 |