找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 52809|回復(fù): 123
收起左側(cè)

DIY毫安微安電流表(單片機(jī)10位ADC+LM358)程序原理圖PCB及實(shí)物制作圖片

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

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

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

PCB實(shí)物.jpg

制作出來的成品實(shí)物圖如下:
內(nèi)部裝配.jpg

成品.jpg

微安檔精度:
微安檔精度1.jpg 微安檔精度2.jpg

毫安檔精度:
毫安檔精度1.jpg 毫安檔精度2.jpg


51hei.png 51hei.png 51hei.png

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

評分

參與人數(shù) 6黑幣 +141 收起 理由
AAA_MCU + 6 很給力!
diy619 + 18 共享資料的黑幣獎(jiǎng)勵(lì)!
topsjb + 5 程序書寫工整、清晰!適合下載學(xué)習(xí)。
ko44 + 7 共享資料的黑幣獎(jiǎng)勵(lì)!
kaixuan_27 + 5
admin + 100 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評分

回復(fù)

使用道具 舉報(bào)

ID:702386 發(fā)表于 2020-12-26 17:08 | 顯示全部樓層

效果圖

效果圖

新增NTC測溫功能和秒表功能,采樣和顯示刷新周期由定時(shí)器控制。
NTC用的是P1.0口,因?yàn)殡娏鞑蓸雍芫_,所以沒有使用基準(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

升級程序

評分

參與人數(shù) 1黑幣 +30 收起 理由
admin + 30 回帖助人的獎(jiǎng)勵(lì)!

查看全部評分

回復(fù)

使用道具 舉報(bào)

ID:328014 發(fā)表于 2020-12-24 20:10 | 顯示全部樓層
太棒了,我一直想制作一個(gè).下面是樓主的程序:
  1. /***************************************/
  2. /*     基于STC15W408AS的電流表設(shè)計(jì)     */
  3. /*     測量范圍0-200mA,0-400uA         */
  4. /*     創(chuàng)建者 :zsw                    */
  5. /*     創(chuàng)建時(shí)間: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個(gè)時(shí)鐘
  15. #define ADC_SPEED1    0x20    //ADC轉(zhuǎn)換速度,一次轉(zhuǎn)換需要360個(gè)時(shí)鐘
  16. #define ADC_SPEED2    0x40    //ADC轉(zhuǎn)換速度,一次轉(zhuǎn)換需要180個(gè)時(shí)鐘
  17. #define ADC_SPEED3    0x60    //ADC轉(zhuǎn)換速度,一次轉(zhuǎn)換需要90個(gè)時(shí)鐘

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

  19. sbit lcdrs=P3^2;    //LCD1602指令和數(shù)據(jù)寄存器選擇,高電平時(shí)為數(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í)函數(shù),執(zhí)行一次1毫秒,STC_ISP軟件給出 @6MHz 1T單片機(jī)
  33. 入口參數(shù):ms=延時(shí)毫秒數(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;         //短暫延時(shí)后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);   //初始化,讀寫一個(gè)字符后地址指針自動加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;     //實(shí)測零點(diǎn)漂移了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;        //電流值個(gè)位
  162.         write_com(0x80+0x0A);            //第1行第10個(gè)字符開始顯示
  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]);        //寫電流值個(gè)位
  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;     //實(shí)測零點(diǎn)漂移了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;            //電流值個(gè)位
  231.         write_com(0x80+0x40+0x0A);            //第2行第10個(gè)字符開始顯示
  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]);        //寫電流值個(gè)位
  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ù)制代碼
回復(fù)

使用道具 舉報(bào)

ID:430774 發(fā)表于 2020-12-24 21:17 | 顯示全部樓層
R8和R13有什么作用,可以去掉的吧
回復(fù)

使用道具 舉報(bào)

ID:739727 發(fā)表于 2020-12-25 00:53 | 顯示全部樓層
zx929747216 發(fā)表于 2020-12-24 21:17
R8和R13有什么作用,可以去掉的吧

提供運(yùn)放差分輸入偏置電流
回復(fù)

使用道具 舉報(bào)

ID:687694 發(fā)表于 2020-12-26 20:11 | 顯示全部樓層
不用提供Avref 15w408內(nèi)部有1.19V基準(zhǔn)。
回復(fù)

使用道具 舉報(bào)

ID:702386 發(fā)表于 2020-12-26 22:07 | 顯示全部樓層
lovexulu 發(fā)表于 2020-12-26 20:11
不用提供Avref 15w408內(nèi)部有1.19V基準(zhǔn)。

多謝指點(diǎn)!
回復(fù)

使用道具 舉報(bào)

ID:64053 發(fā)表于 2021-1-19 22:45 | 顯示全部樓層
zsw3721 發(fā)表于 2020-12-26 17:08
新增NTC測溫功能和秒表功能,采樣和顯示刷新周期由定時(shí)器控制。
NTC用的是P1.0口,因?yàn)殡娏鞑蓸雍芫_, ...

樓主你好,我的MCU是20P 腳的能幫改一下程序嗎
回復(fù)

使用道具 舉報(bào)

ID:702386 發(fā)表于 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。建議你自己動手喲,這樣才好玩。
回復(fù)

使用道具 舉報(bào)

ID:276663 發(fā)表于 2021-1-20 09:19 | 顯示全部樓層
做的不錯(cuò),具有實(shí)用價(jià)值的東西才是好東西!
回復(fù)

使用道具 舉報(bào)

ID:235954 發(fā)表于 2021-1-27 14:07 | 顯示全部樓層
3D外殼想做來著、
回復(fù)

使用道具 舉報(bào)

ID:390571 發(fā)表于 2021-2-4 11:58 | 顯示全部樓層
正需要這個(gè),看著精度挺不錯(cuò),下載學(xué)習(xí),屏幕能小型化點(diǎn)便攜就更好了
回復(fù)

使用道具 舉報(bào)

ID:576203 發(fā)表于 2021-2-6 22:22 | 顯示全部樓層
下面那行挺空的,加個(gè)電壓顯示就完美了,這個(gè)比較實(shí)用。我是買的成品毫安和微安表改的。測試脈沖型負(fù)載就換成指針微安表,數(shù)碼管的反應(yīng)跟不上
回復(fù)

使用道具 舉報(bào)

ID:632112 發(fā)表于 2021-2-24 11:46 | 顯示全部樓層

做的不錯(cuò),下載學(xué)習(xí),
回復(fù)

使用道具 舉報(bào)

ID:799716 發(fā)表于 2021-2-25 14:15 | 顯示全部樓層
C程序小白入門 請教currentvalue=currentvalue*0.6445; //ADC平均值轉(zhuǎn)化成uA電流值  這個(gè)0.6445如何的得來的
回復(fù)

使用道具 舉報(bào)

ID:702386 發(fā)表于 2021-2-25 15:50 | 顯示全部樓層
18176214303 發(fā)表于 2021-2-25 14:15
C程序小白入門 請教currentvalue=currentvalue*0.6445; //ADC平均值轉(zhuǎn)化成uA電流值  這個(gè)0.6445如何的得來 ...

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

使用道具 舉報(bào)

ID:799716 發(fā)表于 2021-3-1 10:25 | 顯示全部樓層
zsw3721 發(fā)表于 2021-2-25 15:50
10位ADC有1024個(gè)采樣分辨值,采樣獲得的值A(chǔ)DC=Vadc * (1024/Vcc),連續(xù)采樣8次獲得ADC平均值先賦給curren ...

非常感謝 學(xué)習(xí)了
回復(fù)

使用道具 舉報(bào)

ID:460466 發(fā)表于 2021-3-1 12:40 | 顯示全部樓層
液晶顯示就不能用中文嗎?!
回復(fù)

使用道具 舉報(bào)

ID:582255 發(fā)表于 2021-3-1 12:58 | 顯示全部樓層
zsw3721 發(fā)表于 2020-12-26 17:08
新增NTC測溫功能和秒表功能,采樣和顯示刷新周期由定時(shí)器控制。
NTC用的是P1.0口,因?yàn)殡娏鞑蓸雍芫_, ...

樓主能貼的元件清單不
回復(fù)

使用道具 舉報(bào)

ID:799716 發(fā)表于 2021-3-1 16:39 | 顯示全部樓層
zsw3721 發(fā)表于 2021-2-25 15:50
10位ADC有1024個(gè)采樣分辨值,采樣獲得的值A(chǔ)DC=Vadc * (1024/Vcc),連續(xù)采樣8次獲得ADC平均值先賦給curren ...

電路上,實(shí)際是51倍放大吧,計(jì)算按50計(jì)算
回復(fù)

使用道具 舉報(bào)

ID:702386 發(fā)表于 2021-3-1 21:42 | 顯示全部樓層
18176214303 發(fā)表于 2021-3-1 16:39
電路上,實(shí)際是51倍放大吧,計(jì)算按50計(jì)算

微安檔的運(yùn)算放大器就是按50倍放大的,你可以看一下差分放大器的放大倍數(shù)計(jì)算公式。
回復(fù)

使用道具 舉報(bào)

ID:799716 發(fā)表于 2021-3-2 08:47 | 顯示全部樓層
zsw3721 發(fā)表于 2021-3-1 21:42
微安檔的運(yùn)算放大器就是按50倍放大的,你可以看一下差分放大器的放大倍數(shù)計(jì)算公式。

嗯,學(xué)習(xí)了
回復(fù)

使用道具 舉報(bào)

ID:796531 發(fā)表于 2021-3-18 08:54 | 顯示全部樓層
好東西,在制作一個(gè) 耐壓測試儀正好用到參考
回復(fù)

使用道具 舉報(bào)

ID:796531 發(fā)表于 2021-3-18 09:43 | 顯示全部樓層
建議在 100Ω電阻兩端并聯(lián)一個(gè)正向壓降(Vf)低一點(diǎn)的肖特基二極管,如VS-10BQ015HM3(210mV @ 1A )上正下負(fù) ,保證 設(shè)備待機(jī)突變?yōu)殚_機(jī)時(shí) R5兩端壓降不影響設(shè)備工作

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評分

回復(fù)

使用道具 舉報(bào)

ID:138956 發(fā)表于 2021-3-18 09:48 | 顯示全部樓層


做的不錯(cuò),學(xué)習(xí)學(xué)習(xí)。
回復(fù)

使用道具 舉報(bào)

ID:702386 發(fā)表于 2021-3-18 14:23 | 顯示全部樓層
paladina 發(fā)表于 2021-3-18 09:43
建議在 100Ω電阻兩端并聯(lián)一個(gè)正向壓降(Vf)低一點(diǎn)的肖特基二極管,如VS-10BQ015HM3(210mV @ 1A )上正下 ...

不錯(cuò)的建議。謝謝。
回復(fù)

使用道具 舉報(bào)

ID:856401 發(fā)表于 2021-3-20 21:53 | 顯示全部樓層
照著樓主的資料,做一個(gè)
回復(fù)

使用道具 舉報(bào)

ID:92222 發(fā)表于 2021-4-2 08:45 | 顯示全部樓層
感謝分享,能出個(gè)數(shù)碼管顯示的版本就好了,這樣成本低一點(diǎn)
回復(fù)

使用道具 舉報(bào)

ID:430492 發(fā)表于 2021-4-2 11:24 | 顯示全部樓層
設(shè)計(jì)還是比較巧的,謝謝樓主無私分享!
回復(fù)

使用道具 舉報(bào)

ID:702386 發(fā)表于 2021-4-2 20:37 | 顯示全部樓層
c51流浪者 發(fā)表于 2021-4-2 08:45
感謝分享,能出個(gè)數(shù)碼管顯示的版本就好了,這樣成本低一點(diǎn)

數(shù)碼管的功耗太大,顯示的內(nèi)容又有限。這塊LCD1602 3.3V的屏大概7塊錢,也能接受吧。
回復(fù)

使用道具 舉報(bào)

ID:66328 發(fā)表于 2021-6-21 11:35 | 顯示全部樓層
感謝樓主分享,樓主還可以看到這個(gè)帖子么,請教下,單片機(jī)燒錄時(shí)選用多大的晶振頻率?謝謝!
回復(fù)

使用道具 舉報(bào)

ID:702386 發(fā)表于 2021-6-21 21:34 | 顯示全部樓層
hnqylgq 發(fā)表于 2021-6-21 11:35
感謝樓主分享,樓主還可以看到這個(gè)帖子么,請教下,單片機(jī)燒錄時(shí)選用多大的晶振頻率?謝謝!

選的內(nèi)部6M的RC頻率。
回復(fù)

使用道具 舉報(bào)

ID:816540 發(fā)表于 2021-6-24 10:32 | 顯示全部樓層
謝謝分享!正在學(xué)習(xí)51單片機(jī)。
回復(fù)

使用道具 舉報(bào)

ID:948569 發(fā)表于 2021-7-3 08:55 | 顯示全部樓層
樓主, 有沒有測試過AD跳動幾個(gè)碼
回復(fù)

使用道具 舉報(bào)

ID:702386 發(fā)表于 2021-7-3 11:56 | 顯示全部樓層
KinHimTang 發(fā)表于 2021-7-3 08:55
樓主, 有沒有測試過AD跳動幾個(gè)碼

拿直流源接色環(huán)電阻,毫安和微安檔測量值都很穩(wěn)定,只波動1mA和1uA左右。
回復(fù)

使用道具 舉報(bào)

ID:507641 發(fā)表于 2021-7-22 03:22 | 顯示全部樓層
學(xué)習(xí)下,如果用彩屏更炫耀,下來看看
回復(fù)

使用道具 舉報(bào)

ID:507641 發(fā)表于 2021-7-22 03:45 | 顯示全部樓層
建議L358 VCC加R C濾波好的,
回復(fù)

使用道具 舉報(bào)

ID:936913 發(fā)表于 2021-7-22 22:42 | 顯示全部樓層
本帖最后由 wjqzywmm 于 2021-7-24 11:49 編輯

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

使用道具 舉報(bào)

ID:27031 發(fā)表于 2021-7-22 23:21 | 顯示全部樓層
謝謝分享DIY毫安微安電流表
回復(fù)

使用道具 舉報(bào)

ID:718536 發(fā)表于 2021-8-2 16:21 | 顯示全部樓層
kkk2020 發(fā)表于 2021-2-6 22:22
下面那行挺空的,加個(gè)電壓顯示就完美了,這個(gè)比較實(shí)用。我是買的成品毫安和微安表改的。測試脈沖型負(fù)載就換 ...

提高一下刷新速度就好很多了
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表