找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 909|回复: 16
打印 上一主题 下一主题
收起左侧

关于精密电压源电路

  [复制链接]
跳转到指定楼层
楼主
ID:1064668 发表于 2023-3-8 12:03 来自手机 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
需要做一个电压0-100mv,分辨率10uV的电压源,没做过类似的,大佬们有相关推荐吗,精密器件那些比较好
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:230500 发表于 2023-3-8 13:52 | 只看该作者
没有推荐, 因为经济能力有限;见都没见过!即使买这样的成品电源应该都不便宜!
回复

使用道具 举报

板凳
ID:332444 发表于 2023-3-8 14:39 | 只看该作者
千进制/10=百进制,这样的电压源做什么?可以用大范围可调电压经过精密分压获得.
回复

使用道具 举报

地板
ID:883242 发表于 2023-3-8 16:40 | 只看该作者
你先找一台能够测试这么低电压的台式万用表再说。
回复

使用道具 举报

5#
ID:1034262 发表于 2023-3-8 17:05 | 只看该作者
其实,我最难回答这种没有相机计数要求参数的问题。

楼主只要一个电压0-100mv,分辨率10uV的电压源,没有说交流、直流,那就默认直流。
没有电流要求,没有精度,没有控制方式要求,太好了,一个TL431输出2.5V,一个1K电位器串联24K电阻,接到2.5V上,电位器滑动端输出就是0~100mV,分辨率理论上无穷小。
回复

使用道具 举报

6#
ID:1057925 发表于 2023-3-8 18:47 | 只看该作者
随便买一个可调电源,按照比例电阻分压就可以了
回复

使用道具 举报

7#
ID:401564 发表于 2023-3-8 21:50 | 只看该作者
基本可以确定,这是一个新手
参数都是想当然的去确定一个参数,然后就哐哐哐的......要这么干 ,这那么干........
回复

使用道具 举报

8#
ID:491577 发表于 2023-3-8 22:10 | 只看该作者
coody_sz 发表于 2023-3-8 17:05
其实,我最难回答这种没有相机计数要求参数的问题。

楼主只要一个电压0-100mv,分辨率10uV的电压源,没 ...

再加一个运算放大器做电压跟随就有20mA输出能力了。
回复

使用道具 举报

9#
ID:460466 发表于 2023-3-9 08:39 | 只看该作者
温度影响决不可忽略了!要在恒温室里工作?
回复

使用道具 举报

10#
ID:879348 发表于 2023-3-9 09:29 | 只看该作者
10uV是什么概念,感觉一条导线感应环境的电磁波就有可能产生这个电压
回复

使用道具 举报

11#
ID:1034262 发表于 2023-3-9 12:07 | 只看该作者
hhh402 发表于 2023-3-8 22:10
再加一个运算放大器做电压跟随就有20mA输出能力了。

楼主没有输出电流要求。
回复

使用道具 举报

12#
ID:584814 发表于 2023-3-9 14:36 | 只看该作者
几毛钱买个干电池,再用个100K的可调电阻最好是多圈的那种就可以,呵呵。
要知道就算免费随便可以有了高精度电表,准确测量10uV环境也是呵呵呵的。
回复

使用道具 举报

13#
ID:688692 发表于 2023-3-10 10:21 | 只看该作者
楼主是要做热电偶信号发生器?去看看现成的产品吧。工业信号发生器(过程校准仪)
回复

使用道具 举报

14#
ID:883242 发表于 2023-3-10 19:47 | 只看该作者
如果是过程仪表校准仪的话,应该用闭环控制,单片机控制一个分辨率很高但是精度不用很好的DAC输出电压,然后用一个带高精度基准源的ADC测试并调整DAC输出即可。
回复

使用道具 举报

15#
ID:382454 发表于 2023-3-13 11:23 | 只看该作者
新手好象很难喔!!!!!!!!!!!!!!!
回复

使用道具 举报

16#
ID:155507 发表于 2023-3-13 19:10 | 只看该作者
单片机控制一个分辨率很高但是精度不用很好的16位DAC输出电压

单片机源程序如下:
  1. #include <reg51.h>   //包含此头文件后,里面声明的寄存器不需要再手动输入,避免重复定义
  2. #include <stdio.h>
  3. #define uchar unsigned char   //对数据类型进行声明定义
  4. #define uint  unsigned int

  5. #define LCD1602_DB P0
  6. sbit LCD1602_RS = P1^0;  //寄存器选择信号 H:数据寄存器          L:指令寄存器
  7. sbit LCD1602_RW = P1^1;  //寄存器选择信号 H:读取寄存器          L:写入寄存器
  8. sbit LCD1602_E  = P1^2;  //片选信号   下降沿触发

  9. sbit LTC1655_DIN = P3^5;  //数据
  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 液晶写入一字节命令,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;  //下降沿将数据写入LCD1602
  32. }
  33. /* 向 LCD1602 液晶写入一字节数据,dat-待写入数据值 */
  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;  //下降沿将数据写入LCD1602
  42. }
  43. /* 设置显示 RAM 起始地址,亦即光标位置,(x,y)-对应屏幕上的字符坐标 */
  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); //设置 RAM 地址
  52. }
  53. /* 在液晶上显示字符串,(x,y)-对应屏幕上的起始坐标,
  54. str-字符串指针,len-需显示的字符长度 */
  55. void LcdShowStr(unsigned char x, unsigned char y,
  56. unsigned char *str, unsigned char len)
  57. {
  58.         LcdSetCursor(x, y); //设置起始地址
  59.         while (len--) //连续写入 len 个字符数据
  60.         {
  61.                 LcdWriteDat(*str++); //先取 str 指向的数据,然后 str 自加 1
  62.         }
  63. }

  64. /* 初始化 1602 液晶 */
  65. void InitLcd1602()
  66. {
  67.         LcdWriteCmd(0x38); //16*2 显示,5*7 点阵,8 位数据接口
  68.         LcdWriteCmd(0x0C); //显示器开,光标关闭
  69.         LcdWriteCmd(0x06); //文字不动,地址自动+1
  70.         LcdWriteCmd(0x01); //清屏
  71. }

  72. //LTC1655的驱动代码程序
  73. void LTC1655_Write(unsigned int LTC1655_out) {
  74.     unsigned char bitctr = 16;  //输出16位数据

  75.     LTC1655_CS   = 0;  //使能拉低将数据写入LTC1655
  76.         do
  77.         { if(!(LTC1655_out & 0x8000))        // if b15 is a '0' bit
  78.         LTC1655_DIN = 0;    //输出数据0
  79.                 else
  80.                 LTC1655_DIN = 1;    //输出数据1
  81.                 LTC1655_CLK = 0;    //拉低为下个时钟数据作准备
  82.                 delay(5);
  83.                 LTC1655_CLK = 1;    //输出时钟
  84.                 LTC1655_out <<= 1;  //准备下一位数据
  85.         } while(--bitctr);

  86.     LTC1655_CS   = 1;
  87. }


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

  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);  //设置光标位置
  111.                 LcdWriteDat('0' + (OutPutValue / 10000));   //显示百位; //显示内容
  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位数据
  118.                         
  119.     }
  120. }


复制代码




回复

使用道具 举报

17#
ID:883242 发表于 2023-3-13 22:02 | 只看该作者
angmall 发表于 2023-3-13 19:10
单片机控制一个分辨率很高但是精度不用很好的16位DAC输出电压

OP07精度在这里还是不够用,换chopper stabilized amplifier
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表