发 帖  
原厂入驻New
申请华秋企业认证 多层板首单免费打样!
30s提交资料,10分钟通过审核(免费赔付+顺丰包邮)>>立即报名
[讨论] 【高手问答】电子老顽童带你看懂电路设计
2019-10-31 10:16:23  13410 电路 模拟电路 MOS管 电路图 运放电路
分享
本帖最后由 ARMLIUNX 于 2019-11-12 17:19 编辑

编者导读:
本期我们邀请了电路及模拟技术版主电子老顽童@ARMLIUNX ,来解答大家在电路设计上遇到的问题,时间是10.31—11.15,知识点可以覆盖电路设计核心点,特别是针对电子元件选型及性能比较。

简 介:
电子老顽童,毕业后一直从事数字及模拟电路设计工作,目前在某知名企业任硬件项目经理,有丰富的项目实战经验,本期问题讨论侧重点:
1、电阻、电容、二极管三极管特性及运用电路设计;
2、Mosfet选型及运用电路设计;
3、电感特性;
4、电感公式推导;
5、如何围绕核心器件作电路设计;
核心知识体系框架:
1.png 2.jpg
三极管特性及运用电路.pdf (85.95 KB, 下载次数: 306)
电源拓扑结构.pdf (61.5 KB, 下载次数: 127)


一键开关机.pdf (66.16 KB, 下载次数: 24)

你可以在本帖下面,跟帖+并@ARMLINUX ,说不定你的问题在下个楼层或是下一页的楼层会有一个指引方向给你,或者是问题被解决了。
Elecfans高手问答,根据主题,回帖提问,解答你的疑惑。
———————————————————————————————————————  
问答奖励规则:
1、在论坛帖子中回帖,参与互动(要有价值的提问,刷评论除外),将获得5个积分;
2、关注电子老顽童 , 并转发分享本帖到朋友圈,截图发布在评论下方,将获得电子老玩童VIP互动群资格
———————————————————————————————————————  
社区高手招募
不限专业领域、不限技术方向,只要你是一个有活力并乐于分享的开发者,只要你愿意把自己的经验收获分享给大家,帮助众多从业者共同学习、共同进步,我们就欢迎你来做客社区高手问答。
联系方式:liuyong@elecfans.com。快来联系编者吧!
———————————————————————————————————————
往期回顾








9
2019-10-31 10:16:23   4 评论 分享淘帖
4 条评论
74 个讨论
@ARMLIUNX 电子老玩童,楼主好
2019-10-31 10:24:57 评论

举报

@ARMLIUNX 老顽童,帮我看看这个电路
001.png
2019-10-31 10:45:29 6 评论

举报

6 条评论
  • ARMLIUNX 2019-10-31 11:02

    这个问题我已经在这个789900606群里面分析过了 ,可以加入这个群来解决你的问题

  • ARMLIUNX 2019-10-31 11:28

    这不是一个电流电采集电路,是一个过流保护电路,LM393是一个比较器,是一个OC输出 所以接了上拉电阻 当 +相端的电压 > -相端的电压 电压时 输出为高  反之输出为低 这个电路中  当过流时 +相端的电压 < -相端的电压  此时输出为低 JP9_2为低   此时Q14导通 (P型三极管低电平导通)  LED2灯 就会发光   JP9_1 为高时Q16 导通 吧回路(Q14 r85)电压拉低  比较器的6脚被钳位在0.7V 左右  此时 +相端的电压 > -相端的电压  输出为高  Q14不导通   LED2灭       Q14:作用是是做电源管理   D2:作用是单向导通;在此电路中 R58电阻不可缺少;后面吧你优化的方案在分享一下  大家一起讨论

  • 寒xue 2019-11-4 23:03

    请问大佬,当Q16导通时,比较器的6脚如何被钳位在0.7V左右,Q16的集电极是0.3V,二极管D2也导通不了啊,麻烦大神帮忙指点下。感谢!

    ARMLIUNX 回复 寒xue: 2019-11-5 11:01

    我这个说的不严谨 ,应该是当Q16导通时刻前

  • 寒xue 2019-11-5 21:38

    大佬,我还是不懂为何6脚电压会被拉低,因为二极管D2的正极接的是6脚啊!

    ARMLIUNX 回复 寒xue: 2019-11-5 22:47

    二极管导通后有电压钳位的作用

