找回密码
 立即注册

QQ登录

只需一步,快速开始

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

求指导数控直流稳压电源设计

  [复制链接]
回帖奖励 5 黑币 回复本帖可获得 5 黑币奖励! 每人限 2 次
跳转到指定楼层
楼主
我想用DAC0832,LM317来弄,知识浅薄,不懂这1,2问怎么弄,求指导!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

来自 2#
ID:213173 发表于 2020-8-7 11:01 | 只看该作者
本帖最后由 wulin 于 2020-8-7 15:58 编辑
学习学习ing 发表于 2020-8-6 20:51
我这该怎么样,当DAC0832的输出端给一个+,- 0.02v的电压通过LM324放大5倍,得到0.1v。然后到LM317进行输 ...

不必搞那么复杂,用PWM通过运放滤波放大控制LM317,输出电压通过运算可得,实际电路参数微调一下即可。运放最大输出电压=VCC-1.5V,所以用12V电源不行。LM324/358最大电源电压的32V,放心使用。仿真简图和示例程序如下:


  1. #include<reg52.h>
  2. #define key_S 10                                        //宏定义短按(约10ms)
  3. #define key_L key_S*35                        //宏定义长按(约500ms)
  4. #define key_I key_S*27                        //宏定义长按连+/-间隔(约120ms)
  5. #define uint unsigned int
  6. #define uchar unsigned char
  7. sbit OUT =P2^4;
  8. sbit key1=P2^5;
  9. sbit key2=P2^6;

  10. unsigned char code table[]={//共阳数码管段码"0~f-."
  11.                 0xc0,0xf9,0xa4,0xb0,
  12.                 0x99,0x92,0x82,0xf8,
  13.                 0x80,0x90,0x88,0x83,
  14.                 0xc6,0xa1,0x86,0x8e,0xbf,0x7f};
  15. uchar data dis_buf[4];
  16. unsigned char num=0;
  17. unsigned int count=0,V_IN;
  18. bit sign=0;

  19. void delay(unsigned int k)
  20. {
  21.         unsigned int i,j;
  22.         for(i=k;i>0;i--)
  23.                 for(j=110;j>0;j--);
  24. }

  25. void keyscan()    //按键扫描
  26. {
  27.         static unsigned int time=0;
  28.         if(!key1||!key2)
  29.         {
  30.                 time++;
  31.                 if(time>key_L)//长按有效
  32.                         time=key_I;//连+/-间隔

  33.                 if(time==key_S||time==key_L)//短按消抖+/-或长按连+/-
  34.                 {
  35.                         if(!key1)//++
  36.                         {
  37.                                 if(count<100)
  38.                                         count++;//步进电压0.1875
  39.                         }
  40.                         if(!key2)//--
  41.                         {
  42.                                 if(count>0)
  43.                                         count--;
  44.                         }
  45.                 }
  46.         }
  47.         else time=0;
  48. }
  49. void Timer0Init()        //100微秒@12.000MHz
  50. {
  51.         TMOD= 0x02;                //设置T0自动重装模式
  52.         TL0 = 0x9C;                //设置定时初值
  53.         TH0 = 0x9C;                //设置定时重载值
  54.         TR0 = 1;                        //定时器0开始计时
  55.         EA = 1;                        //开总中断
  56.         ET0 = 1;                        //开T0中断
  57. }
  58. void display(void)
  59. {
  60.         static uchar i=0;
  61.         dis_buf[0]=table[V_IN/1000];//数据分解
  62.         dis_buf[1]=table[V_IN/100%10];
  63.         dis_buf[2]=table[V_IN/10%10];
  64.         dis_buf[3]=table[V_IN%10];

  65.         P0=0xff;                                        //段码消隐
  66.         P2&=0xf0;                                //位码清0
  67.         if(i==1)
  68.                 P0=dis_buf[i]&0x7f;//送段码加点
  69.         else
  70.                 P0=dis_buf[i];                //送段码不加点
  71.         P2|=0x01<<i;                        //送位码
  72.         i++;
  73.         i%=4;
  74. }
  75. void main(void)
  76. {
  77.         Timer0Init();
  78.         while(1)
  79.         {
  80.                 keyscan();
  81.                 V_IN=(count*187.5+1250+5)/10;//电压换算(放大1000/10四舍五入)
  82.                 display();
  83.                 delay(1);
  84.         }
  85. }

  86. void Timer0Interrupt(void) interrupt 1
  87. {
  88.         num++;
  89.         if(num>100)
  90.                 num=0;
  91.         if(count>=num)//PWM
  92.                 OUT=1;
  93.         else OUT=0;
  94. }
复制代码




回复

使用道具 举报

板凳
ID:810684 发表于 2020-8-2 23:02 | 只看该作者
LM317属于集成可调线性稳压器,最简单的办法就是,用LM317的典型电路,把反馈端的两个分压电阻的其中一个改成数字电位器,然后利用单片机去控制数字电位器的阻值,即可完成简单的数控稳压电源

评分

参与人数 1黑币 +5 收起 理由
学习学习ing + 5

查看全部评分

回复

使用道具 举报

地板
ID:804115 发表于 2020-8-3 00:35 | 只看该作者
好好看看这个:
http://www.51hei.com/bbs/dpj-119664-1.html
另外,要学会百度,例如百度:稳压电源的设计 、 什么是稳压电源的输出电压范围,什么是稳压电源的步进,什么是稳压电源的纹波,什么是稳压电源的最大输出电流等等。
把你想知道的一点儿一点儿拆解,一点儿一点儿百度。

评分

参与人数 1黑币 +5 收起 理由
学习学习ing + 5

