標題: 關(guān)于精密電壓源電路 [打印本頁]

作者: 4850    時間: 2023-3-8 12:03
標題: 關(guān)于精密電壓源電路
需要做一個電壓0-100mv,分辨率10uV的電壓源,沒做過類似的,大佬們有相關(guān)推薦嗎,精密器件那些比較好
作者: a399288395    時間: 2023-3-8 13:52
沒有推薦, 因為經(jīng)濟能力有限;見都沒見過!即使買這樣的成品電源應(yīng)該都不便宜!
作者: xianfajushi    時間: 2023-3-8 14:39
千進制/10=百進制,這樣的電壓源做什么?可以用大范圍可調(diào)電壓經(jīng)過精密分壓獲得.
作者: Hephaestus    時間: 2023-3-8 16:40
你先找一臺能夠測試這么低電壓的臺式萬用表再說。
作者: coody_sz    時間: 2023-3-8 17:05
其實,我最難回答這種沒有相機計數(shù)要求參數(shù)的問題。

樓主只要一個電壓0-100mv,分辨率10uV的電壓源,沒有說交流、直流,那就默認直流。
沒有電流要求,沒有精度,沒有控制方式要求,太好了,一個TL431輸出2.5V,一個1K電位器串聯(lián)24K電阻,接到2.5V上,電位器滑動端輸出就是0~100mV,分辨率理論上無窮小。
作者: 黑色蜂鳥    時間: 2023-3-8 18:47
隨便買一個可調(diào)電源,按照比例電阻分壓就可以了
作者: Y_G_G    時間: 2023-3-8 21:50
基本可以確定,這是一個新手
參數(shù)都是想當然的去確定一個參數(shù),然后就哐哐哐的......要這么干 ,這那么干........
作者: hhh402    時間: 2023-3-8 22:10
coody_sz 發(fā)表于 2023-3-8 17:05
其實,我最難回答這種沒有相機計數(shù)要求參數(shù)的問題。

樓主只要一個電壓0-100mv,分辨率10uV的電壓源,沒 ...

再加一個運算放大器做電壓跟隨就有20mA輸出能力了。
作者: 海闊天空8    時間: 2023-3-9 08:39
溫度影響決不可忽略了!要在恒溫室里工作?
作者: wufa1986    時間: 2023-3-9 09:29
10uV是什么概念,感覺一條導線感應(yīng)環(huán)境的電磁波就有可能產(chǎn)生這個電壓
作者: coody_sz    時間: 2023-3-9 12:07
hhh402 發(fā)表于 2023-3-8 22:10
再加一個運算放大器做電壓跟隨就有20mA輸出能力了。

樓主沒有輸出電流要求。
作者: man1234567    時間: 2023-3-9 14:36
幾毛錢買個干電池,再用個100K的可調(diào)電阻最好是多圈的那種就可以,呵呵。
要知道就算免費隨便可以有了高精度電表,準確測量10uV環(huán)境也是呵呵呵的。
作者: cnos    時間: 2023-3-10 10:21
樓主是要做熱電偶信號發(fā)生器?去看看現(xiàn)成的產(chǎn)品吧。工業(yè)信號發(fā)生器(過程校準儀)

作者: Hephaestus    時間: 2023-3-10 19:47
如果是過程儀表校準儀的話,應(yīng)該用閉環(huán)控制,單片機控制一個分辨率很高但是精度不用很好的DAC輸出電壓,然后用一個帶高精度基準源的ADC測試并調(diào)整DAC輸出即可。
作者: univers    時間: 2023-3-13 11:23
新手好象很難喔。。。。。。。。。。。。。!
作者: angmall    時間: 2023-3-13 19:10
單片機控制一個分辨率很高但是精度不用很好的16位DAC輸出電壓