请问,这个仿真电路有错误没?@ARMLIUNX
002.png
2019-10-31 11:02:51 1 评论

举报

1 条评论
  1. #include<reg52.h>        //声明包含51头文件
  2. #include<stdio.h>  //声明包含输入输出函数
  3. #include<intrins.h>         //声明包含位移函数
  4. #define uchar  unsigned char  //  宏定义
  5. #define uint  unsigned int                // 宏定义
  6. #define CHECK_BUSY
  7. //sbit RS = P2^5;        //液晶引脚定义
  8. //sbit RW = P2^6;
  9. //sbit EN = P2^7;


  10. sbit RS = P3^5;        //液晶引脚定义
  11. sbit RW = P3^6;
  12. sbit EN = P3^4;

  13. void DelayMs(int z)// 1ms延时函数
  14. {
  15. int x,y;
  16. for (x=z;x>0;x--)
  17.    for(y=110;y>0;y--);
  18. }
  19. bit LCD_Check_Busy()  //忙检测函数
  20. {
  21. #ifdef CHECK_BUSY
  22. P0= 0xFF;
  23. RS=0;
  24. RW=1;
  25. EN=0;
  26. _nop_();
  27. EN=1;
  28. return (bit)(P0 & 0x80);
  29. #else
  30. return 0;
  31. #endif
  32. }
  33. /***********LED写入命令函数***********/
  34. void write_com(uchar com)
  35. {
  36. while(LCD_Check_Busy()); //忙则等待
  37. RS=0;
  38. RW=0;
  39. EN=1;
  40. P0= com;
  41. _nop_();
  42. EN=0;
  43. }
  44. /**********LED写入数据函数**********/
  45. void write_dat(uchar dat)
  46. {
  47. while(LCD_Check_Busy()); //忙则等待
  48. RS=1;
  49. RW=0;
  50. EN=1;
  51. P0= dat;
  52. _nop_();
  53. EN=0;
  54. }
  55. /*******LED写入字符函数***********/
  56. void LCD_Write_Char(uchar x,uchar y,uchar dat)
  57. {   
  58. if (y == 0)
  59.   {   
  60.   write_com(0x80 + x);   
  61.   }   
  62. else
  63.   {   
  64.   write_com(0xC0 + x);   
  65.   }      
  66. write_dat( dat);
  67. }
  68. /******写入字符串函数***********/
  69. void Write_String(uchar x,uchar y,uchar *s)
  70. {   
  71.       
  72. while (*s)
  73.   {   
  74.   LCD_Write_Char(x,y,*s);   
  75.   s++;
  76.   x++;   
  77.   }
  78. }
  79. /*****LED初始化函数******/
  80. void LCD_Init()
  81. {
  82.            RW=0;
  83.    write_com(0x38); /*显示模式设置*/
  84.    DelayMs(5);
  85.    write_com(0x06);/*显示光标移动设置*/
  86.    DelayMs(5);
  87.    write_com(0x0C); /*显示开及光标设置*/
  88.           DelayMs(5);
  89.    write_com(0x01);  /*显示清屏*/
  90.    }
  91. /*按键扫描函数,返回扫描键值*/
  92. uchar KeyScan()  //键盘扫描函数,使用行列反转扫描法
  93. {
  94. unsigned char cord_h,cord_l;//行列值中间变量
  95. P3=0x0f;            //行线输出全为0
  96. cord_h=P3&0x0f;     //读入列线值
  97. if(cord_h!=0x0f)    //先检测有无按键按下
  98. {
  99.   DelayMs(10);        //去抖
  100.   if((P3&0x0f)!=0x0f)
  101.   {
  102.     cord_h=P3&0x0f;  //读入列线值
  103.     P3=cord_h|0xf0;  //输出当前列线值
  104.     cord_l=P3&0xf0;  //读入行线值
  105.     while((P3&0xf0)!=0xf0);//等待松开并输出
  106.     return(cord_h+cord_l);//键盘最后组合码值
  107.    }
  108.   }
  109.   return(0xff);  //返回该值
  110. }

  111. unsigned char KeyPro()
  112. {
  113. switch(KeyScan())
  114. {
  115.   case 0xee:return '1';break;//0 按下相应的键显示相对应的码值
  116.   case 0xed:return '2';break;//1
  117.   case 0xeb:return '3';break;//2
  118.   case 0xe7:return '4';break;//4
  119.   case 0xde:return '5';break;//5
  120.   case 0xdd:return '6';break;//6
  121.   case 0xdb:return '7';break;//8
  122.   case 0xd7:return '8';break;//9
  123.   case 0xbe:return '9';break;//a
  124.   case 0xbd:return '0';break;//c
  125.   default:return 0xff;break;
  126. }
  127. }
  128. main()
  129. {
  130. unsigned char num,i;                 
  131. unsigned char temp[16];   //最大输入16个
  132. unsigned char s;
  133. LCD_Init(); //初始化液晶屏
  134. DelayMs(10);//延时用于稳定,可以去掉
  135. write_com(0x01); //清屏
  136. for(s=0;s<25;s++)//延时5s
  137.     DelayMs(200);
  138. write_com(0x01);
  139. while (1)         //主循环
  140.   {
  141. num=KeyPro();  //扫描键盘
  142. if(num!=0xff)  //如果扫描是按键有效值则进行处理
  143.    {
  144.     if(i==0)    //输入是第一个字符的时候需要把该行清空
  145.    write_com(0x01);
  146.         if(i<16)       
  147.         {
  148.          temp[i]=num;
  149.          LCD_Write_Char(i,0,num);//输出数据
  150.       i++;   //输入数值累加
  151.     }
  152.     }
  153.   }
  154. }