查看全部评分

回复

使用道具 举报

5#
ID:213173 发表于 2020-8-3 09:22 | 只看该作者
本帖最后由 wulin 于 2020-8-3 16:13 编辑

楼主构想的数控电源能够实现,可以采用具有内置AD/DA的芯片完成调压和数码管显示。下图是仿真和基本原理图。



评分

参与人数 1黑币 +10 收起 理由
学习学习ing + 10

查看全部评分

回复

使用道具 举报

6#
ID:811100 发表于 2020-8-4 21:22 | 只看该作者
wulin 发表于 2020-8-3 09:22
楼主构想的数控电源能够实现,可以采用具有内置AD/DA的芯片完成调压和数码管显示。下图是仿真和基本原理图 ...

单片机可以用stc89c52的吗
回复

使用道具 举报

7#
ID:151348 发表于 2020-8-5 08:13 | 只看该作者
核心思想:改变串联型稳压电源的基准电压实现输出电压的改变。
1、如果使用单片机,
学校里面一般选择单片机控制DA输出,比如单片机+DAC0832。DA输出作为串联型稳压电源的基准电压。串联型稳压电源自己到网上搜一下
2、不使用单片机
计数器74192输出端接入DAC0832输入端,DA输出作为串联型稳压电源的基准电压。这种方法需要用两组74192+DAC0832,电路比较复杂

稳压电源功率20W,那么需要考虑调整管功率,TIP41之类的满足要求
回复

使用道具 举报

8#
ID:213173 发表于 2020-8-5 12:40 | 只看该作者
Sakura最好了 发表于 2020-8-4 21:22
单片机可以用stc89c52的吗

可以用stc89c52+DAC芯片。
回复

使用道具 举报

9#
ID:401564 发表于 2020-8-5 17:17 | 只看该作者
我有现成的要不?
12位DAC+16位ADC,单片机使用STC8A4K系列的,12864显示,汇编语言,编码开关调节输出电压,步进好像是0.01V的,精度5mV以内,成本有点小高
回复

使用道具 举报

10#
ID:811100 发表于 2020-8-5 20:01 | 只看该作者
Y_G_G 发表于 2020-8-5 17:17
我有现成的要不?
12位DAC+16位ADC,单片机使用STC8A4K系列的,12864显示,汇编语言,编码开关调节输出电压,步 ...

想知道原理
回复

使用道具 举报

11#
ID:401564 发表于 2020-8-5 20:10 | 只看该作者
可调电源电路.pdf (115.9 KB, 下载次数: 50) 这个是电路图
回复

使用道具 举报

12#
ID:811100 发表于 2020-8-5 21:58 | 只看该作者

哭了,看不懂
回复

使用道具 举报

13#
ID:767999 发表于 2020-8-6 20:51 | 只看该作者
wulin 发表于 2020-8-3 09:22
楼主构想的数控电源能够实现,可以采用具有内置AD/DA的芯片完成调压和数码管显示。下图是仿真和基本原理图 ...

我这该怎么样,当DAC0832的输出端给一个+,- 0.02v的电压通过LM324放大5倍,得到0.1v。然后到LM317进行输出,一直卡在LM317这不懂怎么像,你的图片中那样进行输出,而且怎么让他从1.5开始到20v.还有我的LM324接12v对吗?麻烦大佬帮忙看看,提点下!!!

数控.png (83.36 KB, 下载次数: 41)

数控.png
回复

使用道具 举报

14#
ID:767999 发表于 2020-8-6 20:58 | 只看该作者
通过LM324给出0.1v,然后怎么通过LM317输出,而且怎么从1.5v开始
回复

使用道具 举报

15#
ID:767999 发表于 2020-8-8 13:05 | 只看该作者
wulin 发表于 2020-8-7 11:01
不必搞那么复杂,用PWM通过运放滤波放大控制LM317,输出电压通过运算可得,实际电路参数微调一下即可。运 ...

大佬,好像加减过程中他的实际输出电压和数码管显示的有误差,刚开始误差不大,到后面他的实际电压误差会很大
回复

使用道具 举报

16#
ID:213173 发表于 2020-8-8 14:05 | 只看该作者
学习学习ing 发表于 2020-8-8 13:05
大佬,好像加减过程中他的实际输出电压和数码管显示的有误差,刚开始误差不大,到后面他的实际电压误差会 ...

这只是一个基本的原理电路。理论计算和实际电路当然会有误差,这是由VCC精准度、元器件的离散性和元件温飘导致。要在程序中修改换算系数使其更接近实际数值,也可以按前述电路用ADC取样,这样误差会很小。
公式原型V_IN=((count*0.1875+1.25)*1000+5)/10;//电压换算(放大1000/10四舍五入)
count=PWM占空比值,0.1875为换算系数,1.25为317最低输出电压。可以根据实测输出最高电压减最低电压除以100得到换算系数在程序中修正。
回复

使用道具 举报

17#
ID:280512 发表于 2020-8-8 14:56 | 只看该作者
按照楼主的题目,主要是考虑0832的分辨率,用cpu控制输出的数字量,此信号经过滤波,输入给0832,可以输出给运放去控制一个三极管,加到317的adj端.317的输出最低要调整到1.5v,其它的量通过三极管和电阻的配合,升到20v       这个电脑没画图软件.思路供参考
回复

使用道具 举报

18#
ID:478073 发表于 2020-8-8 15:15 | 只看该作者
其实没有这么麻烦,有一个功率在的供电电源(二手电脑电源可考虑),一个可PWM可调的降压型芯片,同比较器及电路就能做
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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