單片機源程序如下:
  1. #include <reg51.h>   //包含此頭文件后,里面聲明的寄存器不需要再手動輸入,避免重復定義
  2. #include <stdio.h>
  3. #define uchar unsigned char   //對數(shù)據(jù)類型進行聲明定義
  4. #define uint  unsigned int

  5. #define LCD1602_DB P0
  6. sbit LCD1602_RS = P1^0;  //寄存器選擇信號 H:數(shù)據(jù)寄存器          L:指令寄存器
  7. sbit LCD1602_RW = P1^1;  //寄存器選擇信號 H:讀取寄存器          L:寫入寄存器
  8. sbit LCD1602_E  = P1^2;  //片選信號   下降沿觸發(fā)

  9. sbit LTC1655_DIN = P3^5;  //數(shù)據(jù)
  10. sbit LTC1655_CLK = P3^6;  //時鐘
  11. sbit LTC1655_CS  = P3^7;  //使能片選信號

  12. sbit KEY1  = P1^6; //按鍵用于加
  13. sbit KEY2  = P1^7; //按鍵用于減

  14. uint OutPutValue =1000; //定義毫伏輸出變量

  15. static void delay(unsigned char ms) //延時
  16. {
  17.         unsigned char i;
  18.         while(ms--)
  19.         {
  20.                 for(i = 0; i< 115; i++);
  21.         }
  22. }

  23. /* 向 LCD1602 液晶寫入一字節(jié)命令,cmd-待寫入命令值 */
  24. void LcdWriteCmd(unsigned char cmd)
  25. {
  26.         LCD1602_RS = 0;
  27.         LCD1602_RW = 0;
  28.         LCD1602_DB = cmd;
  29.         LCD1602_E = 1;
  30.     delay(5);
  31.         LCD1602_E = 0;  //下降沿將數(shù)據(jù)寫入LCD1602
  32. }
  33. /* 向 LCD1602 液晶寫入一字節(jié)數(shù)據(jù),dat-待寫入數(shù)據(jù)值 */
  34. void LcdWriteDat(unsigned char dat)
  35. {
  36.         LCD1602_RS = 1;
  37.         LCD1602_RW = 0;
  38.         LCD1602_DB = dat;
  39.         LCD1602_E = 1;
  40.     delay(5);
  41.         LCD1602_E = 0;  //下降沿將數(shù)據(jù)寫入LCD1602
  42. }
  43. /* 設(shè)置顯示 RAM 起始地址,亦即光標位置,(x,y)-對應(yīng)屏幕上的字符坐標 */
  44. void LcdSetCursor(unsigned char x, unsigned char y)
  45. {
  46.         unsigned char addr;
  47.         if (y == 0) //由輸入的屏幕坐標計算顯示 RAM 的地址
  48.                 addr = 0x00 + x; //第一行字符地址從 0x00 起始
  49.         else
  50.                 addr = 0x40 + x; //第二行字符地址從 0x40 起始
  51.         LcdWriteCmd(addr | 0x80); //設(shè)置 RAM 地址
  52. }
  53. /* 在液晶上顯示字符串,(x,y)-對應(yīng)屏幕上的起始坐標,
  54. str-字符串指針,len-需顯示的字符長度 */
  55. void LcdShowStr(unsigned char x, unsigned char y,
  56. unsigned char *str, unsigned char len)
  57. {
  58.         LcdSetCursor(x, y); //設(shè)置起始地址
  59.         while (len--) //連續(xù)寫入 len 個字符數(shù)據(jù)
  60.         {
  61.                 LcdWriteDat(*str++); //先取 str 指向的數(shù)據(jù),然后 str 自加 1
  62.         }
  63. }

  64. /* 初始化 1602 液晶 */
  65. void InitLcd1602()
  66. {
  67.         LcdWriteCmd(0x38); //16*2 顯示,5*7 點陣,8 位數(shù)據(jù)接口
  68.         LcdWriteCmd(0x0C); //顯示器開,光標關(guān)閉
  69.         LcdWriteCmd(0x06); //文字不動,地址自動+1
  70.         LcdWriteCmd(0x01); //清屏
  71. }

  72. //LTC1655的驅(qū)動代碼程序
  73. void LTC1655_Write(unsigned int LTC1655_out) {
  74.     unsigned char bitctr = 16;  //輸出16位數(shù)據(jù)

  75.     LTC1655_CS   = 0;  //使能拉低將數(shù)據(jù)寫入LTC1655
  76.         do
  77.         { if(!(LTC1655_out & 0x8000))        // if b15 is a '0' bit
  78.         LTC1655_DIN = 0;    //輸出數(shù)據(jù)0
  79.                 else
  80.                 LTC1655_DIN = 1;    //輸出數(shù)據(jù)1
  81.                 LTC1655_CLK = 0;    //拉低為下個時鐘數(shù)據(jù)作準備
  82.                 delay(5);
  83.                 LTC1655_CLK = 1;    //輸出時鐘
  84.                 LTC1655_out <<= 1;  //準備下一位數(shù)據(jù)
  85.         } while(--bitctr);

  86.     LTC1655_CS   = 1;
  87. }


  88. void main(void)
  89. {
  90.         InitLcd1602(); //初始化液晶
  91.     LcdShowStr(0, 0, "Millivolt SigGen", 16); //毫伏信號發(fā)生器

  92.     while (1)
  93.     {
  94.                 if(KEY1==0) //按鍵加
  95.                 {
  96.                         delay(25);
  97.                         if(KEY1==0)
  98.                         {
  99.                                 OutPutValue++;
  100.                         }
  101.                 }
  102.                 if(KEY2==0) //按鍵減
  103.                 {
  104.                         delay(25);
  105.                         if(KEY2==0)
  106.                         {
  107.                                 OutPutValue--;
  108.                         }
  109.                 }
  110.                 LcdSetCursor(1, 1);  //設(shè)置光標位置
  111.                 LcdWriteDat('0' + (OutPutValue / 10000));   //顯示百位; //顯示內(nèi)容
  112.                 LcdWriteDat('0' + (OutPutValue / 1000% 10));
  113.                 LcdWriteDat('0' + (OutPutValue / 100 % 10));
  114.                 LcdWriteDat('.' );
  115.                 LcdWriteDat('0' + (OutPutValue / 10 % 10));
  116.                 LcdWriteDat('0' + (OutPutValue % 10));

  117.                 LTC1655_Write(OutPutValue); //輸出16位數(shù)據(jù)
  118.                         
  119.     }
  120. }


復制代碼





作者: Hephaestus    時間: 2023-3-13 22:02
angmall 發(fā)表于 2023-3-13 19:10
單片機控制一個分辨率很高但是精度不用很好的16位DAC輸出電壓

OP07精度在這里還是不夠用,換chopper stabilized amplifier




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1