复制代码
上面是代码,仿真和51开发板的区别不是只有那个LCD的那三个控制端是不一样吗?  
003.png
2019-10-31 11:14:33 评论

举报

围观一下   准备工作
2019-10-31 13:02:54 评论

举报

@ARMLIUNX 老顽童,此电路原本是没有问题的  重新layout 电感偶尔会有电流声音 求大神赐教
1.png 2.png

2019-10-31 13:46:51 7 评论

举报

7 条评论
  • ARMLIUNX 2019-10-31 14:23

    从你的布局上面看布局不是很合理  1.首先是反馈回路 这个DC -DC  1MHz switching frequency minimizes the external   反馈电压建议不要直接从电感端取 最好从输出电容那端取   这样反馈回来的电压会相对平稳  2、这个电路中有三个输出电容   输出电容的摆放原则先过0.1uf小电容 在过10uf 电容  在经过100uf这个电容  电感啸叫的问题 基本可以解决

    byalxj 回复 ARMLIUNX: 2019-11-5 22:12

    为什么是先过小电容再到大电容   不是先从大电容再到小电容的嘛 ?

    ARMLIUNX 回复 byalxj: 2019-11-5 22:27

    lx引脚是不断的开通 关断,有很多的高频成分,先经过小电容,可以剔除高频,然后在经过储能电容,相对来说就比较平稳

    byalxj 回复 ARMLIUNX: 2019-11-5 22:33

    感谢老顽童专业的讲解,包括在群里耐心的指导

  • 13726264993 2019-10-31 15:40

    这个还少个续流二极管吧。

    liuyongwangzi 回复 13726264993: 2019-10-31 15:45

    加在哪里比较合理的

  • ARMLIUNX 2019-10-31 17:05

    这个是同步整流的DC-DC,不需要加续流二极管

