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

標(biāo)題: DIY毫安微安電流表(單片機(jī)10位ADC+LM358)程序原理圖PCB及實物制作圖片 [打印本頁]

作者: zsw3721    時間: 2020-12-24 17:36
標(biāo)題: DIY毫安微安電流表(單片機(jī)10位ADC+LM358)程序原理圖PCB及實物制作圖片
測試工程師一枚,實際工作中經(jīng)常要測量產(chǎn)品的待機(jī)功耗和休眠功耗。通使用電流表來測產(chǎn)品的工作電流,突然萌生自己制作一個電流表的想法,然后學(xué)習(xí)了一下電流采樣的原理,自己畫了一個原理圖,請同事幫忙畫了PCB。程序方面借鑒了在51黑找到的一個測溫度的例程。
基本設(shè)計:
單片機(jī):使用 STC15W408AS,寬電壓供電,8通道10位ADC,選擇了SOP28封裝引腳夠用
電源:內(nèi)置9V電池供電,使用LM1117-3.3V穩(wěn)壓芯片
檢流電阻:毫安檔使用1歐姆2512貼片電阻,微安檔使用100歐姆2512貼片電阻。因考慮到產(chǎn)品實際待機(jī)工作電流(小于30mA)和休眠工作電流(小于100uA)。檢流電阻的大小和精度可能在某些場合不合適,但已可以滿足本項目需求。
運算放大器:使用LM358DR組成兩路差分放大電路,分別放大毫安檔和微安檔檢流電阻兩端電壓,放大倍數(shù)分別設(shè)置為10倍和50倍。
顯示屏:LCD1602 3.3V版

調(diào)試結(jié)果:
實測LM358有一定的零點漂移,在程序中減掉零點漂移量后,毫安檔和微安檔的電流精度和萬用表對比,結(jié)果精度非常高。LM358輸出電壓會比Vcc低大約不到1.5V,這一點一開始沒有想到,這個會影響最大測量范圍以及最大可測量點附近的精度。實際調(diào)試后,將量程確定為毫安檔0-200mA和微安檔0-400uA,已足夠工作中的測試使用。如果要調(diào)整量程,只要調(diào)整檢流電阻或者運放的放大倍數(shù)即可。

附件中有電路原理圖和PCB及程序。比較基礎(chǔ)的應(yīng)用,分享給大家,希望可以給有需要的朋友帶來幫助。
Altium Designer畫的毫安微安電流表原理圖和PCB圖如下:(51hei附件中可下載工程文件)




制作出來的成品實物圖如下:




微安檔精度:


毫安檔精度:





全部資料51hei下載地址:
程序.rar (38.04 KB, 下載次數(shù): 903)
原理圖和PCB.rar (10.88 MB, 下載次數(shù): 1057)