请教一下电子老顽童@ARMLIUNX ,图中负载空载的时候,电路的输出电压是10.6V(电路设计是9.6V),还有负载接上电压就变成8.4V了,是什么原因?
1.png
2019-10-31 14:52:20 1 评论

举报

1 条评论
  • ARMLIUNX 2019-10-31 15:14

    从图纸设计上看 12V的这个输出电容10pF 储能电容太小,这样的BUCK Mosfet在ON的时候 由电感向电容充电 并向负载供电    off的时候电感续流  由电容向负载供电  储能电容太小 导致了你的电压被拉低  后续会分享如何快速的设计BUCK电路  布局等相关的内容

本帖最后由 ARMLIUNX 于 2019-10-31 19:34 编辑

看这个图,这样连接运放输入端有问题吗?滑动电阻到最左的时候相当于同向输入端直接和3.3V相连,有问题吗?或者还有什么办法能够调节运放的输出为0-3.3V?
2.png

也可用下面的这个电路实现0-3.3V 电流输出能力250ma左右
0-3.3V.png
2019-10-31 15:36:27 1 评论

举报

1 条评论
  • ARMLIUNX 2019-10-31 15:45

    原则上你这电路没什么问题 可以实现0-3.3V的电压输出 存在的弊端:1、成本偏高  2、0-3.3V输出能力很小 运放的输出能力才有几十ma  看你实际运用场景,也有其他的方案可以实现此电路功能

@ARMLIUNX  电子老顽童,穿戴式设备用到小容量锂电池(50mAh以下),充放电的电量管理怎么做比较好? 参数是5V充,3.7V 电池20mAh,充满电流截止判断1mA
2019-10-31 16:03:16 评论

举报

最近穿戴式设备,用到小容量锂电池(50mAh以下),充放电的电量管理怎么做比较好?
发现目前市面上的管理芯片都不是很好。
而且这种小容量电池,在充电过程中,这个电量根据电压来估算,很难做。

电池特性.png
2019-10-31 18:46:15 评论

举报

开发板为什么要在5V_OUT和J15V0之间增加这个32408芯片
电源开关.png
2019-10-31 19:03:55 3 评论

举报

3 条评论
74LVCE1G126W5-7作用是什么呢?为什么需要
74LVCE1G126W5-7作用.png
2019-10-31 19:08:07 2 评论

举报

2 条评论
  • ARMLIUNX 2019-10-31 19:45

    74LVCE1G126W5-7三态的缓冲器,通常叫三态门,三种输出状态受 输入使能端的控制 1.当使能输入有效时 out端输出正常状态的逻辑电平(0或1) 2.当使能输入无效时,输出处于高阻状态 就相当于是out端与后面连接的电路断开

    莫人念 回复 ARMLIUNX: 2019-11-1 09:33

    辛苦辛苦,谢谢解答,帮助很大

谢谢分享!学习学习!
电池只有20mAh以下,怎么做到MOS管打开的情况下静态功耗低于100uA。
【低功耗怎么做】一键开关机.jpg
2019-11-1 09:36:28 2 评论

举报

2 条评论
  • ARMLIUNX 2019-11-1 09:52

    功耗也不能无限制的低,R30 和 R31 这个回路承担了 在S1按键被按下时  MCU还未初始化完成  Mosfet的导通速度  涉及到Mosfet损耗的问题 这里主要是开通损耗  在实际使用过程中 需要有所取舍

    莫人念 回复 ARMLIUNX: 2019-11-1 13:38

    学习啦,谢谢解答

本帖最后由 ARMLIUNX 于 2019-11-1 20:14 编辑

要求是自动切换    正常状态是 外部电源供电   外部电源断开的时候 电池供电,取消单片机 控制  做到纯硬件自动切换。电池29.4V,5000mah,外部供电29.4V。

微信截图_20191101094919.png
可以优化成下面的电路

自动切换.png



2019-11-1 10:14:06 1 评论

举报