作者: 51hei團(tuán)團(tuán)    時間: 2020-12-24 20:10
太棒了,我一直想制作一個.下面是樓主的程序:
  1. /***************************************/
  2. /*     基于STC15W408AS的電流表設(shè)計     */
  3. /*     測量范圍0-200mA,0-400uA         */
  4. /*     創(chuàng)建者 :zsw                    */
  5. /*     創(chuàng)建時間:2020/12/21            */
  6. /***************************************/
  7. //2.5V基準(zhǔn)電壓接P1.0,uA采樣接P1.1,mA采樣接P1.2
  8. //毫安檔使用1歐(5%)檢流電阻,微安檔使用100歐(1%)檢流電阻。

  9. #include "STC15W408AS.H"
  10. #include "intrins.h"

  11. #define ADC_POWER    0x80    //ADC電源控制位
  12. #define ADC_FLAG    0x10    //ADC完成標(biāo)志位
  13. #define ADC_START    0x08    //ADC啟動控制位
  14. #define ADC_SPEED0    0x00    //ADC轉(zhuǎn)換速度,一次轉(zhuǎn)換需要540個時鐘
  15. #define ADC_SPEED1    0x20    //ADC轉(zhuǎn)換速度,一次轉(zhuǎn)換需要360個時鐘
  16. #define ADC_SPEED2    0x40    //ADC轉(zhuǎn)換速度,一次轉(zhuǎn)換需要180個時鐘
  17. #define ADC_SPEED3    0x60    //ADC轉(zhuǎn)換速度,一次轉(zhuǎn)換需要90個時鐘

  18. #define N 8    //ADC采樣使用遞推平均濾波算法,采樣次數(shù)

  19. sbit lcdrs=P3^2;    //LCD1602指令和數(shù)據(jù)寄存器選擇,高電平時為數(shù)據(jù),低電平選擇命令
  20. sbit lcdrw=P3^3;    //LCD1602讀寫選擇,高電平為讀,低電平為寫
  21. sbit lcden=P3^4;    //LCD1602使能
  22. unsigned char Show[3]={0,0,0};    //顯示數(shù)組mA
  23. unsigned char Show1[3]={0,0,0};    //顯示數(shù)組uA
  24. unsigned int  ADC_Buf[N+1];        //采樣數(shù)組mA
  25. unsigned int  ADC_Buf2[N+1];    //采樣數(shù)值uA
  26. unsigned int current=0;            //采樣毫安值
  27. unsigned int current2=0;        //采樣微安值
  28. unsigned char num,ADCcount=0,ADCcount2=0;    //ADC采樣次數(shù)變量
  29. unsigned char code table1[]="CURRENT1:";
  30. unsigned char code table2[]="CURRENT2:";

  31. /******************************
  32. 函數(shù)說明:延時函數(shù),執(zhí)行一次1毫秒,STC_ISP軟件給出 @6MHz 1T單片機(jī)
  33. 入口參數(shù):ms=延時毫秒數(shù)
  34. 出口參數(shù):無
  35. ******************************/
  36. void Delay_MS(unsigned int ms)
  37. {
  38.     unsigned char i, j;
  39.     while(ms--)
  40.     {
  41.         i = 6;    j = 211;
  42.         do{
  43.             while (--j);
  44.         } while (--i);
  45.     }
  46. }

  47. /******************************
  48. 函數(shù)說明:LCD1602驅(qū)動
  49. ******************************/
  50. void write_com(unsigned char com)
  51. {
  52.     lcdrs=0;         //rs低電平為寫命令
  53.     P2=com;            
  54.     Delay_MS(5);
  55.     lcden=1;         //EN先置高電平
  56.     Delay_MS(5);
  57.     lcden=0;         //短暫延時后EN置低電平
  58. }
  59. void write_dat(unsigned char dat)
  60. {
  61.     lcdrs=1;         //rs高電平為寫數(shù)據(jù)
  62.     P2=dat;
  63.     Delay_MS(5);
  64.     lcden=1;
  65.     Delay_MS(5);
  66.     lcden=0;
  67. }
  68. /******************************
  69. 函數(shù)說明:初始化ADC寄存器
  70. ******************************/
  71. void Init_ADC(void)
  72. {
  73.     P1M1 |= 0x01;
  74.     P1M0 &= ~1;            //設(shè)P1.0為高阻輸入。因3.3V電源很精確,暫未使用2.5V基準(zhǔn)電壓源。
  75.     P1ASF = 0x06;        //打開P1.2和P1.1口的ADC功能
  76.     ADC_RES = 0;   
  77.     ADC_RESL= 0;        //清掉ADC轉(zhuǎn)換結(jié)果寄存器
  78.     ADC_CONTR = ADC_POWER | ADC_SPEED3;    //使能A/D供電,設(shè)置轉(zhuǎn)換速度90T
  79. }

  80. /******************************
  81. 函數(shù)說明:LCD1602初始化
  82. ******************************/
  83. void LCD1602_Init(void)
  84. {
  85.     lcdrw=0;
  86.     lcden=0;
  87.     P2=0;
  88.     write_com(0x38);   //設(shè)置顯示模式為兩行5*8顯示
  89.     write_com(0x0C);   //初始化,開顯示
  90.     write_com(0x06);   //初始化,讀寫一個字符后地址指針自動加1
  91.     write_com(0x01);   //清屏
  92.     write_com(0x80);   //數(shù)據(jù)地址指針從0開始   
  93.     for(num=0;num<9;num++)            //第1行顯示'CURRENT1:'
  94.         write_dat(table1[num]);   
  95.     write_com(0x80+0x40);   //數(shù)據(jù)地址指針從0開始
  96.     for(num=0;num<9;num++)            //第1行顯示'CURRENT2:'
  97.         write_dat(table2[num]);
  98. }
  99. /******************************
  100. 函數(shù)說明:查詢方式讀取ADC轉(zhuǎn)換結(jié)果
  101. 入口參數(shù):ch  ADC采樣通道
  102. 出口參數(shù):int ADC_RES ADC轉(zhuǎn)換結(jié)果
  103. ******************************/
  104. unsigned int Get_ADC_Result(unsigned char ch)
  105. {
  106.     unsigned int result;
  107.     ADC_RES = 0;   
  108.     ADC_RESL= 0;                    //清掉ADC轉(zhuǎn)換結(jié)果寄存器
  109.     ADC_CONTR =ADC_POWER|ADC_SPEED3|ch|ADC_START;//配置ADC,設(shè)置轉(zhuǎn)換通道,啟動轉(zhuǎn)換
  110.     _nop_();    _nop_();
  111.     _nop_();    _nop_();            //等待設(shè)置ADC_POWER完畢
  112.     while (!(ADC_CONTR & ADC_FLAG));//讀取轉(zhuǎn)換完畢標(biāo)志位ADC_FLAG
  113.     ADC_CONTR &= ~ADC_FLAG;         //清除ADC_FLAG標(biāo)志位
  114.     result = ADC_RES<<2|ADC_RESL;    //讀取10位轉(zhuǎn)換結(jié)果保存到result
  115.     return result;                  //返回ADC轉(zhuǎn)換結(jié)果10位
  116. }
  117. /******************************
  118. 函數(shù)說明:獲取mA值
  119. ******************************/
  120. void Get_Current1(void)
  121. {
  122.     unsigned char xx;
  123.     unsigned int sum,currentvalue;
  124.     sum = currentvalue =0;   
  125.     ADC_Buf[N]=Get_ADC_Result(2);    //將ADC轉(zhuǎn)換結(jié)果放數(shù)組最高位
  126.     if( ++ADCcount < 8)        //采樣初期不使用濾波算法
  127.     {   
  128.         for(xx=0;xx<N;xx++)    //準(zhǔn)備濾波算法的數(shù)據(jù)
  129.         {
  130.             ADC_Buf[xx]=ADC_Buf[xx+1];//所有數(shù)據(jù)循環(huán)左移
  131.         }
  132.         currentvalue=ADC_Buf[N];//采樣初期使用當(dāng)前采樣值
  133.     }
  134.     else     //只有采樣次數(shù)大于8次以后才使用濾波算法   
  135.     {
  136.         ADCcount=8;    //采樣次數(shù)超過8次后,固定設(shè)置為8
  137.         for(xx=0;xx<N;xx++)    //濾波算法
  138.         {
  139.             ADC_Buf[xx]=ADC_Buf[xx+1];//所有數(shù)據(jù)循環(huán)左移
  140.             sum+=ADC_Buf[xx];    //求和
  141.         }
  142.         currentvalue=sum/N;        //求平均值        
  143.     }   
  144.     currentvalue=currentvalue*0.3223; //ADC平均值轉(zhuǎn)化成mA電流值
  145.     if(currentvalue>=2)
  146.         currentvalue=currentvalue-2;     //實測零點漂移了2~3mA
  147.     if(currentvalue<=3)                     //顯示門檻
  148.         currentvalue=0;
  149.     current=currentvalue;
  150. }
  151.                                     
  152. /******************************
  153. 函數(shù)說明:顯示mA值
  154. ******************************/
  155. void Display_mA(void)
  156. {
  157.     if(current<=200)
  158.     {
  159.         Show[0]=current%1000/100;        //電流值百位
  160.         Show[1]=current%100/10;    //電流值十位
  161.         Show[2]=current%10;        //電流值個位
  162.         write_com(0x80+0x0A);            //第1行第10個字符開始顯示
  163.         if(Show[0]>0)                    
  164.             write_dat(0x30+Show[0]);    //寫電流值百位
  165.         else
  166.             write_dat(' ');
  167.         if((Show[0]==0)&&(Show[1]==0))
  168.             write_dat(' ');                //寫電流值十位
  169.         else
  170.             write_dat(0x30+Show[1]);
  171.         write_dat(0x30+Show[2]);        //寫電流值個位
  172.         write_dat(' ');
  173.         write_dat('m');
  174.         write_dat('A');
  175.     }
  176.     else                               //超量程顯示"999"
  177.     {
  178.         write_com(0x80+0x0A);
  179.         write_dat('9');
  180.         write_dat('9');
  181.         write_dat('9');
  182.         write_dat(' ');
  183.         write_dat('m');
  184.         write_dat('A');   
  185.     }
  186. }

  187. /******************************
  188. 函數(shù)說明:獲取uA值
  189. ******************************/
  190. void Get_Current2(void)
  191. {
  192.     unsigned char xx;
  193.     unsigned int sum,currentvalue;
  194.     sum = currentvalue =0;   
  195.     ADC_Buf2[N]=Get_ADC_Result(1);    //將ADC轉(zhuǎn)換結(jié)果放數(shù)組最高位
  196.     if( ++ADCcount2 < 8)        //采樣初期不使用濾波算法
  197.     {   
  198.         for(xx=0;xx<N;xx++)    //準(zhǔn)備濾波算法的數(shù)據(jù)
  199.         {
  200.             ADC_Buf2[xx]=ADC_Buf2[xx+1];//所有數(shù)據(jù)循環(huán)左移
  201.         }
  202.         currentvalue=ADC_Buf2[N];//采樣初期使用當(dāng)前采樣值
  203.     }
  204.     else     //只有采樣次數(shù)大于8次以后才使用濾波算法   
  205.     {
  206.         ADCcount2=8;    //采樣次數(shù)超過8次后,固定設(shè)置為8
  207.         for(xx=0;xx<N;xx++)    //濾波算法
  208.         {
  209.             ADC_Buf2[xx]=ADC_Buf2[xx+1];//所有數(shù)據(jù)循環(huán)左移
  210.             sum+=ADC_Buf2[xx];    //求和
  211.         }
  212.         currentvalue=sum/N;        //求平均值        
  213.     }   
  214.     currentvalue=currentvalue*0.6445; //ADC平均值轉(zhuǎn)化成uA電流值
  215.     if(currentvalue>=15)
  216.         currentvalue=currentvalue-15;     //實測零點漂移了15uA
  217.     if(currentvalue<=3)                     //顯示門檻
  218.         currentvalue=0;
  219.     current2=currentvalue;
  220. }

  221. /******************************
  222. 函數(shù)說明:顯示uA值
  223. ******************************/
  224. void Display_uA(void)
  225. {
  226.     if(current2<=400)
  227.     {
  228.         Show1[0]=current2%1000/100;        //電流值百位
  229.         Show1[1]=current2%100/10;        //電流值十位
  230.         Show1[2]=current2%10;            //電流值個位
  231.         write_com(0x80+0x40+0x0A);            //第2行第10個字符開始顯示
  232.         if(Show1[0]>0)                    
  233.             write_dat(0x30+Show1[0]);    //寫電流值百位
  234.         else
  235.             write_dat(' ');
  236.         if((Show1[0]==0)&&(Show1[1]==0))
  237.             write_dat(' ');                //寫電流值十位
  238.         else
  239.             write_dat(0x30+Show1[1]);
  240.         write_dat(0x30+Show1[2]);        //寫電流值個位
  241.         write_dat(' ');
  242.         write_dat('u');
  243.         write_dat('A');
  244.     }
  245.     else                               //超量程顯示"999"
  246.     {
  247.         write_com(0x80+0x40+0x0A);
  248.         write_dat('9');
  249.         write_dat('9');
  250.         write_dat('9');
  251.         write_dat(' ');
  252.         write_dat('u');
  253.         write_dat('A');   
  254.     }
  255. }

  256. void main(void)
  257. {
  258.     Init_ADC();                //初始化ADC
  259.     LCD1602_Init();            //初始化LCD1602
  260.     while(1)
  261.     {        
  262.         for(num=0;num<8;num++)
  263.         {
  264.             Get_Current1();    //獲取mA電流值
  265.             Get_Current2();    //獲取uA電流值
  266. ……………………

  267. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼

作者: zx929747216    時間: 2020-12-24 21:17
R8和R13有什么作用,可以去掉的吧
作者: AAA_MCU    時間: 2020-12-25 00:53
zx929747216 發(fā)表于 2020-12-24 21:17
R8和R13有什么作用,可以去掉的吧

提供運放差分輸入偏置電流
作者: zsw3721    時間: 2020-12-26 17:08

新增NTC測溫功能和秒表功能,采樣和顯示刷新周期由定時器控制。
NTC用的是P1.0口,因為電流采樣很精確,所以沒有使用基準(zhǔn)電壓源,把U2/R2/C5/C6/C7全拆掉,R2位置焊上10K 3435的NTC,C7位置焊上10K 1%的0603電阻。
效果好的很。

毫安微安電流表程序V2.1 增加NTC測溫和秒表.rar

51.74 KB, 下載次數(shù): 433, 下載積分: 黑幣 -5

升級程序


作者: lovexulu    時間: 2020-12-26 20:11
不用提供Avref 15w408內(nèi)部有1.19V基準(zhǔn)。
作者: zsw3721    時間: 2020-12-26 22:07
lovexulu 發(fā)表于 2020-12-26 20:11
不用提供Avref 15w408內(nèi)部有1.19V基準(zhǔn)。

多謝指點!
作者: 93mxt    時間: 2021-1-19 22:45
zsw3721 發(fā)表于 2020-12-26 17:08
新增NTC測溫功能和秒表功能,采樣和顯示刷新周期由定時器控制。
NTC用的是P1.0口,因為電流采樣很精確, ...

樓主你好,我的MCU是20P 腳的能幫改一下程序嗎
作者: zsw3721    時間: 2021-1-20 08:55
93mxt 發(fā)表于 2021-1-19 22:45
樓主你好,我的MCU是20P 腳的能幫改一下程序嗎

也是STC15W408AS嗎?20P的MCU,要調(diào)整一下IO口,建議LCD的數(shù)據(jù)口改到P3口,RS、RW、EN分別改到P1.3、P1.4、P1.5。建議你自己動手喲,這樣才好玩。
作者: IdeaMing    時間: 2021-1-20 09:19
做的不錯,具有實用價值的東西才是好東西!
作者: 梁廷明    時間: 2021-1-27 14:07
3D外殼想做來著、
作者: noway_r    時間: 2021-2-4 11:58
正需要這個,看著精度挺不錯,下載學(xué)習(xí),屏幕能小型化點便攜就更好了
作者: kkk2020    時間: 2021-2-6 22:22
下面那行挺空的,加個電壓顯示就完美了,這個比較實用。我是買的成品毫安和微安表改的。測試脈沖型負(fù)載就換成指針微安表,數(shù)碼管的反應(yīng)跟不上
作者: ycs89554171    時間: 2021-2-24 11:46

做的不錯,下載學(xué)習(xí),
作者: 18176214303    時間: 2021-2-25 14:15
C程序小白入門 請教currentvalue=currentvalue*0.6445; //ADC平均值轉(zhuǎn)化成uA電流值  這個0.6445如何的得來的
作者: zsw3721    時間: 2021-2-25 15:50
18176214303 發(fā)表于 2021-2-25 14:15
C程序小白入門 請教currentvalue=currentvalue*0.6445; //ADC平均值轉(zhuǎn)化成uA電流值  這個0.6445如何的得來 ...

10位ADC有1024個采樣分辨值,采樣獲得的值A(chǔ)DC=Vadc * (1024/Vcc),連續(xù)采樣8次獲得ADC平均值先賦給currentvalue。
微安采樣電阻100歐,運放放大50倍,則AD通道的采樣電壓為Vadc=I(A)*100歐*50=I(uA)*100*50/1000000,代入上式,可算得I(uA)=currentvalue*3.3*1000000/(1024*100*50)=currentvalue*0.6445.

作者: 18176214303    時間: 2021-3-1 10:25
zsw3721 發(fā)表于 2021-2-25 15:50
10位ADC有1024個采樣分辨值,采樣獲得的值A(chǔ)DC=Vadc * (1024/Vcc),連續(xù)采樣8次獲得ADC平均值先賦給curren ...

非常感謝 學(xué)習(xí)了
作者: 海闊天空8    時間: 2021-3-1 12:40
液晶顯示就不能用中文嗎?!
作者: aktuan007    時間: 2021-3-1 12:58
zsw3721 發(fā)表于 2020-12-26 17:08
新增NTC測溫功能和秒表功能,采樣和顯示刷新周期由定時器控制。
NTC用的是P1.0口,因為電流采樣很精確, ...

樓主能貼的元件清單不
作者: 18176214303    時間: 2021-3-1 16:39
zsw3721 發(fā)表于 2021-2-25 15:50
10位ADC有1024個采樣分辨值,采樣獲得的值A(chǔ)DC=Vadc * (1024/Vcc),連續(xù)采樣8次獲得ADC平均值先賦給curren ...

電路上,實際是51倍放大吧,計算按50計算
作者: zsw3721    時間: 2021-3-1 21:42
18176214303 發(fā)表于 2021-3-1 16:39
電路上,實際是51倍放大吧,計算按50計算

微安檔的運算放大器就是按50倍放大的,你可以看一下差分放大器的放大倍數(shù)計算公式。
作者: 18176214303    時間: 2021-3-2 08:47
zsw3721 發(fā)表于 2021-3-1 21:42
微安檔的運算放大器就是按50倍放大的,你可以看一下差分放大器的放大倍數(shù)計算公式。

嗯,學(xué)習(xí)了
作者: paladina    時間: 2021-3-18 08:54
好東西,在制作一個 耐壓測試儀正好用到參考
作者: paladina    時間: 2021-3-18 09:43
建議在 100Ω電阻兩端并聯(lián)一個正向壓降(Vf)低一點的肖特基二極管,如VS-10BQ015HM3(210mV @ 1A )上正下負(fù) ,保證 設(shè)備待機(jī)突變?yōu)殚_機(jī)時 R5兩端壓降不影響設(shè)備工作
作者: 大漠游民    時間: 2021-3-18 09:48


做的不錯,學(xué)習(xí)學(xué)習(xí)。
作者: zsw3721    時間: 2021-3-18 14:23
paladina 發(fā)表于 2021-3-18 09:43
建議在 100Ω電阻兩端并聯(lián)一個正向壓降(Vf)低一點的肖特基二極管,如VS-10BQ015HM3(210mV @ 1A )上正下 ...

不錯的建議。謝謝。
作者: 3486635230    時間: 2021-3-20 21:53
照著樓主的資料,做一個
作者: c51流浪者    時間: 2021-4-2 08:45
感謝分享,能出個數(shù)碼管顯示的版本就好了,這樣成本低一點
作者: cooleaf    時間: 2021-4-2 11:24
設(shè)計還是比較巧的,謝謝樓主無私分享!!
作者: zsw3721    時間: 2021-4-2 20:37
c51流浪者 發(fā)表于 2021-4-2 08:45
感謝分享,能出個數(shù)碼管顯示的版本就好了,這樣成本低一點

數(shù)碼管的功耗太大,顯示的內(nèi)容又有限。這塊LCD1602 3.3V的屏大概7塊錢,也能接受吧。
作者: hnqylgq    時間: 2021-6-21 11:35
感謝樓主分享,樓主還可以看到這個帖子么,請教下,單片機(jī)燒錄時選用多大的晶振頻率?謝謝!
作者: zsw3721    時間: 2021-6-21 21:34
hnqylgq 發(fā)表于 2021-6-21 11:35
感謝樓主分享,樓主還可以看到這個帖子么,請教下,單片機(jī)燒錄時選用多大的晶振頻率?謝謝!

選的內(nèi)部6M的RC頻率。
作者: maozj    時間: 2021-6-24 10:32
謝謝分享!正在學(xué)習(xí)51單片機(jī)。
作者: KinHimTang    時間: 2021-7-3 08:55
樓主, 有沒有測試過AD跳動幾個碼
作者: zsw3721    時間: 2021-7-3 11:56
KinHimTang 發(fā)表于 2021-7-3 08:55
樓主, 有沒有測試過AD跳動幾個碼

拿直流源接色環(huán)電阻,毫安和微安檔測量值都很穩(wěn)定,只波動1mA和1uA左右。
作者: SURUBU1976    時間: 2021-7-22 03:22
學(xué)習(xí)下,如果用彩屏更炫耀,下來看看
作者: SURUBU1976    時間: 2021-7-22 03:45
建議L358 VCC加R C濾波好的,
作者: wjqzywmm    時間: 2021-7-22 22:42
本帖最后由 wjqzywmm 于 2021-7-24 11:49 編輯

感謝樓主分享,有個小疑問:Get_Current1()中adc結(jié)果為什么要循環(huán)左移呢?小于8直接給數(shù)組賦值應(yīng)該也可以吧。
今天改造自己的程序,明白了循環(huán)左移的意義

作者: yangxf0120    時間: 2021-7-22 23:21
謝謝分享DIY毫安微安電流表
作者: suqianfu    時間: 2021-8-2 16:21
kkk2020 發(fā)表于 2021-2-6 22:22
下面那行挺空的,加個電壓顯示就完美了,這個比較實用。我是買的成品毫安和微安表改的。測試脈沖型負(fù)載就換 ...

提高一下刷新速度就好很多了
作者: 老韓    時間: 2021-8-6 06:55
做的不錯,具有實用價值的東西才是好東西!
作者: Coolguyisme    時間: 2021-9-18 21:57
電流檢測的端口是串聯(lián)在電路中檢測,經(jīng)過運放出來需要接到單片機(jī)的adc接口上嗎?
作者: 13356013356    時間: 2021-9-19 13:54
太棒了,做的實在是太好了!還有精致的外殼!
作者: 勇往直前05    時間: 2021-10-22 16:31
請問下輸入端沒有輸入時,運放還是有一定電壓輸出。這個問題怎么克服?

作者: zsw3721    時間: 2021-10-22 21:59
勇往直前05 發(fā)表于 2021-10-22 16:31
請問下輸入端沒有輸入時,運放還是有一定電壓輸出。這個問題怎么克服?

這個運放有一定的零點漂移,程序中做了處理,減去了一個OFFSET
作者: zb651017    時間: 2021-12-4 20:11
好的資料,值得收藏借鑒。
作者: qwa1234    時間: 2022-1-6 14:06
lovexulu 發(fā)表于 2020-12-26 20:11
不用提供Avref 15w408內(nèi)部有1.19V基準(zhǔn)。

樓主用的stc15w內(nèi)部基準(zhǔn)是1.27,誤差比較大,adc參考電壓是vcc,在vcc不穩(wěn)定的情況下才需要用內(nèi)部基準(zhǔn)先算出vcc,vcc穩(wěn)定的情況下沒必要用到基準(zhǔn)電壓
作者: 無名氏1957    時間: 2022-1-18 16:34
原理圖和PCB.rar (10.88 MB, 下載次數(shù): 351)
內(nèi)容如下:
currentmeter.PrjPCB
currentmeter.PrjPCBStructure
Design Rule Check - PCB1.drc
Design Rule Check - PCB1.html
DocuCentre_SC2020_x32@1716_451690.exe
PCB1.PcbDoc
PCB1.PcbDoc.htm
PCB1.PcbDocPreview
PCB1 PCB ECO 2020-12-11 12-51-16.LOG
PCB1 PCB ECO 2020-12-11 17-56-19.LOG
PCB1 PCB ECO 2020-12-11 18-01-24.LOG
PCB1 PCB ECO 2020-12-11 18-08-35.LOG
PCB1 PCB ECO 2020-12-11 18-38-07.LOG
PCB1 PCB ECO 2020-12-11 8-14-41.LOG
Sheet1 SCH ECO 2020-12-10 16-14-31.LOG
Sheet1 SCH ECO 2020-12-10 16-20-19.LOG
Sheet1 SCH ECO 2020-12-10 16-20-40.LOG
Sheet1 SCH ECO 2020-12-10 16-20-55.LOG
Design Rule Check - PCB1.drc
Design Rule Check - PCB1.html
Sheet1.SchDoc
Sheet1.SchDocPreview
PCB1.PcbDocPreview
Sheet1.SchDocPreview
現(xiàn)有一事不明, 就是這原理圖和PCB 圖要如何打開,或是能清楚一二, 就好了.
作者: 礦山的生活    時間: 2022-3-23 23:17
只想看下原理圖
作者: diy619    時間: 2022-3-27 08:17
請問電流檢測輸入端可以直接串聯(lián)在產(chǎn)品電源正極的回路上嗎?比如24V電源正的回路上。不會把LM358整壞吧?
作者: zsw3721    時間: 2022-3-27 11:55
diy619 發(fā)表于 2022-3-27 08:17
請問電流檢測輸入端可以直接串聯(lián)在產(chǎn)品電源正極的回路上嗎?比如24V電源正的回路上。不會把LM358整壞吧?

不能超量程使用。設(shè)定的毫安檔量程是0-200mA。如果回路電流太大,在檢流電阻上產(chǎn)生較大的電壓可能會損壞檢流電阻和運放電路。
作者: diy619    時間: 2022-3-27 15:31
zsw3721 發(fā)表于 2022-3-27 11:55
不能超量程使用。設(shè)定的毫安檔量程是0-200mA。如果回路電流太大,在檢流電阻上產(chǎn)生較大的電壓可能會損壞 ...

謝謝回復(fù)!超量程使用是有可能會損壞運放電路。我的意思是你實際使用時,將電流檢測輸入端串聯(lián)在電源正端應(yīng)該也是沒有問題的吧,比如我把電流表串聯(lián)在48V電源正極端測量電流。
作者: zsw3721    時間: 2022-3-28 09:50
diy619 發(fā)表于 2022-3-27 15:31
謝謝回復(fù)!超量程使用是有可能會損壞運放電路。我的意思是你實際使用時,將電流檢測輸入端串聯(lián)在電源正端 ...

沒有問題的。我就是串在48V電池組正極與保護(hù)板之間使用的。
作者: diy619    時間: 2022-3-28 15:56
zsw3721 發(fā)表于 2022-3-28 09:50
沒有問題的。我就是串在48V電池組正極與保護(hù)板之間使用的。

好的,謝謝!
作者: nyabin    時間: 2022-3-31 11:29
程序書寫工整、清晰!適合下載學(xué)習(xí)。
作者: qq603599910    時間: 2022-4-1 14:37
LM358 用國產(chǎn)的嗎?我之前測試過兩款國產(chǎn)358,漂移和線性讓我只敢當(dāng)電壓比較器用,當(dāng)然確實是可以軌到軌運行.
作者: rayo    時間: 2022-4-20 16:29
請問電流輸入輸出口要連接什么
作者: zsw3721    時間: 2022-4-21 08:46
rayo 發(fā)表于 2022-4-20 16:29
請問電流輸入輸出口要連接什么

要串連在需要測量電流的地方,只能單向使用注意電流方向。
作者: ralphtw    時間: 2022-4-21 17:17
很棒的設(shè)計, very good skill
作者: zhl411022    時間: 2022-5-18 15:42
用tp09會好點嗎
作者: linyinyun06    時間: 2022-5-19 14:57
為什么我按樓主的PCB圖打的板,下載同樣的程序,測試出來的電流微安波動很大?
作者: yaoyao2022    時間: 2022-5-19 20:53
很給力,是在用心做產(chǎn)品的。
作者: lihui2558    時間: 2022-5-21 08:43
說實話,做這個開源精神非常贊,但是這個誤差絕對是非常大的,選用的元器件遠(yuǎn)遠(yuǎn)達(dá)不到UA要求
作者: szmj    時間: 2022-6-10 09:19
太贊了,沒積分了,只能看看
作者: ccczzzyy    時間: 2022-6-10 09:41
最好也能測量交流電流。
作者: wuwei520    時間: 2022-6-10 11:52
這個表思路非常不錯啊
作者: yygdzjs    時間: 2022-6-10 20:36
看了幾張圖片,業(yè)余用用,覺得還不錯,想下載看看.
作者: ccczzzyy    時間: 2022-6-11 12:25
原理圖和pcb是AD格式的 只能用AD打開哦

作者: ccczzzyy    時間: 2022-6-11 15:47
zsw3721 發(fā)表于 2020-12-26 17:08
新增NTC測溫功能和秒表功能,采樣和顯示刷新周期由定時器控制。
NTC用的是P1.0口,因為電流采樣很精確, ...

謝謝樓主的分享,能否將原理圖和pcb轉(zhuǎn)成圖中要求格式。謝謝。因為 我用立創(chuàng)EDA,原格式打不開。


作者: ccczzzyy    時間: 2022-6-12 08:54
zsw3721 發(fā)表于 2021-10-22 21:59
這個運放有一定的零點漂移,程序中做了處理,減去了一個OFFSET

可以用op07試試,零票幾乎沒有‘’
作者: dl0720    時間: 2022-6-15 21:01
非常不錯,正需要到這資料
作者: yctjs    時間: 2022-6-16 09:23
好東西!樓主用心了!學(xué)習(xí)學(xué)習(xí)!
作者: jxf19    時間: 2022-7-8 13:29
不錯哦,找了好很久才找到你這個毫安和微安的檢測電路
作者: jxf19    時間: 2022-7-11 09:09
用LM258是不是可以代替LM358?有LM258現(xiàn)成的
作者: kiki900330    時間: 2022-7-12 19:17
result = ADC_RES<<2|ADC_RESL;    //讀取10位轉(zhuǎn)換結(jié)果保存到result
這句確定可以正常運行嗎?ADC_RES是8位的值,左移兩位就會把高兩位結(jié)果丟掉
應(yīng)該先把ADC_RES的值賦值給一個16位變量后再左移
作者: lksbbs    時間: 2022-7-12 20:15
93mxt 發(fā)表于 2021-1-19 22:45
樓主你好,我的MCU是20P 腳的能幫改一下程序嗎

改腳位都需要人幫忙,你咋混到工程師的哦
作者: lksbbs    時間: 2022-7-12 20:31
樓主有沒有用16位或更高位的模數(shù)芯片做電壓表,一次測量0.1uA 到6mA  這樣,我現(xiàn)在糾結(jié)取樣電阻,本想著使用個500Ω大電阻,這樣就不需要放大電路了, 但是又測量低電壓時電流上不去, 不想使用放大電路和切換電路如何搞定這個超低電壓測量的問題呢?主要是速度和同時測量數(shù)量太多,使用切換電路,電路就太臃腫,速度也上不去.
作者: 紅花無常    時間: 2022-7-16 22:41
大俠,能不能問一下,這個能測交流嗎?我有一個實驗,要測比較微弱的次級線圈的感應(yīng)電流或電壓,不用很準(zhǔn)確,甚至測出多少值都無所謂,只要知道有電流還是沒有電流即可,可以用這個嗎?
作者: n0si9na1    時間: 2022-7-17 00:44
感謝分享,雖然是兩年前的貼子,感覺淘到寶了
作者: yygdzjs    時間: 2022-7-20 08:54
使用 STC15W408AS這個型號挺多人用的,有時間找一下;覺得挺好, 對于UA電流測試學(xué)習(xí)一下.
作者: raymondau    時間: 2022-8-12 22:22
請問樓主TL431那里的C5和C6主要起到什么作用?需要用到4.7UF的陶瓷貼片電容?能用其他容量的代替嗎?

作者: raymondau    時間: 2022-8-12 22:23
請問樓主TL431那里的C5和C6主要起到什么作用?需要用到4.7UF的陶瓷貼片電容?能用其他容量的代替嗎?
作者: wufa1986    時間: 2022-8-13 08:51
這還是手動切換啊,其實完全可以做到軟件自動切換
作者: 13872888583    時間: 2022-8-13 09:32
好東西,感謝樓主,
作者: wellhope    時間: 2022-8-17 08:14
請問這個NTC的ADC采樣值怎么計算出來的?謝謝!
作者: wellhope    時間: 2022-8-17 08:17
請問一下樓主,NTC的ADC值是怎么算出來的?謝謝!
作者: heitudi    時間: 2022-9-4 23:36
建議運放端加基準(zhǔn)偏置電源,用差分放大器的效果會更好,還有檔位的切換可以考慮加mos管來控制
作者: lzh1762    時間: 2022-9-6 09:08
請問下有這個磨具的鏈接可以分享下嗎?
作者: javahou    時間: 2022-9-6 22:12
qq603599910 發(fā)表于 2022-4-1 14:37
LM358 用國產(chǎn)的嗎?我之前測試過兩款國產(chǎn)358,漂移和線性讓我只敢當(dāng)電壓比較器用,當(dāng)然確實是可以軌到軌運行.

什么牌子的國產(chǎn),雜牌的話,還是得注意點
作者: cdlongbo    時間: 2022-9-20 16:47
很有學(xué)習(xí)意義。
作者: luting    時間: 2022-9-21 08:53
不錯!謝謝樓主分享,如果可以再分享個套件鏈接。
作者: shuiquan3    時間: 2022-9-28 20:31
太棒了,我一直想制作一個
作者: shuiquan3    時間: 2022-9-28 20:33
太棒了,我一直想制作一個
作者: zmc419    時間: 2022-10-2 10:17
LM358失調(diào)電壓怎么樣處理
作者: yyzf998    時間: 2022-10-20 23:15
怎么提升PCB文件有病毒呢?什么情況?
作者: dyx811    時間: 2022-10-21 19:37
我記得LM358靈敏度沒有做到如此之高啊,達(dá)到100μV,樓主是如何做到的。

作者: dyx811    時間: 2022-10-21 19:44
dyx811 發(fā)表于 2022-10-21 19:37
我記得LM358靈敏度沒有做到如此之高啊,達(dá)到100μV,樓主是如何做到的。

358靈敏度(或者分辨率)應(yīng)該在1000μV(1mV)很多書籍都是這么解釋的。
按電路1μA采集到的電壓是100μV,我不確定358能不能檢測的到,我很多使用的是OP07.
作者: dyx811    時間: 2022-10-21 19:47
dyx811 發(fā)表于 2022-10-21 19:37
我記得LM358靈敏度沒有做到如此之高啊,達(dá)到100μV,樓主是如何做到的。

好多技術(shù)書籍上都說358可以能做到1mV的,但這個電路以1μA算,得到的電壓是100μV,358能反應(yīng)出來,實在想不通。
這么微弱的信號我習(xí)慣用OP07
作者: 張國民    時間: 2022-10-25 23:03
dyx811 發(fā)表于 2022-10-21 19:47
好多技術(shù)書籍上都說358可以能做到1mV的,但這個電路以1μA算,得到的電壓是100μV,358能反應(yīng)出來,實在 ...

到哪里能買到便宜又好的運放
作者: 小白艾世雄    時間: 2022-11-4 09:36
感謝樓主分享!最近關(guān)注數(shù)字電源,看帖回帖賺金子。




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 欧美日韩国产一区二区三区 | 久久精品亚洲国产 | 99精品国产一区二区三区 | 亚洲天堂精品久久 | 三级黄视频在线观看 | 拍真实国产伦偷精品 | 国产一区高清 | 日韩在线资源 | 亚洲精视频 | 91精品国产91久久久久久 | 精品欧美一区二区三区久久久 | 欧美亚洲国产日韩 | 午夜在线影院 | 精品小视频 | а√中文在线8 | av不卡一区 | 成人在线小视频 | 亚洲国产欧美一区 | 麻豆av在线| 日韩伦理电影免费在线观看 | 91av在线免费播放 | 欧美老少妇一级特黄一片 | 日韩视频a | 色888www视频在线观看 | 久久久久久免费精品一区二区三区 | 在线免费观看黄a | 在线小视频 | 国产在线视频在线观看 | 999热精品视频 | 久久这里只有精品首页 | 蜜月aⅴ免费一区二区三区 99re在线视频 | 久久影院一区 | 97精品超碰一区二区三区 | 九九久久在线看 | 久久综合国产 | 激情欧美一区二区三区 | 亚洲成人免费视频 | 婷婷精品 | japanhd美女动| 国产精品视频网 | 午夜精品一区二区三区在线 |