1 条评论
  • ARMLIUNX 2019-11-1 10:25

    这个可以实现 设计思路  可以考虑把  单片机控制信号替换成 外部的输入电压   电路设计上有所改动  晚点我会吧优化过的图纸 放上来 做参考

@ARMLIUNX 老顽童,我目前在设计一个信号调理的运放电路,在仿真的时候,遇到一个问题。需求描述如下:

1、输入电平范围在0~2V;
2、输出电平范围在1~7V;
我是这样考虑的:
(【0~2】+a)*b=【1~7】
(1)a*b=1;
(2)b=3;
解的a=1/3;
使用两级运放实现;
1、第一级:电压跟随器;提供固定电平1/3;输入固定电平与第一级运放输出一致;
2、第二季:加法器;完成整个运算;可变电平【0~2】与第一级的固定电平进行同相加法,且比例系数为3;

仿真电路与测试仿真结果如下,没有明白为何出现这样的结果,希望可以指点下这其中的问题所在。

01.png
2019-11-1 11:41:54 1 评论

举报

1 条评论
  • ARMLIUNX 2019-11-1 12:53

    U3A前级运放电压跟随输出电压是Vout = 0.3416149V 二级运放图纸搭建错了,运放一般用的是负反馈  你图纸当中 R1这个电阻是正反馈了呀 输出电压肯定是不对的

请教这个电路,BUZZ给一个2K的频率,图中问题会有影响吗?
779091f66447e323dc05e6fd8468e27.png
2019-11-1 15:13:37 2 评论

举报

2 条评论
  • ARMLIUNX 2019-11-1 16:23

    BUZZ_VCC 为高 Q31  Q32 导通,12V电压下来  这里是一个简单的RC 电路中 R141为电容C17电容提供对地的通路,两个元件互换在个电路实现的功能 没什么较大的影响

    tao11 回复 ARMLIUNX: 2019-11-1 16:26

    好的,谢谢

实验电路1 无标题.png 请问下实验电路1为什么三角波会失真,我按照仿真图搭建实物发现LM339的输出端,由高变低直接下来不失真,由低变高上升速度较慢发生失真,这一点和仿真图一致,而LM358输出端的三角波上升沿是线性不失真,但三角波下降沿为非线性下降速度较慢发生失真,这一点和仿真图不太一样。我开始用了100PF电容,后来考虑LM358下降速度较慢,所以选了电容更小的20PF,但电路依旧没有任何改善,另外,我想到了LM339上拉电阻太大会不会影响转换时间,所以换了1K上拉电阻,但电路依旧没有任何改善。另外,该产生的三角波频率不高,没有超过LM339的转换速度1.3us。查了模电书,LM339和LM358的电阻电容取值影响波形频率和幅值,但由于此时波形幅值在5V之内,应该不会失真。实在想不出原因了,所以请教下。
2019-11-1 17:00:53 2 评论

举报

2 条评论
  • ARMLIUNX 2019-11-1 19:45

    通道A的电压幅值为3.15V 是因为LM358不是轨至轨的运放,另外三角波波形失真和LM358运放的上升斜率 也叫压摆率有关系(0.3 V/μs-》lm358),推荐你GS8724(High Slew Rate: 9V/µs)

    shengfang05 回复 ARMLIUNX: 2019-11-5 18:39

    谢谢您的解答

@ARMLIUNX 电子老顽童,给看看这个电路,应该是DCDC输出电压被拉低的原因?


情况是这样的,当U18是75LBC184D时,晃动装置会导致通讯失败,并且DCDC的电压被拉低到1至2V,当用AZRS5485N.RDG时没有影响;当机壳可靠接地时这两款芯片都没有问题;感觉是184的抗干扰能力弱,但为什么会拉低低压呢?
001.png
2019-11-1 17:41:30 1 评论

举报

1 条评论

撰写讨论

你正在撰写讨论

如果你是对讨论或其他讨论精选点评或询问,请使用“评论”功能。

高级模式
您需要登录后才可以回帖 登录 | 注册

1234下一页
发讨论
关闭

站长推荐 上一条 /10 下一条

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